本文学习笔记整理自https://www.bilibili.com/video/BV1yi4y1g7ro?p=4
参考博客:https://blog.csdn.net/qq_37541097/article/details/81214953
YOLO V1、YOLO V2、YOLO V3论文链接
提取码:a70x
1、YOLO v1
YOLO V1的思想
将原始图片划分成s×s的网格(grid_cell),如果object的中心落在这个网格内,则这个网格就负责预测这个object。
每一个网格预测b个bounding_box,每个bounding box预测位置信息,还要预测confidence。confidence的表达式为:
每个grid cell预测c个类别分数。
对于生成的7×7×30的特征层 ,30=20+2(4+1)
20代表数据集中包含20个类,grid cell负责预测物体所属类别的概率
2代表每个grid cell预测2个bounding box
4表示框的调整参数(w,h,x,y)
1表示bounding box预测框中是否存在物体
测试时:
对应三部分内容:
grid box预测物体所属类别
confidence:预测bounding box是否存在物体,预测框和真实框的重合程度
YOLO V1的损失函数
个人理解YOLO V1的三部分损失函数也和上述提到的三部分是对应的。loss是三项之和,前两项是confidence,最后一项是grid cell判断物体所属类别。
- 第一项表示bounding box与真实框的位置损失
- 第二项表示bounding box中是否存在物体,置信度损失
- 第三项表示grid cell 预测的置信度损失
在计算位置损失函数计算的是误差平方和
计算宽高损失函数时,分别对h,w做开根号处理。目的是用函数映射增大小物体的损失函数的权重比例,也就是当较大的物体和较小的物体中心点的坐标都偏移了相同的距离,小物体应该具有更大的loss值,用这种方法加强对小物体的训练,能够改善小物体的目标检测效果。
YOLO V1的不足之处
论文中指出,YOLO V1对于狙击的小目标物体预测的效果差,因为在yolo v1中只有2个bounding box
由于YOLO是对bounding box直接进行预测的,对于同一类物体,改变了物体的大小后,定位不准确。
2、YOLO V2
YOLO V2相对于YOLO V1的改进之处
- YOLO V2网络对于每一个卷积层都增加了Batch Normalization,起到了正则化的作用。
- 使用了更高分辨率的分类器
- 使用了基于anchor的目标边界的预测方法,有利于对框的边界进行预测。
- prior是通过k-mean聚类的方法得到的。利用k-mean聚类生成合适的prior更有利于网络的训练。
框的中心点坐标的回归预测中,如果不加以限制,调整以后的中心点坐标可能落在别的网格中。物体应该由其坐在的网格来预测呀,所以在回归预测中增加了一个函数来将调整以后的中心点坐标限制在当前网格内,使用的函数是逻辑**函数(sigmoid函数)
同时
也使用了sigmoid**函数来将结果限制在0-1之间。
- 在最终的预测特征图上结合了更多的底层的信息。Fine-Grained Feature
底层的特征包含更多的细节信息,更有利于识别较小的目标。通过passthrough layer来融合最终预测特征层和更底层的信息。
输入特征层大小为416×416×32,经过一系列的特征提取,输出特征层大小为
13×13×1024(较高层特征)
经passthrough处理后输出的特征层,宽高减半,通道数变为原来的4倍。
- 多尺度训练
对于416×416大小的特征图,经过特征提取后输出特征图大小为13×13,尺度大小为32,{320,352,…,608},每迭代10次,就从中随机选取一个特征层作为网络输入的特征层。
YOLO V2的主干特征提取网络是DarkNet-19
在训练时使用数据增强的方法包括数据裁剪、颜色偏移等。
3、YOLO V3
YOLO V3的特征提取网络
首先YOLO V3的backbone使用的是DarkNet-53。
论文中给出DarkNet-53的网络结构:
注*框中表示残差结构中包含一个1×1卷积核一个3×3卷积,而不是两个卷积连接一个残差结构
DarkNet-53网络中包含若干个残差网络。
YOLO V3的特征提取网络最后输出三个尺度的特征层进行预测,三个尺度的特征层大小为13×13×1024、 26×26×512、 52×52×256。
每个输出的特征层包涵三个尺度的bounding box,同样是通过k-mean聚类的方法获得
输出特征层大小可以表示为: N×N×[3*(4+1+80)]
-
N表示输出特征层的大小,将原始图片划分成N×N的网格 -
3表示每个网格上有3个bounding box,三个尺度的先验框 -
4表示bounding box的调整参数,w,h,x,y -
1表示预测bounding box中是否包含物体 -
80表示网格预测物体所属的类别,coco数据集中包含80个类别
YOLO V3的目标边界预测
c表示grid cell
p表示boundning box
b表示预测结果
同样,使用sigmoid函数将预测框中心点的坐标限制在当前网格内。
YOLO V3损失函数的计算
来自:https://blog.csdn.net/qq_37541097/article/details/81214953
损失函数包含三部分:置信度损失、分类损失、定位损失
计算二元交叉熵损失函数(Binary Cross Entropy)
-
置信度损失函数
在所有的正负样本中o表示预测目标与真实目标边界框的IOUc表示通过sigmoid函数得到的预测置信度 -
类别损失函数
在所有存在物体的正样本中
Oij表示预测目标边界框中是否存在第j类目标
C表示目标所属类别的概率 -
定位损失函数