论文题目: YOLOv4: Optimal Speed and Accuracy of Object Detection
论文链接:https://arxiv.org/pdf/2004.10934.pdf
论文代码:https://github.com/AlexeyAB/darknet
yolov4 其实相对创新点很少,可以理解为基于各种trick进行的一个grid search,找出最好的组合。下面就简单介绍一下yolov4中用到的trick。如果需要深入了解,每个对应的trick在文中都有论文链接,供大家参考。
YOLOv4
Backbone:
CSPDarkNet53
Neck:
SPP
PAN
Head:
YOLOv3
Tricks(backbone):
CutMix
Mosaic
DropBlock
Label Smoothing
Modified(backbone):
Mish
CSP
MiWRC
Tricks(detector):
CIoU
CMBN
DropBlock
Mosaic
SAT
Eliminate grid sensitivity
Multiple Anchor
Cosine Annealing scheduler
Random training shape
Modified(detector):
Mish
SPP
SAM
PAN
DIoU-NMS
Backbone
CSPDarkNet53
论文链接:CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN
作者研究表明:CSPResNeXt50在分类方面优于CSPDarkNet53,而在检测方面反而表现要差。对于分类而言最好的模型可能并不适合于检测,相反,检测模型需要具有以下特性:
- 更高的输入分辨率,为了更好的检测小目标;
- 更多的层,为了具有更大的感受野;
- 更多的参数,更大的模型可以同时检测不同大小的目标。
选择具有更大感受野、更大参数的模型作为backbone。
CSPResNeXt50仅仅包含16个卷积层,其感受野为425x425,包含20.6M参数;而CSPDarkNet53包含29个卷积层,725x725的感受野,27.6M参数。从理论与实验角度表明:CSPDarkNet53更适合作为检测模型的Backbone。具体CSPNet见CSP部分。
Neck
SPP
论文链接:Spatial pyramid pooling in deep convolutional networks for visual recognition
Spatial Pyramid Pooling
yolov3中有一个版本就是yolov3-spp。yolov4在CSPDarkNet53基础上,作者添加了SPP模块,因其可以提升模型的感受野、分离更重要的上下文信息、不会导致模型推理速度的下降;
原始SPP结构:
yolov3+ spp结构:见下图
PAN
作者还采用PANet中的不同backbone级的参数汇聚方法替代FPN。
FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递。而PANet在FPN的后面添加一个自底向上的金字塔
,这样的操作是对FPN的补充,将低层的强定位特征传递上去。
- 自底向上的路径增强,为了缩短信息传播路径,同时利用低层特征的精准定位信息
- 动态特征池化,每个proposal利用金字塔所有层的特征,为了避免proposal的随意分配,对分类及定位更加有利。
- 全连接层融合,为了给掩码预测增加信息来源
将PAN的short-cut连接改为拼接:
![](https://i-blog.csdnimg.cn/blog_migrate/9042bc43c558b43dc81d8c9ba829ff21.png)
Head
YOLOv3
yolov3+spp结构
spp模块结构
![](https://i-blog.csdnimg.cn/blog_migrate/bf4a6c4c2a0967de5921cf60d8289c4c.png)
Tricks(backbone)
CutMix
论文链接:CutMix: Regularization Strategy to Train Strong Classifiers
with Localizable Features
数据增强:Mixup,Cutout,CutMix
- Mixup:将随机的两张样本
按比例
混合,分类的结果按比例分配; - Cutout:随机的将样本中的部分区域cut掉,并且
填充0像素值
,分类的结果不变; - CutMix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的
其他数据
的区域像素值,分类结果按一定的比例分配
M ∈ { 0 , 1 } W × H \mathbf{M}\in\{0,1\}^{W\times H} M∈