当前位置:首页 期刊杂志

基于空洞卷积和特征融合的单阶段目标检测算法

时间:2024-07-28

李娟娟, 侯志强, 白 玉, 程环环, 马素刚, 余旺盛, 蒲 磊

(1.西安邮电大学计算机学院,西安,710121; 2.西安邮电大学陕西省网络数据分析与智能处理重点实验室,西安,710121;3.空军工程大学信息与导航学院,西安,710077; 4.火箭军工程大学作战保障学院,西安,710025)

目标检测作为计算机视觉领域的一个热门研究课题,在行人识别[1]、自动驾驶[2]和人脸检测[3]等诸多方面具有广泛应用,近年来得到了迅速的发展。

传统的目标检测方法通常利用手工特征进行检测,如HOG[4](histograms of oriented gradient)和SIFT[5](scale-invariant features transfer)等特征,但是这些特征处理过程复杂,检测速度慢,在对不同场景的目标进行检测时,算法的鲁棒性不高。基于深度学习的目标检测算法根据有无建议区域生成阶段分为单阶段(one stage)目标检测算法和两阶段(two stage)目标检测算法:单阶段检测算法主要有SSD[6]和YOLO系列[7-10]等;两阶段检测算法主要有R-CNN[11]、SPP-Net[12]和Faster R-CNN[13]等。由于有锚框的检测算法在检测时会带来正负样本不均衡等问题,近年来出现了无锚框(anchor-free)的目标检测算法,主要算法有CornerNet[14]和CenterNet[15]等。CornerNet利用了左上角和右下角的两个关键点来进行目标检测;CenterNet将目标作为点的模型,只检测目标的中心点,通过预测目标的中心点直接回归对应目标的长和宽。

在上述算法中,单阶段SSD算法的精度和两阶段Faster R-CNN算法的精度比较接近,但速度达到了实时性的要求,是目标检测领域一个经典的算法。因此,许多研究人员对SSD算法进行了改进,改进的算法有DSSD算法[16]、RSSD算法[17]、RefineDet算法[18]、RFBNet算法[19]和FSSD算法[20]等。

SSD算法克服了Faster R-CNN和YOLOv1算法的不足,提出了多尺度目标检测,考虑了大目标和小目标,平衡了精度和速度。但是也存在一定的问题:SSD在对多尺度目标进行检测时,使用浅层网络检测小目标,深层网络检测大目标,小目标往往更依赖浅层特征的空间信息,因为浅层特征有更高的分辨率,但是小目标在浅层表征力不足,缺乏语义信息,导致分类比较困难。

针对SSD在目标检测过程中存在的目标漏检和误检的问题,本文提出了一种融入多维空洞卷积和多尺度特征融合的目标检测算法。

1 基于空洞卷积和特征融合的单阶段目标检测算法

1.1 算法框架

本文算法框架见图1。

图1 本文算法框架

本文算法是以SSD目标检测算法为基础,将特征层分为浅层和深层两部分,浅层分别为:conv4_3层、conv7层和conv8层,深层分别为:conv9层、conv10层和conv11层。浅层分辨率高,具有丰富的细节信息,但特征表征力不足[16];深层分辨率低,具有丰富语义信息,能很好地表示中等目标和大目标,基于此,对浅层特征和深层特征分别进行改进。在浅层引入3个浅层特征增强模块SFE和2个特征融合模块(feature fusion block,FFB),处理conv4_3、conv7和conv8层的特征,3个浅层特征增强模块使用不同维的空洞卷积,以扩大特征的感受野;FFB1模块融合特征增强后的conv4_3和conv7,FFB2模块融合特征增强后的conv7和conv8。对于conv9层、conv10层和conv11层引入通道注意力模块,使网络在全局范围内选择更有用的目标信息,增强了特征的表达能力。下面对基准算法、特征增强模块、特征融合模块和通道注意力展开说明。

1.2 基准算法

SSD算法的特征提取网络是VGG16,SSD算法使用VGG16的conv4_3层,和将全连接fc7层转化为的conv7层做检测,并在VGG16基础上,进一步延伸了4个卷积层conv8、conv9、conv10和conv11层用来做检测,所以SSD算法共使用6个不同尺度的特征图进行分类与回归预测。

1.3 浅层特征增强模块

在深度网络中,通常通过下采样操作来增加特征图感受野,但感受野增加的同时也造成特征图分辨率降低,细节信息会减少。空洞卷积可以增加特征图的感受野,同时也不会损失图像信息。许多研究人员在网络中使用不同方式的空洞卷积[21],使性能有一定的提升。图2分别给出了普通卷积和空洞卷积膨胀率为2的示意图。

图2 普通卷积和空洞卷积示意图

本文使用SFE对特征图扩大感受野,见图3。

图3 浅层特征增强模块

设计了SFE1、SFE2和SFE3这3个具有多维空洞卷积的浅层特征增强模块,对conv4_3层、conv7层和conv8层进行感受野扩大。本文浅层特征增强模块采用残差网络结构,针对现有的Inception结构进行改进,将不同膨胀率的空洞卷积代替原有卷积层,形成多分支空洞卷积。本文使用5种不同膨胀率(rate=1,2,3,4,5)的空洞卷积来对原始的特征提取信息,获得5种不同语义信息的特征图,使用不同膨胀率得到的特征图进行融合,可以提取图像中不同大小的目标信息,膨胀率较小的空洞卷积可以提取图像中的小目标信息,有利于小目标的准确分类,增强了模型对于小目标的检测能力。

目标的特征信息会随着网络的传播由浅层的细节信息转化为深层的语义信息,特征的感受野也会增大,且特征每层的尺寸是不同的,所以膨胀率的选择应该与特征层尺寸大小和所具有的信息相关,才能保证目标可以被检测到,不会造成丢失。通过实验对比选择不同浅层特征增强模块和相同的浅层特征增强模块的检测结果,根据特征尺寸和感受野来选择不同维的空洞卷积,对于中小目标的检测较好一些。

下面对SFE1、SFE2和SFE3模块分别进行说明:在conv4_3层添加SFE1模块,使用1×1卷积将原始特征的通道数由C变为C/6赋给每个分支,使用膨胀率为1,2,3,4,5的空洞卷积对原始特征进行处理。在conv7层添加SFE2模块,使用1×1积将原始特征的通道数由C变为C/5赋给每个分支,使用膨胀率为1,2,3,4的空洞卷积。在conv8层添加SFE3模块,使用1×1卷积将原始特征的通道数由C变为C/4赋给每个分支,使用膨胀率为1,2,3的空洞卷积。将各个分支按通道拼接融合,然后将原始特征和经过多个不同膨胀率的空洞卷积的特征进行相加融合,保留原始特征信息。

1.4 特征融合模块

不同的特征层经过特征增强后的信息是不同的,将不同分辨率并行的特征层进行融合,提高了网络的表征能力,增强了小目标的特征表达。常用的特征融合方式有相加(add)和拼接(concat),本文选用的特征融合方式是拼接,这样融合特征通道具有一定的灵活性。FFB1模块融合的是SFE1输出特征图经过stride为2的下采样变成19×19的特征图,和当前SFE2输出的特征图;FFB2模块融合的是SFE2输出的特征图经过stride为2的下采样变成10×10的特征图,和当前SFE3输出的特征图。特征融合模块(FFB)结构如图4所示。

图4 特征融合模块

1.5 通道注意力模块

通道注意力是通过对特征通道进行权重再配来提高特征表达能力。因为原始特征图每个通道占比都是一样的,所以在输出检测时,不能聚焦于重点信息,而是全局搜索,这样会消耗训练时间,且很难找到重点的部分。对特征使用通道注意力,能在图像中更容易找到重点关注的区域,从而更好检测到目标。本文采用的通道注意力模块是SENet[22],由压缩(squeeze)、激励(excitaion)和权重重标定(reweight)3个部分组成。

2 实验结果与分析

2.1 实验设备和数据集

本文算法使用的实验平台为Ubuntu16.04系统,GPU为 1080Ti,深度学习框架为PyTorch1.2。实验使用PASCAL VOC数据集和KITTI数据集。

2.2 实验评价指标

为了更准确地衡量目标检测的质量,本文使用的指标为平均精度均值(mean average precision,mAP)和每秒帧率(FPS)来衡量目标检测质量,mAP是指所有类别的精度均值。

2.3 定性分析

为了评估本文算法的检测性能,在PASCAL VOC数据集和KITTI数据集上将SSD算法的检测效果图与本文算法的检测效果图进行对比。

2.3.1 PASCAL VOC数据

在PASCAL VOC数据集上检测结果如图5所示,从第1列可以看出,图像中被遮挡的目标“cow”,SSD算法没有检测到,但是本文算法能检测到,并且分类分数提高了。从第2列可以看出“person”SSD算法没有检测到,但是本文算法可以检测到。从第3列可以看出SSD算法将石头误检成“sheep”也有漏检情况,本文算法对目标的漏检和误检有一定的改善。从第4列可以看出,图像中的“pottedplant”没有被检测到,本文算法能检测到,“sofa”的分类分数提高了。从图5检测效果图可以看出,在图像中存在多目标的情况下,本文算法也可以检测到,并且不会出现误检和漏检的情况,且分类分数都有一定的提升,有效地改善了多目标的检测效果。

图5 在PASCAL VOC数据集上实验结果对比

2.3.2 KITTI数据集

在KITTI数据集上检测结果如图6所示,在第1列中SSD算法没有检测到目标“pedestrian”,而本文算法能检测到。在第2列SSD算法将目标“car”漏检了,而本文算法则能检测到,“car”的分类分数也提高了。本文算法对漏检有一定的改善。

图6 在KITTI数据集上实验结果对比

2.4 定量分析

2.4.1 PASCAL VOC数据集

在PASCAL VOC数据集上,本文算法与两阶段Faster R-CNN算法[13]和R-FCN算法[23]、单阶段YOLOv3算法[9]、CenterNet算法[15]以及SSD改进算法,DSSD算法[16]、RSSD算法[17]和FSSD算法[20]等算法检测结果对比,如表1所示。

表1 PASCAL VOC数据集上检测结果对比

从表1中可以看出,本文算法的精度为79.7%,和原始SSD算法及其改进算法进行比较,本文算法的检测精度最高。比原始SSD算法提高了2.4%,相比DSSD算法、RSSD算法、FSSD算法,本文算法分别提高了1.1%、1.2%、0.9%,相比文献[24]提高了1.6%,在速度方面原始的SSD算法为42FPS,改进算法的速度为34FPS,达到了实时性的要求。和单阶段经典算法YOLOv3相比提高了0.4%,和无锚框算法CenterNet相比提高了1.0%。和两阶段算法Faster R-CNN、 R-FCN相比,分别提高了6.5%和0.2%,速度相比两阶段算法达到了实时性的要求。

2.4.2 KITTI数据集

在KITTI数据集上本文算法与SSD算法检测结果进行对比,如表2所示。

表2中可以看出,本文算法的检测精度为68.5%,比SSD算法提升了5.1%,单个类别“car”提升了3.2%,“cyclist”提升了8.4%,“pedestrian”提升了3.7%,FPS为45,满足实时性检测的要求。

表2 KITTI数据集上检测结果对比

2.5 消融实验

通过添加单个模块和组合多个模块测试,说明每个模块在改进算法中的作用,在PASCAL VOC上实验结果如表3所示。

表3 消融实验

从表3中可以看出,将SFE模块添加到SSD算法中,提高了原始算法的精度,mAP由77.3%提升到78.9%,提高了1.6%,证明了扩大感受野对于浅层特征图的重要性。在加入SFE模块的基础上加入特征融合FFB模块,提高了0.6%,证明了浅层特征信息对较深一层的信息是有补充作用的。在此基础上添加了通道注意力模块,提高了0.2%,对特征通道进行筛选,强调了重要的通道信息。

3 结语

在SSD目标检测算法的基础上,针对不同层信息的差异,本文首先在特征图上添加3个不同的多维空洞卷积SFE模块;其次使用2个特征融合模块融合不同层的特征,使特征层之间的信息可以互补,更好的检测到目标;最后在网络深层添加通道注意力模块,对特征进行加权处理,强调有用的信息,增强特征的可分辨性。实验结果表明,所提出算法有效地改善了目标漏检和错检,在检测速度满足实时性的情况下,提升了目标的检测精度。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!