【学习笔记】【转载】YOLOv4与YOLOv5的创新点
YOLOv4
YOLOv4的三大贡献:
- 设计了强大而高效的检测模型,任何人都可以用 1080Ti 和 2080Ti训练这个超快而精准的模型。
- 验证了很多近几年 SOTA 的深度学习目标检测训练技巧。
- 修改了很多 SOTA 的方法, 让它们对单GPU训练更加高效,例如 CmBN,PAN,SAM等。
作者用一个图概括了单阶段和双阶段目标检测网络的差别,two-stage的检测网络,相当于在one-stage的密集检测上增加了一个稀疏的预测器。
bag of freebies
指只在训练阶段耗时增多,但不影响推理耗时的技巧。
数据增强
- 光度变换。包括了调整亮度、对比度、色相、饱和度和噪点。
- 几何变换。包括了随机缩放、裁剪、翻转和旋转。
- 模拟目标遮挡
- Random erase
- CutOut
- Hide and Seek。通过划分Grid patches,并在训练的时候隐藏部分patches。
- Grid Mask
- 图像融合
- Mixup
- CutMix
- Mosaic(四宫格)
- 正则化
- DropOut
- DropConnect
- DropBlock。相比于DropOut的随机位置丢弃,DropBlock是将整个局部区域进行删减丢弃。其借鉴了CutOut,将CutOut应用到网络中的每一个特征图上。而且并不是用固定的归零比率,而是在训练时以一个小的比率开始,随着训练过程线性的增加这个比率。
- 处理数据不平衡
- 两阶段网络用难例挖掘(Hard Example Mining),但是不适合单阶段检测
- Focal Loss
- 标签平滑边界框回归的损失函数
- IOU loss
- GIOU loss
- DIOU loss
- CIOU loss
bag of specials
指微微提高了推理耗时,却显著提升性能的技巧。
- 增强感受野
- SPP
- ASPP
- RFB
- 注意力模块
- 通道注意力
- 空间注意力
- 特征融合
- 跳跃连接
- FPN
- SFAM
- ASFF
- BiFPN
- 激活函数
- LReLU(解决当输入小于0时ReLU梯度为0的情况)
- PReLU(解决当输入小于0时ReLU梯度为0的情况)
- ReLU6(专门为量化网络设计)
- hard-swish(专门为量化网络设计)
- SELU(对神经网络进行自归一化)
- Swish(连续可微激活函数)
- Mish(连续可微激活函数)
- 后处理
- NMS
- Soft NMS
- DIOU NMS。在Soft NMS的基础上将重心距离的信息添加到删选BBox的过程中。
YOLOv4网络结构
YOLOv4整个网络架构组成:
- Backbone: CSPDarknet53。在Yolov3主干网络Darknet53的基础上,借鉴2019年CSPNet(Cross Stage Partial Network)的经验产生的Backbone结构,其中包含了5个CSP模块。
- Neck: SPP, PAN
- Head: YOLOv3
Backbone: CSPDarknet53
YOLOv4在主干网络Backbone采用CSPDarknet53网络结构,主要有三个方面的优点:
- 增强CNN的学习能力,使得在轻量化的同时保持准确性。
- 降低计算瓶颈
- 降低内存成本
作者只在Backbone中采用了Mish激活函数,网络后面仍然采用Leaky_relu激活函数。Yolov4作者实验测试时,使用CSPDarknet53网络在ImageNet数据集上做图像分类任务,发现使用了Mish激活函数的TOP-1和TOP-5的精度比没有使用时精度要高一些。因此在设计Yolov4目标检测任务时,主干网络Backbone还是使用Mish激活函数。
Neck
YOLOv4的Neck结构主要采用了SPP模块、FPN+PAN的方式。
YOLOv4的作者在使用\(608\times 608\)大小的图像进行测试时发现,在COCO目标检测任务中,以0.5%的额外计算代价将AP50增加了2.7%,因此YOLOv4中也采用了SPP模块。
YOLOv4在FPN层的后面还添加了一个自底向上的特征金字塔。这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,从不同的主干层对不同的检测层进行参数聚合。
原本的PANet网络的PAN结构中,两个特征图结合是采用shortcut操作,而Yolov4中则采用concat(route)操作。
Head头
YOLOv4 各部分使用到的Bags
- Bag of Freebies (BoF) for backbone:
- CutMix、Mosaic data augmentation
- DropBlock regularization
- Class label smoothing
- Bag of Specials (BoS) for backbone:
- Mish activation
- Cross-stage partial connections (CSP)
- Multi-input weighted residual connections (MiWRC)
- Bag of Freebies (BoF) for detector:
- CIoU-loss
- CmBN
- DropBlock regularization
- Mosaic data augmentation
- Self-Adversarial Training。在两个前向后向阶段运行。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对其自身执行对抗性攻击,改变原始图像,以制造图像上没有所需对象的欺骗。在第二阶段,训练神经网络,以正常的方式在修改后的图像上检测目标。
- Eliminate grid sensitivity
- Using multiple anchors for a single ground truth
- Cosine annealing scheduler
- Optimal hyperparameters
- Random training shapes
- Bag of Specials (BoS) for detector:
- Mish activation
- SPP-block
- SAM-block
- PAN path-aggregation block
- DIoU-NMS