1. 引言
长期以来,我国安全工作的重点都放在防范重特大事故上,对安全帽的使用重视不够,认为安全帽不会引发大事故,思想上存在麻痹松懈意识,在工作中因安全帽质量问题或使用不当造成的人员伤亡的事故时有发生[1]。由于人员的不安全行为导致的矿山事故时有发生,所以保证井下人员的安全作业是矿山企业安全管理的重要内容[2]。
伴随着工业4.0的到来,矿井人员的日常开采工作及监督管理也进入信息化、智能化阶段[3],但是这样的系统的智能化是指通过WEB浏览器可管理、查看、检索、回放任意关键场所视频图像[3] [4],跟传统点对点的监控相比其视角仍然固定,无法进行实时的目标检测以及跟踪。
随着深度学习的发展及其在目标检测等图像任务上的成功应用[5],利用深度学习自动提取特征的功能,追踪技术已经发展出一种能够精确判别并具有高度泛化能力的目标特征,这一进步超越了传统的手动特征提取方法。得益于其高级的高维特征提取功能,目标追踪算法的性能也得到了显著提高。
综上所述,本文为克服视角固定,无法进行实时检测以及跟踪目标进入矿井前安全帽佩戴情况,设计了一种系统,其整合了多个组件,其一使用嵌入式部署改进yolov4网络以实现高效的安全帽佩戴检测功能,其二使用OpenCV的脸部样本深度学习文件并搭配其配套的DNN模块,实现改进目标跟踪算法以实现跟踪功能,将两者融合成为一种混合检测系统,实现对目标的实时检测跟踪、控制和警报为一体的矿井电梯安全检测系统。
2. 安全检测系统的总体设计
系统架构中,香橙派5plus充当上位机,是平台的主控模块,可以运行Ubuntu操作系统,基于此,本设计中用香橙派5plus开发平台用python编程语言作为系统开发程序。如图1所示,通过加载与其连接的广角摄像头获取到现场实时画面,经过香橙派处理后,再通过串口与下位机主控通讯,实现控制摄像头转向模块的舵机调整角度、预警模块的蜂鸣器警报以及显示模块的OLED屏幕显示的功能。
同时下位机主控还设计有两个电源输入口,可同时接入两个电源进行DC供电与USB供电的双供电模式,最大接入电源为25 V直流电源,电源输入到稳压模块后,稳压到5 V电压,同时给上位机以及下位机进行供电,从而保障了整个硬件系统的稳定运行。
在本文中上位机的主要功能就是实现人脸识别跟踪的主要控制以及检测人员是否佩戴安全帽。通过使用OpenCV加载深度神经网络(DNN)模块实现的人脸检测和追踪,香橙派能够准确地识别人脸并跟踪其移动。一旦识别到人脸,系统将计算旋转角度,并通过下位机的控制板,控制摄像头云台舵机的旋转使得单个人脸或者多个人脸识别框的几何中心一直位于画面中央,这样能够保证最大数量的人员处于画面中。同时在识别人脸的过程中,通过并行处理加载改进yolov4模型,对安全帽佩戴进行检测。
Figure 1. Hardware system architecture
图1. 硬件系统架构
此外,下位机还负责控制蜂鸣器的报警以及OLED屏幕的显示,以实现全面的安全监控和报警功能。因此,该系统充分利用了香橙派的处理能力和DNN技术,实现了高效的人脸实时检测追踪控制。
3. 硬件系统设计
3.1. 上位机平台
如图2所示上位机采用的是香橙派5plus的8G版本,它是国产的一个开放源代码的硬件平台,其搭载的Soc处理器是基于ARM架构打造。其可兼容Linux系统绝大部分的开源软件资源,可以直接使用,同时还拥有丰富的GPIO接口,支持多种深度学习框架的配置与安装,极大提高了平台的扩展性[6]。
Figure 2. Orange Pi 5plus platform
图2. 香橙派5plus平台
3.2. 下位机平台
下位机的主控采用了STM32F103C8T6型号的单片机开发板。此主控通过自主设计PCB,将单片机最小系统开发板与多个功能模块相连接,从而响应上位机下达的一系列控制指令。
如图3所示,香橙派作为上位机与自主设计的下位机融合成一个整体,共同构成了安全检测系统,为本设计的实现提供了有利保障。
Figure 3. Schematic diagram of the overall R&D platform
图3. 整体研发平台示意图
4. 软件系统设计
4.1. 上位机软件设计
本文使用OpenCV加载实时画面,利用其内嵌的DNN功能加载深度学习的模型,对图像的画面进行提取判断,当识别到人脸后会对其进行画框,随后根据其运动轨迹,进行跟踪,始终保持人脸单框或者多框几何中心位于画面中心。在识别人脸后,还采用OpenCV的级联分类器,通过特定的训练集训练的分类器判断是否佩戴好安全帽,经过一些的数据采集分析处理后,将以上所有信息所给定的判断再通过串口发送指令给下位机。
在本文的设计中,上位机主要采用Python编程,通过分析摄像头捕获的图像和视频来确定摄像头实时跟踪的方向。在目标跟踪方面,采用OpenCV 4.0版本以后新加入的DNN模块,加载OpenCV官方深度学习训练好的人脸模型进行目标识别跟踪。在安全帽识别方面,则是采用直接的Linux版本的pytorch加载训练好的改进yolov4模型进行识别。
4.2. 下位机软件设计
下位机负责执行所有上位机传达的指令,类似于机器人的开发控制板,需要提前写好底层代码。在本文中,下位机采用atio函数,用于将字符串转换成整数,配合指针运算,可将任何角度传入舵机控制函数中去,进行0~180度全方位的角度调整。在整个下位机底层代码设计中,为了准确无误地接收来自上位机的报文,在接收时以特殊字符“@”为接收的起始点,直到最后一个字符串“\r\n”的接收完毕,从而关闭串口准备下一段信号的接收。
5. 算法设计
5.1. 图像获取与分析
在图像采集阶段,主要通过接入的摄像头进行操作。由于是混合识别,需要将获取的图像进行分流,一部分用于人脸识别跟踪,一部分用于安全帽的识别。为了拥有更好的香橙派对于目标识别跟踪的观测体验,本文使用网线连接香橙派并且调用后台窗口,实时观看系统对于目标识别跟踪的情况。
5.2. 安全帽识别
YOLO (You Only Look Once)系列算法常常被用于目标检测中去,是目前已知主流算法之一,一般来说由主干网络(Backbone)、颈部(Neck)也就是特征融合部分和头部(Head)构成。在本文的设计中,为了准确识别安全帽,同时考虑到每个人带上安全帽的颜色以及形状也大不相同,为了提高识别的泛化性,为此采用改进YOLOv4对施工人员进行安全帽佩戴检测。
YOLOv4 [7]算法是YOLO系列第4代算法YOLOv3 [8]的改进版本。YOLOv4算法在检测精度和检测速度方面相对YOLOv3都具有显著优势,这主要归功于其在多个方面的优化和增强。YOLOv4算法的网络结构如图4所示。
Figure 4. YOLOv4 algorithm structure diagram
图4. YOLOv4算法结构图
5.2.1. 对注意力模块的改进
目前几大常用的主流注意力机制有SE注意力机制、MSCA注意力机制以及CBAM注意力机制等。本文检测的目标为移动目标,需要动态的调整每个位置的重要性,捕捉空间层次的特征信息,又因为安全帽与人脸共同组成了“hat”的标签,人物在移动时还得动态的调整每个通道的权重,增强有用特征的表达,抑制无用特征的影响,针对以上需求预备采用由Woo等提出的CBAM (Convolutional Block Attention Module)注意力机制[9]。但是,在目标距离摄像头较远时也就是画面中检测目标较小时,画面过于杂乱,导致容易检测不到或误判[10]。为此,借鉴yolov4中的SPP模块中多特征融合的思维[11],将其加入到CBAM注意力模块中。这样通过不同尺寸的卷积核,可以捕捉到不同尺度的特征,从而对输入数据的多尺度信息进行建模,并且不同尺度的特征包含了更多的信息,融合后的特征表示得更加丰富和细化,提升了模型对复杂场景的理解能力[12]。最后,再加入维度注意力模块,这样在多特征融合和前CBAM注意力机制的基础上,进一步对特征图进行细化处理。基于以上的改进方法,得到一种全新的注意力模块MCBAMD (Multi-scale convolution for CBAM with Dimensions attention),其结构如图5所示。
首先,输入的特征图向量x进入MCBAMD注意力模块中,先通过多特征融合模块[13]得到
,其结构如图6所示,具体公式如式(1)所示:
Figure 5. MCBAMD attention structure
图5. MCBAMD注意力结构
Figure 6. Multi-feature fusion module network structure
图6. 多特征融合模块网络结构
(1)
(1)式中,
表示卷积核大小为k (k = 1, 3, 5, 7, 9)的卷积操作,通过拼接这些卷积层,最终输出
的特征图。
MCBAMD注意力机制是对CBAM注意力机制的一种改进,其通道注意力和空间注意力模块与原CBAM中的通道注意力以及空间注意力模块相同,这里就不展开赘述了,下面介绍维度注意力模块。
维度注意力模块[14]采用了一种类似于MLP的结构,通过两个1 × 1的卷积层一个ReLu激活函数对输入特征进行加权的调整。其结构如图7所示。
Figure 7. Dimensional attention module structure
图7. 维度注意力模块结构
为输入特征,设
、
分别为两个卷积层的权重矩阵,δ为Sigmoid输入函数,那么其公式如式(2)所示:
(2)
这样,维度注意力模块就能有效地增强了输入特征图的表达能力,使得模型能够更好地关注重要特征,提高整体识别性能。
5.2.2. 对YOLOV4算法颈部网络的改进
在安全帽的检测中,要检测工人是否佩戴安全帽往往是重中之重,一旦事故发生,只要头部不受到建筑物压迫,或许还能有一线生机,检测画面中的背景环境噪音是不必要的特征。检测时的环境较为复杂,使得网络难以注意到重要信息,给模型带来性能影响。为了解决上述问题,本文提出了一种对网络颈部的改进方法,如图8所示,即在上采样的操作之后添加MCBAMD注意力机制(Multi-scale convolution for CBAM with Dimensions attention)。
由于PANet网络中[15],上采样的过程会对图像的质量造成影响,特别的当物体离摄像头较远且在画面中显得较小时,脸部容易在画面中显黑,使得人脸与安全帽组合形成的特征容易被误判,对此MCBAMD注意力机制中的多特征融合有利于补做不同尺度的图像信息,特别是比较小的特征图,通道注意力模块以及空间注意力模块的组合使得模型能够更有效的利用关键特征以及空间维度上更加精准,最后加入维度注意力模块,强调了重要维度特征,进一步提高了特征表示的有效性,提高模型在复杂环境中对安全帽是否佩戴的检测精度。
5.2.3. 实验结果与分析
(1) 实验环境与数据
本次实验是在自筹组装的主机上搭建环境并进行训练,硬件配置为CPU (i9-13900k)、GPU (Nvidia
Figure 8. Improved PANet network
图8. 改进PANet网络
RTX 4090D)、主板(Asus Z690-A);操作系统为Windows11专业版;软件配置为Anaconda、Visual Studio Code;编程语言为python,深度学习框架为pytorch。
实验所用的安全帽数据集,为自建安全帽佩戴检测数据集,是由编写的爬虫程序在谷歌和百度上收集的施工现场图片,然后再与SCUT-HEAD中的一部分图片融合而成。所有图像采用labelimg软件标注类别并且整理为PASCL VOC格式,图像分为两个类别,第一个正样本类别,是佩戴安全帽标记为“hat”,第二个负样本类别,是未佩戴安全帽标记为“person”。该安全帽数据集一共有7000张图片,并且按照9:1划分训练集与测试集。
(2) 网络训练
本文采用安全帽数据集进行网络训练,训练时的输入图片设置为416 × 416,优化器为Adam,下降方式为step。由于本文中改进网络的主体结构没有变,深度学习中的迁移学习的思想仍然适用于本文。由此,网络训练分为两个阶段,第一阶段为预训练阶段也称粗训练阶段,采用yolov4_voc_weights作为预训练权重,目的是以最快的速度来降低损失值并且提取目标特征的同时不让权值具有任意性,第二阶段为正常训练阶段也称细训练阶段,在第一阶段后,调整学习率变小,逐渐优化模型,提升模型的检测性能和准确率。总训练周期设定为140个epoch,训练过程分为两个阶段:第一阶段使用20个epoch,batch size设为12,学习率设置为0.001;第二阶段则延续120个epoch,batch size调整为4,初始学习率为0.001,并在训练过程中逐渐降低至最小学习率0.000001,以便进行更细致的调整。如图9所示为改进yolov4训练时的loss下降曲线,可以看出最终曲线在0.0057处收敛。
(3) 模型性能评估
本文对模型性能的评估采用精确率(Precision)、召回率(Recall)、AP (Average Precision)、mAP (mean Average Precision)作为检测指标,其公式分别如式(3)、(4)、(5)、(6)所示。另外为了体现模型的动态性能
Figure 9. Loss reduction curve of improved YOLOv4
图9. 改进yolov4的loss下降曲线
加入了处理单张图片的FPS值,并且检测100次求平均值。
(3)
(4)
式中,TP (Ture Positive)是真正例,FP (False Positive)是假正例,FN (False Negatives)是假负例。
(5)
式中:P(R)是精确率P在召回率R下的精度值。AP值反映了目标检测算法的鲁棒性和泛化能力,AP值越高对单个目标的检测能力越强。
(6)
式中,C为类别总数;
是第i个类别的AP值;mAP值反应了对于不同类别目标的平均覆盖率。
为了验证yolov4改进的有效性,将yolov3以及yolov4以相同训练方式以及训练集训练后与改进yolov4进行对照。如表1所示。
由表1可知,相比于原yolov4,改进yolov4的精确率、AP、mAP均略有所上升。这表明,在相同的训练集下,本文提出的改进检测方法能够识别出更多佩戴安全帽和未佩戴安全帽的目标,并且其综合型性能最佳,效果更好。虽然召回率略有下降,但是为了提高精确率,模型可能会变得保守,这导致一些实际的正类样本可能被漏掉,从而召回率下降,这种精确率与召回率的权衡关系通常会导致精确率和召回率不一定同时提高,因此精确率上升但是召回率略有下降是正常现象。相比于前面提到的静态检测指标,动态检测方面的FPS值的提升更加巨大,相比于原yolov4,改进FPS值提升达78.6%,这说明在实时检测方面,改进yolov4检测速度更快。虽然改进yolov4的FPS值不如yolov3,但是众所周知,yolov4是yolov3的改进版本,yolov4权衡了检测精度与检测速度之间的关系,本文在原yolov4上不仅加强了检测精度,同时加强了检测速度,使之完全满足部署在嵌入式上面进行实时检测。
Table 1. Horizontal comparison test results
表1. 横向对比实验结果
算法 |
精确率(Precision) |
召回率(Recall) |
AP |
mAP |
FPS |
hat |
person |
hat |
person |
hat |
person |
yolov3 |
92.66% |
81.58% |
83.24% |
69.02% |
91.48% |
77.55% |
84.51% |
107.06 |
yolov4 |
94.18% |
88.43% |
88.87% |
84.46% |
94.16% |
88.84% |
91.50% |
32.74 |
改进yolov4 |
95.3% |
89.33% |
86.40% |
83.31% |
94.33% |
88.85% |
91.59% |
58.46 |
为了进一步验证改进yolov4的实时检测性能,本文取用一段工地入口处的监控视频,并分别用yolov3、yolov4以及改进yolov4对进出口处人员佩戴安全帽的情况进行检测,如图10所示,为检测的具体情况截图,图10(a)~图10(c)从左到右分别为yolov3、yolov4、改进yolov4对于视频实时检测情况的截图。
Figure 10. Screenshot of real-time monitoring video detection
图10. 监控视频实时检测画面截图
从图10中可以看出,yolov3在入口处误判,将佩戴安全帽的正样本判断为“person”的负样本,其他时间没有检测到人员佩戴,而yolov4没有出现在入口处的误判行为,这更加验证了yolov4相较于yolov3对于检测速度与检测精度做了平衡,但是yolov4模型在走廊末端的最后一刹那,由于检测目标过小没有检测到。反观改进yolov4,不仅全程全部正确识别检测到佩戴安全帽的正样本,而且在入口处预测值为0.83,大于yolov4在入口处的预测值0.67。同时,在人员行至走廊中间时,预测结果显示,改进后的YOLOv4模型在性能上优于原始模型。这表明本文提出的改进方法确实有效,能够更好地挖掘图像的深层特征信息,提升了检测能力。
5.3. 目标跟踪
传统的识别中,会面临两大问题。第一,摄像头总是被固定在一个比较固定的位置,当人从画面中走过后,即检测结束。在实际的生产过程中,若采取传统的方法进行检测,工人很可能在进入电梯前或者离开电梯后不戴帽子,只是在进入电梯时佩戴安全帽,为此本设计采取目标的实时跟踪,将生产安全执行到最大化,确保工地的安全生产。第二,在传统的识别项目中,摄像头被固定后,无论多大广角,总是有一部分人不在画面中,或者一部分人在画面中另一部分人在画面边缘不利于安全帽检测,为此将多个人脸尽可能框定在画面以检测安全帽佩戴很有必要。所以,本文的目标跟踪直接决定了上述安全帽的识别的最大数量的多少以及持续检测的时间。
本文针对首要问题,采用深度神经网络(DNN)技术与连续帧同步融合策略[16]-[18]。使用OpenCV内嵌的DNN模块加载OpenCV官方训练好的人脸识别权重文件,在画面中识别出人脸特征,再运用OpenCV内嵌的Rectangle功能对目标周围描绘一个矩形边框,以实现对该特定实体的视觉锁定,确保其在后续动态过程中保持可见状态。紧接着,依据已绘制的矩形区域,可精确提取其以像素为单位的坐标值x与y。因为本文设计的云台只涉及左右移动跟踪,因此只需要x的坐标即可。本文中对于目标跟踪首先是采用背景差分法算出人物移动速度,再根据速度是否达到某一个转动角度所对应的阈值来进行动作。对于速度的运算如式(7)、式(8)所示:
(7)
(8)
式中:
为移动的像素距离,px;
为当前帧的坐标值,px;
为背景帧的坐标值,px;
为移动的速度,px/frame;
是当前帧与背景帧之间的帧差值,frame。为了连续检测与运动,本文将系统强制检测连续两帧的移动距离,也就是当前帧与前一帧人物移动距离,强制使得
frame,这样有利于系统进行实时检测跟踪。
面对第二个问题,即对多个目标进行有效追踪并最大限度地将其纳入画面范围,本文采用多目标的平均坐标值替换单个目标的坐标的方法进行处理[18],公式如式(9)所示:
(9)
式中:
为连续帧之间多个目标的平均坐标值移动的像素距离,px;
为当前帧中多个目标的平均坐标值,px;
为背景帧中多个目标的平均坐标值,px。这样,即使画面中不断有多个目标连续变换位置,系统均可精准依据人物移动速度进行目标追踪,并确保尽可能多的目标处于画面范围内。
6. 部署实验结果
在室内将灯光全开,对整个系统进行模拟实验验证。主要模拟其在工地中露天阳光曝晒下的工况能否稳定运行,整体部署效果如图11所示。图11(a)展示了一个目标未佩戴安全帽的情况,图11(b)展示了一个目标佩戴安全帽的情况,图11(c)展示了两个目标中一个佩戴安全帽而另一个未佩戴安全帽的情形,图11(d)则展示了两个目标均佩戴安全帽的场景。
从实验结果可以看出,当画面中只有一个人物时,摄像头,识别框,以及画面都在正中心,当人物数量增至两个及以上时,可以明显看出摄像头左转,将两个人像识别框的平均几何中心保持在画面中心。同时采用改进yolov4对于安全帽佩戴情况进行检测,极大提高了对于单个或多个人员安全帽佩戴情况检测的可靠性与准确性。
Figure 11. Real-time target tracking and detection effect diagram
图11. 实时目标跟踪以及检测效果图
7. 总结和展望
本文深入探讨了矿井电梯安全事故频发的现状,并针对此现状进行了分析,从而确认了研究的实际可行性。本研究从安全检测的总体架构设计、硬件系统构建、软件系统设计以及核心算法研发等四大维度,全面阐述了研究的具体过程与实施方法。
首先,总体架构设计合理,先是给出了总体的硬件选取搭建思路以及软件系统的设计;其次对于硬件系统构建,详细给出上位机选用以及下位机设计思路,并且精确到具体型号;另外,对于软件的设计,针对上位机给出如何构建检测系统以及下位机对于上位机指令的接收与动作具体方法;最后,算法部分为安全帽识别算法与目标追踪算法,在安全帽识别算法部分详细给出了基于yolov4算法的改进方法、横向对比实验结果以及监控实时检测的对比结果,在目标追踪算法部分,给出了具体的算法公式以及实际上机部署结果。
经部署结果可以看出,安全检测系统可以在对图像进行获取并处理后,通过深度学习的方法,将目标检测算法与跟踪控制算法相结合,以及配合硬件系统,可以实现对于单一或者多个目标进行实时跟踪检测,验证了该系统可以较好地实时跟踪检测目标,该系统在工程电梯安全检测中将有很好的应用。
就整个系统的设计而言,使用了大量软硬件结合的方法,配合深度学习,可以很好地完成安全检测任务,在当今世界大力发展人工智能的趋势中,对于进一步完善智慧工地技术,防范矿井安全事故的发生,进行高度泛化目标特征的安全检测具有深远意义。