STDN:Scale-Transferrable Object Detection 论文阅读

时间:2021-12-16 06:30:51

概述

这篇是CVPR 2018收录的上海交通大学电子系人工智能实验室物体检测方面的论文。博主认为此算法亦为SSD的改进分支,属于典型的one-stage物体检测模型,作者尝试通过尺度变换模块(scale-transfer module )去解决物体检测中不同目标检测时的尺度问题,取得了不错的效果,并兼顾的速度和准确性。以下是博主自己对于本文的拙见和翻译,不完全对,欢迎讨论。

STDN模型介绍

为解决物体检测中的多尺度问题,特别是提高对于小物体的检测效果,一些经典的算法不断出现,例如FPN、DSSD等,通过整合不同尺度的语义特征,在不同尺度的map上做预测,但是这些方法,在提高对于目标物体特别时小物体识别效果的同时由于加入了额外的层,也增大了计算量,影响了检测的实时性。下图显示了目前主流方法与本文方法之间的不同。通过(d)图我们可以发现,本文的scale-transfer module不仅改变了预测层map的尺寸,也改变了部分层的通道数。

STDN:Scale-Transferrable Object Detection 论文阅读

针对以上问题,作者提出尺度变换模块scale-transfer module    STM,即获得了不同尺度的语义特征,又没有增加额外的参数,降低检测的速度。其整体框架基于SSD,基础网络采用的是DenseNet-169,DenseNet通过多层连接的方式整合低层和高层信息,其特征提取能力较强。STDN模型的主要框架如下:

STDN:Scale-Transferrable Object Detection 论文阅读

整体网络结构与SSD类似,提取DenseNet-169的最后一个Dense block中的6个concatenate层作为预测的特征层。与SSD直接利用VGG16后几层直接预测不同的是,STDNC则加入了独创的STM,在不增加任何参数和计算量的同时达到基于低分率特征map获得高分率特征map的目的,最终实现整体网络正确率和速度的提升。

STM模块简介

STM模块由池化层(Pooling)和尺度转换(scale-transfer)层组成。基础网络DenseNet-169最后一个block的尺寸为9*9,各层之间的通道数不同。为了获取不同尺度的特征map,作者将STM直接嵌入到DenseNet中,具体做法如下:Pooling用来获得小尺度的特征map②尺度转换层通过减少feature maps的通道个数获得大尺度的map,整个过程没有增加任何参数。

参考上图整体模型结构,对于①很好理解,即是一般池化过程获得较小分辨率的map;对于②则相当于增大的map尺寸而压缩了通道数。作者在文中说“The scale-transfer layer is an operation of periodic rearrangement of elemenets”,并用了一个看似很深奥的公式表示这一过程

STDN:Scale-Transferrable Object Detection 论文阅读

博主当时看到如此解释和公式时一时也没能理解,但是结合作者给出的一个示意图和网络模型的最后两层就非常好理解。

STDN:Scale-Transferrable Object Detection 论文阅读

我们以网络的最后一个预测层为例,DenseNet-169的输出维度为9*9*1664,经过一个4X的scale-transfer后变为36*36*104。如作者所说,整个过程是像素值周期排列的过程,在此次变换中r=4,变换后的第一个通道上一个r*r像素块的像素值相当于是原来前r*r个通道上1*1的像素值的重新排列。在这个不得不佩服作者的奇思妙想,在不增加任何参数的情况下完成了不同尺度特征的提取!

实验结果

作者分别在COCO和VOC2007等多个数据集上对STDN进行了实验比较,结果如下:                

STDN:Scale-Transferrable Object Detection 论文阅读

从上图可以看出,STDN在取得较高准确率的同时又兼顾了速度。例如STDN321和513两个模型相比于Faster-RCNN、YOLOv2、SSD、DSSD等,首先在正确率上已具有相同或者更高的水平,但是在速度上优势很大,特别是对于准确率较高的R-FCN和DSSD513简直是碾压。