APP下载

智能车交通标志的改进YOLOv5 识别算法*

2023-11-08易明发代广珍周先存王冠凌

传感技术学报 2023年9期
关键词:特征提取注意力卷积

易明发,代广珍,周先存,王冠凌*

(1.安徽工程大学电气工程学院,安徽 芜湖 241000;2.皖西学院电子与信息工程学院,安徽 六安 237000)

人工智能技术发展带动了一系列的科技变革,在自动驾驶领域掀起了研发热潮。 2021 年工信部提出并于2022 年3 月1 日起实施的国内《汽车驾驶自动化分级》[1],确定并公布了国内自动驾驶分级及其规范。 目前,国内外已经发布了多款L4 级别的自动驾驶车辆。 在快速发展的自动驾驶领域,实时识别交通信号标志是智能车视觉感知中至关重要的一环,而实际环境中交通标志往往是大尺寸图像中的小目标,给实时动态目标检测带来了很大的挑战,对检测算法的优化改进往往难以同时兼顾精度与实时性。

在目标检测算法中,YOLO 系列算法以其创新的思想,经过了好几代的继承发展,已经成为目标检测领域的标杆算法之一。 在2015 年提出了YOLOv1 的算法[2], 在2016 年该作者提出了YOLOv2 算法[3],在2018 年又将各种创新的算法进行结合提出了YOLOv3 算法。 在实际场景的很多项目中,YOLOv3 都有广泛的应用。 现在很多的目标检测算法,包括其后的YOLOv4、YOLOv5、YOLOX 都是在此基础上发展而来的。 早期的交通标志检测主要通过形态学的方式提取相应特征完成图像的检测。 梁敏健等[4]提出了基于HOG-Gabor 特征融合和Softmax 分类器的交通标志识别方法,通过Gamma 矫正方式提取HOG 特征,通过对比度受限的自适应直方图均衡化方法提取Gabor 特征,将二者融合后放入Softmax 分类器,识别率高达97.68%,耗时小于2 s,但是鲁棒性较低,容易受到光线,天气等外部环境的干扰。 杨婷婷等[5]提出了基于多尺度注意模块的微小交通标志实时检测网络,在TT100K 数据集上平均精度均值(mAP@0.5)达到了96.5%,在YOLOv3 的基础上设计了一个视觉多尺度注意力模块(MSAM),将多尺度特征图与通道权重和空间掩码融合在一起,增加网络的表示能力,并在网络的输出层添加一个预测头,有效地利用了来自较浅层的微小物体的细粒度特征。 最后,在网络的颈部添加一个感受场块以扩大感受场。 王兰梅等[6]提出了一种基于YOLOv4-Tiny 的改进型轻量级交通标志识别算法,改进K-Means 聚类算法,生成大小、位置合适的标注框,并对NMS 算法进行改进,提高预测结果,与原有YOLOv4-Tiny 算法相比,在TT100K 数据集上mAP 和召回率分别提高了5.73%和7.29%。 陈国强等[7]提出了一种基于YOLOv5s的深度学习网络YOLOv5s-Ghost-SE-DW,用Ghost模块替换卷积层,以减小参数和模型大小,为了提高准确性,嵌入了注意力机制SELayer 以融合更多的空间特征,使用DW 卷积用于提取特征并进一步减少参数数量,在CPU 上实现了15.58 FPS 的实时性能。 对于传统检测算法,需要根据检测目标的的形态提取对应特征,而特征的质量直接影响分类的结果,很难有较为广泛的应用。 基于深度学习的目标检测算法,较好地体现了YOLO 系列算法的优势。而YOLOv5 是YOLO 系列的集大成之作,无论是精度和速度都是相对最优的。 上述文献忽略了在嵌入式智能边缘设备端的推理测试、且由于浮点运算量比较大,在硬件受限条件下识别精度和速度上都有提升的空间。 鉴于此,选择YOLOv5 作为改进算法的基本框架是可行的。

本文以解决在智能车上交通标志识别算法的检测速度与精度的均衡问题为研究目的,第一章概述原YOLOv5 网络结构,针对网络输入、主干特征提取网络、颈部网络、输出层四个部分进行分析,第二章将分点概述改进网络,其中在第一小节运用GhostConv 替代普通卷积,在减少卷积结构参数与卷积运算量的同时提高网络的拟合能力;第二小节在主干特征提取网络之后添加计算量更小的置换注意力机制,取得了优于通道注意力模块(Squeeze-and-Excitation Networks,SENet)、卷积块注意力模块、坐标注意力模块(Coordinate Attention,CA)等注意力检测机制的效果;第三小节为了弥补下采样过程中特征信息丢失的不足,采用加权双向特征金字塔,加强与主干特征提取网络的特征融合,仅以少量参数提升了精度。 第三章实验与分析对改进算法进行对比消融实验,验证各改进部分的有效性,并将其部署至智能车上的嵌入式边缘设备。 第四章总结改进算法,其可以在高效率与高精度之间达到平衡。

1 YOLOv5 概述

YOLOv5 算法是在YOLOv3 和v4 的基础上,融合了近年来目标检测领域的新思路。 在网络结构上延续了YOLOv3 的典型结构,主要分成四个部分:①网络输入(Input),输入为经过数据增强后固定尺寸的RGB 彩色图片;②主干特征提取网络(BackBone),用于提取图像的网络结构特征,经过主干特征提取网络,提取特征图像尺寸也在不断减小;③颈部网络(Neck),进一步融合主干特征提取网络提取的特征;④输出层(Head),经由损失函数不断迭代直至输出检测结果。

针对数据集中的小目标分布不均匀,YOLOv5的网络输入层主要采用4 张图片随机缩放、随机裁剪、随机排布的方式进行拼接,实现了Mosaic 数据增强,如图1 所示。 其优势在于丰富了数据集,增大了模型的鲁棒性,同时减少了GPU 的运算过程。

图1 Mosaic 数据增强

YOLOv5 的主干特征提取网络是在YOLOv3 主干特征提取网络Darknet53 的基础上,借鉴了CSPNet 模型[8],构建CSP-Darknet53,将基础层的特征映射分为两部分,然后通过跨阶段层次结构组合,在保证准确性的同时减少了计算量。

YOLOv5 的颈部网络采用FPN 加PAN 结构进行多尺度融合,图2 中FPN 是从上到下进行上采样,卷积层数较多,可以获取更多的特征信息,得到的特征图包含更强的目标特征;PAN 从下到上进行下采样,卷积层数较少可以获取更多的位置信息,得到的特征图包含更强的位置信息。 两种结构获得的特征经CSP2 进行增强融合,使不同尺寸的特征图都包含较好的特征信息与位置信息,保证了对不同尺寸图片的准确预测。

图2 FPN+PAN 结构图

YOLOv5 输出层的损失函数,主要包含:矩形框损失(Bloss)、置信度损失(Oloss)、分类损失(Closs),总损失Lloss为这三类损失的加权和,定义为式(1)。 其中,x、y、z分别对应三类损失的权重因子。

矩形框损失函数设计方面沿用了YOLOv4 网络的CIOU_Loss,其在IOU_Loss 的基础上针对预测框与目标框不相交的情况与当预测框大小相同,IOU 相等但位于图片的不同位置等缺点,加入重叠面积和中心点距离,并增加了一个影响因子,将预测框与目标框的长宽比考虑进去。 CIOU_Loss 定义为式(2):

式中:U为预测框和目标框的交并比,D2为预测框和目标框中心点距离,DC为最小外接矩形的对角线距离。 参数ν是衡量长宽比一致性的参数,ν定义为式(3),其中wgt、hgt、wp、hp分别表示标注框的宽高与预测框的宽高。

2 YOLOv5s_ghost_bi_sa 算法

针对主干特征提取网络和颈部提取网络,采用了GhostConv 替代普通卷积来减少参数量,并增加了置换注意力机制,增强网络的特征提取能力的同时保持精度,且模型参数不会大幅度增加;使用加权双向特征金字塔网络(Bidirectional Feature Pyramid Network)对颈部网络进行改进,以增进多层次特征的融合。 YOLOv5s_ghost_bi_sa 算法整体结构如图3所示,其中Conv 模块由卷积(Conv)、批量归一化(BN)、SiLU 激活函数组成。 Bottleneck_1 表示残差组件,n为使用该模块的个数,n的取值决定了模块的深度,从而影响着模块的参数大小,也在不断增加网络特征提取和特征融合的能力。 选择较为合适的n值可以用较小的参数量获得较好的性能。 C3 模块由Bottleneck 模块、卷积等操作组成,为了均衡速度和精度,参考YOLOv5s 模型设计了在模型不同阶段卷积核的数量以及C3 模块的深度。

图3 YOLOv5s_ghost_bi_sa 结构

2.1 GhostConv

GhostNet 是华为诺亚方舟实验室提出的,在同样精度下速度和计算量均优于当前主流方法[9]。传统深度学习网络中的卷积提取特征会占用大量的内存和FLOPs,此外,不是所有的特征提取都需要卷积操作,GhostNet 的核心在于GhostConv 构建,使得卷积量减少,同样可以获得普通卷积的特征图,如图4(a)所示。 GhostConv 首先利用少量的卷积核进行特征提取,然后通过轻量级的线性变换运算得到特征,最后通过拼接生成最终的特征图,如图4(b)所示。 该方法减少了非关键特征的学习成本,在不影响模型性能的前提下,降低了参数量。

图4 GhostConv 与普通卷积对比

对于普通卷积运算Y=X*f+b,输入图片X∈RW×H×C,其中W、H是X的宽和高,C为通道数;输出Y∈RW'×H'×n,n为特征图的数量;f∈Rk×k×C×n为卷积核大小为k×k的C×n个卷积运算;*为卷积操作;b为偏置项。

GhostConv 优化了普通卷积中的f与b(为简单起见,省略了该项),通过使用少量普通卷积获取原始特征图,操作如式(4) 所示,得到结果Y'∈RW'×H'×m,即为对输入X经过f'∈Rk×k×C×m后生成的m个原始特征图。 在此基础上,再通过分组卷积将m个特征图逐个进行线性操作,每张特征图生成s-1个对应特征图,保留原始特征图,共有n=m×(s-1)+m个特征图。 式(5)中Ki,j表示将上一步中普通卷积输出的第i个通道的特征图经过线性变换Y'i得到第j个特征图,m是初始特征图通道数,s是扩充的倍数。

YOLOv5 网络中为增大网络的深度,实现进一步的特征提取,使用了很多Conv 模块,从而增大了网络的参数量和计算量。 本文使用Ghostconv 模块替换主干特征提取网络和颈部网络的Conv 模块,既在精度不下降的情况下较大程度消除了传统卷积中的冗余信息,又显著地降低了算法整体的参数量。

2.2 置换注意力机制

注意力机制已成为深度学习领域提升性能不可或缺的重要模块,提升语义信息的表达,关注重要语义信息,抑制不重要的语义信息。 常见的注意力模块包括:①通道注意力模块:通过利用不同通道上的特征权重,捕捉通道间的依赖关系,提取有效的特征信息,但并未关注空间信息[10];②卷积块注意力模块:可以在空间和通道维度上自适应的调节特征权重[11];③坐标注意力模块:分别从水平和垂直两个方向聚集特征,在捕获水平方向上长期依赖关系的同时,保留垂直方向上的位置信息,使网络对目标整体的结构信息有一个更好的把握[12]。

通过引入注意力机制以权重衡量特征信息的重要程度,并不断自适应调整权重,让模型关注重要特征。 从而,避免原Yolov5s 网络对大分辨率图像中的小目标进行采样时易丢失特征信息的现象,减小了小目标检测难度。 但是,上述注意力机制虽然在特定场景下可以获得较好的效果,但都增大了参数量,且训练过程中难以收敛。 为此,本文引入轻量的置换注意力机制[13],该注意力机制引入了通道随机混合操作(Channel Shuffle),可以分块并行使用空间和通道两类注意力机制,二者高效结合使得分类模型聚焦于目标信息更相关的区域,进而有效地提升分类精度。 置换注意力机制在通道维度上使用分组卷积将输入特征分成G组,每组通道维数为CG-1,如图5 所示。 而后将每组特征平均分为Xk1和Xk2,k为分组卷积的组别数,则通道数变为C(2G)-1。 接下来,分别对Xk1和Xk2赋予通道注意力权重和空间注意力权重。

图5 置换注意力结构图

对于通道注意力分支,采用全局平均池化产生通道相关的统计信息,再利用Fuse 线性函数增强特征表示,最后经过Sigmod 激活函数后作为权重与原始特征相乘。 经过上面的步骤,最后得到含有通道注意力权重的强化特征类别信息。

式中:Fc1为线性函数,σ为Sigmod 激活函数,FA为全局平均池化,Xk1为特征均分后的输入特征,为通道注意力的输出特征值。

对于空间注意力分支,采用组归一化来产生空间相关的统计信息,利用Fuse 线性函数增强特征表示,再经过Sigmod 激活函数后作为权重与原始特征相乘。 经过上面的步骤,最后得到含有通道注意力权重的强化特征类别信息。

式中:Fc2为线性函数,σ为Sigmod 激活函数,FGN为组归一化函数,Xk2为特征均分后的输入特征,为空间注意力的输出特征值。

将通道、空间注意力机制输出的特征合并后,得到输出为CG-1×H×W,合并分组后的各区块,得到最终输出C×H×W。 最后,再使用通道随机混合操作来进行不同子特征间的通信。

置换注意力机制保证了高效的通道信息交互,使得模型更加关注特征所在的区域,保留更多目标细节信息,有效提高网络的特征表达能力。

2.3 加权双向特征金字塔

随着深度学习中特征提取网络加深,语义信息也从低逐步提高。 然而,每一层网络都会在反向传播中丢失部分语义信息。 针对不同的网络层级获得的语义信息进行跨尺度的语义信息融合,可以加强算法的几何细节信息表征与定位目标能力,使不同尺寸的特征图都包含较好的特征信息与位置信息,保证了对不同尺寸图片的准确预测。

借鉴双向特征金字塔网络的双向融合思想[14],构建了一个自上而下、自下而上的双向通道,对于主干特征提取网络获得的不同比例的信息,组合不同尺度的特征信息时,通过上、下采样统一尺度,并在同一尺度的特征间添加横向连接,避免网络层数过多导致的特征信息丢失,如图6 所示。

图6 多尺度特征融合结构图

改进算法将主干特征提取网络第6 层的C3 层和第8 层的C3 层提取的2 种不同尺度的特征,经通道数压缩统一送入双向特征金字塔网络实现语义信息融合,得到不同层次、语义信息丰富的特征图。 双向特征金字塔网络进一步丰富了小目标的语义特征,减少了通道数,在网络速度不受影响的情况下提升了网络性能[14]。

3 实验与分析

3.1 实验数据集

在实验室环境中,构建了等比例缩小的智能车交通标志数据集,以验证小目标情况下本文方法的有效性。 采用16 TOPS 算力的华为Hilens kit 嵌入式智能边缘设备作为智能车的上位机主控模块(如图7 所示),采集标志图片,Hilens kit 智能边缘设备通过LwIP 通信协议与STM32 单片机作为运动驱动模块进行通讯并协同拍摄,采集的图像分辨率为1 280×720 pixls(像素点),以每秒抽取一帧的方式形成原始图片集。 为模拟真实场景,分别采集不同自然光条件下(如白天、傍晚以及夜晚)的图片[15],获取原始图片15 000 余张,经过筛选除去拍摄模糊、丢失目标、严重重复的,得到8 566 张有效图片。

图7 智能车与Hilens kit

将有效图片集上传至华为云的对象存储服务OBS 中,根据收集图片种类确定数据集标签。 而后通过华为的AI 开发平台ModelArts 进行图片标注并生成数据集,各标签如图8 所示,从左到右、由上而下分别是right、left、limit_5、no_limit_5、green-light、yellow-light、red-light、people 和zebra-cross。 基于此数据集对本文提出的改进算法进行训练测试,其中,随机抽取20%当作验证集,用以评测网络性能,其余图片用作模型训练集。

图8 标签类别

3.2 改进算法训练

基于Ubuntu 系统与华为云平台,模型训练通过GPU 加速,采用RTX A5000 显卡、24G 显存,在CUDA11.3、PyTorch 1.10.0 环境下完成。 为后续测试考虑,还需对改进YOLOv5 算法的部分算子进行修改,解决了PyTorch 算子与华为昇腾CANN 算子之间的兼容问题,确保部署后高效运行在昇腾处理器。

在训练过程中,将经过Mosaic 数据增强的训练图片,导入模型进行前向传播,得到准确值和真实值的损失,通过随机梯度下降反向传播更新损失函数,优化模型参数。 训练中的图片尺寸为640×640,batch-size 大小设置为128,epoch 为设置150,选择Adam 优化器进行参数优化,模型的初始学习率为0.01,权重衰减系数为0.000 5,以尽可能合理利用本地显存资源。

3.3 改进算法部署

在训练完成后,将PyTorch 框架下的.pt 模型文件转换成onnx 模型文件,然后使用昇腾提供ATC(Ascend Tensor Compiler)转换工具将模型转换成为昇腾AI 处理器支持的离线模型,以便于完成模型推理,如图9 所示。 在模型转换过程中,优化模型算子和权重数据存储方式,提升模型在昇腾AI 处理器上的性能。

图9 ATC 工具功能架构

算法的部署跟训练中使用同一网络结构,在训练中,将图片送入模型中,经过网络的正向传播与反向传播在通过损失函数优化网络权重,而部署时只需进行正向传播不更新网络权重参数。 模型转换如图10 所示,需要指定计算图的输入节点和输出节点,并从模型中去除无效节点。 其中,AIPP(Artificial Intelligence PreProcessing)智能图像预处理包括将图片尺寸改变至合适大小以满足模型要求、图像格式转变等操作。

图10 ATC 模型转换运行流程

3.4 实验对比

为了测试本文提出的YOLOv5s_ghost_bi_sa 对智能车交通标志识别的可行性及性能,需进行消融实验,构建的五种模型分别命名为YOLOv5l、YOLOv5s、YOLOv5s_sa、YOLOv5s_ghost、YOLOv 5s_ghost_sa。 其中YOLOv5s 是YOLOv5 系列中深度最小,特征图的宽度最小的网络,YOLOv5s 主干特征提取网络采用CSPDarknet53,颈部网络采用FPN 加PAN 结构,输出层的矩形框损失函数采用CIOU_Loss;YOLOv5l 则是在原YOLOv5s 网络结构的基础上不断增加卷积核的数量、C3 结构的深度;YOLOv5s_sa 是在原YOLOv5s的网络结构的基础上加上了置换注意力机制;YOLOv5s_ghost 是在原YOLOv5s 的网络结构的基础上使用GhostConv 替代部分普通卷积;YOLOv5s_ghost_sa是在原 YOLOv5s 的网络结构的基础上使用GhostConv 替代部分普通卷积并加上了置换注意力机制;YOLOv5s_ghost_bi_sa 是本文提出的模型,是在原YOLOv5s 的网络结构的基础上使用GhostConv替代部分普通卷积,加上了置换注意力机制并采用加权双向特征金字塔网络。

表1、表2 列出了各网络模型在自建数据集上参数与复杂度对比结果。 从比较结果分析,YOLOv5l 与YOLOv5s 表示YOLOv5 系列网络在不同深度和宽度的性能表现,作为参考项。 YOLOv5s_sa模型的mAP 0.5:0.95 值相比于原YOLOv5s 模型上升2.4%,验证了置换注意力机制的有效性。 置换注意力机制引入了通道随机混合操作,可以分块并行使用空间和通道两类注意力机制,二者高效结合使得分类模型聚焦于目标信息更相关的区域,进而有效地提升精度。 推理速度下降了4.52 帧/s,模型体积与浮点运算量都有所增长。 YOLOv5s_ghost 模型的mAP 0.5 ∶0.95值相比于原YOLOv5s 模型下降2.3%,推理速度上升了58.2 帧/s,模型大小与浮点运算量都有所下降,提升了模型的检测速度,降低了模型参数量,验证了GhostConv 的有效性。 YOLOv5s_ghost_sa 模型的mAP 0.5 ∶0.95 值相比于原YOLOv5s 模型上升1.3%,推理速度上升41.81 帧/s。 模型体积仅仅是原YOLOv5s的五分之一。

表1 模型各参数对比

表2 模型识别情况对比

本文所提YOLOv5s_ghost_bi_sa 与YOLOv5l 相比mAP0.5 ∶0.95 下降0.6%,但FPS 却显著提高,由3.68 帧/s 提升为62.98 帧/s;与YOLOv5s 相比mAP 0.5 ∶0.95 和recall 分别提高了1.8%和3.8%,FPS 也由23.30 帧/s 提升为62.98 帧/s,与YOLOv5s_ghost_sa相比mAP 0.5 ∶0.95 上升了0.5%,FPS 仅下降了0.87 帧/s,表明加权双向特征金字塔的跨尺度连接增强了模型性能,验证了加权双向特征金字塔的有效性。

3.5 结果对比

图11 所示为YOLOv5s_ghost_bi_sa 模型与YOL-Ov5l、YOLOv5s、YOLOv5s_sa、YOLOv5s_ghost、YOLOv5s_ghost_sa 在训练时mAP0.5 值变化的对比图,横坐标为训练的轮次,纵坐标为mAP0.5,由图中可知,YOLOv5s_ghost_bi_sa 的时mAP0.5 值明显高于YOLOv5s、YOLOv5s_sa、YOLOv5s_ghost、YOLOv5s_ghost_sa,基本与YOLOv5l 的精度保持平衡。

图11 训练期间mAP0.5 变化对比图

YOLOv5s_ghost_bi_sa 模型在训练时各类指标变化趋势如图12 所示,损失函数可以较为直观地反映整个模型的训练过程,损失函数越低表明结果越好,训练轮数(epoch)设定在150。 在训练初期,矩形框损失(Bloss)、置信度损失(Oloss)、分类损失(Closs)快速下降,在训练轮数为20 之后,Loss 曲线下降速度变缓,表明YOLOv5s_ghost_bi_sa 模型可以快速拟合。

图12 YOLOv5s_ghost_bi_sa 的损失函数

图13 所示为YOLOv5s_ghost_bi_sa 的九类标签以及总体的PR 曲线(Precision-Recall)对比图。 横坐标为召回率,纵坐标为精确率,而PR 曲线围成的面积为平均精度。 如图13 所示,总平均精度为0.988,各标签中no_limit 平均精度最高,red_light 最低。

图13 PR 曲线

将其部署至Hilens 设备上,为进一步验证YOLOv5s_ghost_bi_sa 算法的实用性,从验证集中随机抽取交通标志图片进行识别,得到结果如图14 所示。 虽然在测试集中的识别精度有所降低,但是对于各类别的识别精度依然保持在92%以上,满足自主识别交通标志的需求。

图14 交通标志识别结果图

4 结论

针对智能边缘设备在硬件平台受限的情况下,算法的参数量过大导致速度慢、实时性差等不足,在不降低精度的情况下,提出YOLOv5s_ghost_bi_sa 算法。 通过将普通卷积改进为轻量级的GhostConv,消除了传统深度学习网络中大量的影响模型精度却又无法直接删除的冗余信息。 在主干特征提取网络的最后添加置换注意力机制,既减少了整体网络的计算量,又避免了传统注意力机制因过于专注输入所有相关信息引起的受限平台实时性的减低。 引入加权双向特征金字塔网络结构,加强了主干网络与颈部网络的特征融合。 使用ATC 进行模型转换,配置AIPP 相关参数实现图像预处理,优化模型中算子和权重数据的存储,提高模型推理效率。 实验结果表明:YOLOv5s_ghost_bi_sa 算法可以在硬件平台受限的智能边缘设备中有效识别交通标志,在保证较高的精度的前提下,具有较高的识别速度。

猜你喜欢

特征提取注意力卷积
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
Bagging RCSP脑电特征提取算法
A Beautiful Way Of Looking At Things
基于MED和循环域解调的多故障特征提取
一种基于卷积神经网络的性别识别方法