DSOD 从头开始训练

DSOD是ICCV2017的文章,研究了从零开始训练目标检测器的问题。
为什么从零开始训练检测器:

  1. 在Imagenet上预训练的模型直接迁移应用到目标检测,会导致模型结构灵活性差,且难以改变网络结构;
  2. 分类与检测任务不同,采用用于分类任务的预训练模型可能会导致检测的局部最优解;
  3. 有些任务目标域差异太大,例如深度图,医学图像等。

鉴于以上问题,作者构建了一个DSOD结构的目标检测器,可以看做是SSD和DenseNet的结合,提出了四个构建从零开始训练目标检测器的原理:

  1. proposal free。 Faster-RCNN系列的检测器可以使用RPN生成proposal的必要条件是backbone生成的特征图质量从训练开始就足够高,当从零开始训练检测器时,不能保证这一点,因此在设计从零开始训练的检测器时,要抛弃RPN和proposal。否则由于ROI-Algin/Pooling会导致梯度传播不稳定,训练不收敛;
  2. deep supervision。核心思想是损失函数不仅要给输出层提供监督信号,还要给非输出提供监督信号,类似于Resnet和Densetnet;
  3. Stem block。受inception v3/v4的启发,使用3个3x3卷积和max pooling作为stem block,用于减少信息损失;
  4. dense prediction structure。如下图所示,左边为普通的预测头,左边为密集预测头。主要是受到了Densetnet的启发,每个bottleneck的输入是前面所有模块的concate。


个人认为,四个原则中第一个的比较基础的,确定了从零开始训练检测器不能使用常规的RPN。剩下的主要是受DensetNet的启发,在backbone和head中增大、增广监督信号。

猜你喜欢

转载自www.cnblogs.com/zi-wang/p/12306748.html