基于深度学习的电力作业人员行为识别技术
2022-07-02邓元实常政威陈明举
王 鸿,邓元实,常政威,吴 杰,陈明举
(1.四川轻化工大学人工智能四川省重点实验室,四川 宜宾 644000;2.国网四川省电力公司电力科学研究院,四川 成都 610041)
0 引 言
电力事故不仅会造成人身伤害,还会影响电力系统的稳定运行[1]。为了保障电力作业人员的生命安全,电力行业制定了全方位的安全工作规程,并在作业人员上岗前进行培训,规范其行为操作提高其安全素质[2-3]。经调查研究发现,作业人员的安全意识淡薄违章操作以及电力现场监管人员的管理责任缺失对作业现场监管不严,是电力事故发生的主要原因。因此,如何高效地加强作业现场的安全管控力度,提高电力作业人员的安全和工作质量,促进电力作业人员提升安全意识避免违章成为亟需解决的问题[4-5]。
近年来计算机视觉技术得到快速发展,诸如人体姿态估计和行为识别这样的任务受到了学者们的广泛关注[6]。文献[7]建立了基于单个图像或视频捕捉快照的人体动作识别系统,对比神经网络、随机森林、k近邻和支持向量机4种分类器对人体动作识别分类。文献[8]提出了人类行为特征识别,根据视频片段对视频中人物的全局特征提取和局部特征提取两种算法的应用和优缺点进行分析。文献[9]将学生的动作指定为6种典型行为,提出了改进OpenPose的行为识别方法,并且基于决策树的支持向量机对堂上学习者的行为进行分类。文献[10]检测人体姿态关键点并对变电站的安全区域标定识别,判断电力作业人员的双脚是否在标定的安全区域内,确定作业人员是否处于安全状态。以上的研究对人体姿态和行为识别技术取得了一定的研究成果,但将OpenPose姿态估计算法引入到电力作业现场,实现精确高效的行为识别的研究还有一定的不足之处。
行为识别技术[11]从本质上来讲就是一种分类问题,而人体动作识别的算法都是基于传统算法或者基于深度神经网络开展的。基于传统算法的研究主要是依靠人为提取特征,这种传统的算法因通过人为解决而效率低下,且提取特征不准确,也不能完全实时对电力作业人员的行为进行分类检测。针对这些问题,提出了一种基于OpenPose的人体姿态识别技术,通过深度神经网络对提取的电力作业人员的骨骼图进行行为识别,提高了检测的速度和准确率,避免由于电力现场的复杂环境而导致的检测错误,及时对危险行为检测并进行预警处理,避免出现严重的安全事故,造成人力物力以及财力的损失[12]。
1 作业人员行为识别深度学习网络设计
1.1 行为识别整体网络设计
主要针对电力作业人员行为态势设计行为识别流程如图1所示。首先,输入电力作业人员相关视频流,将其处理为视频帧图像,对数据做相关的预处理;然后,将现场作业人员的视频帧图像输入到人体2D姿态估计的OpenPose模型中,采用计算机视觉组(visual geometry group,VGG)提取电力作业人员的关键点位置信息及关键点连接的骨骼图;接着,将提取得到的骨骼图信息通过一系列处理后保存为最终的训练集;最后,将训练集通过深度神经网络(deep neural networks,DNN)进行电力作业现场作业人员的行为识别。
图1 电力作业人员行为识别整体技术流程
1.2 基于OpenPose关键点检测网络
近年来,基于深度学习原理进行的人体姿态估计方法被提出且得到广泛应用。而OpenPose人体姿态估计是自底向上关键点检测方法[13],使用部分亲和字段(part affinity fields,PAF)算法,完成从人体关键点检测到关键点与关键点之间的连接过程。OpenPose 的输入是一幅人体姿态的图像,输出是该算法检测到的所有人体的骨骼。人体骨骼图共提取18个关键点,包括眼睛、鼻子、手臂和腿等,如图2所示。图3为识别的作业人员的骨骼关键点图。
图2 18个关键点
图3 人体骨骼关键点图
所采用的美国卡内基梅隆大学实验室的OpenPose姿态估计算法,是基于卷积神经网络并采用caffe框架开发的开源库,可以实现人体的姿态动作、面部表情识别以及手指相关运动等,对多人的二维识别有极好的鲁棒性,且具有识别效果精准、速度高等特点。OpenPose外部网络结构如图4所示。该模型总共分为两个阶段识别人体的关键点[14],如图5所示。
图4 OpenPose外部网络结构
图5 OpenPose模型结构
第一阶段:VGG的前10层用于为输入图像创建特征映射F(feature map)。
第二阶段:将第一阶段输出得到的特征图作输入,包括两个分支多阶段卷积神经网络迭代训练。其中,第一个分支输出结果为S的集合S=(S1,S2,…,Sj),j∈{1,2,…,j},j表示第j个关键点。这一分支用来预测人体关键点位置信息的一组2D置信图(part confidence map,PCM);另一个分支输出结果为L的集合,L=(L1,L2,…Lc),c∈{1,2,…,c},c表示第c个躯干,用来预测部分亲和度的2D矢量场,表示关键点与关键点之间的局部区域亲和力PAF,如式(1)所示。
(1)
式中:ρ1和ρt分别为第一阶段和第t阶段PCM的预测网络;φ1和φt分别为第一阶段和第t阶段PAF的预测网络。
每个阶段(Stage)都是一些串行的模块,前面的Stage先检测出一些简单的关键点,后面的Stage再根据前面检测出来的信息继续检测更复杂情况下的关键点。通过多阶段的卷积神经网络的反复预测,实现渐进优化的过程,使得到的预测结果更加准确[15]。最后得到置信图和亲和力,通过关键点对dj1和dj2之间的PAF来判断关键点之前的连接是否正确[16],如式(2)所示。
(2)
式中:dj1和dj2分别为某人的两个连续的像素点j1和j2;p(u)为连续像素点之间连线的取值,如式(3)所示,u的取值为(0,1)。
p(u)=(1-u)dj1+dj2
(3)
1.3 DNN行为识别
DNN[17-18]是一个具有多层结构的数学模型,根据每层结构的位置可以分为3层:输入层、隐藏层和输出层。其网络的结构示意如图6所示。
图6 深度神经网络结构
假设输入n维的信号,特征向量表示为X=(x1,x2,...,xn)T,那么,每个隐藏层的神经元与前一层之间的神经元权值的关系可以表示为
y=f(wTx+b)
(4)
式中:y为输出;f为非线性激活函数;w为权值系数;b为偏置。也就是每个神经元的输出值是输入信号的线性组合,加上偏置后经过一个非线性的激活函数f的输出值结果,而每个神经元经过n层隐藏层处理后,通过最后一层输出层得到的结果就是最终DNN的输出结果。
因此,为了使深度神经网络能更好地提取数据集中有用的电力作业人员骨骼信息,得到预期的输出效果,深度神经网络需要不断调节参数权重w和偏置b,从而达到最佳训练的学习目的,使网络最终的输出值与实际值的损失达到最小。所采用的训练模型损失函数为均方误差函数(mean square error,MSE),表达式为
(5)
w和b的优化更新过程可以表示为
(6)
式中:w′和b′分别为进入网络后更新的权重值和偏差;η为网络的学习率。通过学习率来控制网络的学习进度,并且能够决定网络是否能够成功找到 全局最小值以及确定最小值的时间;通过调节学习率得到全局的最优参数解。通常来讲,如果学习率过大,则会造成整个网络无法收敛,忽视找到最优值的位置;而学习率设置得太小,则会导致整个网络收敛过程非常缓慢,从而增加找到最优值的时间,且也可能会造成局部收敛而找不到真正的最优解。
2 实验与结果
实验在Windows系统下进行操作,采用深度学习的开源框架TensorFlow。通过调用Python环境下的各种学习包,对实验进行训练和测试,用到的软件为Pycharm2019,采用python3.7的框架。硬件环境为:处理器 Intel(R) Core(TM) i7-10700 CPU @2.90 GHz;运行内存 16.0 GB。
2.1 数据预处理
所使用的训练数据集为人工采集拍摄一组视频,每隔25帧截取一张,将视频流切割为1888张视频帧图像。对视频帧图像采用图线增广扩充等处理方式,加大训练样本个数,使训练数据集产生与原始视频帧图像类似的数据。这样能够达到扩充训练数据集的效果。通过对图像做增广处理,可以减小模型对某些特定属性的依赖作用,从而使模型的泛化能力得到提高。这里采用对图像进行左右翻转、平移等方法来实现数据集的扩充。如图7所示为图像进行扩充后的示意图。
图7 训练图像的数据增广
数据集中共有18个关键点,包括鼻子、眼睛、左右手和左右脚等,且通过(x,y)的坐标来表示关键点的位置信息,将提取到的关键点信息保存为train.txt文本文件。通过脚本文件将读取到的关键点信息转换为csv格式,保存在train.csv文件中。并且,对每帧图像的行为进行标记,一共包括站立、走路、跳跃、摔倒和下蹲5个动作,用0~4依次对5个动作进行标注,将标注好的文件保存在train_act.csv文件中。最后对关键点信息和行为信息的数据集进行训练。
将具有不同宽高比的图像缩放为相同单位,对采集到的错误的骨架关键点信息做删除处理。最后,得到3775张图片作为人体关键点行为识别的训练数据集。使用电力作业现场的图片作为测试数据集。
2.2 识别结果分析
总的数据集分为2组:训练的数据占90%,验证的数据占10%。通过基于深度神经网络的电力作业人员行为检测算法,给已经加上行为标签类别的骨骼信息数据做处理,对电力作业现场人员进行行为识别分析。采集的视频中包括电力作业人员摔倒等异常行为,同时也包含了正常情况下作业人员正常行走、下蹲等行为。通过人工方法对这些数据的类别进行行为标定。在DNN模型的训练过程中[19],采用自适应学习率的Adam优化算法[20],对梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,通过多次实验和对参数的训练;最后,选取其中准确率和损失率最佳的一组参数:批处理量batch_size为32,训练次数(epoch)为700次。训练过程中的平均损失值如图8所示。
图8 模型训练过程中的损失值下降曲线
由图8可知,模型训练过程中,随着训练的迭代次数增加,训练损失值逐渐减小[21],且在epoch为100~200间趋于平滑状态,其中横坐标表示模型训练的迭代次数epoch,纵坐标Loss表示其均方误差。通过多次试验得到4个较好的训练模型,如表1所示。
表1 不同参数模型评估
从表1可以看出:随着epoch的增大,训练损失值逐渐减小,且训练准确率逐渐变高,测试损失值和准确率也有同样的效果;当epoch等于700次时,此时的损失值达到最小,且准确率也达到最高,而之后的各项数值性能指标随着epoch的增大而变差。
使用该分类模型在测试数据集上进行测试,输入已知动作的视频,验证模型输出结果。如图9所示为检测出的电力作业现场人员站立和下蹲的姿态,图9(a)为原始图像,图9(b)为对应图像的骨骼关键点图以及检测出来的行为动作。从图9中可以看出,分类模型对作业人员的姿态都能进行准确的识别。并且从第三组电力作业人员的识别效果上可以看出,不但能识别出电力作业人员的行为动作为摔倒状态,同时会显示识别到的电力作业人员已摔倒,并发出警告。
图9 检测的电力作业人员行为姿势
3 结 论
为了更好地保证电力作业现场工作人员的人身安全以及电力系统的稳定性,提出了基于OpenPose的电力作业人员危险行为检测技术。将电力作业人员的骨骼图通过2D人体姿态估计算法OpenPose提取出来,利用VGG网络的前10层提取电力作业人员的特征信息,避免电力现场的复杂环境影响提取目标的抽象特征。并利用庞大丰富的数据量,通过对深度神经网络模型的训练,使得该模型的鲁棒性与泛化能力有所提升。通过实验证明所提技术能有效地识别工作人员的行为动作,并能对危险行为发出预警和报警,起到了对作业人员的安全监管。