深度学习在安全帽和安全服穿戴检测中应用
付伟 郑良权 王宪东 李冠璋 尤玲玲
1北华大学 韩国东新大学博士在读 2吉林医药学院 韩国东新大学博士在读 通讯作者:韩国东新大学
为了保障在施工现场作业的工人人身安全,一般通过人工审查的方式,对现场人员佩戴安全帽、穿着安全服监管。这种方式监管效率低下、成本较高。本文设计了一种基于 YOLOv5S 的安全服与安全帽轻量化改进检测算法,将原有的部分模块进行替换,有效降低模型的复杂度;将注意力机制引入主干网络有效的抑制了干扰信息,通过对 Neck 层进模块替换降低了参数量,提升了检测精度,并部署于小型设备 JetsonNano 上。实验结果表明,改进算法在保证识别精度的同时,参数量、计算量、模型体积三个重要制约因素都大幅度降低。轻量化的检测算法成功实现了低算力平台部署,为工业现场低算力设备上部署动态检测算法提供了高效、可靠的解决方案和思路。
1.介绍
建筑施工现场因为设备多、人员多、杂物多,在施工过程中存在高空坠物以及突发性意外的可能性。按照安全生产的要求正确佩戴安全帽穿着安全服,可以在施工现场最大限度保护施工人员的人身安全,佩戴安全帽将有效保护头部的安全,穿着安全服可以通过视觉引起其他施工人员的注意,防止因为观测不到位引起的危险性行为。由于施工人员的素质参差不齐,以及施工企业对于安全装备重视程度的差异,绝大多数施工现场都是通过对施工人员进行安全教育以及在入口通过人工方式进行审核。这种人工方式除了具有效率低下成本高的不足之外,很难在施工过程中动态的对施工人员是否全程佩戴安全帽穿着安全服进行跟踪和判断。传统的人工方式最多只能起到对于进入现场的人员一个提醒的作用,如果施工人员本身对于安全施工的重要性认识不足或者检查人员在施工过程中不能及时发现安全隐患,则极易出现安全事故。随着计算机技术的发展,越来越多的施工现场应用了视频监控系统,利用现有的视频监视系统的数据,进行相关图像的识别可以有效的降低传统的人工监督的费用并且提高效率。传统的图像识别方法需要人工干预进行图像特征提取。深度学习是一种基于神经网络的人工智能策略,通过对大量的数据的训练和优化,实现数据的自动分类和识别。深度学习算法能够从原始数据中自动学习特征无需人工提取,从而大大降低了难度和工作量。基于检测步骤深度学习算法可以划分两大类一类是两段算法,如 Fast R-CNNFasterR-CNN Feature Pyramid Network(FPN)这些算法在识别目标类别和校正候选框之前,会为可能得 tar-gets 生成候选框,另一类是单阶段目标检测算法以 YOLO 系列和SSD 为代表,这种算法可以精确定位目标在图片上的位置。单段YOLO 系列算法检测时间短,代码量小,在很多领域进行了应用。将深度学习应用于施工现场的安全监测,可以通过特定的算法在采集的视频数据中自动检测施工人员是否按照要求佩戴安全帽,穿着反光安全服,实现施工过程中的动态监测。
2.前期研究基础
2.1YOLO 算法:YOLO(You Only Look Once)系列算法是一种单阶段(One-Stage)目标检测算法。通过将目标检测转换为回归的方法来解决问题,广泛用于目标识别,位置判断。从 2016 年提出,到现在以及发展到了 YOLOV1~YOLOV12 等多个版本。YOLO 算法采用了全卷积神经网络,首创的将输入图像划分为 S*S 个网格,每个网格负责检测特定区域内是否存在物体,通过单次向前传播预测边界框和类别概率,随着技术发展不断迭代,目前应用范围比较广泛的有 yolov5 版本、yolov7 版本和 yolov8版本。其中 YOLOV5 采用PyTorch 框架实现,具有便于训练和推理的特点、通过对框架结构的可自主修改进一步优化,从而提升计算效率。模型不同版本,适应不同计算资源需求,YOLOV5 特别适用于计算力有限的应用领域。YOLO 算法被广泛的应用在小目标的识别上。
2.2ghostnet:由中国的华为诺亚方舟实验室在 2020 年提出,通过减少冗余特征图计算的方法实现在保持模型性能的同时显著降低参数量和计算量。目前 Ghostnet 被广泛嵌入其他网络用于轻量化设计,有效的降低其他网络参数总量,以便将该网络应用于低算力的边缘设备中。
2.3C3CBAM:由 C3 和 CBAM 结合而成是 YOLOv5/YOLOv8 等目标检测算法中常用的模块,通过两者的结合实现提升特征提取效果并降低计算复杂度的目的。C3 是CSPNet 的改进版本,采用 3 个卷积层替代 CSP 的复杂结构,达到减少计算量目的。CBAM 通过结合通道注意力和空间注意力方式,增强关键特征并抑制噪声。
3.基于YOLO 算法的改进设计
目前YOLO 算法在安全帽小目标系统检测应用中主要通过对原有的结构进行优化或者加入新的模块来达到性能的提升。主流的研究方案:1).采用轻量化网络结构方案,通过对现有的YOLO 网络进行优化降低冗余计算,通过减少参数量来提升检测的速度;2).增加注意力机制,实现动态特征增强,例如增加 SE、CBAM 等实现在特定应用场合提升目标检测精度;3).采用特征融合与金字塔的方法,解决多尺度目标检测问题,例如通过 FPN、PAN、增强系统对于上下文特征信息传递分支。
目前很多算法都可以应用于安全帽和安全反光衣的检测上,但是普遍对于算力要求比较高,计算量大、参数多限制了其应用的场合和范围。本文提出一种改进算法,采用 YOLOV5 作为基础算法,通过在其现有框架中进行局部模块替换的方式来降低参数量和计算量达到降低算力的目的。
YOLOv5 结构上分为输入部分、主干网络、neck 层、预测输出。本设计中通过对主干网络进行轻量化改进以及 neck 层进行模块替换实现目的。
在YOLOv5 的主干网中,输入处理的标准图片通过第一个卷积层,完成输入图片的初级特征提取;初步处理的数据送入第二个卷积层完成初级特征的进一步组合和提取进而形成更复杂的特征图。处理完的数据送入C3 模块中完成特征增强的同时降低计算量。最后第三个卷积层对特征进行特征图进行调整,最终输出的是高度抽象化的特征图供后续处理使用。卷积计算、残差连接及特征融合都是由 C3 模块完成。
改进算法中主干网络轻量化方法如下:针对现有结构中卷积计算量较大的情况,采用Ghost 模块将对 C3 进行替换,降低卷积计算量。首先由Focus 模块进行降维处理,在最大限度保留图像中原始信息的同时降低图片的分辨尺寸,再由 Ghost 模块采用线性计算的方法计算出镜像特征,送入 CA 模块,获取方向信息和位置信息的注意力图,并将结果输出为后续处理提供支撑。通过 CA 注意力机制配合 Ghost 模块使用,可以提升对无效信息的抑制效果,达到增强提取特征的效果。
在YOLOv5 的neck 层中,主干网络的深层特征送入卷积层进行通道数量的调整,将特征图送入上采样进行放大,然后与主干网络另一分支浅层的特征图进行拼接;将拼接后的特征图送C3 模块,完成混合特征进行提取;送入另一个卷积模块完成通道调整,送入另上采样模块完成特征图进行放大的操作;将二次上采样后的特征图与主干网分辨率最高的最浅层特征图记性拼接;将二次拼接后的特征图送入C3 模块对混合后的特征进行提取,最后将提取的最新特征图送入一个卷积模块进行处理输出最终特征图,用于最终目标对象的识别。C3 模块里负责残差卷积计算,跟主干网络中一样需要对C3 模块进行替换。
采用CBAM 模块替换C3 模块,CBAM 由两个部分组成即通道注意力和空间注意力。每个部分负责的功能各不相同,其中通道注意力采用全局平均池化和最大池化后的MLP 模块生成权重,通过激活函数,将两个权重进行整合形成新的通道权重值,通过通道注意力的处理将重要通道的特征值进行放大,将次要通道的特征值进行抑制;而空间注意力通过卷积处理平均池化和最大池化后的特征在通道维度进行拼接形成新的 2 通道特征图。利用卷积层进行压缩,利用激活函数生成新的空间权重图。将这个权重图与输入特征相乘,计算出重要区域的特征。
在neck 层实现动态特征增强的方法如下:将主干网络深层特征送入卷积层进行调整,接着送入上采样对特征图进行放大,与主干网络另一分支浅层的特征图进行拼接,完成细节与语义信息的结合;将混合后的特征送入 C3CBAM 模块进行处理,在这里完成混合特征的提取与注意力增强,将新的特征送入卷积层进行通道数量的调整,接着将特征图送入上采样对特征图进行放大,然后与主干网络最浅层的特征图进行拼接,将混合后的特征送入 C3CBAM 模块进行处理,在这里完成最后含有多尺度信息的特征提取与注意力增强,输出预测结果。
使用 CBAM 模块显著提升了 neck 层多尺度特征融合的判别能力。降低了模型参数量与计算量,有效提升了检测精度。
4. 实验
实验部分设计的安全帽安全服检测方法:首先对采集的图片中人员位置进行定位,判断图片中是否有人存在;其次筛查出来图片中人员的头部可能区域;利用事先训练好的头部重作为标准来确定头部位置;通过对图片目标检测结合训练的安全帽权权重进行网络识别。最后,根据特征确定图片中人员的头部是否佩戴安全帽并输出最终结论。
4.1 数据收集和预处理
本实验中的数据集采用开源的 SHWD 图片数据集,其中共有 2551 张相关图片,包含了戴安全帽转穿着安全服、未佩戴安全帽穿着安全服、带安全帽未穿着安全服以及未佩戴安全帽同时未穿着安全服的所有情况。
在训练前利用LabelImg软件对图片进行人工标记,分别把佩戴安全帽的标记为正,把未佩戴安全帽的标记为负.实验训练的硬件平台是英伟达的RTX4080GPU。
4.2 模型训练与对比
YOLO 算法不同版本参数总量、体积大不相同,总体上来说参数总量越多、复杂度越高对于小目标的识别效果也就越好。通过对YOLOv5 三种不同的版本算法对同一SHWD 数据集进行试,评估其性能,测试结果分别是:平均精度 0.917,0.916,0.919 从数据上可以看出,三个不同版本 YOLO 算法在对 SHWD 数据集进行目标识别时差距不大。
4.3 基于 jetson nano 平台的系统部署
实验硬件平台选择英伟达的Jetson Nano,部署的操作系统为Linux,并安装:Pytorchv1.7.1、OpenCVv4.4.1、Yolov5 v6.0、cmake、 g++ 、 patchelf、 FastDeploy 等软件。
4.4 系统运行效果展示
在Jetson Nano 上导入相关依赖库,输入命令进行编译推理,推理效果显示能够准确辨识图像中人员是否佩戴安全帽并且同时是否穿着安全服,能够出对应的提示信息。
改进的算法也采用相同的数据集进行了 200 次的训练后得出的结果如下:改进算法的 mAP 为 93.6% ,参数量从 7.2M 降低到 4.28M 下降比例为 40% ,计算量从15.78GFLOPs 降低到 9.2GFLOPs 下降比例为 41.7% ,模型大小从 13.68MB 为 8.58MB降低比例为 37.3% 。
上述实验结果表明,在YOLOv5 算法中通过模块替换和引入注意力机制的方式在大幅降低模型复杂度的同时保持比较高的检测精度。对计算产生的每个边界区域均采用最简单的加权累加平均滤波方法,最大限度降低干扰信息的影响,提升模型在遮挡、复杂环境下的鲁棒性。
5.结论
通过对现有的相关算法进行改进,可以部署到算力较低的平台上完成人工智能的视觉识别工作。工业现场环境恶劣,很多现有的工业级设备的算力不高,但是具有良好的稳定性。采用这种方法可以在保证检测精度的同时,为边缘设备上的实时检测提供了高效、可靠的解决方案。