使用卷积神经网络进行学习的过程中,存在着一些问题,越深的网络的感受野越大,表达能力更强,但是也更抽象,小目标的特征可能会被过滤;而浅层网络感受野小,细节信息比较清晰,但是表达能力弱小。这在目标检测中就会出现问题,小目标很难被检测到,因此SSD使用不同层的信息来检测不同尺度目标,用深层网络层预测大物体而浅层网络检测小物体,但是浅层的网络表达能力很弱,因此SSD对小目标的分类效果不大好。
如果能够将深层网络的信息和浅层网络特征进行融合,就可以充分利用这些底层信息,就可以提升精度。
因此DSSD在SSD基础上,其深层网络通过反卷积进行上采样并与浅层网络的输出进行融合,融合后的结构特征图上进行目标检测。

图中的白色框部分为SSD-resnet101的网络结构,conv3_x层和conv5_x层为原来的resnet101中的卷积层,后面的五层蓝色框是SSD扩展卷积层,原来的SSD算法是将这七层的特征图直接输入到预测阶段做框的回归任务和分类任务。DSSD是将这七层特征图拿出六层(去掉尺寸为Conv5_x的特征图)输入到反卷积模型里,输出修正的特征图金字塔,形成一个由特征图组成的沙漏结构。最后经预测模块输入给框回归任务和分类任务做预测。
这里有几个地方需要注意:
(1)预测模块的改变。

(a)是SSD中用于分类和回归用的结构,即在特征图上直接连接1*1的卷积,一个用来分类,一个用于回归。图(c)是文中用于分类和回归的最优结构。图(b)、图(c)、图(d)均是在SSD的基础上将原有的结构改成Resnet模块。提取更深维度的特征用于分类和回归。添加的位置在反卷积结构之后,分类和回归之前。Eltw sum有两种,一种点和、一种点积,最后实验证明点积的效果最好。
(2)反卷积后特征的融合
高层特征的通道和浅层特征的通道的个数是不同的,这里融合的过程中统一按照浅层的通道数来进行融合。融合特征可以使用对应点相加或者相乘的方式,相加较快,相乘的话稍微有点提升。同时由于浅层特征图和高层特征图上的尺度并不相同,因此在融合前需要多底层特征图进行Normalization操作。如果混在一起训练,在实践过程中会很难训练(容易训飞)。
总体上使用DSSD比SSD深了许多,训练也慢了,但是小目标检测上有了提升。
网友评论