针对电动车头盔佩戴的YOLOv5s改进算法研究
2023-10-26马斌,张亚
马 斌,张 亚
(安徽理工大学 电气与信息工程学院,安徽 淮南 232007)
0 引言
为了加强人们安全骑行的意识,减少交通事故的发生,公安部于2020年6月1日起推行“一盔一带”安全守护行动,并倡导电动车骑行人员佩戴头盔。在面对极为复杂的交通道路骑行情况时,传统的人力检查方式耗时耗力,无法大面积推行。因此利用人工智能判断骑行人员的头盔佩戴与否具有很大的现实意义。
在实际的道路中,天气、阳光和雾霾等环境因素的变化会对检测效果产生严重影响。此外,电动车时刻处于运动中,会造成检测装置采集的图片变得迷糊、分辨率低,对于远距离的电动车骑行人员,存在目标较小难以被检测到的问题。为此,本文提出了一种基于YOLOv5s网络改进的头盔佩戴检测算法。
1 YOLOv5s
YOLOv5s网络模型是YOLOv5中比较轻量化的一种模型,能很好地嵌入硬件,是一种单阶段目标检测网络算法。该网络模型主要分为4个部分,分别为输入端、Backbone、Neck以及输出层预测部分。是在YOLOv4的基础上添加了新的改进思路,使其速度与精度都得到了极大的性能提升。其中,在输入端的主要改进思路包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;主干部分的改进主要是Focus结构与CSP结构;Neck网络中的改进主要是在BackBone与最后的Head输出层之间插入了FPN+PAN结构;在输出层中主要改进了训练时的损失函数。
2 YOLOv5s网络模型的改进
2.1 整体网络结构
本文选用检测速度和准确率都不错的YOLOv5s算法作为基础网络,提出了一种改进的头盔检测算法,将自制的电动车头盔数据集作为训练和检测的目标。原有网络中含有大量普通卷积,会严重影响目标特征信息的提取,因此在网络模型Neck部分卷积中融入Ghost模块,旨在减轻模型冗余程度。此外,在YOLOv5s中引入CBAM注意力机制和SPD-Conv模块[1]。CBAM的引入可以使训练过程中更多地关注在关键信息上,大大减少了冗杂信息的干扰。而SPD-Conv模块的使用可以加强对低分辨率目标和小目标物体的检测能力。其中,将原始网络Neck部分的所有Conv层和C3模块分别替换成GhostConv和C3Ghost模块,将CBAM注意力模块引入到Neck部分的GhostConv之后。在主干部分的Conv层中,除第一层之外的4层Conv(步长设为1)层分别和SPD结合成SPD-Conv模块,并在Neck中的Concat之前也添加SPD模块。
2.2 Ghost模块
Ghost卷积的思想是在少量的非线性卷积得到的特征图基础上[2],再进行一次线性卷积,从而获取更多的特征图,以此来实现消除冗余特征,获取更加轻量的模型。Ghost卷积将普通卷积操作分为两部分:第一步,使用少量卷积核进行卷积操作生成一部分特征图;第二步,采用线性运算生成更多的特征图,然后将不同的特征图连接在一起组成新的输出。所以,在模型中融合Ghost卷积,可以大幅度降低计算成本和模型的参数量。
2.3 CBAM模块
根据目前的研究表明[3],CBAM结构更有利于捕获全局信息[4],抵抗混乱的信息,有效处理复杂背景。CBAM是一种用于前馈卷积神经网络的简单而有效的注意模块,包括通道注意力模块(Channel Attention Module,CAM)和空间注意力模块(Spartial Attention Module,SAM)两个子模块,分别进行通道和空间信息上的关注。这样不仅能够节约参数和计算力,还保证了其能够作为即插即用的模块集成到现有的网络架构中。
2.4 SPD-Conv模块
现有的CNN常见设计体系结构中有一个缺陷,即使用卷积步长和池化层,这导致了细粒度信息的丢失和较低效的特征表示的学习。特别是在CNN体系结构的早期层中,这种设计的负面影响通常不会表现出来,因为大多数被研究的场景都是有良好的分辨率,物体的大小也适中,会存在大量的冗余像素信息,跨跃卷积和池化可以方便地跳过,网络模型仍然可以很好地学习特征。然而,在图像模糊或物体很小的检测任务中,大量的冗余信息假设不再成立,当前的设计开始遭受细粒度信息丢失和学习特征不足的影响。
为了解决上述问题,在网络中引入SPD-Conv的新的CNN模块来代替每个卷积步长和池化层。SPD-Conv模块是由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,可以应用于大多数CNN体系结构。SPD层对特征映射进行下采样,但保留了通道维度中的所有信息,在每个SPD之后添加了一个无步长卷积操作,以在增加的卷积层中使用可学习参数减少通道数量。该模块完全消除了步长和池化操作,取而代之的是一个空间到深度卷积和一个无步长卷积。这种操作在保留了判别特征信息的同时,还具有向下采样特征图的优点。
3 实验结果及分析
3.1 实验环境
实验平台采用Windows10操作系统,CPU处理器为11th Gen Intel(R) Core(TM) i5-11400@2.60 GHz,GPU为Nvidia GeForce GTX 3050(8 GB),编程语言为Python-3.8,深度学习框架为Pytorch-1.12.1。本文通过网络和道路拍摄的方式选出合适的图片自制数据集3500张,使用labellmg工具对采集后的图片进行标注,标注类别共3类:motorcycle、helmet和nohelmet,数据集以8∶2的比例将样本数据划分为训练集、验证集,用于电动车头盔识别模型的训练和测试。
3.2 评价指标
为了评析实验结果,本实验使用准确率(Precision)、平均准确率均值(mAP)作为评价的指标,其定义如公式(1)—(3)所示。同时用网络模型权重大小和每秒浮点运算次数(FLOPs)作为衡量模型大小和计算量的指标。下式中TP表示正确检出的正样本,FP表示错误检出的正样本,num表示检测类别总数。
(1)
(2)
(3)
3.3 消融实验
本文提出的改进的YOLOv5s模型主要是对主干网络和Neck部分进行了改进,通过消融实验探究各模块对模型的影响。消融实验以YOLOv5s网络作为基础网络,按2.1节的改进方法分别将C3Ghost(以下简称“CG”)和GhostConv(以下简称“GC”)、CBAM注意力模块和SPD-Conv(以下简称“SPD”)加入网络模型,实验结果各参数指标如表1所示。
表1 消融实验结果指标
由表1可以看出,加入轻量化模块之后的网络降低了模型大小,对比原始网络降低2.9 MB,计算量有所下降,因此轻量化模块的引入可以以更少的计算提取关键信息。在加入CBAM注意力模块后,mAP对比轻量化模型增加了0.9个百分点。在加入SPD模块之后,mAP对比原始网络提升了2.7个百分点,在精确率上提升了2.1个百分点,并且模型大小提高不明显。
通过消融实验可以看出,Ghost模块的运用可以很好地降低计算量和模型大小。在Neck部分不同特征层中加入CBAM注意力模块,可以对不同特征层分别进行通道和空间信息上的关注,能够有效提高检测精度。SPD-Conv的加入大大提高了检测精度,可见对于小目标物体和模糊低分辨率场景,SPD-Conv有着不俗的表现,同时计算量和模型大小符合硬件要求。由此可见,轻量化模块、注意力机制和SPD-Conv模块的引入能够有效提高网络模型的检测性能。
3.4 实验结果
本实验在电动车和头盔数据集上训练260轮,使用上述评价指标作为该模型的评价标准。同时,为了验证改进后模型的效果,选用YOLOv3网络模型进行对比实验,实验结果如表2所示。
表2 综合指标结果对比
从表2可以看出,虽然YOLOv3的mAP高于原始YOLOv5s,但模型大小远大于YOLOv5s,不利于硬件的嵌入。改进的YOLOv5s在模型大小上几乎没有增加多少的前提下,有效地提高了Precision和mAP。在YOLOv5s中,通过引入注意力机制和SPD-Conv模块使得改进后的模型平均精度均值和精确率分别达到84.9%和84.4%,与原始YOLOv5s网络相比较,分别提高了2.7%和2.1%,可以满足道路上电动车头盔检测佩戴与否的要求。
4 结语
针对道路上的电动车头盔目标较小、检测图像模糊等问题,本文提出了一种基于改进的YOLOv5s网络模型。在原始YOLOv5s网络中引入SPD-Conv模块和卷积块注意力模块(CBAM),并且用C3Ghost和GhostConv替代原始网络中的C3和普通卷积模块使改进的模型更加轻量化。本文改进的YOLOv5s有效地提升了Precision和mAP。实验结果可知,改进后的YOLOv5s算法具有一定的可行性,能够满足实时性检测的要求。