yolo v1
前言
相比同年的fast-rcnn和ssd都没有优势
详解
- B=2,Pr(Object)为0或者1
- 在v1中没有anchor的概念,预测的xywh是直接预测的box的位置,不像fast-rcnn和ssd中预测的这四个值都是相对我们anchor的回归参数。
- 在预测时,输出的结果既包含了该box为某一个目标的概率,又包含了重合程度,与fast-rcnn和ssd直接预测的目标概率不一样。
Backbone: GoogLeNet with no inception modules
Neck: None
Head: YOLO [fc(1570)->77(52+20)]
存在的问题:
- 对群体小目标效果很差,比如一群鸟。因为对每个cell只预测2个bounding-box,而且属于同一个类别,意味着一次只能预测一个物体,所以导致网络的召回率极低。
- 目标出现新的尺寸的时候,效果差。
- 主要错误的原因就是定位不准确的问题,因为它是采用直接预测box位置,而不是fast-rcnn和ssd预测先对anchor的回归参数。
- 由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。
yolo v2
前言
通过使用voc,imagenet数据集联合训练,能够识别的类别超过9000.
详解
效果:
- 对训练收敛有很大帮助
- 减少所需使用的正则化处理
- 能够提升2个百分点map,帮助正则化模型
-
采用基于anchor 偏移的预测可以简化目标边界框预测,使网络更加容易收敛和学习。
-
使用anchor会使得map小幅度降低,但是召回率会有很大提升,从而意味着模型有更大的提升空间。
-
在fast-rcnn和ssd的时候,作者并没有明确给出为什么要采用预测的anchor或者default-box,而是根据工程经验得出的。
-
anchor的聚类,采用k-means获取anchor
-
在直接使用基于anchor的方式去训练,在训练前期会特别不稳定,不稳定的主要因素就来自预测x,y导致的。因为xy没有被限制,所以在加上偏移量tx和ty后,中心点可能出现在图像的任意一个地方。
-
解决办法就是对tx和ty进行一个函数限制(sigmoid)。使得xy最终肯定在自己的grid-cell内。
-
使用box聚类和限制txty,带来了5个点的提升。
Backbone: darknet19
Neck: None
Head: passthrough [conv->1313anchor*(5+20)] -
77卷机使用33加1 * 1卷机替代。减少计算量小,防止过拟合;网络可以做的更深,更好的提取特征。
-
使用全局平均池化代替fc,适应图像多尺度的输入。
-
信息融合:结合更多底层的信息。最后的13x13,去融合26x26的特征图。即passlayer。
-
效果提升1个百分点。
- 多尺度训练
- 每迭代十个batch,就把网络的输入尺寸进行随机的选择,由于v2的缩放因子是32,所以网络的输入尺寸都是32的整数{320,352,…,608},
yolo v3
前言
基本上只是整合了当时比较主流的网络的优点,比如FPN,基本没有太多的创新点。
详解
-
表面darknet与resnet很像,但是仔细看会发现darknet是没有最大池化下采样层的。即用卷积代替池化。
-
卷积核的个数更少,使得参数量和计算量变少。
Backbone: darknet53
Neck: None
Head: [conv->1313anchor/3*(5+classes)]
[conv->2626anchor/3*(5+classes)]
[conv->5252anchor/3*(5+classes)] -
使用resnet的残差结构,提高特征提取能力。
-
因为提高了提取特征的能力,所以检测头也从1个提高到3个。
-
和v2一样
- 正样本:针对每一个gt都会分配一个与之iou最大的bbox。
- 如果预测结果与gt有重合且超过阈值,但iou不是最大,则直接丢弃这个预测结果。
- 剩下的样本为负样本
yolo v3 spp
损失
yolo v3中使用的定位损失,差值平方的计算方法,即L2损失(MSE)。
-
考虑到了重叠面积
-
考虑到了两个中心的距离
-
在diou的基础上,还考虑到了两个box的长宽比;
-
iou这部分可参考:https://blog.csdn.net/leonardohaig/article/details/103394369
focal loss可参考:https://www.cnblogs.com/king-lps/p/9497836.html
-
对于两阶段的faster-rcnn的正负样本不平衡问题不显著的原因是因为第二阶段使用的achor是第一阶段筛选后的,只有两千个左右,而一阶段的yolo有上万个。
-
降低简单负样本的权重(损失贡献),增加难的负样本的权重。
-
gamma=0时退化为CE loss,一般取值2
yolo v4
前言
Yolo 系列的原作者在推出了 YoloV3 后宣布退出 CV 界。俄罗斯的程序员 Alexey Bochkovskiy 凭借自己的摸索复现了 Yolo 系列全部模型,并总结了最接近几年目标检测的各种套路。就在前几个推出了 YoloV4.
YoloV4 将最近几年 CV 界大量的trick 集中在一套模型中。这篇论文不仅仅可以看作是一个模型的学习,更能看成是一个不错的文献总署。更有意思的是作者提出了 backbone,neck,head 的目标检测通用框架套路。
backbone, neck, head 其实非常的形象。它表示组成一个“人”的三个部分。从下到上就是 backbone, neck, head 。
backbone:各类卷积网络,目的是对原始图像做初步的特征提取。
neck:各类结构,目的是从结构上做“特征的融合”。主要为解决小目标检测,重叠目标检测等问题。
head:gd 编码,回归和解析。
YoloV3 就是一个典型的 backbone, neck, head 结构。
详解
Backbone: CSPDarknet53
Neck: FPN,SPP,PAN
Head: [conv->1313anchor/3*(5+classes)]
[conv->2626anchor/3*(5+classes)]
[conv->5252anchor/3*(5+classes)]
yolo v5
Backbone: Focus + CSPDarknet53
Neck: FPN,SPP,PAN,CSP结构
Head: [conv->1313anchor/3*(5+classes)]
[conv->2626anchor/3*(5+classes)]
[conv->5252anchor/3*(5+classes)]
【参考】
b站:霹雳吧啦Wz
csdn:https://blog.csdn.net/lemonbit/article/details/109281590
版权声明:本文为CSDN博主「咕嘟咕嘟_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/EMIvv/article/details/122392921
暂无评论