前言

DSOD(Deeply Supervised Object Detectors)是ICCV 2017的一篇文章,它表达了一个非常有意思的东西。这篇论文不是从目标检测的高mAP值或者速度更快出发,而是从另外一个角度切入来说明fine-tune后的检测模型和直接训练的检测模型的差距其实是可以减少的,也即是说一些检测模型可以摆脱fine-tune这一过程,并且相比于fine-tune训练出来的模型效果并不会变差。

介绍

DSOD这一算法是在SSD的基础上进行的改进,可以简单的看成:

DSOD=SSD+DenseNet

作者在论文中提到他也实验了从0开始训练Region Proposal Based的检测算法比如Faster RCNN,R-FCN等,但这些模型很难收敛。而One-Stage的目标检测算法比如SSD却可以收敛,虽然效果很一般,因此最后作者使用SSD作为了这篇论文接下来讨论的BaseLine。

然后本文基于SSD改进的DSOD在VOC2007 trainval和2012 trainval数据集上训练模型,然后在VOC2007 testset上测试的表现(77.7%mAP)超过了使用fine-tune策略的SSD300S(69.6%mAP)和SSD300(75.8mAP),原文是这样描述的。

Our DSOD300 achieves 77.7% mAP, which is much better than the SSD300S that is trained from scratch using VGG16 (69.6%) without deep supervision. It is also much better than the fine-tuned results by SSD300 (75.8%)

出发点

这篇文章的出发点是什么呢?作者认为几乎的所有检测网络都在使用fine-tune这一技巧,那么一定要用fine-tune吗?作者列出来了3个原因来尝试说明fine-tune不是必须的。原因如下:

  • 预训练的模型一般是在分类图像数据集比如Imagenet上训练的,不一定可以迁移到检测模型的数据上(比如医学图像)。
  • 预训练的模型,其结构都是固定的,因此如果想要再修改的话比较麻烦。
  • 预训练的分类网络的训练目标一般和检测目标不一致,因此预训练的模型对于检测算法而言不一定是最优的选择。

基于上面这几点原因,论文提出了一个从0开始的检测模型DSOD,接下来看看是怎么设计的吧。

DSOD网络结构

下面的Figure1分别展示了SSD的整体结构和DSOD的整体结构。

Figure1左图的plain connection表示SSD网络中的特征融合操作,这里对于的输入300 x 300图像来说,一共融合了6种不同scale的特征。在每个虚线矩形框内都有一个1 x 1的卷积和一个3 x 3的卷积操作,这也可以被叫作BottleNeck,也就是1 x 1卷积主要起到降维从而降低3 x 3卷积计算量的作用。

Figure1右图的dense connection表示本文的DSOD引入了DenseNet的思想。dense connection左边的虚线框部分和plain connection右边的虚线框部分结构一致,区别在于里面的channel个数,dense connection中3 x 3卷积的channel个数是plain connection中3 x 3卷积的一半。主要是因为在plain connection中每个BottleNeck的输入是前面一个BottleNeck的输出,而在dense connection中,每个bottleneck的输入是前面所有bottleneck的输出的concate,所以为了降低计算量减少了通道数。

同时,dense connection部分右边的矩形框是下采样模块,包含一个2 x 2的最大池化层(降采样作用)和一个的1 x 1卷积层(降低channel个数的作用),作者也提到先进行降采样再进行1 x 1卷积可以进一步减少计算量。

因此可以看出DSOD即是SSD+DenseNet的结果。

DSOD是在SSD的基础上发展而来的,DSOD的不同在于,不管是在backbong还是head部分,DSOD都借鉴了DenseNet的设计思想。

DSOD 网络分两个部分:用于特征提取的backbone,用于目标预测的front-end。backbone子网络类似于DenseNets,包含Stem block,4个dense block,2个过渡层,2个无池化层的过渡层。front-end子网络使用致密的结构融合多尺度预测响应。其中Dense Block就是DenseNet网络的子模块,然后stem block由3 x 3卷积和2 x 2池化组成,后面实验证明了这个stem block可以提高mAP值。下面的Table1详细展示了DSOS网络的结构。

实验结果

下面的Table3展示了在VOC2007 testset上不同参数的实验结果。

第3,4行的对比可以看出BottleNeck的channel个数越多,mAP相对越高。第5、6行的对比可以看出growth rate从16变成48,可以提高4.8%的mAP。第6,9行的对比可以看出stem block的存在可以提高2.8%的mAP。

下面的Table4则展示了更丰富的结果。

可以看出SSD在没有预训练模型的情况下也是可以收敛的,不过效果一般。但如果使用本文的DSOD则可以达到使用预训练模型效果,并且结果还偏好一点。

总结

DSOD是在SSD的基础上结合了DenseNet的思想,使得网络可以在不使用预训练模型的条件下收敛得和使用预训练模型的BaseLine模型一样好,另外DenseNet的引入也使得相比SSD来说DSOD的参数数量大大减少,注意参数量不等于推理速度会变快。如果专注于特殊图像检测或者难以搞定预训练模型的场景这篇文章的思想是值得借鉴的。