论文:Bag of Freebies for Training Object Detection Neural Networks
Github:https://github.com/dmlc/gluon-cv
论文主要整合了一些常用的目标检测方面,对精度有提升的技巧。文章使用了yolo-v3和faster rcnn进行了实验。最终,
yolo-v3,精度提升4.0%
faster rcnn(resnet50 backbone),精度提升1.1%
faster rcnn(resnet101 backbone),精度提升1.1%
主要贡献:
- 第一个系统的对不同的训练技巧在不同的检测框架上的影响作出了评估,方便引导未来的工作。
- 提出了视觉一致的图片混合方法,可以极大的提升目标检测的准确性。
- 使用论文总结的技巧,经过实验,在没有修改框架和loss的情况下,获得了5%的绝对精度的提升,并且没有增加任何的测试时间。
- 数据增强可以提高模型的泛化能力,减少过拟合。
图像融合mixup:
这里的融合不是使用的固定的值进行融合(例如上图0.9,0.1)。而是使用贝塔分布进行的融合。上面的融合的数值,由贝塔分布随机生成。这样每个融合后的图片都是动态进行融合的。
贝塔分布的函数,
其中,d1,d2分别表示α,β。
最终实验结果,
标签平滑Label Smoothing :
softmax的公式,
Softmax crossentrop公式,
Label smooth公式,
其中,K表示总共的类别数,e表示一个小的常数。公式这样设计,就保证了按照这种方式smooth处理后,整体概率之和还是1。
这样做奏效的解释是,
假设大多数的数据集的y标签都有一定的错误。错误的y不利于最大化logp(y|x)。避免这种情况的方法就是显示的对标签上的噪声进行建模。(详细可以阅读圣经7.5.1)
plus,
ctc操作中的label smooth公式,
整体为ctc loss和KL散度 loss的加权求和。U表示一个均匀分布,通过KL散度,将预测的P的分布拉的平均。通过ctc来得到正确的分类。
distlation中的label smooth公式,
通过参数T,即temperature来将整个分布拉的平缓。
数据预处理:
随机crop,随机expansion ,随机水平翻转,随机缩放,亮度,色调,饱和度,对比度。
cos学习率策略:
通过让学习率按照cos的方式不断下降,然后突然升高再不断下降的方式进行训练。同时还进行了学习率的warm up操作。即刚开始训练的前几个迭代中,将学习率缓慢的升高。
异步Batch Normalization :
进行大的batch多机多卡训练的时候,进行异步的BN操作。
多尺度训练:
在训练yolo-v3的时候,对输入图像的尺寸,进行{320; 352; 384; 416; 448; 480; 512; 544; 576; 608}随机选择。
实验结果:
Yolo-v3在coco实验结果,
Faster rcnn在coco实验结果,
最终得分,