APP下载

基于改进Cascade RCNN网络的X光安检违禁品检测①

2022-08-04包晓安金瑜婷涂小妹

计算机系统应用 2022年7期
关键词:违禁品系数损失

张 娜,罗 源,包晓安,金瑜婷,涂小妹

1(浙江理工大学 信息学院,杭州 310018)

2(浙江广厦建设职业技术大学,东阳 322100)

X 光安检是我国广泛应用的安检技术手段,应用于各个重要领域. 使用人工智能技术辅助一线安检员进行X 光安检判图,有效的降低漏报问题. X 光安检违禁品检测实际上是对违禁品的定位和分类. 即用目标检测的方式检测是否有违禁品,并在安检图片上标出违禁品的位置及类别.

传统的安检图像处理算法对安检违禁品检测做出很多贡献. 苏冰山等[1]提出了一种新型X 光图像民航违禁品分类方法,对X 光图像提取Contourlet 变换后图像的共生矩阵、Tamura 纹理特征和直方图特征,最后将这3 种特征的特征向量串联起来得到联合特征向量. 刘颖等[2]提出了一种基于有偏彩色纹理字典的X光安检图像检测,此算法是根据被检测物体的颜色分布构建色彩权值矩阵,提取多通道图像的局部纹理特征,结合词袋模型生成多通道优化的图像字典. 王宇等[3]提出了基于计算机视觉的X 射线图像异物分类研究,该算法主要是利用Tamura 纹理特征和随机森林[4]对X 射线异物进行自动识别分类. 以上传统算法特征捕捉能力较差,检测模型缺少泛化能力,无法应用于海量数据集.

随着深度学习的发展,深度学习在安检图像处理算法得到了广泛应用. 张友康等[5]提出了使用X 光安检图像多尺度违禁品检测网络,对SSD 网络[6]进行改进,增加了小卷积非对称模块、空洞多视野卷积模块以及多尺度特征图融合策略分别用于小尺度违禁品检测、违禁品遮挡以及背景干扰情况下违禁品的检测.马喆等[7]提出了一种改进的YOLOv3 网络检测算法,对基础网络进行改进,引入多维输入图和多分辨率输入图,增加了输入样本的多样性,有效解决了模型的适应性差的问题. 苏志刚等[8]提出了基于语义分割的多目标违禁品识别算法,在编码阶段设计使用空洞空间金字塔卷积模块(ASPC),同时引入注意力机制,对ASPC模块的特征提取过程进行监督,进一步提升模块的特征提取能力. Cui 等[9]提出了一种使用RetinaNet 自动检测货物X 射线图像中枪支的方法,该方法提供了更精确的对象定位和更快的检测速度. 然而以上基于深度学习的算法检出率并不是很高,存在漏检及误检的情况.

针对以上问题,本文基于深度学习的方法,提出了改进的Cascade RCNN[10]. 在网络结构上,原有的Cascade RCNN 网络在ROI Align[11]之后的特征并没有做任何改动,而是直接进入后续的分类和回归,网络往往关注的是局部特征,其他特征就会受到抑制,从而不能得到有效鲁棒的特征. 为了得到更加有效鲁棒的特征,在ROI Align 之后添加批特征擦除(BFE)模块[12],通过随机擦除同一批次特征,迫使网络强化其他特征的表达.在损失函数上,原有的损失函数在位置回归损失上缺少DIoU 损失[13],通过权重融合的方式将位置回归损失与DIoU 损失进行融合,相当于为原网络增加了重叠面积和中心点距离损失,这样使得目标检测结果更加精确.

1 Cascade RCNN 设计与分析

1.1 Cascade RCNN 网络结构及原理

Cascade RCNN 网络主要由特征提取网络Res-Net101[14]、特征金字塔网络(feature pyramid network,FPN)[15]、RPN (region proposal network)[16]网络层以及级联检测器组成. 特征提取网络ResNet101用于提取图片特征,将原图经过Conv1、Conv2、Conv3、Conv4以及Conv5 卷积操作以及不同层次的特征融合得到不同尺度的特征图P2、P3、P4 以及P5. 然后将P2、P3、P4 以及P5 不同尺度的特征图输入到RPN 中用于得到候选目标区域,将所得的候选目标区域做ROI Align 操作后,得到7×7 大小的ROI 特征图. 如图1 Cascade RCNN 网络结构图.

图1 Cascade RCNN 网络结构图

在检测阶段,与Faster RCNN 不同的是,Cascade RCNN 使用级联检测器的方式进行检测,由3 个检测器分别设置不同的阈值进行检测. 每个检测器包括了ROI Align、全连接层、分类得分C和边框回归位置坐标B组成. 检测时通过前一阶段检测器输出的边框回归B对候选目标区域进行重采样,逐步提升IoU阈值训练得到新的分类得分C和边框回归B,最终提升样本质量和网络训练效果.

1.2 Cascade RCNN 网络的RPN 结构

RPN 网络主要用于生成候选目标区域,首先通过RPN 生成一堆anchor box[17],对其进行设置阈值过滤后通过Softmax[18]分类器判断该anchors 中的目标属于目标或者背景; 同时,另一分支边框细回归(bounding box regression[19])修正anchor box,用于生成较为准确的proposal.

1.3 Cascade RCNN 网络的级联检测器

Cascade RCNN 主要的改进是在Faster RCNN 网络的基础上加入了级联检测器,级联各个检测模型,设置不同的IoU[20]阈值界定样本去训练模型,让每一个阶段的检测都专注于检测IoU在某一个范围内的proposal,上一个检测模型的输出作为下一个检测模型的输入,越往后检测模型的IoU阈值越不断提升,反而也能使RPN 网络输出更准确的候选目标区域,从而减少假正样本出现的次数,提高网络的精确度.

2 改进的X 光安检图像检测模型

针对Cascade RCNN 网络对X 光违禁品检测存在检测率低下的问题,本文提出了改进的Cascade RCNN 网络违禁品检测算法如图2 所示. 改进的Cascade RCNN 将ResNet101 网络输出的特征图自浅层至深层融合为特征金字塔并输出到RPN 网络. 经过RPN 进行候选区域的选取后,将映射到原图的ROI 与P2、P3、P4 以及P5 通过ROI Align 层统一尺寸后融合. 然后将统一尺寸后的ROI 特征图后引入一个BFE 模块,进行随机擦除同一批次的特征. 输入到全连接层FC 进行分类和回归. 通过前一个阶段的检测器输出的边框回归对候选框目标区域进行重采样并逐步提升IoU阈值,最终训练得到新的分类得分和边框回归.

图2 在Cascade RCNN 中添加BFE 模块

如图2 所示,改进的Cascade RCNN 网络主要包括ResNet101 特征提取网络、FPN 特征融合金字塔、RPN 网络层以及级联检测器组成. 与原始的Cascade RCNN 的区别是,该网络主要在ROI Align 得到的ROI特征图后添加了BFE 模块进行批特征擦除. BFE 模块通过随机擦除同一批ROI 特征图的相同区域,随机丢弃同一批次特征,防止出现过拟合,从而使训练达到更好的效果.

2.1 批特征擦除

BFE 是通过随机擦除同一批次某个区域图像中所学习到的特征. 与DropBlock 算法类似的都是丢弃空间相关性,通过有效的随机丢弃局部语义信息,激励网络学到更加鲁棒有效的特征. 与DropBlock 不同的是BFE 模块是使用批量处理,将FPN 层得到的ROI 特征张量T,经过批处理BFE 模块后随机丢弃张量T的某个区域,将该区域内所有单位清零,迫使网络增强剩余区域的特征学习.

BFE 的本质是为了不让网络太关注那些太显而易见的全局特征. 通常CNN 网络在卷积后往往会将焦点集中在某个局部位置的学习,而其他位置则会受到抑制. 通过引入BFE 模块对同一批次某个区域的所有特征进行随机丢弃,也就是说它在同一批次图像中禁用了与其语义部分相关的所有特征,迫使网络学习其他的特征.

BFE 模块结构图如图3 所示,将ROI Align 映射后的特征图采用特征擦除的方式进行随机擦除. 通过随机产生通道数与ROI 特征图相同、改变宽度缩放比例和高度缩放比例以及随机改变擦除位置,生成一个包含0 与1 的掩码张量,将ROI 特征图与该掩码张量相乘,从而消除了掩码张量为0 位置上的ROI 特征,保留了掩码张量为1 的ROI 特征,强迫网络学习其它区域的特征,强化剩余特征的表达,加快网络的收敛速度.同时,采用这种擦除的训练方式去迭代训练,网络具有更好的鲁棒性. 实验表明,当掩码张量的宽度和高度缩放比例系数不同时,训练出来的模型精度也有所差异.本文中由实验结果证明,宽度和高度缩放比例系数为0.18 和0.18 时可以达到最好的效果.

算法1. BFE 算法rh输入: 输入张量T,大小为B×C×H×W; 擦除高的缩放比例 ,擦除宽的缩放比例 ; T 表示经过ROI Align 处理后的特征图;输出: 输出张量T';rw 1)初始化H,W: H, W←T.size()[-2:]; /*,其中,H 和W 分别为特征图的高和宽*/;rhrw 2)初始化H',W': H'←round(*H),W'←round(*W); /*H'和W'分别为擦除特征图的高和宽,round 为对数字进行四舍五入*/;3)计算Sy,Sx: Sy←random.randint(0,H–H'),Sx←random.randint(0,W–W'); /*Sy 和Sx 分别为擦除的起始y 坐标和起始x 坐标,random.randint 为随机产生整数*/;4)初始化Mask: Mask←T.new_ones(T.size()); /*Mask 为与T 大小相同,值为1 的张量*/;5)计算Mask: Mask[:,:,Sx:Sx+W',Sy:Sy+H'] ←0; /*将Mask 中需要擦除的位置置为0,不需要擦除的位置置为1*/;6)计算T': T'←T*Mask; /*T'为擦除后的特征图*/.

图3 BFE 模块结构图

2.2 SD loss 损失函数

本文主要针对Cascade RCNN 边框损失函数进行改进. Cascade RCNN 的损失函数主要由两部分组成,分别是分类误差、坐标回归误差. 其公式如式(1),式(2)所示.

其中,v=(vx,vy,vw,vh)表示真实框坐标,tu=(tux,tuy,twu,thu)表示预测框坐标,利用smoothL1损失函数作为边框回归损失. 然而实际上评价框检测的指标是使用IoU,多个检测框可能有相同的大小的smoothL1,IoU可能差异很大. 为了解决这个问题,在smoothL1的基础上,与DIoU loss 进行加权求和,进而提高目标回归的准确性.

基于IoU系列的检测算法损失函数一般可以定义为L=1−IoU+R(B,Bgt),其中B定义为预测框,Bgt定义为真实框,R(B,Bgt)定义为B和Bgt的惩罚项. 而DIoU loss 的惩罚项表示为,ρ(·)定义为欧式距离公式,b表示预测框B的中心点,bgt表示Bgt的中心点,c表示B和Bgt的最小外界矩形的对角线距离. DIoU loss、SD loss 定义如式(3)–式(4):

其中,α 和 β分别是权重比例系数,本文中 α 和 β均为1.SD loss 结合了坐标回归损失和DIoU loss,在原有的坐标回归损失的基础上,考虑到重叠面积和中心点距离的因素,加上了重叠面积和中心点距离损失. 对坐标回归损失和DIoU loss 这两种损失函数以权重比例系数的方式进行加权融合,使目标回归的准确率更高,并且模型收敛速度更快.

3 实验设计与结果分析

3.1 实验环境以及数据集构建

为了分析和评估本文提出的算法的性能. 本节在X 光数据集上进行对比实验.

实验环境配置: CPU 为Intel(R)Core(TM)i7-4790K CPU; 主频为4.00 GHz;内存为8 GB; 系统为Linux 4.4.0-130-generic x86_64 位; GPU 为NVIDIA Corporation GM204 [GeForce GTX 970].

数据集: 在构建数据集上,从公开数据集中采集了3 600 张X 光安检图像,数据集中包括需要检测10 种类别的违禁品,包括刀具、剪刀、打火机、打火机油、压力容器罐、弹弓、手铐、指甲油、充电宝、烟花爆竹. 使用了3 240 张作为训练集,360 张作为验证集. 如图4 所示数据集样本.

图4 样本数据集样例

3.2 消融实验

3.2.1 BFE 不同宽高比缩放比例系数的对比实验

本节实验采用mmdetection 工具进行实验,特征提取网络backbone 使用ResNet101,使用ImageNet 的预训练模型,学习率设置为0.001 25,Batchsize 设置为2,训练50 个epoch.采用Cascade RCNN+ResNet101+BFE 进行实验发现,使用BFE 模块进行训练的过程中,采用不同的宽高缩放比例,即rh和rw不同缩放比例系数时,测试X 光图像数据集的mAP 值均有所差异. 当采用不同的宽高缩放比例系数时,得到如表1 所示结果.

表1 验证BFE 模块使用不同的宽高缩放比例系数时mAP 的增长情况(%)

如表1 所示,当设置BFE 模块的宽高缩放比例系数为0.15 和0.15 时,验证X 光数据集的mAP 为0.845 6,当宽高缩放比例系数为0.18 和0.18 时,mAP 增长了1.15%,当宽高缩放比例系数超过0.18 和0.18 时,验证X 光数据集的mAP 在不断减小. 说明宽高缩放比例系数的大小对BFE 模块是一个重要的因素,同时也影响整个改进的Cascade RCNN 网络的精度.

3.2.2 SD loss 不同权重比例系数的对比实验

采用Cascade RCNN+ResNet101+SD loss 进行实验发现,使用SD loss 损失函数进行训练时,不同的权重比例系数会影响实验结果. 当采用不同的权重比例系数时,得到如表2 所示结果.

表2 验证SD loss 使用不同的权重比例系数时mAP 的增长情况(%)

如表2 所示,当使用SD loss 损失函数权重比例系数设置为0.5:1 时,验证X 光数据集的mAP 为0.845 8,当权重比例系数为1:1 时,mAP 增长了2.95%,说明权重比例系数的大小对SD loss 损失函数是一个重要的因素,同时也影响整个改进的Cascade RCNN 网络的精度.

3.2.3 不同模型的对比实验

在实验的过程中,分别加入BFE 模块以及SD loss 损失函数不同模型进行对比实验,使用mAP 作为评价标准. 实验结果如表3 所示.

表3 验证分别加入BFE 模块以及SD loss 损失函数后的mAP 的增长情况(%)

如表3 所示,当使用Cascade RCNN+ResNet101进行训练时,验证X 光数据集的mAP 值为0.845 3. 加入BFE 模块后mAP 为0.857 1,加入后增长了0.011 8.说明加入BFE 模块后准确率有一定的提高,再加入SD loss 损失后mAP 值为0.876 4,相比原算法提升了0.031 1. 说明改进的损失函数和改进的网络结构对X光安检检测的准确率有一定的提升.

3.2.4 不同算法的对比实验

在实验的过程中,分别将改进的Cascade RCNN算法与其它目标检测算法进行对比实验,使用mAP 作为评价标准. 实验结果如表4 所示.

如表4 所示,当使用改进的Cascade RCNN 算法进行训练时,验证X 光数据集的mAP 值为0.876 4. 当使用Faster RCNN 和Mask RCNN 这些双阶段算法进行训练时,验证X 光数据集的mAP 值分别为0.802 8和0.817 3.同时,也对比了单阶段RetinaNet 检测算法,说明改进的Cascade RCNN 算法比同类型的双阶段检测算法以及单阶段检测算法的精度更高.

表4 分别验证其它目标检测算法和改进Cascade RCNN 算法的mAP 的增长情况(%)

4 结论与展望

本文基于Cascade RCNN 网络,在网络结构上,引入一个BFE 批特征擦除模块,通过随机擦除同一批次中的相同区域,迫使网络学习其他区域的特征,加强其他区域特征的学习,增强了模型的鲁棒性. 同时,验证了当BFE 中宽高缩放比例系数为0.18 和0.18 时,可以达到最好的效果. 提出一个加权SD loss 损失函数,该损失函数将Smooth L1 loss 与DIoU loss 进行加权融合,通过调整权重比例系数,使边界检测结果更加准确. 测试性能与原算法相比,改进的Cascade RCNN 网络的mAP 增长了3.11%,精度得到了提升. 最后,将改进的算法与同类型的双阶段检测算法和单阶段检测算法进行对比,改进的算法比其它目标算法的精度更高.

猜你喜欢

违禁品系数损失
洪涝造成孟加拉损失25.4万吨大米
两败俱伤
贪污罪的特殊对象研究
小小糕点师
苹果屋
嬉水
损失
那些损失上百万的演员
违禁品在这里
略析代为保管的对象问题