基于图卷积的作业行为实时检测方法
2022-10-17孙晓悦
田 枫,孙晓悦,刘 芳,卢 俊
(东北石油大学 计算机与信息技术学院,黑龙江 大庆 163318)
0 引 言
现阶段,人体行为识别可以分为两种主流方法:基于图像的和基于人体骨骼关键点的。基于骨架序列的人体行为识别存在一定的优势:人体骨架的关节数量有限,所耗费的计算资源较低,且对动态环境和复杂背景的适应能力较强,除此之外,骨架存在较强的语义信息,可以更好代表人体动作。因此,使用骨架数据来做行为识别成为热门研究方向。现常用的主流框架主要分为3类:RNN、CNN、GCN等。文献[1,2]将处理时间依赖关系的LSTM对分组的人体骨骼关键点进行分类识别。文献[3,4]使用卷积神经网络(CNN)处理骨骼数据,提出了骨架变换模块自动对重要骨骼关键点分配较大权重,并使用窗口提议网络检测动作起始时间进行行为识别。文献[5,6]提出骨骼序列空时图的概念,并提出了空时图卷积网络提取高级特征,并采用基于距离的采样函数构造图卷积层,提高识别精度。
现有的关于行为识别方法虽然多种多样,但面对实时监控下的复杂场景识别能力较差,且计算量过大不能满足实时监控的要求,仅处于实验室研究阶段。因此本文提出了一种基于图卷积的作业行为实时检测方法:首先对视频监控的作业人员以YOLOv5作为基础模型进行人员定位,然后对其骨架进行提取,并利用DeepSort[7]对骨架进行跟踪,最后使用图卷积神经网络进行行为分类和识别。
1 作业行为实时检测算法
动作实施者是人,而作业现场环境复杂,非人体部分会存在影响识别精度,且提取特征过多使得模型计算量过大,检测速度变慢的问题。基于此,文中算法由4部分组成,包括作业人员定位、人体骨架提取、人员跟踪、行为分类,算法流程如图1所示。首先,对视频中正在作业的工人进行定位,从而过滤无关人员减少计算量;接着,对定位出来的操作人员进行人体骨架提取,同时使用跟踪算法结合骨骼信息完成相邻帧间的目标匹配,能够满足检测时背景以及光照带来较小影响;最后,通过图卷积神经网络对相邻帧的骨骼关键点数据进行不规范行为识别,可以更好描述人体骨骼关键点之间空间和时序拓扑结构,最终实现作业行为实时检测。
1.1 作业人员定位
由于作业现场环境复杂,所以为了减少不必要的检测,需要对正在作业的工人进行定位,从而减少后续骨骼提取和行为识别带来的计算量。本文经过在速度和精度方面的衡量,选用YOLOv5作为作业人员定位的基础模型。在输入端,YOLOv5采用3种数据增强方法:缩放、色彩空间调整和马赛克增强,其中马赛克数据增强方法能够有效提高对小对象的检测。在整个模型实现过程中,采用了CSPNet和Focus结构。其中CSPNet[8]可以有效地解决梯度信息重复问题,重复利用特征,减少网络参数数量。同时使用FPN+PAN来增强网络特征融合能力。在输出端YOLOv5采用了GIoU_Loss来作为损失函数,并采用加权NMS来解决遮挡严重导致检测不准确的问题。
1.2 人体骨架提取
Alphapose[9]采用自上而下的姿态估计算法,其中的对称空间变换网络能够使得该模型在复杂场景下具有较高的检测精度。同时其提出了参数化姿态非极大值抑制,定义了姿态距离,消去冗余的姿态估计结果,提高了人体骨骼提取准确率。
Alphapose可输出14个关节点的骨架图,图中每个关节点上的特征向量包含坐标和估计置信度。经过人体定位后,Alphapose使用单人姿态估计(single person pose estimation,SPPE)算法进行人体骨架提取。由于目前骨架提取存在定位错误和产生冗余检测结果的问题,Alphapose采用对称变换网络(SSTN)对人体检测框进行感兴趣区域提取,自动调整检测框,使得定位更加准确;添加了姿态引导的样本生成器(PGPG)对已有的数据进行数据扩充,进行数据增强;使用姿态非极大值抑制(PPNMS)计算姿态相似度去除冗余检测框。通过上述3种方法,Alphapose能够更加精确地提取人体骨架。
1.3 融合骨骼数据的人员跟踪
本文结合二维骨骼数据进行DeepSort跟踪。整体流程如图2所示,其处理过程如下:
(1)作业人员定位:将训练好的基于YOLOv5的工作人员动作定位模型用来获取DeepSort算法的检测目标的检测框;
(2)跟踪状态预测:首先定义检测集合Detection用于存储当前帧检测到的目标的检测框坐标数据。跟踪集合Track用于存储历史坐标数据,以及丢失帧计数n。当Detection集合为空集时,则n+1,当n大于阈值时,则认为该目标消失,然后在Track中删除该目标的历史数据。当Detection不为空时,则n=0。利用目标所在位置、运动速度、宽高比、加速度等信息使用卡尔曼滤波器预测下一时刻目标状态。通过计算当前时刻目标状态与下一时刻目标状态的协方差矩阵,计算卡尔曼增益,不断更新当前时刻目标状态,使真实值与预测值之间的误差越来越小,从而完成移动目标的轨迹预测的过程;
(3)利用骨骼信息进行获取ID:计算物体检测框di和物体跟踪框yj之间的距离d,马氏距离计算如式(1)所示
(1)
上述公式中,dj表示第j个检测框的位置;yi表示第i个追踪器对目标的预测位置;Si表示检测框和跟踪框之间的协方差矩阵。通过计算当前帧目标的二维姿态特征和检测目标姿态特征之间的余弦距离来预测ID,余弦距离计算公式如式(2)所示
(2)
最后使用两种距离的线性加权方式作为最终度量,得到代价矩阵。其计算如式(3)所示
ci,j=λd(1)(i,j)+(1-λ)d(2)(i,j)
(3)
(4)级联匹配:当人物经长时间遮挡后,预测的不确定性会提高,此时采用级联匹配方法,对更加频繁出现的目标赋予优先权;
(5)跟踪优化:由于检测目标匹配了错误的轨迹,相似目标跟踪过程经常出现身份转换问题。因此需要在级联匹配后计算检测目标上一帧和当前目标检测框的欧式距离,当距离大于检测框宽度的1/4时,则重新匹配ID。
1.4 基于图卷积的作业行为识别
本文行为识别算法模型选用场景为作业现场,通过对工作人员的人体关键点以及置信度进行图卷积建模来实现作业人员操作是否规范的识别。
1.4.1 时空图
由于图卷积神经网络需要通过数据间的依赖关系构建相应的图模型,所以本文利用Alphapose获取已定位出来的员工骨骼关键点坐标作为输入,同时为了描述人体骨骼点之间的依赖关系,本文将根据人体骨骼的拓扑结构构建图模型。首先,在单帧上介绍图卷积网络,单帧骨架在时间τ上会有N个联合节点记为Vt以及相应骨架边记为Es(τ)={vtivtj|t=τ, (i,j)∈H}。 不同于图像,人体骨架节点的邻域的节点数不固定,定义第τ帧上的节点vti的邻域为B(vti)={vtj|d(vti,vtj)≤D,t=τ}, 其中,从vti到vtj的所有路径中的最小长度用d(vti,vtj)表示,取D=1,代表取节点的1邻域。其采样函数如式(4)所示
p(vti,vtj)=vtj,vtj∈B(vti)
(4)
由于不同人体骨骼关键点的邻域节点数量和顺序均不固定,于是将邻域B(vti) 中的节点划分为K个固定的子集,每个子集可以写成一个映射tiB(vti)→{0,…,K-1}, 并对每一个子集分配权重参数。权重函数如式(5)所示
W(vti,vtj)=W′(ti(vtj))
(5)
关键点划分是遵循ST-GCN中的划分策略将邻域划分为3个子集。具体来说,该策略根据经验将内核大小设置为3,并自然地将采样区域分为3个子集:包括根节点本身;向心子集,其中包含靠近重心的相邻顶点;离心子集,包含离重心较远的相邻顶点。如图3所示。
空间划分策略的映射如式(6)所示
(6)
式中:r是骨架重心到节点i的平均距离。
由于动作在时序上的连续性,则需要分析骨骼序列随时间的变化。将相邻帧之间的同一关节用边连接,表示为EF={vtiv(t+1)i|t≤T-1}, 因此对某一关节点i,EF代表其随时间的轨迹。
由于每个节点在时间上的连接形状是固定的,输出的特征图的最后3个维度的形状是 (C,T,V), 关节特征C, 关键帧数T, 关节数V。
1.4.2 添加注意力模块的图卷积模型
行为识别模型的主干网络如图4所示,由9个时空模块(ST-GCN)堆叠而成,对于其中每一个时空模块均进行空间图卷积和时间卷积。并将第4模块和第7模块的时间卷积步长设为2,每个模块的输出通道分别为64,64,64,128,128,128,256,256,256,网络开始阶段采用一个BN层将输入骨架数据进行归一化处理,在最后添加平均池化层(global average pooling,GAP),将不同骨架数据池化到相同尺寸大小。最终采用使用SoftMax分类器进行分类,SoftMax定义请见文献[6]。其卷积输出函数如式(7)所示
(7)
其中, 1/Zti(vtj) 为规范化项,Zti(vtj)=|{vtk|ti(vtk)=ti(vtj)}| 对应子集中的节点个数,其目的是平衡不同子集对输出的贡献。
由于注意力能够对更有判别力的骨骼特征分配更高的关注度,因此分别在第4层、第6层、第8层后添加SELayer[10]作为注意力分支,学习各骨骼关键点之间的关联信息,突出该信息在不同层次的网络结构中和不同样本上的独特性。同时,使用注意力机制能够使网络在训练时主动关注不同关键点在不同行为类别起到的重要作用,提高模型适应能力。该注意力模块产生每个通道调制权重的集合,其输出如式(8)所示
(8)
其中,X∈RC′×T′×V′为输入特征图,vc∈V为卷积核,mc∈MSE为输出特征图。模型识别整体流程如图5所示。
1.4.3 边重要性加权
人们运动时骨骼关键点是相互协作完成的,同一骨骼关键点在做不同动作时起到的重要程度有所不同。例如,在做握手动作时,手部的信息比腿部信息更为重要,然而走路时,腿部信息要比手部动作更为重要。因此对不同部位进行建模时,不同的边应具有不同的重要性,在每一个图卷积模块的每一层都添加了可学习的掩码M,该掩码将根据ES在空间图上每个边所学到的重要性权重来缩放节点特征对其相邻节点的贡献。
以连续多帧的人体骨架序列特征(二维坐标以及置信度)作为输入,经行为识别网络后,输出检测概率最大的类别。设当前时刻t,则某个工作人员k的骨架在经过行为识别后识别出来的行为为B(tk)。 在实际作业现场监控场景下,存在设备或人员遮挡、光照强弱不定等因素的影响,某些帧提取的人体骨架存在误差,从而导致行为识别错误,因此直接将B(tk)作为最终识别结果很容易导致错检情况的发生。由于行为的发生通常是在一段时间内完成的,其持续时间不定。在行为发生的这段时间里,尽管存在错检情况,但是该操作人员绝大部分帧的动作会被识别为B(tk)。 因此本文将采用统计方法,对出现的行为进行统计,连续5次出现同种动作将确定该动作为最终行为类别,中间出现不同动作标签,将重新进行统计。
2 实验结果与分析
本次实验是以油田作业现场为研究背景,进行相关实验。由于开关阀门是油田井场生产中经常进行的最基本的操作内容。开关阀门时人要站在侧面,防止阀门或丝杠飞出伤人,所以阀门操作是否规范是确保人身安全的保障措施。因此,通过对油田井场作业区域的监控视频进行分析,利用计算机视觉相关知识,自动检测出员工的不规范行为,加强井场操作规范,保障企业财产和人员安全有重要意义。
2.1 实验环境
实验硬件环境:硬件平台为联想工作站,i7-6700 3.4 GHz CPU、NVIDIA CTX 3080Ti GPU,操作系统为Ubuntu 18.04。
软件环境:程序编写语言为Python3.7。
2.2 数据集
由于现阶段研究缺乏阀门操作数据集,因此本文将以油田井场工人真实操作视频和志愿者模拟操作视频制作数据集。其中真实油田井场视频数据包括操作人员正常操作阀门和错误操作阀门两种动作,截取部分视频帧用于操作人员动作定位模型的训练。由于真实场景下的视频数量较少,所以志愿者对不同场景的阀门进行模拟,包括正确操作、错误操作、不操作等3种动作类别,部分数据集采样如图6所示。
2.3 作业人员定位实验及结果分析
工作人员定位阶段选用YOLOv5框架,使用自制数据集,其中操作人员数据集包括6300幅训练图片、1575幅验证图片,将图像归一化到640×640,使用Adam优化器,置信度阈值为0.7,非极大值抑制阈值为0.4,学习率为10-4。将训练样本随机抽取进行200次迭代,每次迭代样本数为8。实验参数见表1。
本文实验将在精确度(P)、交并比(IoU)和平均精度(mAP)来衡量模型,计算式(9),式(10)如下
(9)
(10)
表1 实验参数
其中:TP(true positive)表示被正确分类的正例;FP(false positive)表示本来是负例,被错分为正例[11];area(C)检测后框出的工作人员区域;area(G)是标记的工作人员区域。
本文与常见的目标检测模型Faster RCNN[12],YOLOv3[13]进行对比。对比结果见表2。
表2 不同算法对比
由表2知,YOLOv5在本文数据集中精确度,检测速度方面均为最优,无论是在AP还是mAP上,作为一阶段目标检测网络的代表YOLOv5均比两阶段目标检测网络Faster RCNN表现能力更好。3种网络在测试集上的测试效果如图7所示。
由图7可知,在测试集上YOLOv5检测精度为98.9%,单帧处理速度0.18 s,各项指标均比另外两种网络要好。
2.4 人体骨骼关键点提取实验及结果分析
经过作业人员定位后裁剪出来的操作人员人体可能不够完整,同时由于摄像头分辨率以及放置距离的不同会导致裁剪出来的人体大小不同,因此在人体骨骼关键点提取之前需要对裁剪出来的图片进行预处理和归一化。为解决裁剪出来的人体不全问题,将检测框向外扩大1.2倍,然后将裁剪出来的图片缩放至固定大小224×160。本文分别采用Openpose[14]和Alphapose进行人体骨架提取,实验结果见表3,可视化结果如图8所示。
表3 单人关键点提取结果
分析实验结果,针对同一场景中的作业人员,由于工作场景中存在栏杆、树木的遮挡,使用自下而上的Openpose提取的骨骼关键点虽然提取速度较快但是有关键点缺失情况的发生,会大大影响后续行为识别部分。Alphapose提取速度较慢,但是仍能满足实时检测需求,且识别精度较高,骨骼提取相对完整。
2.5 人员跟踪实验及结果分析
当作业人员进入作业区域时开始进行跟踪,当目标离开作业区域时停止跟踪。本实验采用以下方法来计算跟踪精度,定义如下:在连续T帧中,若目标保持同一ID的帧数超过95%,定义:Ntr为跟踪成功的员工数,Ntf为跟踪失败员工数,At=Ntr/(Ntr+Ntf)[15]为跟踪准确度。表4为人员跟踪结果。
分析表4实验结果,在有遮挡情况的场景中跟踪准确度有所下降,分析其原因,检测目标部分遮挡导致骨架提取不完整,从而导致跟踪准确度下降。对于较远距离的实验场景中,由于检测目标较小,骨架提取精度有所下降,导致跟踪精度降低。但在多种实验场景下,人员跟踪准确度均在95%以上,能够为后续的行为识别提供保障。实际场景下的跟踪效果如图9所示,其中图9(a)为近距离的跟踪效果图,图9(b)为较远距离的跟踪效果图。
表4 人员跟踪结果
2.6 基于图卷积的行为识别实验及结果分析
本次训练所使用的数据集中,训练集有5231个骨架,验证集有2011个骨架。本次训练每次随机采样2000,迭代200次,学习率为10-3,使用Adam优化器和交叉熵损失函数。最终的图卷积模型在训练集上的分类准确率为98.3%,在验证集上的分类准确率为96.7%。在第t帧,作业人员进行阀门操作,若在(t,t+N)帧内阀门操作行为能够被正确识别,则识别任务完成,否则识别失败。由于阀门操作动作具有连贯性,选取合理的时间步长对于识别精度是至关重要的,过短的时间步不能够充分表达一个动作,而过长的时间步则导致运算速度慢,冗余的信息也会干扰识别过程。所以需要选取合适的N。以由4名实验人员,分别在不同角度(左后方、右后方、正后方),不同距离(较近、中距离、较远距离)的300段视频作为验证集,3种操作类别的视频各100个。定义识别正确的视频片段数量记为Nr,识别错误的视频片段数量记为Nf,则识别正确率Ar=Nr/(Nr+Nf)。 本文采用N=(1,5,10,15,20,30) 作为输入进行测试。实验结果见表5。
如表5所示,当N=1时,100段正确操作的视频仅有54段被正确识别,错误操作视频有53段被正确识别,无操作视频全部识别成功,整体识别准确率最低,在N=10时,尽管无操作视频的识别率有所下降,但是整体识别准确率最高。并随着N的不断增大,无操作视频被正确识别的数量逐渐减少,正确操作的识别率不断增加。当N大于10时,错误操作的视频均能够被大部分识别。
对其中效果最好的N=10训练的模型采用300段视频的测试后的混淆矩阵进行可视化,如图10所示。
表5 不同时间步长检测精度对比
从混淆矩阵可以发现,对于实验的3个行为类别,无操作的行为识别率最低,与错误操作混淆概率较大。100段正确操作视频和100段错误操作视频均被正确识别,然而100段无操作视频中,90段视频被正确分类,两段视频被错误识别为“operation”,8段视频被错误识别为“error operation”。分析实验结果产生的原因,主要是测试数据中被错误识别的视频,如图11(a)所示,截取的视频为工人靠近阀门,但未进行旋转操作的状态,可视化骨骼数据,如图11(b)所示,前4帧为工人靠近阀门阶段,后6帧为身体弯曲,手接近阀门,但未进行旋转操作阶段。部分核心关节点组成的集合与“正确操作”的动作序列如图11(c)所示存在部分重合,容易导致分类错误。
由于存在上述误检情况,对可视化左肩关键点y坐标随时间变化曲线(图12)进行分析。前292帧为“正确操作”行为,292-475帧为“无操作”行为,475-682帧为“错误操作”行为。由图可知,每种动作的坐标变化较为规律,且在两种动作切换时达到稳定状态所用时间大概为10帧左右。因此,采用连续10帧为输入,同时采用滑窗方法对连续5次的检测结果进行统计,只有连续5次均为“错误操作”,则进行报警,能够达到降低误报率的效果。最终实验结果如图13所示。
在相同数据集上,使用不同方法与本文最终方法进行作业人员行为识别对比分析,结果见表6,从表中可知,方法1与方法2表明,使用YOLOv5进行人员定位能够大幅度提高整体的识别速度;方法2与方法3对比表明,使用Alphapose进行姿态估计虽然耗费时间较多,但检测精度有所提升,进而表明姿态估计的准确度能在很大程度上影响识别结果,因此在满足实时性的要求下,选取较高精度的姿态估计模型。方法3与方法4对比表明,添加通道注意力,能够有效提高识别精度。因此本文采用方法4,识别精度较高,且能够满足实时检测,漏警率较低。
3 结束语
本文针对现有方法在真实作业场景下不能实时准确的识别工作人员操作是否规范的问题,提出了基于图卷积的作业行为实时检测方法。首先,采用YOLOv5定位监控视频中的作业人员,并使用Alphapose提取人体骨架;然后使用DeepSort对待识别目标进行跟踪;最后,使用图卷积的方法对作业人员的操作不规范行为进行识别,并采用统计方法降低误检率。实验结果表明,该方法在真实监控场景下检测速度可达25 fps,阀门操作行为识别准确率可达96.7%,能够对错误操作行为进行及时报警。但是,该算法针对复杂场景中人员密集,骨骼提取速度变慢,并且工作场景中存在大量设备,会产生人体遮挡导致提取的骨架存在部分缺失,使得最终行为识别结果错误。所以,在今后将针对多人场景下的行为识别存在的遮挡、实时性问题进行研究。