今天读了一篇比较古老的文章,是旷视发表在ECCV18的一篇目标检测文章,DetNet。这篇文章应该紧跟着FPN发表的,主要针对目标检测通用backbone的问题以及FPN的问题,提出了一个适用于目标检测的新的backbone,也就是DetNet。
上图分别展示了FPN、分类网络以及DetNet的网络结构。首先,在imagenet上训练的通用backbone因为最终要做识别的任务,所以会对输入图片进行大尺度下采样,最终的特征图是原输入的1/32,这增大了网络的视野域,对于分类任务来说是很好的,但是目标检测需要对物体进行精准的定位,太小的特征图会对定位造成严重的影响。因此,FPN通过top-down以及bottom-up pathway来解决这一问题,额外引入64倍缩放的stage来处理极大的物体,小物体则通过逐层上采样在大分辨率特征图上预测。这样做的问题有两个:1)额外加的stage缺少imagenet数据集上的预训练,2)如果小目标在下采样阶段已经丢失了,那么上采样阶段也很难再找回来。
因此,DetNet在原有的resnet的基础上扩充了一个阶段P6,并且从P4-P6都不再降低特征分辨率,因此,网络最小的特征图也是原图的1/16. 并且,为了增大网络的视野域,在P5和P6引入了dilated bottleneck,将bottleneck中的3x3卷积改为dilated conv。
这里也有一个很有意思的地方,作者设计了两种dilated bottleneck,一种是输入特征直接加到输出上(A),另一种是输入特征经过1x1 conv变换后再加到输出上,在DetNet中,P5和P6采用了BAA的连接方式。作者通过实验证明,BAA的方式比AAA的方式更好,利用B这种结构可以更好的开始一个新的stage,原因是如果采用AAA的方式,输入特征没有经过非线性变换,与输出特征差别不大,这导致特征没有变化。
实验结果也比较有趣,跟resnet作为backbone相比,DetNet在AP50 small上和AP85 large上都有比较明显的提升,证明其可以更好的找回小物体,并定位大物体;但是在AP85 small上就提升不那么明显了。这跟作者之前的claim也是一致的。