YOLO算法介绍

自己整理的YOLOv1~5一些知识点,博客中图片来自同济子豪兄Bubbliiiing江大白,如有错误,还请多多指教。

YOLOv1

预测阶段

图片大小416 * 416 *3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWmIQSs1-1666425632435)(/../../../../图片/image-20220325165235422.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWbAofKJ-1666425632437)(/../../../../YOLO图片/image-20220325165235422.png)]

1、将图片划分为7*7grid cell

2、每一个cell能产生两个预测框,bounding box.置信度高的粗线表示,置信度低的细线表示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0zcBwew-1666425632438)(/../../../../图片/image-20220325165534308.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rEQeYO5-1666425632444)(/../../../../YOLO图片/image-20220325165534308.png)]

3、每个cell还能生成20个*类别的概率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RiicNIug-1666425632445)(/../../../../图片/image-20220325165822862.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZ6NHKHI-1666425632449)(/../../../../YOLO图片/image-20220325165822862.png)]

4、结合Bbox与class probability,得到最后的预测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EqeqT7Bw-1666425632452)(/image-20220325170120985.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mx7fKY0u-1666425632455)(/../../../../图片/image-20220325170120985.png)]

一个cell30维=两个预测框 *(conf+x+y+w+h)+20 *p(class)

有7 *7 个cell=7 * 7 *30 =1470输出

yolov1损失函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sKSvqFP-1666425632461)(/image-20220325184715717.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diTOJQXb-1666425632462)(/../../../../YOLO图片/image-20220325184715717.png)]
损失函数=三大类,坐标回归误差+回归误差+类别预测误差

坐标回归=检测bbox中心点定位误差+检测Bbox宽高定位误差

回归误差=检测Bbox的conf误差+不检测Bbox的conf误差

类别预测误差=grid cell的分类误差

YOLOv2

输入416* 416 *3 ,32倍下采样 , 输出 13 * 13 *125.

1、新增Batch Normalization 神经网路的输出减去均值再除以标准差,变成以0为中心,标准差为1的分布。

能有效解决反向传播梯度消失或梯度爆炸

Batch Normalization

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F2Dj1K9z-1666425632464)(/image-20220325191200151.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DHFJPqxh-1666425632467)(/../../../../图片/image-
20220325191200151.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAhQugLl-1666425632468)(/../../../../YOLO图片/image-20220325191200151.png)]

测试阶段的均值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参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mo9FTDQN-1666425632470)(/image-20220325195556617.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHEjJDGu-1666425632472)(/../../../../图片/image-20220325195556617.png)]

anchor大小:在faster-Rcnn与SSD中是人手工设计的;而YOLOv2之后是kalman clustering

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EPeYUil6-1666425632475)(/image-20220325210049643.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3NMZJv9Z-1666425632478)(/../../../../图片/image-20220325210049643.png)]

预测框中心点TX-Ty原本无限增长,加函数限制,压缩到0~1之间,把预测框中心点限制在当前cell里面、Cx,Cy归一化左上角坐标

Pw与Ph是anchor的宽高,乘以指数函数,这里宽高就不做限制,因为物体可能很大

YOLOv2损失函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ylc5RmsE-1666425632482)(/../../../../YOLO图片/image-20220325211310419.png)]

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

每隔十步重新选择输入图片大小训练,用全局平均池化层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M8jrjJdo-1666425632486)(/image-20220325215110144.png)]image-20220325215110144[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bw6TXLbO-1666425632488)(/../../../../YOLO图片/image-20220325215110144.png)]

输入416 * 416 *3 进行32倍下采样,得到13 * 13 *125

YOLOv3

Backbone Darknet53

主干网络,52个卷积层+1全连接层

网络结构,FPN

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ih7ucFtq-1666425632489)(/../../../../图片/image-20220326150648108.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whqKMwHj-1666425632492)(/../../../../YOLO图片/image-20220326150648108.png)]

输入图片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损失函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWeYJQKu-1666425632495)(/../../../../图片/image-20220326162634840.png)]

分为3部分:

1、正样本坐标回归

2、正样本置信度与类别;类别数改成二元交叉熵损失函数

3、负样本置信度

v3预测过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3xWs0sn7-1666425632497)(/../../../../图片/image-20220326163346732.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSTHE6Cr-1666425632499)(/../../../../YOLO图片/image-20220326163346732.png)]

池化

训练过程中有上百个卷积核,特征图的参数 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-lboXa1x1-1666425632501)(/../../../../图片/image-20220328091420148.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bqwA3cTt-1666425632505)(/…/…/…/…/YOLO图片/image-20220328091420148.png)]

CSPDarknet-53

1、将激活函数由LeakyReLu修改成Mish

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSOkfezr-1666425632506)(/../../../../图片/image-20220328092635935.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MDstQFR2-1666425632509)(/../../../../YOLO图片/image-20220328092635935.png)]

2、将resblock body的结构进行修改,使用CSPnet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdtQ6Jlo-1666425632511)(/../../../../图片/image-20220328093105732.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xlfrlSBL-1666425632512)(/../../../../YOLO图片/image-20220328093105732.png)]

csp将输入分为两部分,

1、一部分是主干网络部分,RES Block的堆叠;

2、另一部是大残差部分,只经过少量处理,两者直接进行连接进行输出

SPP空间金字塔结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFFmq0ur-1666425632513)(/../../../../YOLO图片/image-20220526151350188.png)]

5* 5 ; 9 * 9 ; 13 * 13池化h核的最大池化层

通过不同的pad使得输出特征图大小都为13 * 13

v4损失函数,训练时用ciou,推理时采用Diou

BN—》CMBN

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAbPujhl-1666425632515)(/../../../../YOLO图片/image-20220531102604285.png)]

YOLOv5

网络结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-srNk7BkN-1666425632517)(/../../../../YOLO图片/image-20220531100244659.png)]

输入:马赛克,自适应锚框,自适应图片缩放,FCOUS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGtVOkIO-1666425632518)(/../../../../YOLO图片/image-20220531100438941.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gxg9HPwj-1666425632520)(/../../../../YOLO图片/image-20220531100513987.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENJJD5is-1666425632521)(/../../../../YOLO图片/image-20220531100549004.png)]

主干:设计两种csp结构,csp1用主干,csp2用neck,spp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBxp3bxM-1666425632522)(/../../../../YOLO图片/image-20220531100746109.png)]

Neck,csp2跨阶段局部网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYp6c5u3-1666425632525)(/../../../../YOLO图片/image-20220531100834462.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crlPBnd0-1666425632528)(/../../../../YOLO图片/image-20220531100857323.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cRSk09Oi-1666425632530)(/../../../../YOLO图片/image-20220531104400605.png)]

损失函数Giou,6.0版后替换成CIoU

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4U8e0xo-1666425632531)(/../../../../YOLO图片/image-20220531101505341.png)]

猜你喜欢

转载自blog.csdn.net/weixin_39357271/article/details/127463073