基于改进YOLOv5算法的电力工人作业安全关键装备检测
2022-10-24伏德粟王书坤
伏德粟,高 林,刘 威,王书坤
(湖北民族大学 智能科学与工程学院,湖北 恩施 445000)
电力工人必须穿戴安全帽、绝缘手套等才能进入作业区域,假如他们在作业时未穿戴这些防护装备,那就有可能会被上方掉落的物体砸到,也有可能从高处坠落而摔伤头部,还有可能身体遭受电击.因此,安全帽、绝缘手套等是电力工人作业时的安全保障.
随着智能监控的发展,安全帽、绝缘手套等装备检测技术的不断进步,电力工人在不同作业过程中都能得到监督,形成保卫工人生命安全的一道防线.然而,面对复杂多变的电力施工环境,现有的电力工人安全装备检测模型逐渐显现出较多问题,如在数据量较少情况下检测精度低,推理耗时长导致无法实时反馈报警等.
电力工人作业时是否佩戴好防护装备需要监督,但是采用人工监督方式既费时又费力,且在某些工作场景下近距离监督还有风险.此时,能够智能实时检测是否穿戴安全帽、绝缘手套等防护装备就显得尤其重要,既能实现安全监督监测的自动化及数字化,还能提高电力工人的作业安全性.
当前目标检测研究炙手可热,但对于如何提高小目标的检测精度仍是目标检测领域的难点和重点,所谓的小目标是指用传统检测算法难以通过一些判别性特征去训练和检测的小物体.因为小目标本身的通道信息过少,所以也会造成目标锚框难以匹配等问题.
智能实时检测通常采用目标检测技术.该技术的发展分成2个时期,在2014年以前被称为“传统的目标检测时期”,2014年后可被称为“基于深度学习的检测时期”[1].传统的目标检测时期以V-J(Viola-Jones)检测器[2]、HOG+SVM(histogram of oriented gradient + support vector machine)[3]、DPM(deformable part model)算法[4]为代表,比如在2014年刘晓慧[5]将SVM与肤色检测结合起来的方式进行安全帽检测.基于深度学习的检测时期以R-CNN(region-convolutional neural networks)[6]、Fast R-CNN[7]、Faster R-CNN[8]、SPPNet(spatial pyramid pooling net)[9]、YOLO(you only look once)[10]、SSD(single shot multibox detector)[11]等算法为代表.这些算法又分为双阶段和单阶段2种,前者主要有R-CNN、SPPNet、Fast R-CNN、Faster R-CNN等,后者主要有YOLO、SSD等.在双阶段的算法中,第一级网络从候选区域提取特征,第二级网络对选中的区域进行分类、精确回归,这类算法检测精度高、运行速度慢.在单阶段算法中,分类与回归的任务只需要一级网络就可以完成,并不需要候选区域这一步骤,这类算法运行速度快、检测精度稍低.YOLO是单阶段算法的代表,其运行速度快,适合做实时检测,在实际应用中广受欢迎.YOLOv5是其中性能较好的版本,对其进行应用和研究是非常必要的.
1 YOLOv5算法
2015年YOLOv1出现后,为了继续提升它的性能,又出现了YOLOv2[12]、YOLOv3[13]、YOLOv4[14]、YOLOv5[15]等系列算法.YOLOv5比YOLOv4更加灵活与快捷,且不会降低其准确率.YOLOv5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x共4个模型,参数大小与精度是逐渐增加的,由Bottleneck数目区分,采用了类似 EfficientNet[16]的控制因子来实现版本的变化,能够根据应用场景来选取合适大小的模型.本文采用了YOLOv5s模型的5.0版本.YOLOv5的网络结构包括输入端、主干网络、颈部网络、预测端4个部分,其网络结构如图1所示.
1) 输入端.使用了马赛克数据增强方法,还拥有一个自动锚框计算机制,这与YOLOv3、YOLOv4的单独锚框计算机制不同.
2) 主干网络.分为2个结构域,一是Focus结构,这是YOLOv5独有的,其中切片操作是很关键的一步,比如640×640×3大小的图像输入Focus结构,通过切片操作,会先变成320×320×12大小的特征图,再经过一次32个卷积核的卷积操作,最终变成320×320×32大小的特征图.二是跨阶段局部网络(cross stage partial,CSP)结构,YOLOv4中只有主干网使用CSP结构,而YOLOv5设计了2种CSP结构用于主干网络和颈部网络,主干网络部分中还用到了空间金字塔池化(spatial pyramid pooling,SPP)网络模块.
3) 颈部网络.采用了特征金字塔网络(feature pyramid network,FPN)+路径聚合网络(path aggregation network,PAN)[17]的结构,FPN是由高维度向低维度传递语义信息(大目标更明确),PAN是由低维度向高维度再传递一次语义信息(小目标也更明确).
4) 预测端.先通过上采样将高层与底层特征信息进行提取和融合,实现从顶向下的信息流动.再通过后续的卷积处理将底层特征与高层特征进行拼接操作,从底向上传送更高分辨率的特征来实现PAN[18]操作,将底层与高层特征结合,可解决部分多尺度问题.
2 改进的YOLOv5算法
YOLOv5是一种可实时、速度快、精度好的算法.但是对于一些小目标的检测来说,YOLOv5可能会发生误检或者漏检.此外,由于网络中有下采样操作,在传输过程中容易丢失特征信息,因此可能产生梯度消失.为了提高检测精度与效果,提出了一种基于改进YOLOv5算法的电力工人作业安全关键装备检测,其主要改进点如下:
1) 引入了坐标注意力(coordinate attention,CA)[19]模块,目的是提升对绝缘手套、安全帽这类小目标的检测效果.
2) 引入了双向特征金字塔网络 (bidirectional feature pyramid network,BiFPN)[20]结构,它能让特征多尺度融合更加快速和简单,从而便于特征提取.
图2 CA模块架构Fig.2 CA module architecture
2.1 主干网络的改进
待检测图像中的小目标所占用像素点较少,却包含很多语义信息,预测其位置信息时往往误差较大.在检测图像中的安全帽与绝缘手套等较小目标时,容易产生误检或漏检.
在主干网络中引入注意力机制,能够更好地提升对小目标的检测效果.常见的注意力机制有挤压激励(squeeze and excitation,SE)、卷积注意力模块(convolutional block attention module,CBAM)、有效通道注意力(efficient channel attention,ECA)等,它们通常会使用全局池化的方式对空间信息进行编写,但容易造成检测目标的位置丢失.而CA模块能让神经网络更加注意有效坐标,抑制无效位置的坐标信息,从而提升神经网络对所检测信息的注意力效果.
为此,在主干网络中引入了CA模块,它能在水平方向上和垂直方向上进行最大池化,将提取压缩的信息进行变换和编码后,再通过空间通道信息的方式,在通道上进行加权融合.CA模块架构如图2所示.坐标注意力机制能在精确位置信息的基础上,对通道关系以及长依赖关系进行编码,可分为坐标信息嵌入和坐标注意力生成2部分.其中,C为通道数,H和W分别代表特征图的高和宽,h和w为输入图片的高和宽,r为控制模块大小的缩减率.
1) 坐标信息嵌入.该部分使用尺寸为H×1或1×W的池化核,对水平和垂直方向的每个通道进行编码,其高度h、宽度w的通道C的输出分别为
(1)
(2)
2) 坐标注意力生成.该部分通过前面坐标信息嵌入的变化,在拼接后进行特征联合的操作,用1×1的卷积来对变换函数F1进行变换如下:
f=δ(F1([Zh,Zw])),
(3)
式(3)中δ为非线性激活函数,Zh、Zw为沿水平、垂直方向维度上的特征输出,f为水平和垂直方向上进行编码后的特征映射,其中f可以沿空间水平和垂直分解成fh∈RC/r×H和fw∈RC/r×W,其中r为控制模块大小的缩减率,再利用另外2个1×1卷积将变换函数Fh、Fw变成通道数目相等的张量给输入X.所以有
gh=σ(Fh(fh)),
(4)
gw=σ(Fw(fw)),
(5)
式(5)(6)中σ为Sigmoid激活函数,如果想降低模型的复杂性和计算开销,就可用适当的缩减比r来减少f映射的通道数,将输出函数gh、gw作为注意力的权重,最终CA模块的输出yc(i,j)可写为
(6)
2.2 颈部网络的改进
图3 FPN、PAN、BiFPN网络结构示意图Fig.3 Schematic diagram of FPN,PAN and BiFPN network structure
在YOLOv5算法中,最开始的版本颈部网络只包含FPN结构,到了后续版本,如5.0版本其特征融合层和检测层使用了FPN与PAN网络结构来增强图像识别的能力与精度.BiFPN结构最开始是被应用到EfficientNet中,与PAN网络只有单一的自顶向下或自底向上路径不同,BiFPN不仅能自底向上传递底层特征的位置信息,而且也能自顶向下传递高层特征的语义信息.
考虑到多尺度特征融合中存在的不同尺度特征信息不一致,以及只利用PAN等改进的FPN又会有很大计算量等问题.利用BiFPN来处理双向路径不仅能更好地提取特征信息,也能使特征融合效果更佳,且在使用BiFPN过程中,3个尺度输出检测层大小是20×20、40×40、80×80,分别用来检测大、中、小目标,而较小的输出层中包含有很多语义信息,这些信息判断误差很大,所以会在同一层次重复多次,目的是使特征提取更加准确.尤其是对绝缘手套和安全帽这类小目标的检测效果更好,准确率也会提升.FPN、PAN、BiFPN的结构如图3所示.图3中不同颜色的圆圈代表不同特征层的节点.
使用BiFPN替代FPN+PAN结构,BiFPN结构采用的是快速归一化融合算法,能让特征图每层都被赋予不同的权重来进行融合,通过减少不必要的节点连接,使其网络更加关注特征层,同时在不影响计算成本的情况下,还增加了一个额外的输入通道,目的是为了更好地融合特征,特别是对小目标的检测效果更佳.
快速归一化融合的计算公式如式(7)所示,它能将权值归一化到[0,1],旨在提升特征层的特征提取速度.
(7)
2.3 改进后的网络结构
将CA模块和BiFPN结构加入到原YOLOv5中,生成改进的YOLOv5模型,其模型结构如表1所示.模型参数有7 183 961个,改进前的YOLOv5模型参数为7 066 239个,改进后比改进前参数仅多了1.67%,而改进后的模型中添加了CA模块和BiFPN结构.表1中BiFPN结构不仅能从底向上传递底层特征的位置信息,而且也能从顶向下传递高层特征的语义信息,对小目标特征提取的能力更加优越,而整体网络模型的大小只是略微增加.
3 实验结果与分析
实验用计算机操作系统为Windows 10,CPU型号为Intel(R) Core(TM)i7-11700k CPU@3.6 GHz,GPU型号为GeForce RTX3090,显存大小为24 GB,内存大小为32 GB.所有模型基于 Pytorch1.9,并使用Cuda11.0和 Cudnn8.0.4对GPU进行加速.
3.1 数据集制作与处理
在深度学习中,数据集很大程度上左右最终实验结果的好坏,本文数据来源于天池大数据竞赛中广东电网智慧现场作业挑战赛数据集和网络上下载的一些图片.通过数据清洗、图像增强(旋转、对比度变化、翻转、裁剪、缩放)等方式,最终获得了3 104张关于电力工人作业时佩戴绝缘手套、安全帽等防护装备的图片,其中训练集2 273张、验证集581张、测试集250张,采用Labelimg工具打标签,标签分为3种,分别为“绝缘手套(insulating gloves)”“安全帽(helmet)”“工人(person)”.小目标检测中标签、图片数据样本分布如图4所示.
表1 改进的YOLOv5整体网络结构Tab.1 Improved YOLOv5 overall network structure
(a) 检测类别标签分布 (b) 物体大小分布图4 标签、图片数据样本分布图Fig.4 Distribution of labels and images data samples
由图4可知,检测图像中大多数的绝缘手套、安全帽都属于小目标.从图4(a)中标签分布可以知道绝缘手套约3 400个,安全帽约2 800个.从图4(b)物体大小分布可知,小目标检测类别个数占比很大.
3.2 网络训练
网络训练前先对模型的超参数进行配置.初始学习率lr0=0.008 6,最终学习率lr0×lrf=0.001 72,权重衰减系数weight_decay=0.000 5,学习率动量momentum=0.928,预热初始化动量为0.8,它的偏置学习率为0.1等.权重衰减系数的效果是在损失函数后加一个正则化项,目的是减少模型过拟合的问题;学习率动量主要是在训练网络时,对网络进行权值初始化.优化器采用随机梯度下降法,训练周期设置为150轮.然后使用K-means算法重新聚类,再利用矩形填充训练,加速模型推理过程.在训练过程中还采用了对于上一轮训练结果不好的图片,会在下一轮增加权重的训练方式,并且调节超参数中的余弦退火函数值以及改变其中图片剪切比例、翻转方向、旋转角度、缩放大小、学习率动量值、Mixup系数等.最后经过反复地训练,得到了最佳的改进YOLOv5网络模型.
3.3 算法改进前后模型评估对比
3.3.1 评价指标 模型的性能需要一个好的评估方式,为了防止样本目标分布不均,导致无法反映模型的实际性能,采取精度(precision,P)、召回率(recall,R)、平均精度(average precision,AP)、平均精度均值(mean average precision,mAP)作为评价指标.其中精度主要针对预测结果水平,而召回率主要针对本身的样本,相关公式如下:
(8)
(9)
(10)
(11)
其中,TP(true positives)表示将正类判定为正类,即模型中预测正确的量;FP(false positive)表示将负类判定为正类,即模型中预测错误的量;FN(false negative)表示将正类判定为负类,即模型中本来是正样本却被误检了的量.AP是P-R曲线(P为纵坐标,R为横坐标)所围成的面积,mAP是所有类别的平均精度AP的均值,其中m是检测类别数.
表2 改进前后算法检测总体性能对比Tab.2 Comparison of detection performance before and after improvement
表3 改进前后检测的每一类性能对比Tab.3 Comparison of accuracy performance of each type of detection before and after improvement
表4 消融实验结果Tab.4 Results of ablation experiment
3.3.2 算法改进前后检测水平对比 经过反复实验,改进YOLOv5算法前后的目标检测总体性能对比结果如表2所示,改进前后模型对数据集中每一类的检测精度对比如表3所示.表2中的mAP0.5是将交并比设为0.5时,计算每一类图片的AP,然后所有类别求平均,即mAP0.5.mAP0.5∶mAP0.95是取不同交并比值(从0.5到0.95,步长0.05)时的平均mAP.
从表2可以看出,改进后的YOLOv5对所有检测类的精度、召回率、mAP值都高于改进前的YOLOv5,实验结果表明平均精确度提升了1.8%,达96.4%,平均精确度均值提升了0.4%,达93.3%,虽然改进后的参数个数稍有增加,模型大小也比改进前略大,但模型仅大了0.9 MB,速度仅比改进前慢了11帧/s,但还是满足了实时性的要求.综合来看,这种改进是合理的,既提高了检测的准确率,又满足了现实中实时检测的要求.
从表3可以看出,绝缘手套的识别效果提升了3.3%,效果最好,安全帽与作业区人员的识别效果分别提升了0.8%和1.2%.召回率方面改进后算法对于绝缘手套提升了0.6%,但安全帽和作业区人员检测的召回率分别降低了1.4%和0.7%,但mAP值方面改进后比改进前分别提高了0.9%、0.9%、0.3%.综合来看,改进的算法整体提升了识别检测的效果,且能对绝缘手套这种较小目标有好的识别效果,能够降低误检、漏检的概率.
3.3.3 消融实验 为了更加全面地比较模型的优劣,还做了消融实验,旨在对比增添模块前后对原模型的影响,所有模块都是在原版YOLOv5的基础上添加的,消融实验结果如表4所示.
由表4可知,添加单独的注意力模块时,CA模块的效果最好.在已有注意力模块基础上再添加BiFPN时,YOLOv5+BiFPN+CA模型的实验结果最好,即改进的模型在检测精度、召回率、平均精度均值上是最高的.
3.3.4 不同算法的检测结果对比 为了更好地验证算法结果,改进的YOLOv5算法还与其他类似目标检测算法进行了比较,包括SSD、YOLOv3、YOLOX[21]、原版YOLOv5,各种算法检测的精度结果如图5所示.
图5 不同算法检测类别的精度Fig.5 Precision of detection categories by different algorithms
(a) 原图(b) 原版YOLOv5 (c) 改进的YOLOv5图6 改进前后YOLOv5在有遮挡、漏检、误检情况下的检测效果Fig.6 Detection effect of YOLOv5 before and after improvement in case of occlusion,false detection and missed detection
由图5可知,改进YOLOv5网络模型对所需检测目标的精度最高,特别是对绝缘手套、安全帽等小目标的检测水平相较于其他算法有很大地提高.
3.3.5 改进前后检测效果 对比了改进前后YOLOv5在不同检测条件下的差别,部分实例如图6所示.由图6可知,在检测的过程中所测物体可能会受到遮挡、位置、距离、天气等因素的影响,从而出现漏检或误检的情况.而改进YOLOv5模型相比于原版模型有着明显的优势,通过添加的BiFPN和CA模块,使网络训练更加专注于小目标物体的特征提取,让生成的模型更好,更加便于检测,既降低了目标检测的漏检率和误检率,又提升了检测的精度,在电力工人安全装备的目标检测算法上具有一定的先进性.
4 结论
针对传统的电力工人作业安全关键装备检测算法误检率、漏检率高、检测效果差、识别精度低的问题,提出了改进型的YOLOv5算法,通过添加BiFPN结构和CA模块来提高检测的精确度,特别是对小目标的检测识别较传统的算法有了更大地提升.其中添加的BiFPN结构为特征提取提供了很好的帮助,而CA模块能让网络模型更好地注意小目标,从而提高了目标检测的能力.实验结果表明,改进的YOLOv5网络在满足实时检测的基础上,最终的精确率、召回率更高,检测效果更好,大大提升了算法的鲁棒性以及泛化性.