一般而言,目标检测当中使用的backbone都是应用在图像分类中的,但是目标检测和图像分类有所不同,也就是说图像分类与物体检测任务之间存在落差,这种落差在我的理解是分类网络会只将图形分为一类,因此不断地下采样,但是目标检测任务会让单个图片包含多个目标,如果继续使用图像分类的backbone,就会丢失小目标的信息。
图像分类与物体检测任务之间存在的落差会产生两个问题:
1.为了完成检测任务需要增加额外的层。
2.分类网络的大量下采样丢失了小目标的位置信息。
1、动机
最近的目标检测器通常依赖于在ImageNet类数据集上预先训练的主干网络。由于ImageNet分类的任务与对象检测不同,对象检测不仅需要识别对象的类别,而且需要对边界框进行空间定位。在VGG16、Resnet等标准网络中,由于特征图的空间分辨率逐渐降低,图像分类的设计原则不利于定位任务。利用图1 A所示的特征金字塔网(FPN)和膨胀等技术来保持网络的空间分辨率。然而,在使用这些骨干网络进行训练时,仍然存在以下三个问题。
(1)网络的stage不同:如图1B所示,典型的分类网络包括5个阶段,每个阶段通过汇聚2x或步长为2的卷积对特征图进行下采样。因此,输出的feature map空间大小是32x“子采样”。与传统的分类网络不同,特征金字塔检测器通常采用更多的级。例如,在Feature Pyramid Networks (FPN)中,添加了额外的阶段P6来处理较大的对象,而在RetinaNet中以类似的方式添加了P6、P7。显然,像P6这样的额外阶段在ImageNet数据集中没有经过预先训练。
(2)大物体的回归弱:在FPN等物体检测网络中,大物体是在比较深的特征图上预测(因为深的特征图对应原图的比例大,感受野大),然而由于特征图越深,物体边缘的清晰度就越模糊,就很难准确回归。
(3)在小分辨率特征图上小目标不可见:由于特征图的分辨率减少到原来的1/32,或者更小,小物体在上面是不可见的(32x32的物体在上面只有一个点),FPN等方法,使用分辨率大但是比较浅的层来解决这个问题,浅层通常只有低语义信息,这不利于识别对象实例的类别。FPN把浅层和语意信息强的深层相加,来提升浅层的语义表达能力,但是由于小物体已经在“深层”中消失,所以他们的语义信息也会丢失。
因此提出DetNet解决上面三个问题:
(1)stages的数量专门为目标检测设计。
(2)引入更多的stage(6-7),保持了特征图的分辨率的同时,也保证了感受野的大小。
2、网络设计
设计DetNet的问题:
(1)需要保持特征图的分辨率足够大,但这样会占用更多的内存和计算量。
(2)降低下采样因子,会让感受野变小,不利于物体类别识别。
网络设计基于resnet-50,前面四个stage相同,从第五个stage开始不同,细节如下:
(1)增加一个stage6,并从stage5开始保持16×的感受野。
(2)在stage5和stage6采用了 dilated bottleneck with 1x1 convolution projection。
(3)从stage4开始使用bottleneck with dilation 用于增加感受野,并且保持特征层维度为256不再改变,用于减少计算量。
整体的网络结构如下:
3、结果