基于M-YOLO的自动驾驶下目标识别算法

2022-08-16 03:11牛洪超胡晓兵罗耀俊
计算机工程与设计 2022年8期
关键词:置信度卷积特征

牛洪超,胡晓兵,罗耀俊

(1.四川大学 机械工程学院,四川 成都 610065; 2.四川大学 宜宾产业技术研究院,四川 宜宾 644000)

0 引 言

随着计算机视觉领域的快速发展,促进了智能医疗、智能安检、智能机器人和自动驾驶等领域的快速飞跃,尤其是在自动驾驶领域,如何研究出精准高效的目标检算法是一项具有重大意义与充满挑战的研究工作。自动驾驶检测的目标主要分为静态与动态目标,静态目标如交通标志、障碍物等;动态目标如车辆、行人等,目前所存在的难点主要有:①待检测的目标存在遮挡且密集的情况;②远处的目标在图像中存在模糊且所占据的像素点少的情况;③外界天气环境的干扰;④检测速度与精度的要求。如何解决上述问题,是自动驾驶领域目标检测算法设计的基准。

由于传统的特征提取都是人工设计,存在较大的局限性,并且在检测的时候易受外部环境的干扰,其整体检测精度较差,无法应用于自动驾驶这种复杂的场景中。近年来,随着深度学习技术的快速发展,深度卷积神经网络具有能够自主完成对目标特征提取的能力。基于目前自动驾驶领域所存在问题,同时考虑到自动驾驶对算法性能与效率的要求,本文选择对一阶段算法YOLOv5进行探索改进,将其应用于自动驾驶领域,同时为了比较算法在自动驾驶上性能的提升,使用公开的自动驾驶数据集BDD100K进行分析验证。

1 YOLOv5模型结构

1.1 网络结构分析

现阶段的目标检测算法可以分为两种,一种是分为两步来完成的,如Cascade R-CNN[1]、Faster R-CNN[2]等,这类算法首先利用网络提取可能存在目标的候选区域,再利用后续的卷积神经网络完成分类与边界框预测。这类算法的精度一般比较高,但检测时间较长。另一种是单阶段算法,如SSD[3]、YOLO[4]等。这类算法利用目标回归的思想,直接得出预测的边界框与类别的信息。这类算法的运行速度往往较快,满足实时性需求,因SSD算法对图片分辨率敏感,且检测效果不如YOLO系列,目前YOLO系列已发展至YOLOv5系列,其性能有了巨大的提升。因此本文选择通过改进YOLOv5[5]模型来进行实验。

YOLO系列算法首先将输入图片进行划分单元格,在每个单元格里进行候选框的判断,若目标的中心落在这个单元格中,则这个单元格就负责预测这个目标,正是这种基于单元格的检测方式,使得YOLO系列算法的检测速度较为快速。目前YOLO系列算法已更新至YOLOv5,其中YOLOv5s为其系列中最小的模型,因此本文从YOLOv5s模型入手,探究更好的YOLO模型,其结构如图1所示。

图1 YOLOv5网络结构

相比于YOLOv3[6],YOLOv5更加复杂。从上图可知,YOLOv5s网络可以分为3个模块,第一个是主干网络,其组成部分为Focus模块、BottlenCSP1模块和SPP模块组成。BottlenCSP1模块是在残差网络基础上加入CSPNet[7]结构,将梯度的变化集成到特征图上,只需要将输入的特征分为两部分,一部分进行卷积,另一部分与上一次的结果进行拼接融合,BottlenCSP1结构不仅可以减少整体的计算量,同时也有效增强卷积神经网络的学习能力。SPP模块是通过空间金字塔池化操作来增加网络整体的感受野。第二个为颈部(Neck)网络,所采用的模块是PANet[8]结构。第三个为头部(Head)网络,用于输出不同大小物体的检测结果。

1.2 YOLOv5的不足之处

虽然YOLOv5具有良好的检测能力,但是它是以COCO数据集为基础,如果应用于自动驾驶领域,存在着对小目标的检测能力不足,尤其是在目标存在模糊、密集以及遮挡等情况下。同时,YOLOv5中的特征增强模块PANet侧重于深度特征图的融合,削弱了对小目标的检测能力,且上采样操作间接增加干扰噪声,而在自动驾驶领域中,及时发现小目标或者远处的目标,对于其安全性有着重大的作用。因此,本文通过对模型进行改进,进一步提高模型在自动驾驶领域的检测能力。

2 模型改进

根据上述YOLOv5的不足之处,分别从主干网络、特征增强网络以及后处理上对YOLOv5进行改进,改进后的M-YOLO网络模型如图2所示。

2.1 主干网络(Backbone)的改进

目前基于深度学习的目标检测模型无不依赖于CNN分类网络作为特征提取器,如SSD采用卷积神经网络VGGNet,YOLOv3采用残差ResNet网络等。残差网络ResNet是目标检测领域最常用的主干网络,但是残差网络提取的特征不具有细粒度,提取特征的能力不够强。DenseNet[9]是通过密集连接的方式将具有不同感受野的中间特征进行融合。ResNet和DenseNet的主要区别是在于它们聚合特征的方式不同,Resnet通过求和的方式来聚合,而DenseNet通过密集连接的方式,原始的特征信息在相加的时候会被覆盖掉,而利用连接的方式可以将原始的信息持续传下去。一些研究表明,具有多个感受野的抽象特征可以捕获不同尺度的视觉信息,正是因为这样,DenseNet保留和积累了更多不同感受野的特征,比ResNet具有更好、更多样化的特征表达能力。因此在提取特征能力上比ResNet更强,而且参数与计算量更少,但是由于DenseNet中密集连接所导致高内存访问成本与能量消耗,使得其预测速度较慢。针对上述问题,最近提出的网络模型VOVNet[10]在DenseNet基础上,删除密集连接,只在最后一层聚合前面所有层的信息,这不仅继承了DenseNet的优点,同时有效解决了内存访问问题和充分利用了GPU的并行计算能力,其性能表现也超越DenseNet与ResNet。其中VOVNet网络中的OSA(one-shot aggregation)模块如图3(a)所示。

本文使用改进的OSA模块替代YOLOv5网络中的BottlenCSP1结构,其结构如图3(b)所示。改进的OSA模块是在OSA模块基础上添加残差连接与改进的注意力机制,增加残差连接,可以训练出性能更加强大的网络。另外,在最后的特征层上加上esenet模块来进一步增强特征,原始的注意力机制包含两个全连接层,其中中间的全连接层主要是为了降维,这在一定程度上会造成信息的损失,因此在esenet模块中去掉这个中间层,其结构如图3(c)所示。

图2 M-YOLO结构

图3 改进的VOVNet网络

2.2 特征增强模块(Neck)的改进

针对于自动驾驶场景中行人、汽车、交通灯等目标数量多和尺度差异大的特点,首先将YOLOv5s中原有的3个尺度检测扩展至4个尺度检测结构,再进行特征增强模块的改进。本文所设定的4个检测尺度分别为160×160,80×80,40×40和20×20,其中160×160的尺度用来检测小目标,如远处的目标或者交通灯等;80×80与40×40的尺度用来检测中等目标,20×20的尺度用来检测大目标,通过设计4个尺度来满足不同大小的物体检测,显著提升模型的整体性能表现。

颈部网络(Neck)主要负责特征增强。目前,特征金字塔网络(FPN)在特征增强模块中是应用最广泛的深度神经网络之一,如FSSD、YOLOv3和DSSD等均使用FPN结构,其结构如图4(a)所示。FPN结构可以在深度卷积神经网络的不同卷积层中提取不同尺度的特征图,从而实现多尺度目标的检测,且这种自顶向下的结构,将深层语义信息传送到浅层网络层中,有效提高了对小目标的检测能力;但是FPN结构对大中型目标的检测不够重视,而且为了调整不同特征图的尺度,需要对小尺度特征图进行上采样,对大尺度特征图进行下采样。前者增加了噪声,而后者导致详细信息的丢失,从而限制了模型性能的进一步提升。针对此问题,YOLOv5采用的方法是PANet结构,其结构如图4(b)所示,此结构可以有效提升大中型目标的检测能力。但是由于该方法侧重于深度特征图的增强,削弱了对小目标的检测强度,且小尺度上采样与大尺度卷积所带来的信息损失并没有得到缓解。为解决上述的缺点,本文提出一种用于目标检测的新颖特征增强模型,其结构如图5所示。

图4 常用的特征增强模块

图5 改进后的PANet结构

从图5可以看出:改进后的PANet网络,是通过两个串联的特征金字塔网络和两条跨层连接结构组成,以此来实现更丰富的多尺度上下文特征融合。我们把左边的第一个特征金字塔网络称为F金字塔,第二个特征金字塔网络称为S金字塔。整个网络结构包括4个上下卷积阶段,本文用 {C2,C3,C4,C5} 表示主干网络第2、3、4、5阶段生成的特征图,分别对应于对输入图像下采样4、8、16和32倍; {B2,B3,B4,B5} 分别表示F金字塔对应的输出特征图。S金字塔也包括两部分:自下而上的结构和自上而下的结构。自下而上的结构产生 {P2,P3,P4,P5}, 分别对应于F金字塔中的 {B2,B3,B4,B5}; 自上而下的结构产生 {Q2,Q3,Q4,Q5}, 对应于4个检测头,用于最终的目标检测。除了双金字塔结构外,改进后的PANet网络还包含两条独立的自底向上的跨层结构,称为A1和A2模块。

图6 金字塔网络结构

自顶而下的结构:如图6(a)所示,每次融合操作都包含个输入映射,一个来自于经过上采样操作的低分辨率特征,另一个来自于对应的特征映射,再利用BottlenCSP2结构对融合后的特征进行卷积处理,生成新的特征层。

自下而上的结构:如图6(b)所示,每次融合操作都包含个输入映射,一个来自于经过卷积操作的高分辨率特征,另一个来自于对应的特征映射,再利用BottlenCSP2结构对融合后的特征进行卷积处理,生成新的特征层。

如上所述:原来的FPN结构可以很好处理小目标,而PANet结构可以很好地用于大目标和中等目标的检测。为了在不同尺度的目标检测上取得良好的整体性能,我们提出改进的PANet结构,由双金字塔网络与A1A2模块组成。第一个F特征金字塔与FPN结构一致,通过顶层的上采样操作将深层的语义信息与浅层的信息逐步融合,得到 {B2,B3,B4,B5}。 S金字塔网络相比于PANet网络多了一条自顶而下的结构,首先第一条自下而上的结构,通过底层的卷积降采样操作将底层丰富的位置信息分步传送至深层,增强深层的特征表达能力,得到 {P2,P3,P4,P5}; 为了保证对小目标的检测能力,通过引入一条自顶而下的结构,将丰富的深层信息进一步传送至底层,增强底层的信息表达能力,得到用于预测的特征 {Q2,Q3,Q4,Q5}。 为缓解上采样与降采样所造成的信息损失,引入两条跨层结构,将主干网络中的输出 {C3,C4} 作为输入,送入到最后一层 {Q3,Q4} 中,用来指导特征的生成,融合更多尺度的特征。改进后的PANet网络在保留PANet网络的优点之上,进一步增强对小目标的检测能力,丰富每一层的特征以及减少信息的损失,使得特征增强模块具有更强的增强作用,便于后面检测头的预测处理。

2.3 非极大值抑制算法的改进

图7 重叠目标

非极大值抑制(non-maximum suppression,NMS)算法是通过直接判断交并比(intersection over union,IOU)是否大于设定阈值,来对重叠的预测候选框进行筛选,用于目标检测的后处理过程。但是当面对密集、遮挡等目标时,这种算法删除了被遮挡目标的预测框,不利于自动驾驶目标的检测,如图7所示,自动驾驶在实际的场景往往存在汽车相互遮挡的情况,图中右侧虚线框与实线框的IOU值若是大于设定的阈值,使用传统的NMS算法来处理多余的候选框,将保留得分更高的置信度,并将设置其余的候选框的置信度为0,导致重叠目标只能检测出一个。

本文尝试使用soft-nms[11]算法来解决传统NMS算法不能准确检测遮挡密集型目标的问题。如果是传统的NMS算法,先计算交叉比IOU(M,bi), 若是IOU(M,bi) 值大于设定的阈值,则将这个候选框删除;而对于soft-nms算法,则是将IOU(M,bi) 值送入下面的函数Si中,再将函数的输出值与其候选框的置信度相乘,作为最终这个候选框的置信度得分,最后再经过最低阈值进行删除置信度得分较低的候选框。此算法所采用的函数如下

(1)

式中:Si为高斯平滑后的置信度得分,i为类别标签,M为置信度得分较大的预测框,bi为预测对象的预测框,IOU(M,bi) 为M与bi的交集比,IOU(M,bi) 越大,函数Si的得分就越低。

优化后的NMS算法处理流程如图8所示。首先,对回归产生的N个预测框,根据置信度分值大小进行排序,选择置信度分值最大的预测框,计算与其它预测框的IOU值;然后将IOU值作为输入送到式(1),重新计算置信度得分,将计算后的置信度放入存储单元中,对剩余的预测框继续执行上述步骤,直至处理完所有的预测框;最后,删除储存单元中置信度得分小于阈值的预测框,显示置信度得分大于阈值的预测框,这就是最终检测结果。作为一种寻找局部最优解的方法,NMS算法通过简单的阈值比较对预测框进行过滤,本文通过利用IOU值对置信度进行高斯平滑衰减,在一定程度上避免了遮挡目标预测框的错误删除。

图8 NMS算法的优化

3 实验分析

3.1 数据处理

本文所使用的数据集是伯克利大学发布的BDD100K[12]自动驾驶数据集,包含10万段高清视频、10万张关键图片(每个视频的第10 s关键帧)以及对应的标注信息。本文的道路目标共分为13个类别,分别为:person,rider,car,bus,truck,bike,motor,Traffic light green,Traffic light red,Traffic light yellow,Traffic light none,Traffic sign,train,总共约有184万个标定框。针对目标边界框标注,10万张图像数据分为7万张训练集、2万张测试集和1万张验证集。

为提高模型的泛化性和鲁棒性,针对训练数据集使用了如下的数据增强技术:

(1)Mosaic数据增强[13]

将训练集中2张或者4张图片进行随机裁剪,然后再拼接到一张图片上作为训练数据,增加了训练过程中batch的数量和样本多样性,减少训练过程中batch_size的大小,降低对硬件的要求,同时增加了很多的困难样本用于提高模型的检测能力。

(2)数据归一化处理

因数据的平均亮度与像素值的分布范围有较大的差异,为减少这些差异,使数据具有相似的分布,加快训练模型的收敛速度,提高其模型检测精度,需要对数据进行归一化处理。本文选择使用Z-Score标准化方法,即通过计算数据的均值和方差来对数据进行归一化处理,经过处理的图像数据符合标准正态分布,即均值为0,方差为1,其计算公式为

(2)

其中,u为所有样本数据的均值,σ为所有样本标签的方差。在训练过程中,通过数据加载器对训练集进行加载,采用上述增强技术进行处理。

3.2 实验环境与评价指标

本文实验的硬件环境为CPU Core(TM) 1.80 GHz,GPU NVIDIA GeForce RTX 2080Ti,内存11 G,软件环境为python 3.7,Torch 1.6.0。整个训练过程使用随机梯度下降法(SGD)来学习和更新网络参数。初始学习率为0.01,学习率下降参数为0.0001,动量(momentum)为0.937,权重衰减系数为0.0005,训练的批处理大小batch为8,训练集中全部样本的训练次数(epoch)为200次,图像输入尺寸为640×640,通过调整饱和度、曝光量以及色调来增加训练样本。

本文用召回率(recall)、查准率(precision)、平均准确率均值(mAP)以及各个类别的平均准确率(AP)来对实验结果进行评估,其中召回率与查准率的计算公式如下

(3)

(4)

其中,TP(true positives)为正样本数据集中被正确识别出的数量,FN(false negatives)为正样本数据集中被错误识别的数量。AP与mAP计算公式如下

(5)

(6)

3.3 实验分析

3.3.1 M-YOLO与YOLOv5s的对比实验

本文的实验结果如下表所示,其中表1列出YOLOv5s与M-YOLO两个模型的查准率、召回率、mAP以及推理时间的对比值。表2列出了两种模型对13类目标的平均准确率的对比值。

表1 两种模型的性能对比

从表1可以看出,本文的改进M-YOLO模型的平均准确率均值mAP达到了56.84%,其检测时间为0.012 s;比起原YOLOv5s,M-YOLO的查准率提升了2.64%,召回率提升了10.65%,平均准确率均值mAP提升了8.51%,虽然检测时间比YOLOv5s有所增加,但依然满足实时性能的要求。从表2可以看出本文方法对每类目标的AP值都得到了提升,尤其是car类提升6%,Traffic light green提升10%,M-YOLO与YOLOv5s模型的检测对比如图9所示。

从图9可以看出:当设置置信度阈值为0.6时,原YOLOv5s网络均有大量的漏检现象出现,且置信度低于

表2 目标的平均准确率比较

图9 YOLOv5s与M-YOLOv5检测对比

M-YOLO,尤其是远处的小目标,比如在第一组图中,交通灯与远处的车辆均未正确检测出来;第二组图中远处的车辆未检测出来;第三组图与第四组图中存在较多的小目标以及遮挡目标均未检测出来。可知:改进后的YOLOv5s(M-YOLO)在实际检测上均有大幅度的提升,不仅正确检测出目标,且置信度也高于原YOLOv5s。

3.3.2 M-YOLO与其它模型的对比

本文对比其它模型在BDD100K数据集的实验,其结果见表3。

表3 M-YOLO与其它模型的对比实验

从表3可以看出:相比于Faster R-CNN与SSD,M-YOLO分别提升了25%与34.7%;相比于FCOS、ATSS与Cascade R-CNN,M-YOLO分别提升2.9%,0.6%与1%;可见:M-YOLO相比于这些模型都有着较为显著的优势,且满足自动驾驶实时检测的需求。

4 结束语

本文提出的M-YOLO网络通过在原YOLOv5s的主干网络中融入具有不同感受野的VOVNet模块,以此来增强模型的细粒度表现,提取出更丰富的信息;在特征增强模块使用改进的PANet模块,使得融合后的特征更具有代表性,同时减少上采样和降采样所造成的信息损失;最后通过soft-nms算法进行后处理,有效缓解密集遮挡型目标的检测问题。经过上述改进后,M-YOLO的检测性能整体得到提升。但是,不管M-YOLO,还是其它模型,对BDD100K的平均准确率都比较低,因此后续需要对其开展进一步的研究;同时,本次实验只对YOLOv5s进行改进,后续将研究如何将这些改进更好应用到YOLOv5的其它系列,进一步提升网络的检测能力。

猜你喜欢
置信度卷积特征
根据方程特征选解法
置信度辅助特征增强的视差估计网络
一种基于定位置信度预测的二阶段目标检测方法
离散型随机变量的分布列与数字特征
硼铝复合材料硼含量置信度临界安全分析研究
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
不忠诚的四个特征
正负关联规则两级置信度阈值设置方法