YOLO1、YOLO2、YOLO3对比

YOLO详解参见地址:

YOLO1:https://blog.csdn.net/qq_32172681/article/details/99418000

YOLO2:https://blog.csdn.net/qq_32172681/article/details/99482044

YOLO3:https://blog.csdn.net/qq_32172681/article/details/99595621

 

一、YOLO1

1、目标检测主要思想

与RCNN系列不同,YOLO把目标检测看作一个回归问题,直接用一个网络进行分类和框回归。

具体做法是:将image划分为S*S个网格,每个网格预测B个bbox的位置(x、y、w、h)、置信度(confidence为交并比)、类别概率。输出维度为S*S*(B*5+C),C为类别数。无论网格中包含多少个boxes,每个网格只预测一组类概率。测试时,将条件类概率和预测框的置信度乘起来,表示每个box包含某类物体的置信度,这个分数可以将box中的类别可能性和预测精确度同时表示出来。

2、整体网络结构

YOLO1、YOLO2、YOLO3对比_第1张图片

基本网络模型为GoogLe Net,但未使用它的inception模块,而是交替使用1*1和3*3卷积层

卷积层提取特征,全连接层预测类别和框位置回归,共24个卷积层,2个全连接层

YOLO1、YOLO2、YOLO3对比_第2张图片

3、子网络:预训练分类网络,输入图像大小为224*224

前20个卷积层 + 1个全局平均池化 + 1个全连接

4、子网络:目标检测网络,输入图像大小为448*448

前20个卷积层 + 4个卷积层 + 2个全连接 + 1个全连接(预测类别 / 框位置)

5、损失函数(平方和损失函数)

包括4部分:框中心位置x,y损失 + 框宽高w,h损失 + 置信度confidence损失 + 分类loss

YOLO1、YOLO2、YOLO3对比_第3张图片

公式看不懂,可以戳YOLO1详解:https://blog.csdn.net/qq_32172681/article/details/99418000

6、YOLO1优点:

  • 速度快。看作一个回归问题,不需要复杂的pipeline。
  • 对图像有全局理解。用整个图像的特征去预测bbox,而不是像RCNN,只能候选框的特征预测bbox。
  • 候选框的数量少很多,仅7*7*2=49个。而RCNN的selectlive search有2000个,计算量大。

7、YOLO1缺点:

  • 每个网格只预测2个bbox,限制了模型预测物体的数量。
  • 多次下采样,边界框预测所使用的特征是相对粗糙的特征。

 

二、YOLO2

1、改进一:检测更多种类的目标

利用大型分类数据集ImageNet扩大目标检测的数据种类,可以检测9000种类别的目标(YOLO1仅20种)

2、改进二:批标准化BN

  • 让梯度变大,避免梯度消失
  • 收敛更快,训练过程更快
  • 不是应用在整个数据集,有噪声,提高模型泛化能力

3、改进三:用高分辨率图像训练分类网络

YOLO1分类网络输入图像大小为224*224,目标检测网络输入图像大小为448*448,因此YOLO1需要同时完成目标检测任务和适应更高分辨率图像的任务。

4、改进四:借鉴RPN的anchor boxes,有先验知识,预测更快

5、改进五:用k-mean聚类算法,得到YOLO2的先验框piror boxes

用k-mean聚类算法,让模型自动选择更合适的先验框长、宽(YOLO1是人工指定的,带有一定的主观性)

自定义聚类算法的距离矩阵:,centroid是聚类时被选为聚类中心的框,box是其他框。

6、改进六:将预测的偏移量限制在一个网格范围内,模型更稳定

预测的是预测框中心相对于网格单元的偏移量,使用logistic将预测值限制到0-1范围内,这样框偏移就不会超过1个网络(RPN预测anchor box和预测框bbox的偏移量,有可能偏移量很大,导致模型不稳定)

7、网格为每个bbox预测5个偏移量:tx,ty,tw,th,to

设网格左上角偏移图像左上角的距离是cx,cy,且piror bounding(模板框)的高、宽为ph、pw。

预测框坐标计算如图:

YOLO1、YOLO2、YOLO3对比_第4张图片

8、改进七:提出passthrough层,有利于小目标检测

前一层26*26*512特征图分为4份,串联成4个13*13*2048的特征图,再与后一层的13*13*1024特征图串联,得13*13*3072特征图。

9、改进八:多尺度输入图像进行训练

FCN网络,不固定输入大小

10、分类网络模型(YOLO2自己的模型):Darknet-19

类似vgg,最后使用全局平均池化,每个特征图得到1个值,再用全连接会少很多参数。

Darknet1919个卷积层 + 5个池化层,最后一个全局平均池化层输出1000类别(没有使用全连接层)

YOLO1、YOLO2、YOLO3对比_第5张图片

11、目标检测网络模型

去掉分类网络最后一个1000类输出的卷积层,再加上3个3*3卷积层,每个3*3后都有1个1*1卷积层,最后1个3*3*512和倒数第2个3*3*1024之间添加一个passthrough层,得到更精细的结果,最后一个1*1层输出结果。网络结构图略。(这里貌似新加了11层)

12、混合分类和检测数据集,联合训练分类、检测网络

YOLO2提出一种联合训练机制,混合来自检测和分类数据集的图像进行训练。当网络看到标记为检测的图像时,基于完整的yolov2损失函数进行反向传播。当它看到一个分类图像时,只从特定于分类的部分反向传播损失。

 

三、YOLO3

1、多标签检测

每个框中可能有多个类别物体,而softmax只能用于单分类,因此换成sigmoid,sigmoid可以做多标签分类。

2、结合不同卷积层的特征,做多尺度预测

将当前层上采样的特征图,加上上层的特征图,得到一个组合特征图,再添加一些卷积层来处理这个组合的特征图,这样可以预测更细粒度的目标。

3、网络结构(DarkNet53 = DarkNet19 + ResNet)

  • 结合残差思想,提取更深层次的语义信息。
  • 仍然使用连续的3×3和1×1的卷积层。
  • 通过上采样对三个不同尺度做预测。如将8*8的特征图上采样和16*16的特征图相加再次计算,这样可以预测出更小的物体。
  • 采用了步长为2的卷积层代替pooling层,因为池化层会丢失信息。

YOLO1、YOLO2、YOLO3对比_第6张图片

YOLO1、YOLO2、YOLO3对比_第7张图片

4、预测更多目标

用k-mean均值聚类算法为每个网格预测9个模版框,样可以提高recall(YOLO2有5个,YOLO1有2个)

5、损失函数

使用交叉熵损失函数进行类别预测(YOLO2用的是平方误差)

 

 

你可能感兴趣的:(图像处理,YOLO1,YOLO2,YOLO3)