【论文学习记录】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这篇论文,里面很多的思路还是非常值得学习的,至少为我们训练网络提供了很多思路。
先上图看一下逆天的性能吧。
论文的主要目标是为生产系统设计一个运算速度快的目标检测器,并行计算优化,而不是设计一个低BFLOP网络。因此我觉得论文是更倾向于工程上的应用,这样的作品对我们engineer来说谁不爱呢!
论文主要有以下三点贡献:
- 开发了一个高效而强大的模型,使得任何人都可以使用一张1080Ti或者2080Ti GPU去训练一个超级快速和精确的目标检测器。
- 验证了一系列state-of-the-art的目标检测器训练方法的影响。
- 修改了state-of-the-art方法,使得他们在使用单个GPU进行训练时更加有效和适配,包括CBN,PAN,SAM等。
作者将这些训练的方法分成了两类:
- Bag of freebies:只改变训练策略或者只增加训练成本。数据增强就属于这一类。
- Bag of specials:插件模块和后处理方法,它们仅仅增加一点推理成本,但是可以极大地提升目标检测的精度。
对于基础网络的选择,作者通过实验发现,在ImageNet数据集上CSPResNext50的表现优于CSPDarknet53,而在MS COCO数据集上CSPDarknet53的表现优于CSPResNext50。
作者认为一个检测器需要:
- 更大的输入网络尺寸-检测更多的小尺寸目标
- 更多的层-随着输入网络尺寸的增大而获得更大的感受野
- 更多的参数-更大的模型容量来检测单幅图像中不同尺寸的目标
基于以上,作者认为应该选择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的修改。
SAM的修改。
PAN的修改, add换成concat。
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
除了使用遗传算法寻找最优超参数的实验,其他全部使用默认参数。
不同特征对分类器训练的影响。
不同特征对检测器训练的影响。
不同backbone和预训练权重对检测器训练的影响。
不同mini-batch size对检测器训练的影响。
加入了BoF和BoS训练策略之后,mini-batch size对检测器的性能几乎没有影响了。