席 磊,刘增力
(1.昆明理工大学 信息工程与自动化学院,云南 昆明 650500;2.昆明理工大学 云南省人工智能重点实验室,云南 昆明 650500)
基于近年来卷积神经网络、深度学习技术以及计算机技术的进步,以神经网络为代表的目标检测技术日益凸显出其卓越的性能和巨大的潜力。自AlexNet[1]诞生后,神经网络用来进行目标检测的工作逐渐增多。各种目标检测模型层出不穷,同时检测性能不断提升。目前,目标检测模型主要分为两类,一类是以RCNN[2]为代表的双阶目标检测器,另一类是以 SSD[3]和 YOLO[4]为代表的单阶目标检测器。SSD是最早出现的单阶检测器之一,不仅达到了实时检测要求,而且在精度上取得了较好的效果。但是,SSD本身的结构并不完善。随着技术的更迭,SSD的改进版不断出现。DSSD[5]利用性能更好的残差网络替代VGG。残差网络相对于VGG有着更好的特征提取能力,结合反卷积进行特征融合后实现了更高的精度,特别是对小目标的检测,取得了更好的效果。但是,由于残差网络计算量的增加,它的检测速度稍慢。FSSD[6]同样采用特征融合策略将低层的特征图拼接融合,将得到的新的尺寸为38×38的低层特征作为基础进行后续的特征提取工作,提高了低层特征信息的提取能力。DenseSSD[7]在结构中设计了DenseSkip模块,模块内部采用类似瓶颈结构,进行多次1×1+3×3的卷积。它的特征复用类似DenseNet,且使用特征金字塔方式进行特征融合。RFBNet[8]则从感受野大小差异带来的信息差异出发,设计了易于迁移使用的RFB模块,利用大小不同的感受野的卷积核进行特征提取。
本文提出一种改进的目标检测模型MSSD,结合深度可分离卷积的优势,采用新的特征融合方式,进一步挖掘了模型本身的结构优势,有效提高了模型的检测性能。
SSD 的骨干网络为 VGG16[9]。VGG 凭借其卓越的性能获得了ImageNet 2014挑战赛分类的亚军和定位的冠军。VGG16包含13个卷积层、5个池化层以及3个全连接层。笔者将VGG16加以改动,去掉VGG16的全连接层后,添加卷积层conv6和conv7,13个卷积层不变,将原作的第5个池化层的尺寸从2×2变为3×3。此外,新增的conv6采用膨胀卷积的思想,在conv7后添加额外的卷积处理。
SSD可接受的输入尺寸有300×300和512×512两种。SSD300 由 conv4-3、conv7、conv8-2、conv9-2、conv10-2及conv11-2输出的特征图做预测,大小分别为38、19、10、5、3、1。在每个特征图上依次设置不同尺寸的预选框,共计有8 732个预选框。每个待预测特征图会通过各自的分类和位置回归网络,即如图1所示的cls和loc。检测框经过NMS筛选、剔除,得到最终的目标输出。
深度可分离卷积(Depthwise Separable Convolution)最早由 Sifre[10]提出。这种思想成为 Xception[11]和MobileNets[12]的核心。深度可分离卷积与普通卷积的不同在于卷积过程。若输入特征图尺寸为C×H×W,卷积核尺寸为k×k,C表为输入通道数,H和W分别为高和宽,O为输出通道数,则对于普通卷积可得到其参数量为k×k×O×C。
对于深度可分离卷积,可以分为两步进行。第一步进行卷结核为k×k的深度卷积。该卷积在通道空间上实现,即针对输入的C个通道分别进行k×k的卷积,输出通道数不变。该过程的参数量为k×k×C。第二步是对上述结果进行逐点卷积(Pointwise Convolution),即1×1的卷积,输出通道数为O,则参数量为1×1×C×O,总参数量为k×k×C+C×O,过程如图2所示。
图1 SSD结构
图2 深度可分离卷积
以conv7的输出特征图1 024×19×19为例,当卷积核为3×3、输出通道数512时,可以计算出深度可分离卷积的参数量只有普通卷积的参数量1/9左右。虽然深度可分离卷积的参数量有所减少,但是仍然能够保证特征提取信息的质量。
本文设计的MSSD(Modified SSD)模型结构如图3所示。其中,MDSC表示改进的深度可分离卷积模块,作为特征提取基础单元,扮演的是原始SSD中额外层的角色。同时,MSSD使用相邻层特征融合的方式加强了特征的复用,使得获取的新特征在信息表达层面更进一步。
借鉴深度可分离卷积的思想,本文设计了一种改进的深度可分离卷积模块MDSC(Modified Depthwise Separable Convolution),结构如图4所示。图4中的3×3表示深度卷积,1×1为逐点卷积,经过批归一化层(Batch Normalization,BN)和激活层(Rectified Linear Unit,ReLU)后紧跟另一个深度卷积和逐点卷积。虽然单纯的两次深度可分离卷积对参数量的减少有帮助,但不足以提高特征的表达。为了获得更多有用的信息,在此基础上增加两个恒等映射连接进行两次信息融合。一次是在两次深度可分离卷积后,另一次是在最大池化后。
图3 MSSD结构
图4 MDSC模块
特征图融合一般有两种方式。第一种是通道合并,待融合特征图的通道数可以不同,相当于拓宽了特征图的通道数。第二种是元素相加,要求合并前特征图的通道数相同,合并后特征图通道数不发生改变。本模型所有的融合方式均采用第二种方式。
SSD输出6个特征图预测,相互之间并无交流。由于众多模型已经证明,不同特征图之间的有效融合可以在一定程度上提高模型的性能,因此本文也将使用特征融合的方法对不同输出层的特征图进行融合,期望得到更丰富的信息。
较为流行的对特征融合的处理方式是特征金字塔 FPN[13],如图 5(a)所示。通过对高层特征上采样、逆向和低层特征融合以及高层语义信息和低层细节信息互补,得到新的特征输出,有效地将高低层特征的优势结合在一起。考虑到对于一系列尺寸逐渐减小的特征图,相邻尺寸特征图之间的信息表达更加接近,相互之间的联系更为紧密,因此对相邻特征图进行单独处理。FPN这种融合方式联合了多层特征,在得到融合调整后不断进行上采样,会带来较多的冗余信息。因此,本文采用一种新的特征融合方式,即紧邻特征图融合(Adjacent Features Fusion,AFF),结构如图5(b)所示,其中红色表示上采样,绿色表示下采样。第i层特征fi紧邻上下两层的特征分别为fi-1和fi+1,将i-1层进行下采样操作D,将i+1层进行上采样操作U,之后和fi融合得到新的特征输出Fi,即:
上采样通过反卷积实现,下采样通过最大池化实现。所有添加的卷积层后紧跟BN层,达到加速模型训练和避免过拟合的目的。待融合特征图通道数不同时,则通过1×1卷积完成变换。
图5 两种特征融合方式
本次实验平台为Ubuntu 18。在GPU上加速训练,GPU版本为GTX 1080Ti。深度学习框架为Pytorch。模型在PASCAL VOC 2007和VOC 2012训练集上训练,在VOC 2007测试集上测试。
首先,训练SSD+MDSC的模型,即利用MDSC替换原始额外层。训练时,设置batch_size为32,使用随机梯度下降优化算法,动量设置为0.9。采用预热训练策略进行500次预热训练后,学习率从0逐渐增大至0.001,之后开始稳定训练。随后在80 000次和100 000次迭代时,学习率依次衰减为0.1,共进行120 000次训练。它的模型精度为78.3%,提升了1.1%,证明了所采用的MDSC模块的有效性。
其次,在SSD+MDSC的基础上采用AFF融合方式进行训练,即对本文提出的MSSD进行训练。学习率衰减发生在90 000次和110 000次。考虑到模型复杂度的提升,调整训练次数,共进行130 000次训练。实验发现,当去掉3×3特征图的下采样,且1×1特征图不参与融合而独立输出预测时,模型的检测精度并未受到影响。为了减少模型计算量,最终采用的模型为去掉3×3下采样的模型结构。可以发现,在测试集上的精度由78.3%增长至79.1%,性能提升0.8%。
再次,为验证AFF的有效性,对特征金字塔融合方式进行对比,即采用SSD+MDSC+FPN的模型进行训练。该模型在测试集上的mAP为78.7%,与AFF的融合方式有0.4%的差距,表明所采用的紧邻特征图融合方法更有效。
最后,对输入尺寸为512×512的图片进行训练,batch_size设置为16,同样进行预热训练,学习率0.001在90 000次和110 000次时依次减为原来的0.1,总计训练135 000次,测试集上其mAP达到81.8%。
5种模型在VOC 2007测试集的训练结果,如表1所示。
表1 VOC 2007测试集结果
MSSD300和SSD300在各类检测中的性能对比,如表2所示。
表2 MSSD和SSD对VOC2007测试集各类别目标的检测精度mAP
可以看出,除了对boat和cat两类目标的检测精度有所下降外,本文提出的MSSD在各个类别目标的检测精度都有所提升,尤其是对bottle和plant的检测精度,分别提升了7.10%和3.31%。
MSSD与其他模型的检测精度对比如表3所示。表3中的模型均在VOC 2007和VOC 2012训练集上训练,并且在VOC 2007测试集上测试,测试所采用的backbone也经过预训练。对比本文提出的MSSD与SSD的各种代表性变体可以发现,其检测精度优于SSD的众多变体,且速度也占有优势。SSD样本检测结果如图6所示,MSSD样本检测结果如图7所示。
表3 各种检测模型的检测精度对比
图6 SSD样本检测结果
图7 MSSD样本检测结果
本文提出了一种结合深度可分离卷积和新型特征融合方法的目标检测模型MSSD。采用改进的深度可分离卷积模块代替SSD中的部分卷积层,既提高了精度,又在一定程度上节省了参数,并在此基础上使用紧邻特征图融合的方法对输出特征进行重复利用,效果略优于特征金字塔式的融合方式。最终得到的改进模型MSSD在速度和精度上取得了很好的平衡,其综合性能优于一些SSD的变体。下一步将对MSSD进行优化,对MDSC模块做进一步完善,对融合过程的采样做优化处理。