李启明,阙祖航
(上海海事大学信息工程学院,上海 201306)
交通网络的密集化和巨大的客流量给安检任务带来严峻的挑战。对危险品的甄别工作目前主要由人工完成,安检质量很大程度上受工作人员的状态影响,长时间的工作容易出现漏检误检等问题,导致安检精度和效率降低。因此,计算机辅助或自动安检成为该领域的研究热点。X射线技术已被广泛应用于公共安检领域,与普通光学成像原理不同,主流的双能X光透视成像技术能够根据不同材质、厚度的物体对高低能射线的吸收系数不同的特点来获取物体的轮廓信息进而实现物体的区分,但该技术仍存在物体重叠、细节特征丢失等固有缺陷。此外,同类物品由于摆放角度和位置各异,导致它们的透视成像形态发生严重变化,增大了检测难度,影响安检人员对危险品的辨别。
危险品检测是一种特殊的目标检测,其方法主要可分为基于传统机器学习和基于深度学习两类。早期机器学习主要使用手工特征和分类器进行分类,使用滑动窗口来捕获目标的位置信息。王华君等[1]采用尺度不变特征变换(scale invariant feature transform,SIFT)方法获取了对姿态变化具有鲁棒性的特征,并利用这些特征构建目标的隐式形状模型(implict shape model,ISM),通过判断输入图像的描述符是否匹配ISM模型来实现危险品的检测;丁静文等[2]提出了结合状态回溯的启发式Q学习的主动视觉方法来获取最佳的视觉估计,提高危险品检测性能和检测速度。但以上两种方法都希望在未来工作中进一步提升对枪械等形状不规则物体的检测效果。
近年来,深度卷积神经网络推动了目标检测、语义分割等计算机视觉任务的进步,面向X射线图像的危险品检测也随之取得一系列成果。Akcay等[3]首次将深度学习引入到X射线安检图像分类检测。基于深度学习的目标检测方法大体可以分为one-stage和two-stage两类。基于two-stage的检测方法首先提出候选区域(region proposal),再基于候选区域进行二次修正实现目标检测,代表性算法如更快的基于区域的卷积神经网络(faster region convolutional neural network,Faster R-CNN)系列。杨子固等[4]在Faster R-CNN的基础上引入预分类模块和兴趣区域对齐模块,使得模型能够更好地学习图像的高级语义特征,进而提高模型检测性能。康佳楠等[5]提出了一种基于多通道区域建议网络,通过设计一种多分支膨胀卷积模块来增大感受野,增强对小目标的检测能力。但基于two-stage的检测方法在实时检测方面普遍稍逊于基于one-stage的主流算法。
基于one-stage的检测算法的实现原理是直接在图像上经过计算得到目标的检测框和类别,包括SSD(single-shot multibox detector)[6]、YOLO(you only look once)系列等算法。王昱晓等[7]提出了基于改进SSD的多尺度特征融合检测网络(multi-scale feature fusion network,MFFNet),将SSD的VGG-16骨干网络替换为更深的RestNet-101网络来更好地提取特征,并新增轻量级特征融合模块生成新的特征金字塔,尽管改进模型在SIXray数据集[8]上的检测精度有比较明显的提升,但检测速度下降近3倍。唐浩漾等[9]在SSD的基础上同样构建了特征金字塔来融合浅层特征图的位置信息和深层特征图的语义信息,同时引入可形变卷积模块自适应地获取目标的形状和尺度信息,有效地提高了小目标危险品的检测能力,但存在参数量和计算量较多等问题。
卢官有等[10]提出了改进YOLOv3[11]网络模型,通过K-means聚类算法计算出更适应目标物体尺度的先验框,通过减少预测边界框提高检测速度。吴海滨等[12]使用空洞卷积对YOLOv4[13]网络结构进行优化,引入空间金字塔池化模型增大感受野,增强对小目标危险品的检测能力,在SIXray数据集表现出mAP为85.23%的检测性能。Tao等[14]提出了由双向传播架构和边缘激活模块构成的侧抑制模型,并将该模型嵌入到主流目标检测网络中,能够有效解决复杂场景下遮挡干扰的问题,在HIXray数据集[14]和OPIXray数据集[15]的危险品检测任务中取得出色的效果。Zhang等[16]在YOLOv5的主干网络中插入压缩激活模块(squeeze and excitation,SE)[17]消除大量无效的通道信息,降低模型错误率进而提高检测性能。董乙杉等[18]提出了一种改进的YOLOv5网络模型,引入卷积块注意力机制[19](convolutional block attention module,CBAM)增强网络对目标的特征提取能力,此外作者在测试阶段采用加权边框融合算法优化预测框。在YOLO系列中,YOLOv4和YOLOv5都是在YOLOv3的基础上改进增强,检测效果取得很大的进步,由于YOLOv5在模型训练时收敛速度远远优于YOLOv4,所提算法也在YOLOv5的基础上进行改进。
综上所述,随着各种算法的提出和改进,对于X射线图像危险品的检测性能不断取得显著提升,但在这些优秀的算法中,如YOLO系列的改进算法,相较于原算法,在提升检测精度的同时,或多或少会增加模型大小和参数量。为此,提出了基于改进YOLOv5的检测算法,首先使用传统数据增强与Mixup数据增强策略[20]相结合的方式进行数据扩充,然后通过利用轻量型Ghost模块[21]替换YOLOv5中的部分模块达到降低模型大小和参数量的效果,最后引入坐标注意力(coordinate attention,CA)[22]机制减少背景干扰,提高检测精度。研究成果为X射线图像安检场景中改善危险品检测效果的研究进一步提供了科学依据。
YOLOv5是一种one-stage目标检测算法,已在各种应用场景表现出优异的性能。在Ultralytics官方推出的4个版本网络模型中,结合检测速度和精度两方面因素进行权衡,最终选取YOLOv5s做为所提改进算法的原模型。YOLOv5由输入端、Backbone、Neck和检测层组成。
输入端主要包括自适应锚框计算、图片尺寸处理以及Mosaic数据增强[14]。Backbone层主要包含BottleneckCSP模块,该模块在增强网络学习能力的同时大幅度减少了计算量。与之前发布版本相比,新模型采用内核为6、步长为2、填充为2的普通卷积层代替了Focus层,便于模型的导出,将快速空间金字塔池化层(spatial pyramid pooling fast,SPPF)代替原来的空间金字塔池化层(spatial pyramid pooling,SPP),并放在主干末端。Neck层采用特征金字塔网络结构(feature pyramid network,FPN)和路径聚合特征金字塔(path aggregation network,PAN)结构进行特征融合,该组合模块增强了网络模型对不同缩放尺度对象的检测能力,改善低层特征的传播,使模型能够获取更加丰富的特征信息。检测层由三个模块组成,用于检测不同尺寸的目标对象。
主流卷积神经网络在生成大量冗余的中间特征图时计算成本过高,GhostNet的提出有效解决了这个问题。如图1所示,Ghost模块将原始卷积层分为两部分,首先通过少量的卷积核生成原始特征图,然后在原始特征图的基础上通过简单的线性操作高效生成更多的特征图,最后将上述两步骤生成的特征图进行拼接。
假设输入特征图尺寸为h×w×c,输出特征图尺寸为h′×w′×n,则直接通过内核大小为k×k普通卷积(k为内核的高度或宽度)生成特征图的计算量为nh′w′ckk,参数量为nckk。如图1所示,Ghost模块首先通过普通卷积(内核大小为k×k)生成具有m个通道的原始特征图f1,计算量为mh′w′ckk, 参数量为mckk;然后对f1中的每一个特征应用廉价的线性运算Φi(采用内核大小为d×d的普通卷积,d为内核的高度或宽度)生成具有m(s-1)个通道数Ghost特征图f2,计算量为mh′w′(s-1)dd, 参数量为m(s-1)dd;最后将特征图f1和f2进行拼接,得到输出特征图,Identity表示原始特征图f1的恒等映射,其中s表示特征图f1中每一层特征进行映射的次数(1次恒等映射,s-1次线性运算),且n=ms。
h和h′分别为输入特征图和输出特征图的高度;w和w′分别为输入特征图和输出特征图的宽度;c、m、n为通道数;Conv为卷积;Identity为恒等映射;Φi为第i个线性运算
式(1)、式(2)分别描述了Ghost模块优化普通卷积的加速比rs和参数压缩比rc的理论推导过程,其中d×d的幅度和k×k相似,且s远小于c。
≈s
(1)
(2)
利用Ghost模块能够有效减少参数量和计算量的优势,对YOLOv5的Neck层进行模型剪枝优化,具体操作是将该层的普通卷积和C3模块分别替换为GhostConv和C3Ghost模块,模块结构如图2所示。Han等[21]建议一个Ghost模块应使用相同大小的线性运算,本实验将其内核大小设置为5。
c1、c2为通道数;n为GhostBottleneck模块的堆叠数目;Conv为卷积;DWConv为深度可分离卷积;Concat为特征图通道数相加;Add为特征图相加
当前,注意力机制已被广泛应用在神经网络中,它将有限的计算资源分配到更为重要的任务中,改善模型性能。在X射线安检图像危险品检测场景中,已有学者在原模型合适的位置上加入SE、有效注意力机制[23](efficient channel attention,ECA)、CBAM等模块,抑制图像内由于物品遮挡、背景干扰等问题所产生的大量无效特征,增强更为关键的有效特征,从而提高任务处理的效率和准确性。但上述注意力机制仍存在一些不可忽视的问题,SE注意力机制只考虑了通道间的编码而忽视了空间信息的重要性,ECA在SE模块的基础上提出了一种不降维的局部跨信道交互策略从而提升性能,CBAM虽然融合了通道和空间信息,但只能捕获局部信息。本文模型引入的坐标注意力机制不仅能捕获通道间的依赖,还能捕获具有精确位置信息的空间长程依赖,有助于网络更加准确地定位感兴趣目标,其结构如图3所示。
H和h为高度;W和w为宽度;C为通道数;r为压缩比例;F1、Fh和Fw为卷积操作;Residual为残差结构;Avg Pool为平均池化;Conv2d为卷积;Concat为特征图通道数相加;Re-weight为计算权重;BatchNorm为归一化处理;No-linear为非线性激活函数;Sigmoid为Sigmoid激活函数
坐标注意力机制模块利用精确的位置信息对通道关系和长程依赖编码,包含坐标信息嵌入和坐标注意力生成。
(3)
(4)
在坐标注意力生成过程中,首先对上一步嵌入坐标信息的通道分别沿着两个空间方向进行特征聚合生成特征图zh和zw,对这两个特征图沿着空间维度进行连接操作,利用1×1卷积进行通道压缩,再经过归一化操作和非线性激活函数处理后,生成具有水平和垂直两个方向的空间信息的中间特征图f∈RC/r×1×(W+H),其中r为压缩比例。然后沿着空间维度将中间特征图f再拆分成两个单独的张量fh∈RC/r×H和fw∈RC/r×W,对这两个张量分别使用1×1卷积进行通道扩充,使得生成的特征图通道维度与输入特征图X的通道维度保持相同,经过sigmoid激活函数处理得到两个张量gh∈RC×H×1和gw∈RC×1×W。最后对gh和gw进行扩展并作为注意力权重,得到输出特征图Y∈RC×H×W。坐标注意力机制模块实现过程的表达式为
f=δ[F1([zh,zw])]
(5)
gh=σ[Fh(fh)]
(6)
gw=σ[Fw(fw)]
(7)
(8)
式中:F1、Fh和Fw为使用内核大小为1×1的卷积操作;δ为非线性运算;σ为sigmoid函数;[·,·]为连接运算。
鉴于该注意力机制具有能够有效捕获通道间关系、适用于轻量型网络、简单高效等优点,本文算法是在主干网络的中间层、中下层和底层三个位置分别添加一个CA模块,使得模型对感兴趣目标能够更好地提取特征,提高模型的检测性能。
改进模型如图4所示,假设输入图像尺寸为640×640×3,首先在Backbone层中提取3个有效特征层F3∈R80×80×256,F4∈R40×40×512,F5∈R20×20×1 024;其次,在Neck层中利用这3个特征层构建特征金字塔,有利于提取更好的特征,具体操作如下,将F5经过1×1卷积压缩通道后得到特征层P5∈R20×20×512,P5上采样后与F4结合,经过C3Ghost模块特征提取后得到特征层P′5∈R40×40×512,P′5经过1×1卷积压缩通道后得到特征层P4∈R40×40×256,P4上采样后与F4结合,经过C3Ghost模块特征提取后得到输出特征层P″3,P″3经过3×3卷积下采样后与P4沿通道维度进行堆叠,再经过C3Ghost模块特征提取后得到输出特征层P″4,P″4经过3×3卷积下采样后与P5沿通道维度进行堆叠,再经过C3Ghost模块特征提取后得到输出特征层P″5,其中P″3、P″4、P″5分别适合于尺度为小、中、大的目标检测;最后,将这3个加强特征层送入Detect模块获得检测结果。
Conv为卷积;CA为坐标注意力机制;Concat为特征图通道数相加:Upsample为上采样;Detect为检测块;SPPF为快速空间金字塔池化;C3为C3模块;GhostConv为GhostConv模块;C3Ghost为C3Ghost模块
在计算机视觉领域中,数据增强旨在通过数据扩充的方式来弥补训练数据集不足,可以分为同类增强和混类增强两种方式,前者具体有翻转、随机裁剪、移位等操作,而所采用的Mixup数据增强策略属于后者,如图5所示,该方法能将不同类之间的图像进行混合以达到数据扩充的目的,其原理如式(9)~式(11)所示。
图5 Mixup数据增强效果图
λ=Beta(α,β)
(9)
(10)
(11)
为了提高模型的泛化能力和鲁棒性,最终采取同类增强和混合增强相结合的方式进行数据扩充。
此外,对于经过数据增强后的图像,虽然其背景愈加复杂,物品遮挡愈加严重,但在加大网络学习难度的同时,能使其不局限于简单样本的学习,还能促进网络从困难样本中获取到更具有价值的知识,提高模型的泛化能力和鲁棒性,以此应对更为复杂的应用场景。
本实验环境为Ubuntu 20.04.3 LTS,CPU为Intel Xeon E5-2680 v4,内存16 G,GPU为TITAN Xp(显存12 G),通过Pytorch 1.10搭建网络模型,使用CUDA 11.3计算架构。
实验使用SIXray和 OPIXray数据集。SIXray数据集有8 929张图片,包含扳手、手枪、刀、钳子、剪刀五类危险品,按8∶1∶1比例将数据集划分为训练集、验证集、测试集。OPIXray共有8 885张图片,包含折刀、直刀、剪刀、美工刀、多功能刀五类危险品,其中6 398张图片作为训练集,711张图片作为验证集,1 776张图片作为测试集。
训练批次设置为16,训练周期为300,初始学习率为0.01,mixup为0.243,图像分辨率固定为640×640。实验采用平均精度(AP)、平均精度均值(mAP)、参数量(Params)、计算量(FLOPs)、模型大小(Size)等对各个模型性能进行对比。
为了减少模型的参数量和计算量,尝试利用Moblilev3[24]、Ghost、Shufflenetv2[25]等轻量型模块对原模型的Backbone或Neck层进行剪枝。在均使用同类增强和Mixup增强相结合的方式进行数据扩充的情况下,实验结果如表1所示。可以看出,相比于原模型YOLOv5s,虽然各个模型的检测精度均有所降低,但模型体量改善明显。其中,结构为C3+Ghost的模型的mAP为90.5%,明显高于其他方式,其原因在于该模型在主干层保留了C3结构,能够充分发挥原模型优秀的特征提取能力。因此,在有效减少模型的参数量和计算量的前提下优先考虑模型的精度,将以Backbone层为C3模块、Neck层为Ghost模块作为后续实验的基础模型。
表1 模型剪枝实验结果
为了进一步提升性能,在基础模型中分别加入不同注意力机制并进行对比实验。实验结果如表2所示,引入坐标注意力机制的模型性能显著优于其他模型,mAP达到91.4%,较于基础模型提升了0.9%。尽管基础模型在引入坐标注意力机制后,其参数量和模型大小有所增加,分别为5.808 M、12.0 M,但以上两个值仍远远低于原模型YOLOv5s,满足模型轻量化的要求。
表2 改进过程实验结果
最终,确定了所提的改进网络模型,即在Backbone层引入坐标注意力机制,使用GhostConv和C3Chost模块分别替换Neck层中的Conv和C3模块。
为了验证改进模型在危险品检测任务中的性能表现,选取其他YOLO系列模型与本文模型在SIXray数据集上进行性能对比,对比结果如表3[11-13,18,26-27]所示。由于改进模型继承了YOLOv5的主要优点,其检测性能明显优于YOLOv3、YOLOv4,mAP分别提升了12.1%、8.3%。在数据增强策略的作用下,改进模型在YOLOv5的基础上结合CA注意力机制,在网络训练过程中能够更加准确地聚焦感兴趣目标,使得模型对5种危险品的检测平均精度分别提升了0.5%、1.4%、2.4%、0.4%、6.8%,mAP提升了2.3%,且优于其他基于YOLOv5的改进模型。不同于以往anchor-based的YOLO系列模型,旷世科技所提出的基于anchor-free的YOLOX[26]不需要预设锚框而只需对特征图的目标中心点和宽高直接进行预测,减少了计算量,检测速度是该类模型的最大优势,但是anchor-based的模型能够更好提取特征进而能够取得更好的检测精度,因此尽管改进模型检测速度稍逊于YOLOX,但检测精度明显优于YOLOX及其改进模型,mAP分别高出5%和1.7%。
表3 改进模型在SIXray数据集上与其他模型的对比实验结果
此外,为了验证改进模型的泛化性,在OPIXray数据集上与其他模型进行对比。如表4所示,改进模型能够达到93.5%的mAP,较于原模型提高了5.7%,相比于文献[14, 15, 18]所提出的基于YOLOv5的其他改进模型分别高出5.5%、2.9%、1.9%,由此可以说明所提模型在其他数据集上仍能保持较好的检测效果。综上所述,所提出的改进模型对常见类别的X光安检图像危险品的检测更为准确。
表4 改进模型在OPIXray数据集上与其他模型的对比实验结果
模型检测效果如图6所示,其中图6(a)为待检测的图像。由图6(b)可以发现,使用原模型检测时会出现违禁品漏检的问题,漏检物体使用白色圆圈标注,而使用改进模型能够检测出所有违禁品,如图6(c)所示。此外,尽管所提模型经过轻量化处理,但从第二行图中可以发现,改进模型仍然可以有效地检测出严重遮挡的危险品,能够达到原模型的检测效果。
图6 检测结果图
为探讨不同改进模块对算法性能优化的影响,在SIXray数据集上设计了消融实验,实验结果如表5所示。首先Ghost模块对网络起到有效的剪枝作用,同时也保证了性能基本无损失,参数量减少了20%,模型大小减少了18.9%。在此基础上,仅增加少量参数量和推理时间的情况下,其他模块的添加均对模型表现呈现正向优化,分别贡献了1.4%、1%的mAP。最后,组合3个改进模块的模型表现最优,并且满足实时检测要求。
表5 本文算法在SIXray数据集上的消融实验结果
为进一步提升X光图像中危险品检测的性能,提出了一种基于YOLOv5的改进模型。通过实验可以得出以下结论。
(1)引入坐标注意力机制来提高背景与前景的可辨别性,有助于网络更加准确地定位感兴趣目标并捕获更有效的特征信息,增强模型对危险品的识别能力。
(2)采用Ghost模块对YOLOv5s进行轻量化处理,对资源严格受限的设备更加友好。
(3)采用传统数据增强和Mixup数据增强策略相结合的方式进行数据扩充,在丰富数据集的同时也增加了网络训练过程中的学习难度,提高模型的训练效果和鲁棒性。
虽然所提出的改进模型在SIXray和OPIXray数据集上均取得可观的检测效果,mAP分别达到91.4%、93.5%,优于现有大部分检测方法,具有较好的实践意义。但在现实生活中危险品类别数目远远多于模型训练时所涉及的类别数目,且除了不同类别危险品相互遮挡外,同类别危险品遮挡现象同样对检测性能带来不可忽视的影响,此外,尽管所提模型的检测速度满足实时要求,但仍具有相当大的提升空间。在深度学习领域中,许多小模型可以通过知识蒸馏和迁移学习相结合的方式使其具备同大模型相当的性能表现,因此下一步我们将采用该方式来降低模型推理时间,继续提升模型的综合性能。