胡晓栋 王国明
摘 要:
針对现有的安全帽检测算法参数量大,不利于嵌入式端部署,且密集目标存在漏检等情况,本文做出以下改进:对模型的主干特征网络用更加轻量的MobileViTv2网络进行替换并引入轻量级的无参卷积注意力模块(SimAM),再结合大卷积核RepLKNet架构对原有的超深小卷积核进行改进,在减少参数量的同时提升了精度。实验结果表明,改进后的算法平均精度达到96%,提升了1.8%,模型大小降低了31%。同时能满足实际场景对安全帽检测精度和速度的要求。
关键词:
深度学习;
YOLOv5;
MobileViTv2;
SimAM;
RepLKNet;
安全帽
中图分类号:TP389.1 文献标识码:A 文章编号:1006-8228(2023)06-76-05
Research on helmet detection algorithm based on improved YOLOv5
Hu Xiaodong, Wang Guoming
(College of Computer Science and Engineering, Anhui University of Science and Technology, Huainan, Anhuai 232000, China)
Abstract:
In response to the existing helmet detection algorithm with large number of parameters, unfavorable for embedded end deployment, and dense targets with missed detection, the following improvements are made in this paper. The backbone feature network of the model is replaced by a more lightweight MobileViTv2 network and a lightweight non-parametric convolution attention module (SimAM) is introduced, and the original ultra-deep small convolution kernel is improved by combining with the large convolutional kernel RepLKNet architecture, which reduces the number of parameters and improves the accuracy. The experimental results show that the average accuracy of the improved algorithm reaches 96%, which increases by 1.8%, and the model size decreases by 31%. It can meet the requirements of accuracy and speed in the actual situation.
Key words:
deep learning; YOLOv5; MobileViTv2; SimAM; RepLKNet; safety helmet
0 引言
在一些高危的现场施工环境中,未佩戴安全帽是违规操作。这种违规操作需要及时发现和被制止。近年来,基于深度学习的目标检测被广泛应用于人脸识别,行人识别,自动驾驶,工业检测等领域。研究者从多层面对其作了许多研究,徐守坤等[1]在FasterR-CNN基础上结合多尺度训练,增加锚点数量和在线困难样本挖掘机制。贾峻苏等[2]依托可变形部件模型,提出一种基于块的局部二值模式直方图,并增加合适的颜色特征与支持向量机(SVM)进行训练和检测,得出一种适用性更广,检测准确性更高的一种算法。张锦等[3]针对安全帽尺寸大小不一问题,提出用K-means++算法来重新设计相应先验框尺寸来匹配到特征层。肖体刚等[4]在YOLOv3的基础上使用深度可分离卷积结构来替换Darknet-53传统卷积来缩减模型参数。算法往往参数量和计算量大,因此,本文对YOLOv5主干特征提取网络进行轻量化网络替换,并引入RepLKNet架构对原有超深小卷积进一步改进,然后引入SimAM注意力机制加强对检测对象的关注。算法改进后,能更好地满足在低算力设备平台上部署的需求。
1 YOLOv5s相关技术
YOLOv5s分为输入端(Input)、backbone、neck以及输出端(Output)四部分。输入部分包括马赛克增强(Mosaic)、仿射变换(Random Affine)、Mixup增强、HSV色域空间增强等。Backbone部分核心包括CBS卷积模块、C3结构、SPPF模块。CBS模块由二维卷积Conv2d,批量归一化处理(Batch Normalization)和SiLU激活函数串联而成;
C3模块分为上下俩支路,上支路通过三个标准卷积层和多个Bottleneck模块连接,下支路通过标准卷积处理和上支路进行拼接;
SPPF采用多个小尺寸池化核并联且级联的方式融合不同感受野的特征图,同时进一步提升运行速度。Neck部分采用FPN+PAN的自顶向下以及自底向上相结合的特征金字塔结构进行多尺度融合后输出到head部分,交由三个不同尺寸的检测头生成预测候选框和类别,使用CIoU_LOSS损失函数对目标进行回归修正,通过加权非极大值抑制来消除大量冗余框来进一步提高对目标的识别准确度。YOLOv5s结构如图1所示。
2 改进模型
2.1 主干网络优化
原有的YOLOv5s采用的C3结构参数量大,检测速度慢,应用上受限,在移动端,嵌入式设备上使用不友好,容易面临内存不足问题的发生,从而将原有的C3结构的主干特征提取网络部分替换成更加轻量级的MobileViTv2,它结合卷积CNN和ViT的优势,来构建移动视觉任务中的轻量级和低延迟网络,代替传统卷积用于神经网络学习视觉表征,可有效将全局和局部信息进行编码,更好的对安全帽进行全局学习表示,同时也不需要特别复杂的数据增强方法来对此训练,能够一定幅度的降低参数计算量,加快检测速度,减少显存占用情况,对移动设备友好。
2.1.1 MobileViTv2模型
文献[5]提出了MobileViTv2结构,如图2所示,其中的MV2是MobileNetv2的缩写,它是一种Inverted Residual倒残差结构。对于之前的残差结构ResNet[6]是俩头宽,中间窄,但由于更高的维度经过激活函数后,它损失的信息会少一些,从而采用MV2结构,通过1×1卷积进行升维,中间用3×3卷积进行DW(深度可分离卷积)操作,结束时再用1×1卷积进行降维保持俩头窄,中间宽来减少信息的损失。对于MobileViT block,对输入特征先进行3×3标准卷积层进行局部信息建模,然后通过1×1卷积核进行通道数调整,再采用Unfold->Transformer->Fold进行全局信息的建模,在v2版本中取消了v1版本的shortcut连接和融合模块,接着再通过1×1卷积核调整为原来通道大小得到输出。由于和所有像素点进行自注意力操作会带来一定程度的信息冗余,为了减少参数量,只对相同位置的像素点进行点积操作。针对MobileViT中的效率瓶颈多头自注意力(MHA),因为token数量需要的时间复杂度为O(k2),代价较大,所以提出了一种线性复杂度为O(k)的可分离自注意力方法。其成为资源受限设备上的较好选择,如图3所示。
2.1.2 MobileViTv2模型的优化
由于非线性激活函数ReLU对低维特征信息会造成较大损失,高维信息损失不大,而倒残差结构最终输出的低维特征信息,所以在最后一层卷积层用线性激活函数来避免损失。
swish函数是一种比ReLU更佳的激活函数,它包含sigmoid函数,相比之下计算开销更大,而ReLU6函数相对来说比较简单,所以选用h-swish函数来代替。
swish函数如式⑴所示:
[swishx=x*sigmoid(βx)] ⑴
h-swish函数如式⑵所示:
[h-swishx=xReLU6(x+3)6] ⑵
2.2 融合SimAM注意力模块
SimAM[7]是一种对卷积神经网络简单有效的无参数3D注意力模块,在不增加原有网络参数的情况下,为特征图(feature map)推断三维注意力权重。设计出一款能量函数来生成快速解析解来挖掘出每个神经元的重要程度并分配权重。它可以随意嵌入到现在的卷积神经网络中来,具有灵巧便捷性,可支持即插即用。模型如图4所示。
在已有研究中,BAM和CBAM[8]分别采用并行和串行方式关注通道以及空间注意力。而人类神经网络需要同时协同处理这俩种注意力,因此SimAM能更好的把俩者统一起来。以下是SimAM的能量函数,如式⑶所示。
[etwt,bt,y,xi=yt-t2+1M-1i=1M-1(y0-xi)2] ⑶
其中[X∈RC×H×W],[t]和[xi]分别属于X下通道的目标神经元和其他神经元,[wt]和[bt]分别表示权重和偏置,M代表该通道上的神经元个数,i是空間上的索引值。进一步可得出最终能量函数,如式⑷所示。
[etwt,bt,y,xi=1M-1i=1M-1-1-wtxi+bt2+1-wtt+bt2+λwt2] ⑷
当能量(energy)越低,神经元t与周围神经元的区别越大,重要程度也越高。每个神经元其重要性可由最小能量的倒数表示。按照注意力机制,需对特征进行进一步增强处理。如式⑸所示。
[X=sigmoid1E☉]X ⑸
经过多次实验后,将SimAM注意力模块加在backbone倒数第二层效果最好。
2.3 卷积核改进
以往卷积神经网络偏向于多个小卷积代替大卷级核,但在现有CNN技术加持下,使用一种更大的卷积核31×31的RepLKNet[9]的设计范例来代替超深小卷积核更具有优势。其中,深度的增加,会带来训练问题,尽管ResNet通过残差连接很好的解决了这个问题,但ResNet的有效感受野没有得到很好的增加,根据有效感受野特性,与卷积核大小成线性关系,与深度成次线性关系,对此,RepLKNet凭借大卷积核的设计避免了过多的层就能有着更大的有效感受野和更高的形状偏差。同时引入Identify shortcut和结构重参数化的方法来解决大卷积核难以兼顾局部性的特征,容易出现过度平滑的现象问题。结构如图5所示。
RepLKNet结构包括以下三个部分,Stem部分作为开始阶段,使用带有俩倍下采样的3×3卷积,后接一个3×3的深度可分离卷积来捕获低维特征,最后使用一个1×1卷积核和3×3的深度可分离卷积进行下采样,该层对输入图像进行升维以及尺寸缩减。Stage阶段作为核心层,包括RepLKBlock和ConvFFN俩部分堆叠而成,RepLKBlock由批量归一层,1×1卷积,3×3深度可分离卷积以及最重要的残差连接。FFN包括俩个全连接层,而ConvFFN用1×1卷积代替了原有的全连接层,同样也具备层间残差连接。Transition层放在Stage层之间,通过1×1卷积扩大特征维度,然后再由3×3深度可分离卷积进行俩倍下采样。
RepLKNet和原模型YOLOv5s中超深小卷積相比,能减少一定参数量,并提高安全帽检测模型精度。
3 实验分析
3.1 实验所需环境和参数
本次所有实验都在Ubuntu操作系统下,使用的GPU是NVIDIA GeForce RTX 3080,显存10GB,CPU为AMD EPYC 7601,深度学习框架采用的是Pytorch1.10.0,Cuda11.1.1,Python3.8。
所用数据集为公开的安全帽数据集,总共7581张图片,按8:2比例进行划分训练集和测试集,并以VOC形式标记好,再将标记标签XML格式转化为YOLOv5所接受的txt格式,数据集标签分为俩大类,一类是戴了安全帽的人,标签为“hat”,另一类是未戴安全帽的人,标签为“person”。实验所需超参数如表1所示。
3.2 消融实验
为了进一步验证改进的模块对目标模型检测有效果,以下采取消融实验进行比较,将MobileViTv2简记为MVT2,改进1模型在原有网络中单独使用轻量级模型MobileViTv2进行特征提取;
改进2模型在改进1基础上融合注意力模块SimAM;
改进3模型在改进2模型的基础上改进为大卷积核RepLKNet架构,得到最终目标模型,记为YOLO-M。消融实验结果见表2。
由表2数据可以看出,主干网络替换成MobileViTv2后参数量下降了将近四分之一,平均精度降了0.7个百分点,融合SimAM注意力机制后与换成轻量级网络相比,精度有所提升1.6个百分点。原有的YOLOv5s中Neck部分超深小卷积核替换为大卷积核RepLKNet后,精度提升了0.9个百分点。最终融合以上技术改进后的YOLOv5s模型在参数量得到了一定幅度减少的同时精度也提升了1.8个百分点,基本满足现场环境对安全帽的实时检测。
3.3 改进后的模型与其他算法对比
将改进后的模型与其他主流算法进行对比实验,来对其性能进行分析,进一步验证改进后的模型的可行性和优越性,同时将ShuffleNetv2-YOLOv5简记为S-YOLOv5,对比试验结果如表3所示。
由实验结果可知,改进后的模型跟ShuffleNetv2-YOLOv5和Ghost-YOLOv5相比,虽然模型大小稍显大,但平均精度分别提升了32.3个百分点和6.8个百分点。与主流目标检测模型YOLOv3和SSD相比,不仅在精度上有所提升,同时模型大小也得到了大幅的减少。相较于当前的基于轻量级检测网络和主流检测算法,改进后的模型在速度和精度平衡上都有比较好的表现。
3.4 检测结果分析
为了更直观的表达检测效果,选取了目标不密集以及密集目标情况下的检测效果图做对比观察。在不密集情况下,改进后的轻量级模型检测效果比原模型要好。在密集情况下,对于出现的远处小目标对象也能很好的检测出来。结果如图6所示。
4 结束语
对于现有的安全帽检测所需参数量和计算量比较大,现提出一种对原模型进行轻量化改进,对主干网络用MobileViTv2网络模型进行替换,在主干特征提取网络部分倒数第二层融合SimAM注意力模块,参照大卷积核架构对Neck部分超深小卷积进行替换。实验表明,在保持较高精度的同时,计算量,参数量和模型大小都得到了大幅度下降,能满足嵌入式设备上使用的要求。
参考文献(References):
[1] 徐守坤,王雅如,顾玉宛,等.基于改进Faster RCNN的安全帽
佩戴检测研究[J].计算机应用研究,2020,37(3):901-905
[2] 贾峻苏,鲍庆洁,唐慧明.基于可变形部件模型的安全头盔佩
戴检测[J].计算机应用研究,2016,33(3):953-956
[3] 张锦,屈佩琪,孙程,等.基于改进YOLOv5的安全帽佩戴检
测方法[J].计算机应用:1-11[2022-10-27].http://kns.cnki.net/kcms/detail/51.1307.TP.20210908.1727.002.html
[4] 肖体刚,蔡乐才,高祥,等.改进YOLOv3的安全帽佩戴检测
方法[J].计算机工程与应用,2021,57(12):216-223
[5] Mehta S, Rastegari M. Separable Self-attention for Mobile
Vision Transformers[J].arXiv preprint arXiv:2206.02680,2022
[6] He K, Zhang X, Ren S, et al. Deep residual learning for
image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition,2016:770-778
[7] YANG L X,ZHANG R Y,LI L,et al.SimAM:a simple,
parameter-free attention module for convolutional neural networks[C]//Proceedings of the 38th International Conference on Machine Learning.New York:
PMLR,2012:11863
[8] SH W,PARK J,LEE J Y,etal.CBAM:convolutional block
attention module[C]//Lecture Notes in Computer Science. Munich,GERMANY:IEEE,2018:3-19
[9] Ding X, Zhang X, Han J, et al. Scaling up your kernels to
31x31:
Revisiting large kernel design in cnns[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2022:11963-1197