【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

YOLOv4新鲜出炉,今天终于有点时间看一看论文,Alexey大神的作品,论文地址:YOLOv4: Optimal Speed and Accuracy of Object Detection

这篇文章相当多的tricks,作者应该是花费了大量的时间做了大量的实验得出的结论。因为我一直在关注Alexey在github上的更新,很多内容github上已经早于论文更新了。怎么说呢,这么多技巧还是会因不同的数据集而异的,我之前在我自己的数据集上已经尝试多一些tricks,有一些确实有效,有一些在COCO上有效,但在自己的数据集上不见得有效。

不得不说Alexey大神真牛,几年一直在更新darknet,做了很多的改进。这次YOLOv4这篇论文,里面很多的思路还是非常值得学习的,至少为我们训练网络提供了很多思路。


先上图看一下逆天的性能吧。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

论文的主要目标是为生产系统设计一个运算速度快的目标检测器,并行计算优化,而不是设计一个低BFLOP网络。因此我觉得论文是更倾向于工程上的应用,这样的作品对我们engineer来说谁不爱呢!

论文主要有以下三点贡献:

  1. 开发了一个高效而强大的模型,使得任何人都可以使用一张1080Ti或者2080Ti GPU去训练一个超级快速和精确的目标检测器。
  2. 验证了一系列state-of-the-art的目标检测器训练方法的影响。
  3. 修改了state-of-the-art方法,使得他们在使用单个GPU进行训练时更加有效和适配,包括CBN,PAN,SAM等。

作者将这些训练的方法分成了两类:

  1. Bag of freebies:只改变训练策略或者只增加训练成本。数据增强就属于这一类。
  2. Bag of specials:插件模块和后处理方法,它们仅仅增加一点推理成本,但是可以极大地提升目标检测的精度。

对于基础网络的选择,作者通过实验发现,在ImageNet数据集上CSPResNext50的表现优于CSPDarknet53,而在MS COCO数据集上CSPDarknet53的表现优于CSPResNext50。

作者认为一个检测器需要:

  • 更大的输入网络尺寸-检测更多的小尺寸目标
  • 更多的层-随着输入网络尺寸的增大而获得更大的感受野
  • 更多的参数-更大的模型容量来检测单幅图像中不同尺寸的目标

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

基于以上,作者认为应该选择CSPDarknet53作为检测器的backbone。为了增大感受野,作者还将SPP模型加入了CSPDarknet53中。并且使用PANet作为参数聚合的方法代替YOLOv3中使用的FPN。最终YOLOv4的结构是CSPDarknet53 backbone + SPP + PANet + YOLOv3 head。

为了使检测器更适合在单GPU上训练,作者还做了如下设计和改进:

  • 引入了新的数据增加方法Mosaic和Self-Adversarial Training(SAT)
  • 使用遗传算法选择最优的超参数
  • 修改一些已有的方法使得训练和检测更加高效,包括SAM,PAN,Cross mini-Batch Normalization(CmBN)

Mosaic是一种新的数据增强方法,它融合四张训练图像。除此之外,在batch normalization计算每一层**数据的时候是包含这四幅不同的图像,这极大的减小mini-batch的大小。

Self-Adversarial Training(SAT)也是一种新的数据增强方法,它作用于两个前向、反向传播阶段。第一阶段神经网络改变原始图像而非网络权重,第二阶段神经网络使用这个改变的图像来训练检测器。

关于CmBN的修改。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

SAM的修改。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

PAN的修改, add换成concat。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

YOLOv4使用了如下方法:

  • Bag of Freebies(BoF) for backbone:CutMix和Mosaic数据增强,DropBlock正规化,Class label smoothing
  • Bag of Specials(BoS) for backbone:Mish**函数,Cross-stage partial connections(CSP),Multi-input weighted residual connections(MiWRC)
  • Bag of Freebies(BoF) for detector:CIoU-loss,CmBN,DropBlock正规化,Mosaic数据增强,Self-Adversarial Training,Eliminate grid sensitivity,使用多个anchors对应一个groundtruth,Cosine annealing scheduler,Optimal hyperparameters,Random training shapes
  • Bag of Specials(BoS) for detector:Mish**函数,SPP-block,SAM-block,PAN path-aggregation block,DIoU-NMS

关于实验

在ImageNet图像分类实验中,默认的超参数是:

  • training steps:8000,000
  • batch size:128
  • mini-batch size:32
  • polynomial decay learning rate:initial learning rate 0.1
  • warm-up steps:1000
  • momentum:0.9
  • weight decay:0.005
  • BoF实验中,额外增加50%的training steps

在MS COCO目标检测实验中,默认的超参数是:

  • training steps:500,500
  • step decay learning rate:0~399,999 steps ,learning rate 0.1;400,000~449,999 steps,learning rate 0.01;450,000~500,500 steps, learning rate 0.001
  • momentum:0.9
  • weight decay:0.0005
  • batch size:64
  • mini-batch size:8 or 4

除了使用遗传算法寻找最优超参数的实验,其他全部使用默认参数。

不同特征对分类器训练的影响。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

不同特征对检测器训练的影响。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

不同backbone和预训练权重对检测器训练的影响。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

不同mini-batch size对检测器训练的影响。

【论文学习记录】YOLOv4: Optimal Speed and Accuracy of Object Detection

加入了BoF和BoS训练策略之后,mini-batch size对检测器的性能几乎没有影响了。