自己整理的YOLOv1~5一些知识点,博客中图片来自同济子豪兄、Bubbliiiing、江大白,如有错误,还请多多指教。
YOLOv1
预测阶段
图片大小416 * 416 *3
1、将图片划分为7*7grid cell
2、每一个cell能产生两个预测框,bounding box.置信度高的粗线表示,置信度低的细线表示
3、每个cell还能生成20个*类别的概率
4、结合Bbox与class probability,得到最后的预测
一个cell30维=两个预测框 *(conf+x+y+w+h)+20 *p(class)
有7 *7 个cell=7 * 7 *30 =1470输出
yolov1损失函数
损失函数=三大类,坐标回归误差+回归误差+类别预测误差
坐标回归=检测bbox中心点定位误差+检测Bbox宽高定位误差
回归误差=检测Bbox的conf误差+不检测Bbox的conf误差
类别预测误差=grid cell的分类误差
YOLOv2
输入416* 416 *3 ,32倍下采样 , 输出 13 * 13 *125.
1、新增Batch Normalization 神经网路的输出减去均值再除以标准差,变成以0为中心,标准差为1的分布。
能有效解决反向传播梯度消失或梯度爆炸
Batch Normalization
测试阶段的均值Utest,方差,γ,β都是训练阶段得出
进行bn,分布很分散的数据就被压缩到0附近
2、High Resolution Classifier高分辨率
一开始就用大分辨率图片进行训练
3、anchor锚框
先验框两个:矮胖与高瘦
每一个cell,都有五个anchor,bounding box 的大小是相比于anchor的偏移量
一张图13 * 13 grid cell,一个cell画5个anchor。一个anchor包含4个定位参数x,y,w,h,一个置信度conf,20个类别的概率p
所以一个cell=5 * (4+1+20)=125参数
anchor大小:在faster-Rcnn与SSD中是人手工设计的;而YOLOv2之后是kalman clustering
预测框中心点TX-Ty原本无限增长,加函数限制,压缩到0~1之间,把预测框中心点限制在当前cell里面、Cx,Cy归一化左上角坐标
Pw与Ph是anchor的宽高,乘以指数函数,这里宽高就不做限制,因为物体可能很大
YOLOv2损失函数
v2中一个cell只能分配一个anchor,v2忽略了(0.6~最好)置信度anchor之间的框做损失函数
损失函数三部分组成:
1、anchor与ground truth的交并比小于0.6
2、是否是前12800次迭代,指的迭代前期
3、每一个cell有5个anchor,其中anchor与GT最大的iou
上图三个黄色值都是非0即1;紫色框λ是权重;
1、第一项被抛弃的anchor置信度越低越好
2、第二项让anchor位置与预测框xywh越接近越好,这部分就越小
3、第三大项分三部分:最好anchor要算三项
3.1定位误差:GT与Bbox位置的定位误差的平方
3.2置信度误差:anchor与GT的IOU与预测框conf差的平方
3.3分类误差:标注框类别预测p-预测框类别预测p差的平方
Multi Scale Training 不同尺寸训练
用主干Darknet-19
每隔十步重新选择输入图片大小训练,用全局平均池化层
输入416 * 416 *3 进行32倍下采样,得到13 * 13 *125
YOLOv3
Backbone Darknet53
主干网络,52个卷积层+1全连接层
网络结构,FPN
输入图片416 * 416 *3 ,32倍下采样,输出图片13 * 13 *255
255 = 3 * 85 :每个cell生成三个anchor,每个anchor对应一个
预测框,包含5个位置参数,80个类p
13 * 13 中的cell包含32 * 32 的感受野像素,负责预测大物体,对应anchor比较大
26 * 26 16 * 16 感受野预测中等大小物体
52 * 52 8 * 8 感受野 预测小物体
输入图片大小必须是32的倍数
比如输入608 * 608 ,输入是19 *19 ;38 *38 ;76 * 76 ,grid cell数量也会增加
正负样本
1、如果一个anchor与GT的IOU最大,它就是正样本
2、如果某个anchor与GT有部分交集,高于设定的阈值但不是最大,则不参与样本;
3、如果anchor与GT的IOU小于设定阈值,则为负样本
V3损失函数
分为3部分:
1、正样本坐标回归
2、正样本置信度与类别;类别数改成二元交叉熵损失函数
3、负样本置信度
v3预测过程
池化
训练过程中有上百个卷积核,特征图的参数 4* 4 256 个参数,所有要降低特征图维度,有效防止过拟合;选择特征图中某块区域的最大值,就是最大池化;某区域的平均值,就是平均值;
作用:1降低参数量 2防止过拟合 3 带来平移不变性
YOLOv4
改进点
相比v3改进5大点:
1、主干提取网络:CSPDarknet-53
2、特征金字塔:SPP,PAN
3、分类回归层:YOLOv3(未改变)
4、mosaic数据增强,label Smoothing平滑,CIOU,学习率余弦退火衰减
5、使用Mish激活函数
网络结构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bqwA3cTt-1666425632505)(/…/…/…/…/YOLO图片/image-20220328091420148.png)]
CSPDarknet-53
1、将激活函数由LeakyReLu修改成Mish
2、将resblock body的结构进行修改,使用CSPnet
csp将输入分为两部分,
1、一部分是主干网络部分,RES Block的堆叠;
2、另一部是大残差部分,只经过少量处理,两者直接进行连接进行输出
SPP空间金字塔结构
5* 5 ; 9 * 9 ; 13 * 13池化h核的最大池化层
通过不同的pad使得输出特征图大小都为13 * 13