王冬丽,廖春江,牟金震,周 彦
1.湘潭大学 自动化与电子信息学院,湖南 湘潭 411105
2.上海航天控制技术研究所,上海 201109
目标检测技术在人民生产生活中有着广泛的应用,如目标跟踪与识别、行人检测、人脸识别、无人驾驶、医疗诊断、智能监控系统等。在小目标检测中,由于目标背景复杂度高、光照或遮挡、小目标边缘信息不显著等,使得小目标检测效果较差。基于此,针对目标检测领域中小目标的检测能力仍需要进一步提高。
近年来,深度学习进入快速发展阶段,图像处理技术得到不断提高。基于卷积神经网络(Convolutional Neural Network,CNN)的图像检测方法[1]研究已成为目标检测领域的热点问题。目前,基于深度学习的方法已成为机器视觉研究领域的重要方法[2-3],目标检测中采用深度学习方法提取的深度特征较传统的机器学习方法提取人工特征能更好表征目标特性[4]。此外,深度学习方法的检测精度相比机器学习方法有显著的提高,同时能够让提取的目标特征具有更强鲁棒性[5],如SSD[6](Single Shot Multibox Detector)、DSSD[7](Deconvolutional Single Shot Detector)、DSOD[8](Deeply Supervised Object Detector)、RSSD[9](Rainbow SSD)、FSSD[10](Feature Fusion Single Shot Multibox Detector)、YOLO[11](You Only Look Once)、R-CNN[12](Region-based Convolution Neural Networks)、SPPnet[13](Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)、Mask-RCNN[14]、Fast R-CNN[15]、Faster R-CNN[16]、R-FCN[17](Region-based Fully Convolutional Networks)模型等。
为了提高SSD 算法对小目标的检测精度,Liu 等[3]在SSD模型上做了相关改进工作,充分利用深浅层特征信息,使用残差网络提升特征网络的表征能力,提出了DSSD模型,但是该方法极大降低了检测速度。Bharat等[18]提出 SNIP(Scale Normalization for Image Pyramids)算法,该算法主要思想是对特征图进行不同倍数上采样,通过实验给出相对最优的检测小目标的特征图尺寸,最后通过Soft-NMS[19]融合不同分辨率下的检测结果,效果显著。Liu 等提出RFB[20](Receptive Field Block),将RFB与SSD结合,有效增大感受野大小,进一步提高网络模型特征提取能力,提高了目标检测准确率。Zhu等提出的FSAF[21](Feature Selective Anchor-Free)模型使得目标能够自动选择最合适的特征,实现模型的自动化学习,FSAF模块集成到SSD网络结构中,进一步提高了小目标检测精度。
本文提出了改进SSD的目标检测方法,主要用于改进SSD 在小目标检测上的不足。该方法先对SSD 模型深层特征层进行双线性插值放大与浅层特征层进行特征融合,充分利用深层特征层语义信息以提升浅层特征网络对小目标的表征能力。再对中层特征层卷积前与卷积后的特征层进行特征融合操作,使融合后的特征层语义信息更强,提升中层网络对中目标的检测能力。此外,本文还将先验框尺寸相对原图比例进行调整,并调整SSD模型相应超参数值,进而产生一组对小目标检测能力更强的新的网络模型。最后在新的网络模型上进行目标的分类与定位任务。实验结果表明,改进后网络模型对中目标和小目标具有更强的检测能力,在小目标Bottle、Plant、Cow、Boat 等类的目标检测精度有较大的提高,并提升了整体目标的平均检测准确率。
SSD 网络模型以VGG16 网络作为基础模型,SSD网络模型如图1 所示。该算法主要思想是加入了RPN网络的特征金字塔[22]的检测方式。由于深层特征图尺寸小,滤波器感受野大,语义特征信息丰富,可更好地检测大物体;而浅层网络特征图尺寸大,滤波器感受野小,细节特征信息丰富,因此更适合检测小物体。同时SSD目标检测方法结合了YOLO的回归思想和Faster-RCNN中的Anchor boxes[23]机制,通过综合利用多尺度特征层各层优势互补的特点,解决了仅仅利用单层特征层目标检测算法对检测网络的不足。最后检测效果也要优于单特征层目标检测算法。
图1 SSD网络模型
SSD 方法采用了多尺度单发射击的特征层进行分类和定位,根据SSD原理,Conv4_3尺寸单独设置,其最小尺寸设置为Smin/2,即30,最大尺寸为60。对后先验框尺寸,本文采用式(1)进行计算。即m取值为5 层特征图,各特征层所产生的min_size和max_size如表1所示。
表1 各特征层先验框尺寸大小
式中,m=5,Smin=0.2,Smax=0.9,Sk表示先验框尺寸相对原图片比例。
SSD 默认框长宽比采用tr∈{1,2,3,1/2,1/3} ,以增强先验框长宽比对目标形状的鲁棒性。针对先验框宽高比t=1 的先验框,添加对特征图Conv4_3、Conv8_2、Conv9_2不使用长宽比为3、1/3的先验框,而在特征图Conv7、Conv6_2、Conv7_2都使用6个默认框,使用上述所有长宽比。默认框大小计算如图2所示,每个先验框长度、宽度的计算公式如下:
图2 先验框尺寸大小
网络训练时的总体目标损失函数[24]是先验框和边界框的位置误差和分类的置信度误差的加权和,即:
式中,N代表正样本数;x代表当前预测框的类别匹配信息;c代表类别置信度预测信息;l为预测框的位置信息;g为真实标签值框位置信息参数;α为权重系数。位置误差的定义如下:
类别置信度损失函数如下:
由于SSD模型结果与图像金字塔结构类似,浅层网络特征图尺寸大,感受野小,细节特征信息丰富,适合检测小目标,深层网络特征图尺寸小,感受野大,语义特征信息丰富。因此对深浅层特征层进行融合能够提高浅层网络语义信息,降低浅层网络对小目标的误分率,增强浅层网络对小目标的检测能力。模型改进后的浅层特征可视化如图3 所示。基于SSD 网络模型的上述特点,本文提出了特征融合方法。该方法充分融合深浅层特征信息以提升网络模型对小目标的检测能力。为更好地检测小目标,本文将先验框尺寸相对原图比例进行调整,并调整SSD 模型相应超参数值,进而产生一组对小目标检测能力更强的新的网络模型,最后在新的网络模型上进行目标的分类与定位任务。改进后SSD 网络结构如图4所示。
图3 特征层可视化
图4 改进后的SSD网络结构图
本文改进的SSD 模型得到的Conv4_3_1、FC7_1、Conv6_2_1、Conv7_2_1特征增强模块如图5所示。
由于StretchBlt函数实现图像放大缩小时容易出现失真现象,采用反卷积操作容易产生重叠现象,如图6所示。具体来说,当卷积核尺寸不能够被Stride整除时,反卷积容易出现不均匀重叠的情况。理论上,神经网络可以通过详细权值来避免这种情况的发生,但在实际情况中,神经网络基本上不能避免该现象的发生。因此本文采用双线性插值缩放图像,提高图像的分辨率和缩放质量。特征融合具体步骤如下:本文采用特征融合的思想,在SSD模型的基础框架上,首先对Conv3_3、Conv4_3、FC7、Conv6_1、Conv7_1、Conv9_2 这些不同大小特征层,用padding=0 的1×1 卷积核在这些特征图上做卷积操作,保证了融合时的通道统一。然后采用双线性插值操作使特征图大小统一(因为这里的融合是不同level的层之间的融合,特征图尺寸各不相同,采用双线性插值将所有的source特征图转换成统一的大小)。最后采用连接融合的方式得到了Conv4_3_1、FC7_1、Conv6_2_1、Conv7_2_1 新的不同大小的特征图,如图5 所示。改进后的模型较SSD模型的特征层语义信息更丰富,能更好表征目标的特性,对输入图片(猫),SSD 模型与改进后模型的浅层可视化特征图对比效果如图7 所示。与后续小节的改进点相结合,对小目标Bottle、Chair、Plant 检测精度分别提升8.7 个百分点、3.4 个百分点和7.1个百分点。小目标检测准确率有较大幅度提升。深层特征与浅层特征层融合能够提高小目标检测能力。由于Conv8_2、Conv9_2特征层尺寸过小,且包含语义信息较强,不再进行特征增强。
图5 本文模型的特征增强模块
SSD 模型将 Conv4_3、FC7、Conv6_2、Conv7_2、Conv8_2、Conv9_2 六个特征图作为目标进行分类与定位。特征图先验框的个数预测依次为4、6、6、6、4、4。先验框长宽比依次为[[2],[2,3],[2,3],[2,3],[2],[2]],先验框尺度计算公式如式(1)所示。式中Sk表示先验框的尺寸相对于原图的比例,Smin和Smax表示比例的最小值与最大值。为了更好地检测小目标,将Smin和Smax的值调整为0.15和0.95,这样能够有效避免由于目标过小导致在训练阶段真实标签无法找到相应的先验框与之匹配的问题。尺寸调整后的先验框大小如表2所示。
图7 浅层特征图可视化对比
表2 本文先验框尺寸大小
训练本文算法所采用的损失函数、困难样本挖掘策略及数据增强策略与SSD算法相同;训练过程中算法的学习率与SSD 算法保持一致。本文中预测框的IOU 设置为0.45,NMS设置为0.4。
实验基于Linux操作系统Ubuntu16.04,在Caffe平台上完成训练与测试工作。GPU显卡型号为GTX1080Ti,参数Batchsize=16。
为避免训练过程中数据量的不足,造成过拟合问题,本算法选用PASCAL VOC2007+PASCAL VOC2012训练数据部分作为训练集,在PASCAL VOC2007 测试数据集上进行测试。
首先,改进的算法模型基于SSD 模型,因此采用训练好的SSD模型作为本文的预训练模型。然后在VOC2007和VOC2012 训练集上进行训练。最后在VOC2007 测试集上测试改进后的目标检测算法。在拓展实验中,从网上搜集相应的图像数据,用训练好的改进后的SSD算法和SSD算法直接进行图像目标检测,直观表明改进后的SSD检测算法优于SSD算法。
PASCAL VOC2007是视觉对象分类识别和检测的20类别的标准数据集,表3为PASCAL VOC 2007数据集的具体类别。
表3 PASCAL VOC2007数据集目标类别
为了验证改进模型的检测效果,在PASCAL VOC2007测试数据集上,将改进后的算法与当前一系列优异目标检测算法进行比较,通过统计结果可以得出,在这些算法中,本文算法平均准确率(mAP)有着显著的提高,如表4所示。
表4 PASCAL VOC2007测试集mAP指标测试结果
在PASCAL VOC2007(著名的公开图像数据集,其中包含了Bottle、Chair、Plant类比较典型的小尺寸目标)数据集上进行验证实验,在每一类目标检测精度上,本文将改进后的算法与SSD 算法进行比较,统计结果如表5所示。
表5 PASCAL VOC2007测试集单个类别检测精度%
由表5 数据可知。改进后的模型在mAP 上较SSD提高了3.4个百分点,mAP为0.808。在每一类目标检测精度上均优于SSD 目标检测算法。对小目标Bottle、Chair、Plant检测精度分别提升8.7个百分点、3.4个百分点和7.1个百分点。
相比于图像目标检测,视频检测是比单张图片检测多了时间上下文信息。在本文实验环境中,将SSD模型与改进后的SSD模型在小视频上的检测速度进行对比,如表6所示。SSD模型每秒检测27帧图像,而本文改进后SSD 模型每秒检测23 帧图像,具有良好的实时性。相比于SSD 模型,改进模型的检测速度略有下降,这是由于改进所采用的方法在高低层特征图进行融合操作时使得模型计算量有所增加,从而影响模型的检测速度。
表6 不同算法检测速度对比f/s
除了在标准的训练库和测试库进行算法性能的比较外,为进一步验证改进后的SSD 算法的有效性,通过从网上搜集相应的图像数据,用训练好的改进SSD算法和SSD 算法直接进行图像目标检测,结果如图8 所示。图8右侧图片代表改进SSD算法的测试结果,左侧图片表示传统SSD算法的测试结果,通过分析对比两组测试图片的结果,直观表明了改进后SSD检测算法优于传统SSD算法。
从图8 可以看出,传统SSD 目标检测算法在Boat、Bottle、Cow等中小尺寸目标上检测效果差,大部分目标都没有检测出来,而改进后的SSD检测算法在中小目标检测效果上相比较于SSD 模型方法有较好的改善。SSD目标检测算法对小目标漏检率高,而改进后的SSD在很大程度上降低了小目标漏检率,提高了对小目标检测的准确率。综合上述实验,改进后的算法成功检测到大多数SSD算法没有检测到的小目标,在一定程度上降低了小目标的漏检率,提高了平均检测准确率。
图8 SSD模型
基于特征融合方法,本文对SSD的网络框架进行了改进,得到了对小目标检测能力更强的网络结构。同时本文对先验框尺寸和超参数值进行自适应调整。实验结果证明了改进方法的有效性。