【学习笔记】【转载】YOLOv4与YOLOv5的创新点

YOLOv4

YOLOv4的三大贡献:

  1. 设计了强大而高效的检测模型,任何人都可以用 1080Ti 和 2080Ti训练这个超快而精准的模型。
  2. 验证了很多近几年 SOTA 的深度学习目标检测训练技巧。
  3. 修改了很多 SOTA 的方法, 让它们对单GPU训练更加高效,例如 CmBN,PAN,SAM等。

作者用一个图概括了单阶段和双阶段目标检测网络的差别,two-stage的检测网络,相当于在one-stage的密集检测上增加了一个稀疏的预测器。

One-stage检测网络和two-stage检测网络

bag of freebies

指只在训练阶段耗时增多,但不影响推理耗时的技巧。

数据增强

  1. 光度变换。包括了调整亮度、对比度、色相、饱和度和噪点。
  2. 几何变换。包括了随机缩放、裁剪、翻转和旋转。
  3. 模拟目标遮挡
    • Random erase
    • CutOut
    • Hide and Seek。通过划分Grid patches,并在训练的时候隐藏部分patches。
    • Grid Mask
  4. 图像融合
    • Mixup
    • CutMix
    • Mosaic(四宫格)
  5. 正则化
    • DropOut
    • DropConnect
    • DropBlock。相比于DropOut的随机位置丢弃,DropBlock是将整个局部区域进行删减丢弃。其借鉴了CutOut,将CutOut应用到网络中的每一个特征图上。而且并不是用固定的归零比率,而是在训练时以一个小的比率开始,随着训练过程线性的增加这个比率。
  6. 处理数据不平衡
    • 两阶段网络用难例挖掘(Hard Example Mining),但是不适合单阶段检测
    • Focal Loss
  7. 标签平滑边界框回归的损失函数
    • IOU loss
    • GIOU loss
    • DIOU loss
    • CIOU loss

bag of specials

指微微提高了推理耗时,却显著提升性能的技巧。

  1. 增强感受野
    • SPP
    • ASPP
    • RFB
  2. 注意力模块
    • 通道注意力
    • 空间注意力
  3. 特征融合
    • 跳跃连接
    • FPN
    • SFAM
    • ASFF
    • BiFPN
  4. 激活函数
    • LReLU(解决当输入小于0时ReLU梯度为0的情况)
    • PReLU(解决当输入小于0时ReLU梯度为0的情况)
    • ReLU6(专门为量化网络设计)
    • hard-swish(专门为量化网络设计)
    • SELU(对神经网络进行自归一化)
    • Swish(连续可微激活函数)
    • Mish(连续可微激活函数)
  5. 后处理
    • NMS
    • Soft NMS
    • DIOU NMS。在Soft NMS的基础上将重心距离的信息添加到删选BBox的过程中。

YOLOv4网络结构

YOLOv4

YOLOv4

YOLOv4整个网络架构组成:

  • Backbone: CSPDarknet53。在Yolov3主干网络Darknet53的基础上,借鉴2019年CSPNet(Cross Stage Partial Network)的经验产生的Backbone结构,其中包含了5个CSP模块。
  • Neck: SPP, PAN
  • Head: YOLOv3

Backbone: CSPDarknet53

Cross Stage Partial DenseNet

YOLOv4在主干网络Backbone采用CSPDarknet53网络结构,主要有三个方面的优点:

  1. 增强CNN的学习能力,使得在轻量化的同时保持准确性。
  2. 降低计算瓶颈
  3. 降低内存成本

作者只在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模块。

FPN+PAN

YOLOv4在FPN层的后面还添加了一个自底向上的特征金字塔。这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,从不同的主干层对不同的检测层进行参数聚合。

原本的PANet网络的PAN结构中,两个特征图结合是采用shortcut操作,而Yolov4中则采用concat(route)操作。

Head头

YOLOv4 各部分使用到的Bags

  1. Bag of Freebies (BoF) for backbone:
  • CutMix、Mosaic data augmentation
  • DropBlock regularization
  • Class label smoothing
  1. Bag of Specials (BoS) for backbone:
  • Mish activation
  • Cross-stage partial connections (CSP)
  • Multi-input weighted residual connections (MiWRC)
  1. 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
  1. Bag of Specials (BoS) for detector:
  • Mish activation
  • SPP-block
  • SAM-block
  • PAN path-aggregation block
  • DIoU-NMS
posted @ 2021-07-06 09:08  LvJC  阅读(1536)  评论(0编辑  收藏  举报