基于改进YOLOv7 和ByteTrack 的煤矿关键岗位人员不安全行为识别
2024-04-22韩康李敬兆陶荣颖
韩康,李敬兆,陶荣颖
(1.安徽理工大学 人工智能学院,安徽 淮南 232001;2.淮浙煤电有限责任公司 顾北煤矿,安徽 淮南 232150)
0 引言
煤矿生产各个岗位的工作人员必须保持精神高度集中,才能确保安全生产。然而,由于安全监管不到位、员工安全意识参差不齐,人员不安全行为仍然是导致安全事故的主要原因[1-2]。因此,对煤矿生产中矿井提升机和绞车司机、变电站值班人员、井口信号把钩工(简称信把工)等关键岗位工作人员的行为进行识别,及时、准确地警示不安全行为,防止由于不安全行为造成设备误操作等安全隐患,对保障煤矿安全生产具有重要意义。
随着智慧矿山建设的推进和煤矿生产安全需求的不断提高[3],人工智能技术在煤矿人员行为识别中逐步得到应用[4]。刘浩等[5]采用MobileNetV3 与时空图卷积网络(Spatial Temporal Graph Convolutional Networks,ST-GCN)实现对井下员工静态与动态不安全行为的识别。温廷新等[6]提出了基于迁移学习和深度残差网络的图像识别方法,对煤矿工人的不安全行为进行分类和识别,但该方法对复杂动作的识别率较低。李占利等[7]提出了一种基于3DAttention 的矿工行为识别算法,实现了对煤矿井下跑、跳等不安全行为的识别。王宇等[8]通过SlowOnly网络提取RGB 模态,并与从骨骼模态中提取的特征进行融合,实现对井下人员不安全行为的识别。基于图像特征的行为识别方法在煤矿场景虽然得到了一定应用,但仍面临以下挑战:①煤矿场景复杂多变,监控图像背景中无关人员的活动会对不安全行为识别造成干扰。②常见算法实时性低,无法及时对不安全行为进行预警和干预。
针对上述问题,本文综合考虑矿井人员的姿态与时序特征,提出一种基于改进YOLOv7 和ByteTrack的煤矿关键岗位人员不安全行为识别方法。通过MobileOne 与C3 模块对YOLOv7 进行轻量化改进,构建基于MobileOneC3-YOLO 的关键岗位人员实时检测模型,获取人员准确位置。通过ByteTrack 跟踪算法精确锁定目标人员,排除背景中无关人员对不安全行为识别的干扰,提升不安全行为识别准确率和效率。最后,结合改进OpenPose 模型和STGCN 实现煤矿关键岗位人员不安全行为的分析识别。
1 煤矿关键岗位人员不安全行为识别框架
通过现场调研统计,矿井提升机和绞车司机、变电站值班人员、井口信把工等关键岗位人员不安全行为主要包括疲劳睡岗、离岗、玩手机、侧身交谈,这些行为严重分散了工作人员的注意力,易引发误操作等安全事故。因此,本文主要针对以上4 种不安全行为进行识别分析。
煤矿关键岗位人员不安全行为识别框架如图1所示,其中 φ为特征提取器,*为特征比较器。首先,通过摄像机获取煤矿关键人员监控视频,基于MobileOneC3-YOLO 模型获取人员准确位置,为关键岗位人员跟踪提供稳定、准确的位置信息。其次,为排除背景中无关人员对不安全行为识别造成的干扰,采用ByteTrack 实现关键岗位人员追踪锁定,提升不安全行为识别的鲁棒性。然后,将已锁定人员检测框送入改进OpenPose 模型,提取关键岗位人员的骨架特征,实现人体姿态估计。最后,基于ST-GCN 对人员姿态的时序特征进行分析,实现煤矿关键岗位人员不安全行为识别。
图1 不安全行为识别框架Fig.1 Unsafe behavior recognition framework
2 煤矿关键岗位不安全行为识别方法
2.1 基于MobileOneC3-YOLO 的关键岗位人员实时检测模型
快速、精准地对关键岗位人员进行定位是实现不安全行为识别的第1 步。YOLOv7 作为经典的目标检测框架,检测精度较YOLOv5 提升明显,同时较YOLOv8 降低了模型体积[9]。考虑到实时性与检测精度的双重需求,以及YOLOv7 设计灵活的特点,采用YOLOv7 作为目标检测模型。然而,YOLOv7 复杂的网络结构使其在并行处理大量视频时存在严重的计算延迟。对此,本文采用MobileOne 与C3 模块对YOLOv7 进行轻量化改进,构建MobileOneC3-YOLO 人员检测模型,在维持人员检测精度的同时,提升检测实时性。
MobileOne 是基于卷积神经网络架构的轻量级骨干网络,利用结构重参数化解耦训练阶段和推理阶段[10],其结构如图2 所示。训练阶段主要包括深度卷积和点卷积2 个部分,通过超参数K控制重参数化的分支数。深度卷积部分由2 个卷积模块和单独的批标准化(Batch Normalization,BN)层构成残差结构,点卷积部分则由1 个卷积模块和单独的BN 层构成残差结构。推理阶段,通过重参数化将深度卷积和点卷积分别转换为仅包含1 个卷积和1 个激活函数的等效结构,从而显著提升模块的推理速度,同时保证推理精度。
图2 MobileOne 模块结构Fig.2 MobileOne module structure
C3 模块在跨阶段局部网络(Cross Stage Partial Network,CSPNet)基础上融入残差连接,旨在提升网络学习能力和效率,同时减小模型尺寸[11]。C3 模块结构如图3 所示。第1 个分支包含3 个CBS(卷积-批量归一化-SiLU 激活函数)模块,用于深入提取和细化特征表示;第2 个分支由1 个CBS 模块构成,目的是在不牺牲性能的前提下保持模块的高效性。2 个分支最终合并,以增强特征表达。
图3 C3 模块结构Fig.3 C3 module structure
MobileOneC3-YOLO 人员检测模型如图4 所示。在保持YOLOv7 模型优势的基础上,本文采用MobileOne 改进YOLOv7 的主干网络,并采用ReLU作为MobileOne 的激活函数,以提高网络的计算效率和表达能力。此外,在模型的头部引入C3 模块,以简化模型结构,进一步提升特征表达能力。
2.2 基于ByteTrack 的关键岗位人员锁定方法
煤矿关键岗位人员不安全行为识别过程中,由于无关人员流动,在监控画面中产生了大量无关人员闯入、停留、走动等情况,给不安全行为识别带来了干扰,易导致误检和检测准确性降低。因此,时刻锁定关键岗位工作人员,排除无关人员对不安全行为识别产生的干扰,是提高检测鲁棒性的关键。本文利用ByteTrack 跟踪算法[12]对视频中的人员进行跟踪,通过工作区域持续时间阈值法实现对关键岗位人员的锁定,排除背景中无关人员对不安全行为识别的干扰。
2.2.1 工作人员跟踪
基于ByteTrack 的跟踪流程如图5 所示。首先,通过MobileOneC3-YOLO 模型对视频的每一帧进行检测,得到检测框集合Bt(t为时间)。对于每个检测框bt∈Bt,根据检测得分St和设定的阈值 θ分类为高分和低分检测框。
图5 基于ByteTrack 的跟踪流程Fig.5 ByteTrack-based tracking process
高低分检测框分类规则为
针对由连续检测框组成的轨迹集合Gt-1,通过卡尔曼滤波进行下一帧轨迹的预测,得到预测轨迹,并与检测框进行2 次关联。
2.2.2 工作人员锁定
为实现对关键岗位工作人员的精确锁定,定义工作区域W和时间阈值T,对视频帧中每个跟踪目标d,判断其是否位于定义的工作区域内。对位于工作区域内的目标,系统累计其在工作区域内的停留时间,并进一步评估该时间是否达到或超过时间阈值。若目标的累计停留时间达到或超过时间阈值,则系统将其识别为工作人员进行持续锁定,并通过后续步骤进行姿态估计。人员锁定过程伪代码如下。
2.3 基于改进OpenPose 的人体关键点提取
对跟踪锁定的人员检测框中的目标,采用OpenPose 进行骨架特征提取[13]。OpenPose 使用VGG-19[14]网络作为特征提取网络,但VGG-19 缺乏残差连接,限制了其处理深层特征时的效率和速度,不利于快速响应煤矿生产现场的紧急事件。鉴此,本文采用MobileNetV2 替代VGG-19 作为OpenPose的特征提取网络,这一改进可在保证模型准确性的同时减少参数量,从而有效提升推理速度和效率。
MobileNetV2 主要由扩张、深度可分离卷积、压缩3 个部分组成,通过引入倒残差结构来提高模型的性能和效率[15]。MobileNetV2 倒残差结构如图6所示。
图6 MobileNetV2 倒残差结构Fig.6 MobileNetV2 inverted residual structure
改进OpenPose 网络结构如图7 所示。h′,w′分别为特征图的高和宽;分别分支1 和分支2 在阶段m的损失函数。通过MobileNetV2 对视频帧进行特征提取,将提取的特征输入姿态估计网络。姿态估计网络包含6 个阶段,每个阶段包含2 个分支:分支1 用于预测关键点部位置信图Qm,分支2 用于预测部位亲和场Lm。考虑到关键点两两相连的情况,执行二分匹配,以关联身体部位候选关键点,利用匈牙利算法在图像中找到身体部位与人体的最优匹配,最终解析出目标的骨架姿态。
图7 改进OpenPose 网络结构Fig.7 Improved OpenPose network structure
2.4 基于ST-GCN 的行为识别
结合改进OpenPose 提取的骨架序列,采用ST-GCN 对动态不安全行为进行识别。ST-GCN 是图卷积网络的扩展[16],通过引入时间卷积网络[17],设计了用于动作识别的人体骨架时空图,以捕捉人体骨骼关节空间配置的模式及骨架序列中的时间动态。将提取的骨架信息按帧排列,相邻帧之间相同关节点相连,得到一个以图数据形式呈现的骨架时空图,如图8 所示。其中圆点为人体的18 个关节点,蓝色线条表示单帧中人体内关节点的连接,橙色线条表示相邻帧之间同一关节点的连接。
图8 人体骨架时空图Fig.8 Spatiotemporal map of human skeleton
骨架时空图可表示为
式中:V为关节点集合;Φ为骨架序列的连接边集合;vxi为骨架序列第x帧中的第i个关节点;X为总帧数;Φ1为空间域边子集,表示单帧骨架内所有关节点的空间连接信息,Φ1={vxivx j}(j=1,2,···,18);Φ2为时间域边子集,表示第x个和第x+1个连续帧之间相同关节点的时间连接信息,Φ2={vxiv(x+1)i}。
通过批量归一化层对骨架时空图数据进行归一化处理后,经过10 个时空图卷积层进行卷积;再经过池化层进行平均池化,得到固定大小的特征向量;最后通过全连接层,由Softmax 分类器输出识别结果。ST-GCN 识别流程如图9 所示。
图9 ST-GCN 识别流程Fig.9 ST-GCN recognition process
3 实验结果与分析
3.1 数据集构建与实验环境配置
本文视频数据来自淮南某煤矿绞车司机室、上下井口打点硐室等关键岗位,通过Python 抽帧获得5 241 张图像,初步构建煤矿关键岗位人员检测数据集。为提高模型泛化能力,采用添加噪声、裁剪、改变亮度、旋转、镜像等方式进行数据增强,增强后的数据集包含36 687 张图像,以8∶2 的比例划分为训练集(29 350 张)和验证集(7 337 张),标签类别为“Person”。此外,针对疲劳睡岗、离岗、侧身交谈和玩手机4 种不安全行为,提取3 558 个时长为6~8 s、帧率为25 帧/s 的煤矿关键岗位人员不安全行为数据样本。基于改进OpenPose 提取人体骨架姿态信息,构建煤矿关键岗位人员不安全行为数据集,同样以8∶2 的比例划分训练集和验证集。煤矿关键岗位人员检测数据集如图10 所示。
图10 煤矿关键岗位人员检测数据集Fig.10 Key position personnel detection dataset in coal mines
实验使用的深度学习框架均为PyTorch 1.8.1 版本,Python 版本为3.8.5,服务器配置为Intel Core i9-12900 K CPU,NVIDIA GeForce RTX3090 GPU,64 GiB RAM。
3.2 评价指标
为了有效评估模型性能,采用常见评价指标对模型进行评估,具体指标见表1。其中(↑)表示数值越高效果越好,(↓)表示数值越高效果越差;TP 为被正确检测出的人员数,FP 为误检测人员总数,FN 为漏检测人员总数,GT 为真实的人员标签,IDSW 为ID 切换次数。
表1 评价指标Table 1 Evaluation indexes
3.3 人员检测模型性能分析
为验证MobileOneC3-YOLO 模型的优势,基于煤矿关键岗位人员目标检测数据集,将其与YOLOv5、YOLOv7 和YOLOv8 模型进行对比,结果如图11 所示。可看出,迭代200 轮后,模型精确率逐渐趋于稳定,MobileOneC3-YOLO 模型的精确率最终稳定在93.7%,训练效果优于其他模型。
图11 精确率曲线Fig.11 Precision curves
模型检测精确率、参数量和单帧图像推理耗时对比见表2。可看出,MobileOneC3-YOLO 模型参数量为2.51×107个,较YOLOv5,YOLOv7,YOLOv8 分别降低19.5%,32.5%,42.4%;MobileOneC3-YOLO 模型的单帧图像推理耗时为0.020 8 s,推理速度较YOLOv5,YOLOv7,YOLOv8 分别提高47.3%,52.4%,56.2%。MobileOneC3-YOLO 模型的精度最高,同时参数量最少,显著提升了检测效率。
表2 人员检测模型性能Table 2 Personnel detection model performance
为进一步验证轻量化优化效果,进行消融实验。以YOLOv7 作为基础模型,评估MobileOne 与C3 对网络主干和头部的优化效果。人员检测模型消融实验结果见表3。可看出,单独使用MobileOne 优化主干网络后,模型精确率下降0.3%,参数量减少21.2%,推理速度提高21.5%;单独使用C3 优化头部网络后,模型精确率和推理速度分别提高0.2%和17.8%,参数量减少27.1%;综合使用MobileOne 和C3 优化网络结构后,模型在维持高精度的同时,参数量和单帧图像推理耗时分别降至2.51×107个和0.020 8 s,性能提升明显,轻量化改进效果显著。
表3 人员检测模型消融实验结果Table 3 Ablation experiment results of personnel detection model
3.4 人员锁定模型性能分析
为评估基于ByteTrack 的人员跟踪方法的有效性,以MobileOneC3-YOLO 模型的检测结果作为输入,采用多目标跟踪数据集MOT17[18]对SORT[19]、DeepSort[20]和ByteTrack 进行对比实验,结果见表4。
表4 跟踪算法对比实验结果Table 4 Comparison experiment results of tracking algorithms
从表4 可看出,ByteTrack 算法在跟踪任务中表现优异,其ID 调和均值IDF1 和多目标跟踪准确率MOTA 分别达到88.1%和85.5%,同时因采用轻量化架构,推理帧率达到29.6 帧/s。SORT 算法虽然误跟踪目标数最小,但漏跟踪目标数过大,表明其在目标特征利用上存在不足。此外,SORT 和DeepSort 算法因采用高置信度检测框筛选策略,忽视低置信度检测框,导致性能不如ByteTrack 算法。
采用ByteTrack 算法对井口信把工、变电站值班人员、矿井提升机和绞车司机4 个关键岗位人员进行锁定测试。每个关键岗位选取视频60 段,每段2 min,共计240 段,进行3 轮测试。设置目标停留持续时间阈值为30 s,实验结果见表5。可看出,基于ByteTrack 的关键岗位人员锁定模型总体锁定成功率为97.1%,平均成功锁定次数达58,有效实现了对关键岗位工作人员的跟踪锁定。
表5 关键岗位人员锁定结果统计Table 5 Statistics on the key position personnel locking results
煤矿关键岗位人员锁定效果如图12 所示,模型可持续有效地跟踪锁定工作人员,同时避免对背景中无关人员的检测跟踪,排除了背景中无关人员对不安全行为识别的影响。
图12 关键岗位人员锁定效果Fig.12 Key position personnel locking effect
3.5 不安全行为识别模型性能分析
采用MS COCO2017[21]数据集对改进OpenPose模型进行评估。该数据集共包含123 287 张图像,每张图像含有17 个人体关键点标注。为进一步细化人体上身姿态信息,增加颈部关键点,使得每张图像包含18 个人体关键点标注。不安全行为识别模型性能测试结果见表6。可看出,相较于OpenPose,改进OpenPose 平均精确率下降2.4%,但模型内存减小至33.5 MiB,降幅达83.5%,在CPU 和GPU 上的单帧图像推理耗时分别减少74.7%和54.9%。这表明改进OpenPose 在保证精度的基础上,显著提升了计算效率和推理速度。完成人体关键点提取后,采用ST-GCN 模型对煤矿关键岗位人员的不安全行为进行识别。采用煤矿关键岗位人员不安全行为数据集进行模型训练,设置模型输入总帧数为200,batch size 为32,类别数为4,初始学习率为0.002。模型损失函数曲线如图13 所示。
表6 不安全行为识别模型性能测试结果Table 6 Performance test results of unsafe behaviors recognition model
图13 损失函数曲线Fig.13 Loss function curve
由图13 可看出,随着训练轮次增加,ST-GCN 模型的损失值持续下降,在250 次迭代后趋于平稳,最终稳定在0.042 5,此时精确率为87.5%。
为验证轻量化煤矿关键岗位人员不安全行为识别方法的有效性,进行消融实验。以ByteTrack 和ST-GCN 为基础,考察目标检测模型和姿态估计模型对疲劳睡岗、离岗、侧身交谈和玩手机4 种不安全行为识别精确率和速度的影响。不安全行为识别模型消融实验结果见表7。
表7 不安全行为识别模型消融实验结果Table 7 Ablation experiment results of unsafe behaviors recognition model
可看出,MobileOneC3-YOLO+改进OpenPose 的组合对4 种不安全行为的识别精确率达到93.5%,同时大幅提升了检测速度,帧率达到18.6 帧/s。这表明本文方法在保证高精确率的同时,通过轻量化改进大幅降低了时间复杂度,显著提升了检测效率,有利于及时地对不安全行为进行预警和干预。
煤矿关键岗位人员不安全行为识别效果如图14所示。可看出本文提出的不安全行为识别模型能够准确提取人员姿态信息,对疲劳睡岗、离岗、侧身交谈和玩手机4 种不安全行为能够精准识别。
图14 煤矿关键岗位人员不安全行为识别效果Fig.14 Unsafe behaviors recognition effect of key position personnel in coal mines
4 结论
1)采用MobileOne 与C3 对 YOLOv7 的主干与头部网络进行轻量化改进设计,显著提升了模型的检测效率,MobileOneC3-YOLO 模型推理速度较YOLOv7 提升了52%。
2)引入ByteTrack 算法实现人员锁定,锁定成功率达97.1%,有效排除了背景中无关人员的干扰。
3)为了提高OpenPose 对骨架特征的提取效率,采用MobileNetv2 优化OpenPose 特征提取网络,优化后模型内存需求降低了170.3 MiB,在CPU 与GPU 上的推理速度分别提升了74.7%和54.9%。
4)不安全行为识别实验结果表明,基于改进YOLOv7 和ByteTrack 的煤矿关键岗位人员不安全行为识别方法对疲劳睡岗、离岗、侧身交谈和玩手机4 种不安全行为的识别精确率达93.5%,检测速度达18.6 帧/s。