Rethinking Training from Scratch for Object Detection

一. 概述

正常训练目标检测的流程分为以下几种:

  • 在imagenet上进行预训练,然后在特定数据集进行tune
  • 直接在数据集上进行从头训练

两种方式各有千秋,前者可以很快收敛(在特定数据集收敛快),但是训练复杂(预训练实际长)。后者直接训练较为容易(尤其在修改模型结构时),但是训练周期较长(比tune阶段长很多)。这篇文章就是解决从头训练的时长问题,从而达到集成两者的优点(夸大其词的说法)。

二. 流程

论文比较简单,这里进行总结如下:

代码地址: 链接地址
论文地址: 链接地址

  • 精度和 \(batchsize\) 有关,且在一定范围内,越大越好。
  • 精度和图像的分辨率(大小)有关,且图像越大分辨率越好,图像过小对精度影响较小。
  • 精度和缩放有关,按照分类的缩放进行,不仅提高速度,且精度也比正常缩放效果好。
  • 精度和BN层有关,正相关。

按照上述的总结,论文进行改进的训练如下:

  1. 使用BN层(当前网络基础结构)

  2. Pretrained先用小尺度图像进行训练,\(batchsize\)设置较大

  3. 数据处理部分-->先将图像缩放到 \((H,W)\times(1.0,1.2)\) ,随机RandomCrop-->\((H,W)\),最后进行Padding到 \((h,W)\)

  4. Finetune阶段按照正常训练即可

Rethinking Training from Scratch for Object Detection-LMLPHP

三. 总结

  1. 有一定使用意义,对于大数据集,直接使用此方法较好。
  2. 对于小的数据集,还是重新训练imagenet比较好
  3. VOC的数据集太小,而且分布较为散乱,这里对比意义不大。
  4. 笔者会在实际数据集上尝试之后进行补充(TODO
Rethinking Training from Scratch for Object Detection-LMLPHPRethinking Training from Scratch for Object Detection-LMLPHP
06-16 21:30