论文题目: 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部分
[检测]YOLOv4


Neck


SPP

论文链接:Spatial pyramid pooling in deep convolutional networks for visual recognition

Spatial Pyramid Pooling

yolov3中有一个版本就是yolov3-spp。yolov4在CSPDarkNet53基础上,作者添加了SPP模块,因其可以提升模型的感受野、分离更重要的上下文信息、不会导致模型推理速度的下降;

原始SPP结构:
[检测]YOLOv4
yolov3+ spp结构:见下图

PAN

论文链接:Path Aggregation Network for Instance Segmentation

作者还采用PANet中的不同backbone级的参数汇聚方法替代FPN。
[检测]YOLOv4
FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递。而PANet在FPN的后面添加一个自底向上的金字塔,这样的操作是对FPN的补充,将低层的强定位特征传递上去。

  • 自底向上的路径增强,为了缩短信息传播路径,同时利用低层特征的精准定位信息
  • 动态特征池化,每个proposal利用金字塔所有层的特征,为了避免proposal的随意分配,对分类及定位更加有利。
  • 全连接层融合,为了给掩码预测增加信息来源

将PAN的short-cut连接改为拼接:

[检测]YOLOv4

Head


YOLOv3

论文链接:YOLOv3: An Incremental Improvement

[检测]YOLOv4

yolov3+spp结构

[检测]YOLOv4

spp模块结构
[检测]YOLOv4

Tricks(backbone)


CutMix

论文链接:CutMix: Regularization Strategy to Train Strong Classifiers
with Localizable Features

数据增强:Mixup,Cutout,CutMix

  • Mixup:将随机的两张样本按比例混合,分类的结果按比例分配;
  • Cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变;
  • CutMix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配
    [检测]YOLOv4
    M{0,1}W×H\mathbf{M}\in\{0,1\}^{W\times H}是二进制掩码,\bigodot是逐像素相乘,λ\lambda属于Beta分布。
    对二进制掩M\mathbf{M}进行采样,先对剪裁区域的边界框B=(rx,ry,rw,rh)\mathbf{B}=(r_x,r_y,r_w,r_h)进行采样:
            [检测]YOLOv4

Mosaic

mosaic dataloader在https://github.com/ultralytics/yolov3提出

数据增强Mosaic data augmentation,是一种将4张训练图片混合成一张的新数据增强方法,这样可以丰富图像的上下文信息,提高小物体的检测效果。如下图所示:
[检测]YOLOv4

这种做法的好处是允许检测上下文之外的目标,增强模型的鲁棒性。此外,在每一层从4个不同的图像批处理标准化计算**统计,这大大减少了对大mini-batch处理size的需求。

DropBlock

论文链接:DropBlock: A regularization method for convolutional networks

在卷积层进行dropout来防止网络过拟合。在featuremap上去一块一块的找,进行归零操作,类似于dropout,叫做dropblock。
[检测]YOLOv4
(a)原始输入图像(b)绿色部分表示**的特征单元,b图表示了随机dropout**单元,但是这样dropout后,网络还会从drouout掉的**单元附近学习到同样的信息©绿色部分表示**的特征单元,c图表示DropBlock,通过dropout掉一部分相邻的整片的区域,网络就会去注重学习别的部位的特征,来实现正确分类,从而表现出更好的泛化。

dropblock有三个比较重要的参数,一个是block_size,用来控制进行归零的block大小;一个是γ,用来控制每个卷积结果中,到底有多少个channel要进行dropblock;最后一个是keep_prob,作用和dropout里的参数一样。


Label Smoothing

论文链接:Rethinking the inception architecture for computer vision
may be useful:When Does Label Smoothing Help?

Label Smoothing 是一种正则化的方法,对标签平滑化处理以防止过拟合。
one-hot编码标签可能存在:模型对于预测过于自信,以至于忽略到可能的小样本标签;导致过拟合。Label smoothing让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。
[检测]YOLOv4


Modified(backbone)


Mish

论文链接:Mish: A Self Regularized Non-Monotonic Neural Activation Function

Mish:新的深度学习**函数
f(x)=xtanh(ln(1+ex))f(x)=x\cdot tanh(ln(1+e^x))

[检测]YOLOv4

CSP

论文链接:CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN

Cross Stage Partial Network(CSPNet)设计的主要目的是在减少计算量的同时实现更丰富的梯度组合。这一目标是通过将基础层的特征映射划分为两部分,然后通过提出的跨阶段层次结构将它们合并。

CSPNet是一种处理的思想,可以和不同的backbone结合使用。CSPNet提出主要是为了解决三个问题:

  • 增强CNN的学习能力,能够在轻量化的同时保持准确性。
  • 降低计算瓶颈
  • 降低内存成本

CSPNet和PRN都是一个思想,将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concate。
[检测]YOLOv4


MiWRC

Weighted-Residual-Connections加权残差连接


Tricks(detector)


CIoU

论文链接:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression

文章提出两个Loss :Distance-IoU(DIoU) Loss和Complete IoU(CIoU) Loss用于目标检测的Bbox回归,并与IoU Loss和GIoU Loss做了对比。此外,DIoU很容易用在NMS中。

  • IOU Loss:
    [检测]YOLOv4
  • GIoU Loss:引入了一个惩罚项,其中C表示能覆盖候选框和真实框的最小box.由于惩罚项的引入,在不重叠的情况下,预测框会向目标框移动。
    [检测]YOLOv4
  • DIoU Loss:出现下面情况时,GIoU Loss完全降级成IoU Loss,因此引入DIoU Loss,DIoU Loss是在IoU Loss基础上引入一个惩罚项。bb,bgtb^{gt}BBBgtB^{gt}的中心点,ρ()\rho(·)为欧氏距离,cc为覆盖BBBgtB^{gt}最小box的对角线长度。惩罚使中心点距离最小。
    [检测]YOLOv4
    [检测]YOLOv4
  • CIoU Loss:CIoU Loss又引入一个box长宽比的惩罚项,该Loss考虑了box的长宽比
    [检测]YOLOv4
    [检测]YOLOv4
    [检测]YOLOv4

CMBN

BN论文链接:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
CBN论文链接:Cross-Iteration Batch Normalization

  • CBN,将前几次iteration的BN参数保存起来,当前iteration的BN参数由当前batch数据求出的BN参数和保存的前几次的BN参数共同推算得出
  • CMBN,CBN的修改版本,如下图所示,定义为Cross mini-Batch Normalization(CmBN)。这仅收集单个批中的小批之间的统计信息。
    [检测]YOLOv4

SAT

self adversarial training ,这是一种新的数据扩充技术,该技术分前后两个阶段进行。

  • 在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自身执行一种对抗性攻击,改变原始图像,从而造成图像上没有目标的假象。
  • 在第二阶段,训练神经网络对修改后的图像进行正常的目标检测。

Eliminate grid sensitivity
消除网格敏感度

Multiple Anchor
为单个 ground truth设置多个anchors

Cosine Annealing scheduler

论文链接:SGDR: STOCHASTIC GRADIENT DESCENT WITH
WARM RESTARTS

[检测]YOLOv4

Random training shape
随机训练形状,yolov2,Multi-Scale Training


Modified(detector)


SAM

论文链接:CBAM: Convolutional Block Attention Module

SENet只关注通道的注意力
CBAM:Channel attention module+Spatial attention module
[检测]YOLOv4
[检测]YOLOv4
在yolov4中采用了Spatial attention module(SAM)
将SAM从空间上的attention修改为点上的attention:
[检测]YOLOv4

DIoU-NMS

论文链接:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression

DIoU-NMS在hard-nms的基础上,用DIoU替换IoU。DIoU Loss是在IoU Loss基础上引入一个惩罚项。bb,bgtb^{gt}BBBgtB^{gt}的中心点,ρ()\rho(·)为欧氏距离,cc为覆盖BBBgtB^{gt}最小box的对角线长度。惩罚使中心点距离最小。
[检测]YOLOv4

相关文章:

  • 2021-04-27
  • 2021-08-19
  • 2021-10-15
  • 2021-07-22
  • 2021-04-17
  • 2022-01-11
  • 2021-07-18
  • 2021-06-28
猜你喜欢
  • 2021-07-05
  • 2022-02-09
  • 2022-12-23
  • 2021-12-05
  • 2021-04-15
  • 2021-06-05
  • 2021-05-19
相关资源
相似解决方案