这篇论文的trick是真多,消融实验做的很详细
另外如何优化网络结构做到单卡训练也是比较重要的
1、Introduction:
作者自认为的贡献:
- 设计了一个高效的模型,可以在单1080TI上训练,万千屌丝的救星。
- 验证和对比了各种各样trick在目标检测任务上的有效性。
- 修改了SOTA检测模型,减小了对资源的占用,可以使用单卡训练。
先看效果
2、Related work
2.1目标检测模型
介绍了1阶段2阶段,有无anchor的各种方案,把检测模型分成以下4个部分,没啥新意,跟mmdetection中的分法类似。
2.2 bag of feebies
这部分就是介绍那些通过变换训练策略提升模型能力的方法了,简称tricks,没啥干货,倒是方便了别人写论文找资料。。。
2.3 bag of specials
这部分介绍为了提升模型性能增加的一些结构,比如BiFPN, ASFF,GIoU等,作用同上。
3、Methodology
3.1 Selection of architecture
- 网络输入的图片尺寸尽量大,有利于小目标的检测
- 更多的层数,保证感受野足够大
- 更多的参数量
balabala说了一堆,最终选择了 CSPDarknet53 + SSP + PANET + YOLOV3 HEAD的结构
3.2 Selection of BoF and BoS
作者从以下几个方向入手,选BoF和BoS
- Activations: Relu, leaky-Relu等等
- Bounding box regression loss: MSE, IOU, GIoU等
- Data augmentation: CutOut, MixUp, CutMix
- Regularization method: DropOut, DropPath
- Normalization: BN, SyncBN
- Skip-connections: 残差网络,WRC, CSP等等
3.3 Additionnal improvements
- 新的数据增强方法,Mosaic 和 Self-Adversarial Training(SAT)
- 优化超参
- 优化模型用到的一些结果,使其更加高效,以便单卡训练
这里先重点说下如何优化模型的:
首先是单卡训练batch size不可能太大,作者提出提出CmBN,是CBN的变种,CBN是Cross-Iteration BN, CmBN是Cross-minibatch BN,统计只在一个Batch之间。
另外两个小小的优化,一般般吧,一般来说单卡训练问题主要在batch size太小上,batch size小于16效果会差不少。
4.实验
直接看消融实验的结果吧,可以直观看到不同trick对于模型的影响
1、对于分类网络的影响,主干网络分别为CSPResNeXt-50和CSPDarknet-53
2、BoF和BoS对检测网络影响的消融实验
3、另外两个消融实验(自己看吧)
结论:当然是一个又快又准的检测器了。