基于轻量级OpenPose的井下人员行为检测算法研究
2024-05-10阮进林赵明辉
阮进林,高 鹏,孙 源,赵明辉
(1.国能神东煤炭集团公司保德煤矿,山西 忻州 036600;2.同济大学 电子与信息工程学院,上海 201804;3.中煤科工集团上海有限公司,上海 200030)
随着智能化技术的普及,智能制造也逐渐成为现代先进制造业的新方向。大数据、人工智能、云计算、互联网等新兴技术被深度融合进现代智慧矿山理念[1]中。煤矿井下的工作人员在煤矿行业中发挥着重要的作用,这些人员的行为直接关系到煤矿井下的管理和发展。近几年,因为井下人员不安全行为,井下人员受伤事件频发[2],如何使用新兴技术保证井下工作人员安全是重中之重。因此需要一种具备动态检测,快速分析和实时报警提示功能的智能姿态检测系统,实时督查人员的不安全行为,并且当发现违规行为或不安全行为时发出相应的提示,保证煤矿工作的正常运行。
传统目标行为分析主要分为基于模型的方法[3]和基于相似度量的方法[4],然而这些方法复杂且冗余度很高,普遍实用性差。为了有效分析人员行为,文献[5]采用长短时记忆网络算法对多传感器采集的现场数据进行处理,该算法的训练速度快,并且模型内存占用较低,在人体行为检测上可以取到很好的准确率。文献[6]基于惯性传感器设计一种自适应的误差四元数无迹卡尔曼滤波(DAUKF)算法,并引入渐消记忆法自适应地调整观测噪声协方差,以减少系统本身和环境对姿态检测的干扰,所提方法提高了姿态检测精度。然而对于多人检测时,这些方法会面临着设备复杂并且成本相对较高等问题。
目前结合深度学习[7-9]和机器学习[10,11]实现人体姿态检测的算法,已在很多场景得到了广泛的运用,并且精度也可以得到保证。其中,OpenPose网络结构[12]由于具备有效提取人体骨骼点的能力而被运用于姿态检测。郑雪晨[13]等人使用OpenPose算法获取视频中人体的骨骼点,并结合SVM算法实现人体异常跌倒姿态的检测,可以实时检测老人的姿态。朱建宝[14]等人在OpenPose多人姿态估计算法的基础上,提出了一种人员危险行为检测模型,该方法可以有效的检测多人的行为是否是危险行为。伏娜娜[15]等人在 Yolov5s人体目标检测算法的基础上结合轻量级OpenPose人体姿态估计模型,并且通过自定义跌倒检测算法检测人员是否摔倒,该算法有较高的特异度并且检测的误报率低。除了可以使用自下而上的OpenPose算法进行人体姿态估计,自上而下的AlphaPose[16]算法也被广泛的应用在人体姿态检测中,陈博[17]等人运用AlphaPose人体姿态检测算法对人体关键点进行提取,构建特征向量,通过支持向量机分类算法得到姿态类别,再通过滑动窗口法判断是否有异常行为,当发生异常时进行本地提醒和远程报警,可以实时实现多人的姿态检测。与传统仅使用单一的骨骼点检测算法不同,邓伟男[18]结合OpenPose和AlphaPose骨骼点检测算法提出状态检测方法,可以有效地检测多人的姿态,并且可以判断出是否有疲劳的风险。
目前,面向煤矿井下人员的姿态检测应用比较少,本文在现有的人体姿态检测算法的基础上设计了一套智能辅助姿态检测管理系统,检测速度达到30 f/s,姿态识别整体准确率86.35%,可自动检测井下工作人员是否有摔倒、攀爬和推搡不安全行为。该系统具备报警信息输出功能,提示相应的工作人员,减少不安全行为的发生。
1 算法设计
1.1 OpenPose姿态检测模型
OpenPose网络结构是由美国卡耐基梅隆大学的研究人员通过神经网络和监督学习提出的自下而上的人体姿态评估算法。可以对人体的动作、面部的表情以及手指的运动等姿态进行估计。OpenPose使用VGG-19卷积神经网络对输入图像进行预处理,得到特征图F。然后将特征图输入到运算分支ρt和φt,其中分支ρt用于预测骨骼点置信图PCM,另一路分支φt用于预测骨骼点亲和域PAF,t为阶段即表示串行的模块,一般取值为5,6,7。
每一阶段的骨骼点置信图PCM与骨骼点亲和域PAF的输出结果分别记为St和Lt。
在第一阶段中输入的是VGG-19网络输出的特征图F,其他阶段输入的数据为VGG-19输出的特征图F和上阶段输出的骨骼点置信图PCM与骨骼点亲和域PAF。
St和Lt表达式见式(1)。
1.2 轻量级OpenPose姿态检测模型
为了提高姿态检测模型的计算效率,需要对原始的网络模型进行轻量化操作,以期实现在识别精度丢失不大的情况下完成实时姿态检测。本文主要是针对骨干网络选取轻量化的网络进行替代,具体如下:
Backbone改进:轻量级OpenPose网络结构[19]是OpenPose网络结构的改进版,Daniil Osokin等尝试使用MobileNet网络替换掉VGG-19设计轻量级OpenPose算法,并进行改进时发现使用扩张卷积可以显著提升轻量级OpenPose的识别精度,由37.9 AP提升至42.8 AP。然此精度相对原本OpenPose下降幅度仍然很大。原因可能为Mobilenet在提取特征语义信息方面表现不佳,使用扩张卷积虽然有助于获取特征语义信息,但提升幅度有限。SUN等人[20]提出一种称为HRNet的高分辨率网络,网络结构如图1所示,该网络在整个计算过程中始终保持高分辨率,可以并行连接从高分辨率到低分辨率的卷积流,并且实现了跨层信息交换,因而生成的特征图包含更丰富语义信息,在空间识别上更精确。 经测试发现HRNet18的计算量仅为3.2 GFLOPS是VGG19(19.2 GFLOPS)的16%,因而可采用HRNet18替换VGG19设计轻量化的OpenPose。
图1 HRNet网络结构Fig.1 Structure of HRNet network
1)HRNet18在同一个阶段中,最后两层保持两路分支结构,其余的层合并为单路结构,能够实现骨骼点置信图PCM与骨骼点亲和域PAF共享参数。
2)对原版7×7卷积核进行了改良,将其改为1×1、3×3、3×3的组合结构卷积核,并且最后一个3×3卷积核膨胀系数设为2,可以保持初始感受视野一致。经过这样改进运算参数量降为二阶OpenPose算法的15%,但是性能和准确率并没有受到影响,而且算法的运行速度大大提高。轻量级OpenPose算法改良部分如图2所示。
图2 轻量级OpenPose改进结构Fig.2 Improved architecture of the lightweight OpenPose
该轻量OpenPose推理在识别精度稍微下降的情况下推理性能提升了近3倍。不同版本的OpenPose的FLOPS、GPU推理性能、识别精度见表1。
表1 OpenPose性能与精度测试Table 1 Performance and accuracy test of OpenPose
1.3 煤矿井下姿态检测
轻量级OpenPose网络结构可以将图像或视频中人体进行姿态估计,并实时的输出眼睛、手臂、膝盖等18个关键的骨骼点,人体骨架如图3(a)所示。在获取到骨骼点后,本文通过自定义的姿态检测规则对摔倒姿态、攀爬姿态以及推搡姿态进行检测和分类。摔倒姿态检测、攀爬姿态检测以及推搡姿态检测的定义对应如图3所示。
图3 人体骨架与姿态对应Fig.3 Human skeleton models corresponding to different postures
1.3.1 摔倒姿态检测的定义
在判别摔倒姿态时,本文设计了两种检测摔倒姿态的算法。
1)当视频中只有一个人,使用以下的方法判别是否摔倒。分别记18个部位的骨骼点在图像中的坐标为(xi,yi),下标i表示第i个部位的关节点。使用Lbody来表示人体躯干长度,其中x1,x8,x11,y1,y8,y11分别表示颈部、左右腰骨骼点的坐标。Lbody的计算见式(2)。
2)当视频中有两个人以上的人时,使用1)的方法需要加上追踪,在计算力方面要求比较高,因此本文设计另一种方法检测摔倒姿态。在正常情况下,在煤矿井下的工作人员不会主动躺在崎岖且潮湿的地面,因此以这个设想为主体,只需要通过检测人体脊椎与水平的夹角大小是否小于设定阈值来判定人员是否摔倒。但是为了防止人弯腰时可能导致脊椎水平夹角变小,另外借助大腿与水平的夹角是否小于设定的夹角阈值来辅助判定是否摔倒。
判定条件:骨骼点8号和11号的中心点记为C,骨骼点1号和C连成脊椎直线l。骨骼点8号和9号连起来记为大腿直线l1,人体骨骼点11号和12号连起来记为大腿直线l2,直线l与水平的夹角记为γ,直线l1与水平的夹角记为γ1,直线l2与水平的夹角记为γ2。
如果夹角γ<γa和γ1<γb时,或者夹角γ<γa和γ2<γb时,识别为摔倒姿态。根据实验和实际情况,角度γa和γb可设在30°左右。
1.3.2 攀爬姿态检测算法
根据人员在攀爬的过程中会做出高抬腿的动作,并且攀爬的高度越高,抬腿的动作就会更加明显的常识,因此基于高抬腿的动作来判断人员是否存在攀爬的行为。为了能够更加有效的判别是否有攀爬的行为,在基于高抬腿动作判定攀爬姿态的同时加入入侵检测。
判定条件:骨骼点9号和10号连起来记为小腿直线l3,直线l1和直线l3的内测的夹角记为αA。同样,骨骼点12号和13号连起来记为小腿直线l4,直线l2和直线l4的内测的夹角记为αB.骨骼点8号和11号的中心点记为C,骨骼点1号和C连成脊椎直线l5。直线l1和直线l的内测的夹角记为βA,直线l2和直线l的内测的夹角记为βB。