结合级联注意力机制的车辆检测算法

2023-11-20 10:58邓天民刘旭慧王春霞
计算机工程与应用 2023年21期
关键词:注意力车辆特征

邓天民,刘旭慧,王 丽,王春霞

重庆交通大学 交通运输学院,重庆 400074

车辆检测作为目标检测的具体应用领域,对构建智能化交通系统起着关键性作用。在汽车自动驾驶系统和高级辅助驾驶系统(advanced driver assistance systems,ADAS)中,车辆检测的准确性直接影响到行车安全。随着计算机硬件水平的提升,基于卷积神经网络(convolutional neural network,CNN)的目标检测方法取得了惊人的成果[1],掀起了许多学者对深度学习的研究热潮。

目前,基于深度学习的车辆检测方法主要分为两类。一类是两阶段检测算法,此类算法检测准确率和定位精度较高,但缺点是训练速度慢,实时性差。其中代表性的算法有R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]等。宋焕生等[5]通过改进Faster R-CNN 算法实现了对复杂场景下的车辆检测,把场景中的目标检测问题转换为二分类问题,虽然基本能满足实时性要求,但模型对远场景下的小目标车辆无法精确识别;杨薇等[6]提出了一种改进的Faster R-CNN 车辆实时检测算法,训练时采用多尺度策略,提高了模型泛化能力,但对于复杂环境下车辆密集、遮挡严重时检测效果较差。

另一类是一阶段检测算法,此类算法不需要生成候选框,可直接预测物体的位置与类别。其中代表性的算法有YOLO(you only look once)系列算法[7-10]以及单击多盒检测器(single shot multibox detector,SSD)[11]等。Wang等[12]提出了一种基于改进的YOLOv3-Tiny的车辆检测方法,加入空间金字塔池化模块,增强了模型的特征提取能力,取得了较高的检测精度,但对于远场景下小目标的检测效果较差;郭健忠等[13]提出一种改进SSD的车辆小目标检测算法,用MobileNetv2 替换SSD 中的AGG-16 作为检测网络,提高了对小尺度目标的检测能力,但在车辆密集且遮挡较为严重的情况下仍存在漏检较多的问题。

针对上述问题,提出结合级联注意力机制的车辆检测算法,即CAM-YOLO(cascading attention mechanismyou only look once),考虑到以往车辆检测算法对于复杂背景车辆检测精度较低,设计级联注意力特征提取模块CAFEM(cascading attention feature extraction module),分别从通道和空间两个维度挖掘重要特征信息,抑制干扰特征信息,将其嵌入基础主干网络,使网络更具指向性的提取复杂背景车辆目标的关键信息;为了准确检测远场景小目标车辆,采取多尺度特征检测方法,基于浅层网络重点提取目标位置信息,增加大尺度检测层以提取小目标的关键信息,提高目标检测器对远场景下小目标车辆的检测性能;为了实现密集遮挡车辆准确检测,使用DIOU_NMS后处理方法,精准回归预测框,解决目标检测器分类分数和定位精度不匹配的问题,提升密集遮挡目标车辆的检测精度。与现有检测方法进行对比分析发现,在执行复杂背景、远场景以及密集遮挡下的车辆检测任务时,CAM-YOLO 算法整体性能更强。

1 YOLOv5s算法

YOLOv5 是一种利用回归思想处理图片的目标检测网络,YOLOv5 模型共包含四个版本YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,模型参数和性能依次提升。YOLOv5s 是Yolov5 系列中最小的模型结构,模型宽度和深度分别为0.33 和0.5,YOLOv5m、YOLOv5l 以及YOLOv5x 在YOLOv5s 模型基础上不断加深加宽。本文采用YOLOv5s作为基线算法。YOLOv5s包括input、Backbone、Neck和Head输出四个部分。

在数据输入端,YOLOv5s 采用Mosaic 数据增强技术,将四张图片进行随机裁剪拼接至一张图像中作为训练数据,使输入端同时获得四张图片的信息,丰富图像背景信息,并提出了自适应锚框,自动计算图片的最佳缩放系数。

在Backbone中,YOLOv5s主要包括Focus结构、C3结构和SPP结构。Focus结构主要是将输入图像进行切片操作,增加特征通道数并减小特征尺寸,减少浮点运算量的同时提升运算速度,并且减少了模型层数。C3结构由Conv 模块、Bottleneck 模块和Concat 模块组成,增加特征图信息,提高模型的学习能力。SPP结构使用多个最大池化操作,对于不同的输入特征SPP结构都产生固定大小的输出,SPP处理结果进一步提升了不同尺度和长宽比输入图像的尺度不变性。

Neck 的核心为特征金字塔网络[14](feature pyramid network,FPN)和路径聚合网络[15](path aggregation network,PAN),其主要作用为增强网络模型对不同缩放尺度对象的检测。特征金字塔网络将强语义特征从深层传递至浅层,路径聚合网络将强位置特征从浅层传递到深层,这两种结构共同加强了Neck 结构的特征融合能力。

Head 输出端通常包括Bounding box 损失函数和NMS(non-maximum suppression,非极大值抑制)。YOLOv5s的Bounding box回归损失函数有效地解决了前期YOLO系列无法优化边界框不相交的问题。最后,YOLOv5s 使用加权NMS 筛选多目标框,用来处理冗余预测框的问题,提高了网络识别的准确性。YOLOv5s网络整体结构如图1所示。

2 CAM-YOLO算法

CAM-YOLO算法的核心思想是尽可能保证目标检测器实时检测性能的前提下,着重关注如何挖掘有益于复杂背景、远场景以及密集遮挡下车辆检测的关键特征信息,通过提出的级联注意力特征提取模块CAFEM、多尺度特征检测方法以及DIOU_NMS目标检测后处理方法来提升基准模型YOLOv5s在车辆目标检测任务中的表现。CAM-YOLO算法框架结构图如图2所示。

图2 CAM-YOLO网络Fig.2 CAM-YOLO network

2.1 级联注意力特征提取模块

在卷积神经网络中,图像经过多个卷积层,目标特征位置信息与语义信息被提取出来,但是对于复杂背景图像,目标检测器受到无关背景信息的干扰,即使经过了多层卷积,也很难提取到目标重要特征信息。为更好地提取复杂背景下车辆目标的关键信息,弱化无关背景信息的干扰,本节结合通道域注意力机制和空间域注意力机制,提出级联组合的混合域注意力机制,沿着通道维度获取通道间的相互依赖关系,在空间维度上进一步挖掘特征图的上下文信息,实现图片的关键信息提取。级联注意力特征提取模块由C3 模块、通道注意力模块(channel attention module,CAM)以及空间注意力模块(spatial attention module,SAM)级联组成。C3 模块由Conv 模块、Bottleneck 模块和Concat 模块组成,C3 将输入特征分为不同分支,分别进行卷积使得特征通道数减半,其中一个分支进行Bottleneck 操作,经过Concat 将两个分支特征合并,增加特征图信息,提高模型的学习能力。

通道注意力模块重点关注有意义的输入特征图,并且计算各个通道之间的内在关系,对输入特征F使用全局均值池化(global average pooling,GAP)并得到Facvg,以集成每个通道上的空间信息;同时使用全局最大池化(global max pooling,GMP)并得到Fcmax,以获得目标更精细的特征。将Fcavg和Fcmax接入由多层感知器(multilayer perceptron,MLP)构成的共享神经网络,为减少参数,避免模型运算量的增加,将多层感知器中间层大小设为Rc/r×1×1(r为衰减比率)。将经过多层感知器的new_Fcavg和new_Fcmax进行对应元素相加,最终得到通道注意力图,CAM结构如图3所示。整个流程用公式表示为:

图3 通道注意力模块Fig.3 Channel attention module

式中,Mc(·)表示通道注意力模块的内部操作,F为输入图像,σ为sigmoid 函数,MLP(·)表示混合卷积层的内部操作。

空间注意力模块从空间层面上关注特征图的内在关系。为得到特征图的通道信息,首先同时沿着通道轴对其进行全局均值池化和全局最大池化操作,分别关注特征图的全局特征和最突出特征,将这两种方式的池化结构Fsavg∈R1×H×W和Fsmax∈R1×H×W进行拼接,再经过7×7 的标准卷积层以及Sigmoid 激活函数,最终得到空间注意力图,SAM结构如图4所示。整个流程用公式表示为:

图4 空间注意力模块Fig.4 Spatial attention module

式中,Ms(·)表示空间注意力模块的内部操作,F为输入图像,σ为sigmoid函数,f7×7表示卷积核为7×7的卷积操作,AvgPool(·)和MaxPool(·)分别表示平均池化和最大池化操作。

通道注意力模块CAM忽视了空间域内部的信息交互,将一个通道内的信息进行全局加权处理;空间注意力模块SAM将输入特征的每个通道进行相同的空间加权处理,忽视了通道域的信息交互。因此,将通道注意力模块与空间注意力模块通过级联的方式连接,旨在从全局特征信息出发,沿着通道与空间两个维度深入挖掘复杂背景下输入特征内部的关键信息,进而筛选出任务相关的重要信息,弱化不相关信息的干扰。此外,将C3模块与其相结合,首先提取特征图的特征信息,能够更好地加强模型的学习能力。级联注意力特征提取模块CAFEM网络结构如图5所示。

图5 CAFEM模块Fig.5 CAFEM module

2.2 多尺度特征检测方法

原始YOLOv5s 骨干网络使用3 种不同尺寸的特征图来检测不同大小的目标,该网络将原始输入图像通过8倍下采样、16倍下采样、32倍下采样得到3种不同尺寸大小的特征图,将其输入到特征融合网络中。在特征提取过程中,浅层网络提取目标纹理边缘特征,具有更多的细节内容描述;深层网络提取目标丰富的语义信息,但削弱了对远场景小目标位置信息和细节信息的感知,造成大量远场景小目标特征信息的丢失。

针对以上问题,结合多尺度特征检测方法,本文在YOLOv5s 骨干网络的基础上对特征图增加一次4 倍下采样操作,如图6 所示,得到一个含有更多细节信息的大尺度特征图,该特征图感受野较小,位置信息更为丰富,可以提高目标检测器对远场景小目标的特征提取能力。

图6 CAM-YOLO特征提取模型Fig.6 CAM-YOLO feature extraction model

本文共利用4 个不同尺度特征层的浅层和深层特征,融合丰富的特征信息以指导车辆图像远场景下小目标检测任务。同时,特征金字塔网络FPN自上向下传递深层次语义特征,路径聚合网络PAN自下向上传递目标位置信息,如图7所示,将FPN与PAN相结合,增强模型对远场景下小目标车辆特征的敏感度。

图7 CAM-YOLO特征融合网络Fig.7 CAM-YOLO feature fusion network

2.3 DIOU_NMS方法

在目标检测后处理过程中,非极大值抑制[16](nonmaximum-suppression,NMS)方法被广泛使用。在经典的NMS 方法中,NMS 高效地检测聚类,通过不断检索分类置信度最高的检测框,使用交集-重叠来表示2个边界框之间的内在关联,将大于人工给定IOU阈值的边界框视作冗余检测框删去[17]。但是,在密集目标车辆场景中,当两个目标车辆距离较近时,交并比的值比较大,经过NMS方法过滤后,只剩下一个目标检测框,导致密集车辆漏检的情况时有发生。基于此,借鉴DIOU损失函数[18]的思想,用DIOU_NMS 方法作为目标检测的后处理方法,DIOU_NMS方法将DIOU作为NMS的准则,在抑制准则中同时考虑重叠区域与检测框中心点之间的距离,更有利于回归密集目标车辆预测框。假设模型检测出一个候选框,记为Hi,对于类别置信度最高的预测框M,DIOU_NMS方法公式的si可以定义为:

式中,RDIOU(M,Hi)为RDIOU关于M和H i的值;ε为NMS 操作手动设置的阈值;si为不同缺陷类别的分类得分;IOU为交并比;i为每个网格对应锚框的个数。

DIOU_NMS方法考虑了预测框和真实框之间的距离、重叠面积和长宽比,考虑到中心点距离较远的预测框可能会分别位于不同的车辆目标上,将预测框与真实框的交并比和中心点距离结合起来,如图8 所示,不仅优化IOU 损失,而且指引中心点的学习,能够更加精准地回归预测框,提升密集遮挡下的车辆目标的检测精度。

图8 DIOU_NMS方法Fig.8 DIOU_NMS method

3 实验

实验平台配置如表1所示。

表1 实验平台配置表Table1 Experimental platform configuration table

3.1 数据集

使用KITTI 数据集[19]和BDD100K(Berkeley deep drive 100K)数据集[20]作为实验数据集。KITTI 数据集包含市区、高速公路和乡村等交通场景,含有8个类别:

Car、Van、Truck、Tram、Pedestrain、Person(sitting)、Cyclist、Misc。BDD100K数据集涵盖了6种不同天气,6种不同场景以及白天、黄昏、夜晚3 种时间阶段,含有10 个类别:Person、Rider、Car、Bus、Truck、Bike、Motor、Traffic light、Traffic sign、Train。由于BDD100K数据集包含大量夜间、模糊等困难样本,因此检测精度偏低。两种数据集部分样本如图9所示。

图9 部分样本示意图Fig.9 Partial sample schematic

从KITTI数据集的8个类别中选择实验所需的3个类别:Car、Van、Truck,得到7 481 张图片作为基础实验数据集,其中6 058 张图片作为训练集,674 张图片作为验证集,749张图片作为测试集。

从BDD100K 数据集的10 个类别中选择实验所需的3个类别:Car、Bus、Truck,得到7 000张图片作为基础实验数据集,其中5 670 张图片作为训练集,630 张图片作为验证集,700张图片作为测试集。

此外,本文将目标边界框与图像面积的比值开方小于0.03的目标定义为小目标。KITTI数据集共计65 504个标注信息,其中包含1 494个小目标标注信息,约占总标注信息的2.3%。BDD100K 数据集共计65 535 个标注信息,其中包含24 481 个小目标标注信息,约占总标注信息的37.4%。各类别具体标注信息如表2所示。

表2 数据集标注信息Table 2 Dataset labeling information

3.2 网络训练参数

模型训练过程中,为避免模型陷入局部最优解或者跳过最优解,将动量系数设置为0.9。网络训练学习率设置为0.01。为防止网络在训练过程中出现过拟合,将权重衰减正则项设置为0.000 5。经过200 轮模型迭代训练,模型得到最优权重。

3.3 评价指标

为评价本文提出的车辆检测算法的性能,采用平均精度均值(mean AP,mAP)作为模型对多个目标类别综合检测性能的评价指标,采用平均精度(average precision,AP)来评价模型对单个目标类别的检测性能。每秒检测图片的帧数(frames per second,FPS)为模型检测的速度。

式中,AP 值是指P-R 曲线面积;mAP 的值由所有类别AP 求均值得到;m表示检测类别总数;TP 表示正确检测框数量;FP表示误检框数量。

3.4 实验结果

在训练的200 个迭代周期中,KITTI 数据集与BDD100K 数据集损失值、平均精度均值变化曲线如图10、11所示。

图10 损失函数变化曲线Fig.10 Loss function change curve

由图10 中可知,相比于基线算法,CAM-YOLO 算法整体损失值明显降低,充分表明CAM-YOLO 算法能够有效地减少预测信息与真实信息之间的差距,说明其模型预测越来越精确。由图11可知,相较于基线算法,CAM-YOLO 算法的mAP 所有提升,可以看出,CAMYOLO算法在整体性能上优于基线算法。

图11 mAP变化曲线Fig.11 mAP change curve

3.5 实验及分析

3.5.1 对比实验及分析

为证明CAM-YOLO算法对车辆图像目标检测的有效性,分别在KITTI 数据集和BDD100K 数据集上与各种先进的车辆图像目标检测算法进行对比分析,表3、表4 所示分别为各算法对KITTI 测试集和BDD100K 测试集三类目标的AP 值、mAP 值与检测速率。从表3 中可以看出,CAM-YOLO 算法与其他先进算法相比,Car、Van 两类类别AP 值分别取得了98.20%、98.30%的最高检测精度,“Truck”的AP值取得了97.90%的较高检测精度,mAP 值达到了98.13%的最优检测性能,且达到了76.92 FPS 的较优检测速度。表4 中CAM-YOLO 算法在Car、Bus两类类别上取得了最高检测精度,AP值分别为76.20%、58.70%,在“Truck”上取得了47.00%的AP值,mAP值同样达到了60.60%的最优检测性能,检测速度达到了58.82 FPS。由此可见CAM-YOLO 算法在处理车辆检测任务时具有较大优势,检测效果十分可观。

表3 KITTI数据集对比实验Table 3 KITTI dataset comparison experiments

表4 BDD1OOK数据集对比实验Table 4 BDD100K dataset comparison experiments

3.5.2 消融实验及分析

为验证级联注意力特征提取模块(cascading attention feature extraction module,CAFEM)、多尺度特征检测方法、DIOU-NMS方法在车辆图像目标检测任务中的有效性,在KITTI 数据集和BDD100K 数据集上进行了一系列的消融实验,以YOLOv5s 为基线算法,精确率、平均精度均值及检测速率(FPS)为评价指标,最终结果如表5和表6所示。

表5 KITTI数据集消融实验Table 5 Ablation experiments in KITTI dataset

表6 BDD100K数据集消融实验Table 6 Ablation experiments in BDD100K dataset

消融实验结果表明,将提出的级联注意力特征提取模块CAFEM嵌入基线算法的主干网络后,几乎不给模型增加任何负担。KITTI 数据集精确率与mAP 变化较小,检测效果并不明显,检测速率为86.96 FPS。但是对于复杂场景车辆图片较多的BDD100K 数据集精确率提升了2.8%,mAP 提升了0.6%,检测速率不变。证明CAFEM能够在较少增加模型复杂度的情况下有效地抑制复杂背景图片无关信息的干扰,增强关键信息的表征能力,提升复杂背景下目标车辆的检测精度。

在基线算法上融合大尺度特征图后,网络结构层数增加,导致检测速度较基线算法有所降低。KITTI数据集精确率提升了1%,mAP 提升0.4%。BDD100K 数据集整体精确率下降了0.9%,mAP 下降了0.1%。但Car作为BDD100K 数据集中包含小目标最多的类别,mAP提升了5.5%。Bus和Truck类别实例较少,导致mAP略逊色于基线算法,因此整体mAP变化不大。

在基线算法上采用DIOU_NMS方法后,KITTI数据集精确率提升了1.5%,mAP提升了0.1%,检测速率下降至84.75 FPS;BDD100K 数据集精确率降低了0.5%,mAP提升了0.4%,检测速率下降至63.29 FPS。

相对于基线算法,同时采用本文所提出的三种方法的CAM-YOLO算法在KITTI数据集精确率提升了1%,mAP提升了0.53%,检测速率为76.92 FPS;在BDD100K数据集精确率提升了1.6%,mAP 提升了2%,检测速率为58.82 FPS。由此可知,将三种方法相结合,可以最大化地提高基线算法的检测能力。虽然检测速度有所下降,但在达到实时性的前提下获得了更好的检测性能,在复杂背景、远场景以及密集遮挡情况下可以有效的指导车辆目标检测任务。

此外,本文对KITTI 数据集和BDD100K 数据集车辆的漏检率及虚警率进行统计,结果如表7、表8 所示。可以看出,相较于基线算法,本文算法的漏检率及虚警率基本上均有下降,更好地出反映了CAM-YOLO 算法能够抑制复杂背景及密集遮挡的影响,增强模型的抗干扰能力。

表7 漏检率结果Table 7 Missed detection rate results

表8 虚警率结果Table 8 False alarm rate results

3.5.3 可视化分析

为进一步评价基线算法和CAM-YOLO算法在处理车辆图像目标检测任务时的性能差异,在KITTI测试集和BDD100K测试集中随机选取了部分样例图片进行测试,并做可视化对比分析,如图12、图13所示。

图12 KITTI测试集检测效果对比Fig.12 Comparison of detection effects on KITTI test set

图13 BDD100K测试集检测效果对比Fig.13 Comparison of detection effects on BDD100K test set

分别对比两种算法的检测效果,可以看出,CAMYOLO算法有效提升了基线算法对复杂背景、远场景以及密集遮挡下目标车辆的检测效果。对比图12(a)(b)、图13(a)(b)可以发现,在复杂背景目标车辆检测时,基线算法检测精度较低,未能达到精确识别的要求。CAM-YOLO 算法则通过弱化噪声干扰、强化网络感兴趣的特征,从大量特征信息中分离出了有利于车辆图像目标检测的信息,在面对复杂的背景信息时表现出了较强的抗干扰能力,有效改善了检测精度较低的问题。通过图12(c)(d)、图13(c)(d)对比发现,在远场景小目标车辆大量存在时,基线算法存在车辆漏检情况,而CAM-YOLO 算法则能够精准进行识别。比较图12(e)(f)、图13(e)(f)可以发现,在密集遮挡车辆较多时,基线算法将超过NMS 临界值的预测框全部过滤,造成漏检情况出现,CAM-YOLO算法则精准回归预测框,避免密集遮挡车辆漏检问题。总体而言,在处理车辆图像目标检测任务时,CAM-YOLO 算法相比于基线算法有更明显的优势,对于背景复杂、远场景下小目标车辆图像及排列密集的车辆图像目标具备更强的辨识能力,有效地减少了出现虚警、漏检等现象的发生。

4 结束语

本文提出结合级联注意力机制的车辆检测算法CAM-YOLO,通过级联注意力特征提取模块CAFEM,从通道和空间维度提取车辆图像目标的关键特征信息,弱化无关背景噪声信息,提高复杂背景下车辆图像的目标检测性能;强化特征金字塔中小目标车辆的细粒度信息,指导远场景下小目标车辆图像检测任务,并有效改善了目标检测器对密集遮挡目标的处理能力。在KITTI数据集和BDD100K 数据集上的实验结果表明,CAMYOLO 算法分别可以达到98.13%、60.60%的检测精度,能够很好地应对复杂背景、远场景以及密集遮挡车辆目标检测任务。

本文提出的方法在车辆检测中满足基本的要求,但有进一步提升的空间。本文的数据集中Bus、Van、Truck等类别占比较少,后续会不断扩充数据集,提高模型的泛化能力。

猜你喜欢
注意力车辆特征
让注意力“飞”回来
如何表达“特征”
不忠诚的四个特征
车辆
抓住特征巧观察
“扬眼”APP:让注意力“变现”
冬天路滑 远离车辆
A Beautiful Way Of Looking At Things
提高车辆响应的转向辅助控制系统
线性代数的应用特征