李建东, 李佳琦, 曲海成
(1. 辽宁工程技术大学 软件学院, 辽宁 葫芦岛 125105;2. 辽宁工程技术大学 矿业学院, 辽宁 阜新 123000)
目标检测是计算机视觉领域的核心问题,它的主要任务是对图像中感兴趣的目标进行识别和定位[1],其应用领域十分广泛,如智慧医疗[2-3]、无人驾驶[4]等。车辆和行人检测[5]作为无人自动驾驶技术的重要组成部分,已成为热门研究方向。
通用目标检测方法在实际场景下的车辆与行人检测任务中存在不足之处。近些年,已经有较为成熟的增强策略提高多尺度物体的检测性能,包括一些改进融合式特征金字塔结构[6]。白创等人[7]构造多向特征金字塔,充分提取与融合多层语义信息。Wang 等人[8]同时利用深层和浅层特征进行双向融合。李经宇等人[9]提出在同一卷积层中收集并拼接不同尺度的局部特征区域,同时缩短高低层特征融合路径,应对复杂场景中车辆行人的检测问题。上述方法虽能优化缓解多尺度目标检测问题,但是没能针对性地联系到当前检测目标的基本特点,具有一定的局限性。此外,关键特征提取不充分也会直接影响模型检测能力[10]。董小伟等人[11]对不同尺度特征层进行针对性加权融合寻找最优融合方式。邹梓吟等人[12]通过融合注意力机制提升模型对遮挡目标的检测能力。尽管上述算法的检测精度有所提升,但对于特定任务下多尺度目标检测结构的设计仍缺乏针对性,还不能高效融合不同语义层次特征,对遮挡性目标的定位仍不准确。而且,相关工作不能平衡准确率与检测速度,还有进一步提升空间。
为解决上述问题,本文基于SSD 模型展开研究工作,主要内容如下:
(1)改进特征提取方式,针对车辆与行人检测任务,提出跳跃式反向特征金字塔结构(Skip Reverse Feature Pyramid Structure,SRFPN)作用于部分检测分支,用以提升对多尺度目标的判别能力。
(2)增强关键特征表达能力,提出自适应特征融合模块(Self-Adaptive Feature Fusion Module,SAFM),在通道层面先验计算待融合信息对特征融合过程的贡献度,为特征信息加权。
(3)增强模型对目标的定位能力,将十字交叉注意力网络(Criss-Cross Attention Network,CCN)用于模型定位分支前,通过自注意力机制在空间层面获取远距离信息依赖,增强目标定位,优化解决遮挡目标检测问题。
SSD 目标检测模型是一种经典的基于回归思想和Anchor 机制的多尺度单阶段目标检测算法,其网络结构如图1 所示。
图1 SSD 网络结构Fig.1 Network structure of SSD
SSD 模型通过规范化处理原始输入图像,将其调整至固定大小300×300 作为模型的输入。以VGG-16作为基础骨干网络,在不断下采样的过程中逐次通过尺寸大小为38×38、19×19、10×10、5×5、3×3和1×1的6个多尺度特征层,提取输入图像的特征。经过聚合运算,分别通过Loc_layer 和Conf_layer 同步计算预测框的位置信息与分类置信度并先验地在预测分支上定义锚框。最后使用非极大值抑制(Non-Maximum Suppression,NMS)的方式保留检测结果最好的预测框并输出检测结果。
SSD 模型采用多尺度预测方法:使用大尺度特征层预测小目标,使用小尺度特征层预测大目标,以此解决检测过程中存在的目标尺度变化的问题。但其6个检测分支相互独立,经过聚合运算,同步计算预测框的位置信息与分类置信度。此时,底层特征,如Conv4_3,不具备高级语义信息,对目标分类任务不友好;高层特征,如Conv11_2,因卷积运算次数的增加而缺失细节信息,不利于目标定位任务。自浅至深单向传播路径的结构使检测分支的特征信息不充分,模型的检测能力还有很大提升空间。此外,在相同尺度的预测特征层内,各目标之间的尺度大小不一。为识别该层特征层上的所有目标,需要掌握上下文信息,便于目标定位。
为解决SSD 模型在道路场景中进行车辆与行人检测时,目标多尺度且受复杂环境影响,检测分支携带有效信息变弱、定位能力差,模型准确率低、受遮挡目标漏检率大的问题,本文提出AF-SSD(Attention and Fusion Across Scales-SSD)模型。
AF-SSD 模型仍采用VGG16 作为特征提取主干网络。首先,设计路径由浅至深、由深至浅的跳跃式反向金字塔(SRFPN),即对特征层Conv3_3、Conv4_3、Conv7、Conv8_2、Conv9_2 进行跨尺度特征融合,增强部分检测分支Conv4_3、Conv7 以及Conv8_2 的特征表达;其次,设计自适应特征融合模块(SAFM),替换金字塔结构中对待融合特征直接相加的操作;最后,引入交叉注意力模块(CCN)用于模型定位分支。最终检测分支维度输出依次为512、512、512、256、256、256。AFSSD 模型网络结构如图2 所示。
图2 AF-SSD 网络结构Fig.2 Network structure of AF-SSD
SSD 模型是最早尝试将特征金字塔用于目标检测的模型之一。该模型在利用多尺度特征层的同时,直接引入金字塔结构并不作任何特征融合。其通过特征金字塔结构逐级生成预测特征层,在各预测层上检测图像内对应尺度的目标,解决目标多尺度问题。但是,无融合的分而治之思想也使模型错检、漏检的风险提高。因此为提升SSD 算法的检测能力,特征融合必不可少。
车辆与行人检测为高差异性的双目标检测任务。高级语义特征融入浅层特征对目标分类有利,此种情况下应重点考虑保留浅层特征内有利于目标定位的信息。FPN[13](Feature Pyramid Network)结构是在自深至浅路径上进行特征融合。PAN[14](Path Aggregation Network)在FPN的基础上增加了自浅至深的特征融合路径,在具备高级语义特征的基础上同时拥有丰富的定位信息。然而,对特征连续上采样会破坏原始特征层中像素连续性[15]。通过插值方式引入的外来信息将继续向前传播,干扰特征的原始分布形成位置偏差。基于双向路径递归融合的金字塔结构引入外来信息的传播路径如图3 所示。
图3 外来信息向前传播路径Fig.3 Forward propagation path of foreign information
图3 中空心箭头表示外来信息向前传播所经路径。由此可见,该结构在车辆与行人检测任务中具有一定的局限性。为解决上述问题,设计了跳跃式反向特征金字塔网络。在自浅至深的路径上,将Conv3_3、Conv4_3、Conv7、Conv8_2 层输入SRFPN 结构,得到预测特征层P1、P2、P3。
SRFPN 的主要内容包括调整特征通道数量、特征拼接以及批归一化(Batch Normalization,BN),网络结构如图4 所示。
图4 SRFPN 的网络结构Fig.4 Network structure of SRFPN
需要适当减少特征层中的通道冗余[16-18]。在模型复杂性方面,设置过多的通道数会使部分通道被冗余信息占用,重复参与卷积计算从而降低模型的计算速度;在语义信息方面,CNN 架构中通道之间存在特征冗余[19]。因此,在跳跃式反向金字塔结构中将通道数进行调整,不仅能增强关键特征的表达能力,还可以减少冗余的特征,提升模型的检测速度。
将特征层在通道层面进行拼接(Concatenate)可以增加描述图像的特征,不改变信息量总和。拼接算子计算过程如式(1)所示:
其中:Zconcat表示经过拼接算子后的特征,xi、yi分别表示待融合特征,ki表示卷积核大小,*为卷积运算。
将BN 层置于卷积层与激活函数之间可以加快模型训练时的收敛速度,使模型训练过程更加稳定,避免梯度爆炸或者梯度消失。其核心计算过程如式(2)~(5)所示:
其中,放缩系数γ与平移系数β为可训练参数,引入二者可使网络的输出尽可能重构原始特征的表达能力。
特征融合的目的是将两个或多个特征层上的信息通过一定的方式进行合并,得到比原特征更具备判断力的特征。在有融合式特征金字塔结构中,经过采样的特征层和本地特征层直接相加会导致特征图映射的上下文不对齐[20]。并且,简单的相加操作仅能为特征层提供固定的线性聚合方式[21]。
SKNe[22]和ResNeSt[23]利用对来自同一层的特征进行动态加权平均的方式为特征融合过程提供非线性。但在特征融合时,通常需要将不同分辨率的特征层通过上、下采样的方式调整到同一尺度。如何克服语义不一致、增加非线性并能自适应调整加权因子进行高效融合是增强关键信息表达、提升特征融合能力的核心。
由此,本文提出自适应特征融合模块,该模块接收相同尺度大小的特征层,在通道层面经过全局最大池化与全局平均池化获得关键信息对应通道位置,经过运算获得关键特征所在通道的位置,避免复杂运算,其过程如式(6)所示:
为高效捕获通道间的依赖关系,经过一维卷积对相邻通道信息进行交互[24]。将两个待融合特征交互后的结果进行拼接,由模型经过学习得到的超参数自适应地在不同通道层被给予不同权重,再重新分配回特征层聚合。自适应特征融合模块结构如图5 所示。
图5 自适应特征融合模块结构Fig.5 Self-adaptive feature fusion module
为平等对待相同语义特征内不同尺度的目标信息,目标分割领域的Non_Local[25]基于非局部均值滤波思想直接计算两个像素级子特征之间的位置关系,快速捕获长距离位置依赖。十字交叉注意力模块(CCN)[26]以Non_Local 为基础,在特征层的横纵方向上聚合像素级子特征信息,其结构如图6 所示。
图6 交叉注意力模块结构Fig.6 Criss-cross attention module
经过改进得到的交叉注意力模块结构不仅可以减少内存、提升计算效率,还能增加模型对目标的定位能力。本文将CCN 用于定位分支部分,分别以各检测分支尺度为范围在W和H维度上形成远距离特征依赖,精确预测框位置。
首先,检测分支F,F∈RC×W×H并行经过1×1卷积分别得到尺度大小为C'×W×H的特征图K、Q(C'<C)以及尺度不变的特征图V,同时得到K内每个像素特征点对应索引i。将向量Mu∈RC'×1×1与特征图Q内对应行与列上H+W-1个特征向量构成集合Ωu∈R(H+W-1)×C',通过关联计算,得到Mi与Ωi之间的信息关联度,再通过Softmax 运算得到对应像素级位置的注意力Ai∈R(H+W-1),该过程如式(7)所示:
同样,在特征图V中获取对应行列的向量集Φi∈R(H+W-1)×C,经过聚合计算获得对应位置i的非局部上下文信息F'i∈R(C×1×1),该过程如式(8)所示:
对索引进行遍历后,经过以上步骤计算,得到最终的特征图F'。为避免以十字交叉形式获取远距离特征依赖得到稀疏信息,需连续经过两次该模块。
PASCAL VOC 数据集为公开基准数据集,内有20 个类别的图像。本文选取包含人类、汽车、公交车、自行车以及摩托车样本的11 178 张图片,同时删除其他类别样本的标注信息。其中,选取PASCAL VOC07+12 trainval 数据集内8 383 张图片进行训练,选取PASCAL VOC2007 test 数据集内2 795 张图片进行验证。
考虑到实际应用情况,自制小型道路交通数据集(Road Traffic Photography,RTP)包含汽车与行人类别。首先,选取KITTI 数据集中部分图像并重新划分类别:将Car、Tram、Van、Truck类合并作为Car 类,将PersonSitting 和Pedestrain 合并作为Person 类,同时去除其他低相关性类。其次,为增强样本多样性,选用部分网络图像和真实街道拍摄图像作为补充。图像数量对应来源占比约为7:2:1,所含对象均涉及不同程度的遮挡。最后,将KITTI 数据集转为VOC 格式并通过工具软件labelimg 对自备图像以VOC 格式进行标注。最终得到图像8 100 张。随机抽取80%的图片作为训练集(6 500 张),将余下20%的图片作为验证集(1 600 张)。RTP 数据集的数据来源、目标类别以及目标数量分布见表1。
表1 RTP 的数据分布Tab.1 Data distribution for RTP
本文基于Pytorch 框架,模型训练采用随机梯度下降算法(Stochastic Gradient Descent, SGD)对网络模型的权重进行更新优化。模型参数设置批次大小为32,使用0.001 学习速率进行40k 次迭代,然后继续分别以0.000 1 和0.000 01 的学习率训练10k 次。训练均在型号为GTX 1080Ti的显卡上进行,设备显存为12G。
为验证改进模型AF-SSD 各模块的有效性,本文在PASCAL VOC 子数据集上设计并实现一系列控制变量实验,消融实验结果见表2。
表2 消融实验结果Tab.2 Results of the ablation experiment
在SSD 模型上逐步增加反向金字塔结构(SRBPN)、自适应特征融合模块(SAFM)、交叉注意力模块(CCN)操作并记录数值。分析可知:文本模型加入SRBPN,让检测分支之间信息交流、相互补充,但同时参数量也增加,使模型准确度提升1.5%,FPS 下降4.4。SAFM 模块可以在此基础上使模型精确度提升0.7%,FPS 下降1.6,证明该融合模块可以有效保留更多有效信息。交叉注意力模块在损失2 FPS 的情况下,精确度继续提升0.6%,证明该模块增强了模型检测能力。
本文模型在PASCAL VOC 子数据集各个类别上的检测结果分别与ION300[27]、Faster-RCNN[28]、YOLO 系列算法、无锚点算法FCOS[29]、LNFCOS[30]以及相似输入尺度下SSD改进算法系列(DSSD[31]、EDF-SSD[32]等)进行比较,各类别检测精度详细结果见表3。
表3 PASCAL VOC 子数据的测试集内各类别检测精度对比Tab.3 Comparison of detection accuracy of all types in the sub-samples of the PASCAL VOC dataset%
表3 中已将15 种对比算法中最高单一类别数值进行加粗表示,本文模型在5 个单一类别中占3 项。在Person 类别上,本文模型仅次于AFESSD模型,同时,在Bus类别上,本文模型与其相差1.6。本文算法在5 个类别中的mAP 值为87.1,比两阶段算法Faster RCNN 高6.9;优于单阶段无锚框FCOS 模型及其改进模型LNPCOS,分别高1.4、2;比SSD 模型提升3.1;较当前基于SSD 模型新提出的代表性改进模型AFP-SSD 和RLCADet 模型在数值上分别高2、2.1;比YOLOv3 和DC-SPP-YOLO 模型分别高1、3.3。
网络性能评价的指标除准确性之外,还包括网络检测的实时性。为此,将模型分别在Titan X和1080Ti 的GPU 上进行验证。在Titan X 上的验证结果见表4。模型在1080Ti 上的验证结果见表5。
表4 不同算法在Titan X 上的验证对比结果Tab.4 Comparison of verification results on Titan X for different algorithms
表5 不同算法在1080Ti 上的验证对比结果Tab.5 Comparison of verification results on 1080Ti for different algorithms
在设备型号为Titan X 的情况下,改进模型的检测速度约为Faster R-CNN 的6 倍、R-FCN 的4 倍;改进模型的FPS 为41.5,比DSSD 模型的FPS 高36.5、比RSSD 高11。在1080Ti 的运行环境下,本文改进方法的FPS 为77,约为YOLOv3和RLCADet 模型的2 倍。在两种设备上,本文改进算法的FPS 虽没有取得最优值,但仍满足实时性的要求。
为了更进一步地验证本文模型在复杂场景道路上对车辆与行人的检测效果,在RTP 数据集上进行了验证。在1080Ti 上,各模型的检测结果见表6。
由表6 可见,改进后的模型在RTP 上的精度均值相较原SSD 提升3.9。
结合表2~表5 的结果分析,在精度均值方面,本文模型高于其他模型;在检测速度方面,本文算法满足检测实时性。通过表6 数据可知,改进后的算法对道路上的车辆与行人检测效果提升明显,具备更好的鲁棒性。
为了更直观地评价本文模型与原SSD 模型的准确性,图7 展示了其在PASCAL VOC 的子数据测试集上的可视化效果对比图。
图7 PASCAL VOC 子数据的测试集内SSD 算法与本文的检测结果对比Fig.7 Detection results comparion of SSD and proposed algorithm in the sub-samples of the PASCAL VOC
图7(i)主要展示改进模型针对原模型对目标产生错检、漏检方面的优化情况:SSD 模型在复杂背景下将图像中央的垃圾桶误检为行人,只检测出图像右方的1 名行人;改进的模型则可以检测到图像内2 名行人。图7(ii)、(iii)主要体现模型对遮挡目标的监测情况:改进模型分别以72%和97%的准确率检测出图中原SSD 模型未能检测到的被遮挡车辆。
改进模型与SSD 模型在自制道路目标数据集上的检测结果如图8 所示。观察图8(i)可见,改进模型可以将原模型漏检的从左至右第二个车辆目标以88%的准确率检测出来。观察图8(ii)可见,本文模型可以将左后方受遮挡的汽车检测出来,且检测行人的准确率为94%,较原模型高18%。
图8 道路交通目标数据集上SSD 算法与本文算法检测结果对比Fig.8 Detection results comparion of SSD and proposed algorithm on RTP target data set
针对实际交通场景的车辆与行人检测过程中,目标多尺度及目标间相互遮挡导致模型定位准确率低且漏检率高的问题,本文提出一种注意力和跨尺度融合的改进SSD 目标检测模型AFSSD。该模型的改进部分如下:在SSD 的基础上建立跳跃式反双向递归路径;以本文设计的自适应特征融合方式,代替直接相加融合操作;在定位分支部分引入交叉注意力模块,增强模型对遮挡目标的定位能力。改进模型在PASCAL VOC 07+12 子数据集、RTP 数据集上验证算法在实际应用中的检测能力与鲁棒性。实验结果表明,在保证实时性的情况下,改进方法的精度均值在PASCAL VOC 子数据集上提升了2.6%,在自制道路交通数据集上提升了3.9%。本文模型对复杂场景下的多尺度目标和受遮挡的目标具有良好的检测效果。