苏 波,柴自强,王 莉
(河南理工大学电气工程与自动化学院,河南 焦作 454000)
subo@hpu.edu.cn;18837250776@163.com;wangli@hpu.edu.cn
动作评估与反馈可有效辅助健身运动练习者提高锻炼收益,而实现自动量化评估可以减少主观评价带来的误差并节省人力资源。人体姿态估计根据获取数据方式不同分为基于传感器与基于图像的方法。薛智宏等设计了原地太极拳辅助训练系统,通过深度相机采集的坐标计算关节角度、瞬时速度进行评估;徐言东等利用Kinect相机采集人体数据并开发了康复训练系统,通过运动干预来提高患者康复效果;HASEGAWA等采用惯性传感器检测轮椅左右轴角速度,并以此对轮椅篮球的手法进行质量评估。这些方法都依赖硬件传感器,其设备较为昂贵,不易普及。随着计算机视觉的发展,通过视频图像获取信息更为便捷。QIAO等提出一种基于单目图像的人体姿态分级系统,通过计算标准与实时姿势间的离散弗雷歇距离来进行评分;杨君等通过计算两幅图像中肢体关节角度偏差来进行动作对比;PARMAR等利用三维卷积神经网络提取跳水、跳马视频中的时空特征,并通过支持向量回归机(Support Vector Regression,SVR)进行分数回归,但前者方法忽略了动作快慢因素或者只针对单幅图像,后者深度学习方法需要大量标注数据且训练时间长,模型泛化能力较弱。
针对上述问题,提出一种基于视觉的动作评估方法,首先采用改进OpenPose算法获取人体关键点坐标位置,根据关键点信息计算测试动作与标准动作的相似度,以此对视频动作进行评估。
基于深度学习的人体姿态估计方法分为自顶向下和自底向上,自顶向下是先检测图中的每个人,再对每个人进行关键点检测,典型算法如RMPE、CPN;自底向上则先检测图中所有人的关键点,再将关键点分配给每个人,典型算法为OpenPose。由于后者有较好的鲁棒性,因此本文采用OpenPose作为姿态检测算法。算法流程如图1所示,网络结构如图2所示。输入图像首先经过VGG19网络得到深层特征,然后将特征经过多阶段网络,前四个阶段用来预测人体部件亲和场(Part Affinity Fields,PAFs),它是一组包含、方向的二维向量场,用于表征人体关键点之间的关联度;后两个阶段用来预测人体关键点热度图(18 个Heatmaps),通过多阶段的迭代来不断细化和提纯预测结果,最后通过二分匹配将关键点正确分配给每一个人并连接生成人体骨架图。
图1 OpenPose算法姿态检测流程Fig.1 Pose detection process of OpenPose algorithm
图2 OpenPose网络结构Fig.2 OpenPose network structure
传统OpenPose模型以VGG19作为特征提取部分,整体网络结构深且模型参数量较大,对计算机硬件设备要求较高,很难实时检测。因此,本文对网络结构进行改进,更换特征提取网络并减少预测部分的重复阶段数,使模型轻量化从而提高系统运行速度,达到实时检测的效果。
在自然图像中,高频信息构成图像的边缘和细节,而低频信息主要构成图像灰度等级,对图像结构的决定作用较小。同样,卷积层的输入、输出通道也存在高、低频分量。八度卷积OctConv的思想就是将卷积特征图进行分频表示,并将低频特征图大小减半,从而有效减少存储和计算量。
八度卷积中的输入、输出通道特征以及卷积核都被分解为高频部分X、Y、W和低频部分X、Y、W;超参数表示低频信息通道占比,且=。如图3所示,高频输出Y=(X;W)+upsample((X;W),2),低频输出Y=(X;W)+(pool(X,2);W)。其中,Y是高频输入X卷积得到的部分高频输出,由于低频与高频通道尺寸不同,另一部分高频输出Y需要低频输入X先卷积再进行二倍上采样后得到,最后两者融合得到整体高频输出Y。同理,Y为Y与Y的融合,其中高频输入到低频输出先进行平均池化再卷积。这些融合过程保证了高频与低频特征之间的信息交换,目的是进一步优化最后的高频输出。
图3 八度卷积运算流程Fig.3 Octave convolution operation procedure
以深度可分离卷积为核心的移动端轻量级网络MobileNet,是将一个标准卷积操作分成了逐通道卷积(Depthwise,DW)和逐点卷积(Pointwise,PW),相比于VGGNet,在精度上略微降低但模型参数量大幅减少,运算成本更低。因此,本文将八度卷积与MobileNet进行有机结合,结构设计如图4所示。为了得到与VGG19输出相同的维度特征,只选用MobileNet V1的前十层并加入两层降维卷积,将所有深度可分离卷积里的DW卷积和PW卷积融入OctaveConv模块,使网络进一步降低参数量,在减少低频信息冗余的同时更注重高频信息,使提取的深层特征中包含更多有效信息。网络具体参数如表1所示,其中第一层卷积为普通卷积,第二层开始为深度可分离卷积,并且在第一个OctaveConv模块中设置=0、=0.5,即关闭低频输入通道,只保留由高频输入产生的两条路径;最后一个OctaveConv模块设置=0.5、=0,关闭低频输出通道,使多频特征表示恢复成正常大小的高频特征;中间的模块则设置==0.5,保证提升精度与降低参数两者平衡。
图4 Oct-MobileNet网络结构Fig.4 Oct-MobileNet network structure
表1 Oct-MobileNet网络参数Tab.1 Oct-MobileNet network parameters
本文将Oct-MobileNet作为改进OpenPose的主干特征提取网络,改进结构如图5所示。在外部结构上,将原来四个阶段PAFs预测减至三个阶段,预测Heatmaps减至一个阶段,降低整体冗余。在内部细节中,原先预测PAFs与Heatmaps中前五个卷积块是由三个3×3标准卷积构成的,现将第一个3×3卷积变为1×1卷积,第三个3×3卷积变为膨胀系数为2的空洞卷积,使其保留与原先相同的感受野并进一步降低卷积核参数量;五个卷积块依次连接,块内的卷积再残差相连,使整体获得增大感受野,提升捕获远程信息的能力。
图5 改进OpenPose模型结构Fig.5 Improved OpenPose model structure
为了验证八度卷积对深层特征及预测阶段效果是否产生增益,对改进OpenPose特征提取阶段、预测阶段PAFs 3及Heatmaps 1进行特征可视化,分析Oct-MobileNet与普通MobileNet的效果。如图6所示,融合了八度卷积的MobileNet网络提取的深层特征对人体轮廓这些高频特征分量更重视,对其他低频分量则起到抑制作用,证明了八度卷积模块融入深度可分离卷积可以产生互补,对后续预测阶段的效果也能带来进一步的提升。
图6 特征可视化对比效果Fig.6 Comparison effect of feature visualization
实验在Windows 10系统下进行,深度学习框架为Pytorch,硬件配置为:Inter Core i7-9750H CPU @3.20 GHz,GPU为RTX2060,显存6 GB,RAM为8 GB。训练与测试采用COCO2017数据集,实验中模型优化器为Adam,训练迭代次数为3×10次,学习率为4×10。实验对比结果如表2所示,其中前两行为原论文中的数据,mAP代表模型的检测精度;FLOPs是卷积时发生的浮点运算次数,代表模型的计算量,且1×GFLOPs=10×FLOPs。
表2 消融实验对比Tab.2 Comparison of ablation experiments
从表2可以看出,在预测PAFs和Heatmaps的阶段数目分别为3和1时,本文提出的改进OpenPose精度比原模型下降了1.2%,但Oct-MobileNet计算量GFLOPs仅有VGG19的12%左右。模型检测速度如图7所示,改进后的检测帧率为30 fps左右,满足实时性需求且检测效果较好。
图7 改进前后检测帧率对比Fig.7 Comparison of detection frame rate before and after improvement
本文提出的动作评分方法首先通过OpenPose检测出人体关键点坐标,再用坐标信息表征人体运动姿态,改进后的模型可以对视频进行实时检测,满足算法需求。实验数据为网上下载的《健身气功八段锦》标准教学视频以及个人练习动作视频,以此来进行算法验证。
由于动作练习者有不同的身高体型,也可能站在镜头不同位置,为了便于分析计算,对检测到的关键点坐标进行预处理。模型输出为人体18 个关键点的坐标(x,y),∈[0,17],这些点的坐标可以用来创建一个最小边界框,将图片中的人包围起来,如图8所示,从而建立一个新的坐标系,解决了动作练习者出现在画面不同位置的问题。新坐标系下关键点位置计算方式如式(1)所示,其中(,)表示边界框的左下角端点位置。
图8 坐标预处理流程Fig.8 Coordinate preprocessing process
由于头部在运动过程中变化幅度较小,对动作整体影响不大,故计算过程中去除耳鼻眼等五个关键点,保留颈部与四肢共13 个关键点来构成向量。对于视频中某一帧的动作,可将预处理后的关键点坐标按顺序表示成一个高维向量=[,,...,]。其中—为13 个关键点位置坐标,那么某两帧的动作与动作的相似度便可转化为两个向量和之间的相似度。由于练习者距离镜头远近发生变化会导致向量单位大小不一致,因此对各向量进行L2范数归一化,以保证结果的准确性。
分析特征向量之间的相似性时,通常采用余弦相似度或余弦距离来表示,计算方法如式(2)、式(3)所示。将标准动作生成的向量作为基准向量,计算出基准向量与练习动作生成的向量的余弦相似度,其值越大,对应余弦距离越小,代表动作越相似。
由于每个人的动作快慢不同,导致做相同动作的耗时不同,最后得到的向量序列长度也不一致。对于评估序列相似性问题,一般采用欧式距离和DTW(Dynamic Time Warping)距离,欧氏距离计算的是同一时刻两组序列对应点的直接距离,难以有效计算不同长度的序列相似度;而DTW算法允许挤压或拉伸时间来计算两组时间序列在最佳对齐时的最小距离,如图9所示。
图9 DTW算法原理图Fig.9 Principle diagram of DTW algorithm
设时间内,视频与的帧数分别为和,那么两组视频中的人体动作可表征为序列=[,,...,m,...,m],=[,,...,n,...,n],其中m、n为某一帧的关键点坐标构成的向量。由式(4)、式(5)可求出两序列之间的距离:
其中,(,)表示m与n之间的余弦距离,(,)则表示序列前个点与序列前个点的总距离,即等于当前点距离(,)与可以到达该点最小邻近元素的累积距离之和,衡量的是整体相似度。最后,通过式(6)转化为最后得分,式中表示序列与序列的DTW距离即(,),为相似度最低时的余弦距离。
如图10所示,以《健身气功八段锦》视频中的“左右开弓似射雕”动作为例,图10(a)为专家标准动作,将其设定为模板序列;图10(b)为测试动作序列1;图10(c)为另一专家动作序列,设为测试动作序列2。其中图10(a)序列与图10(c)序列动作规范且相似度较高,而图10(b)动作序列规范性较差。用本文提出的评分算法计算结果如表3所示,其中序列图10(c)得分高且与模板图10(a)的帧数接近,代表各自在动作规范性及速度上都相似,序列图10(b)动作较不规范且速度过快,因此评分也相应较低。
表3 视频序列相似度得分计算结果Tab.3 Calculation results of video sequence similarity scores
图10 八段锦动作序列样本Fig.10 Action sequence samples of Baduanjin
将三组视频中人体某一关键点位移轨迹进行可视化,如图11所示,其中曲线(a)、(c)的走势相同,可以看作是相互平移所得,代表两者动作相似度较高;而曲线(b)与模板(a)有类似的趋势,但动作幅度不到位,导致曲线整体相似度较差。由此,进一步验证了本文算法的有效性。
图11 右膝x坐标变化曲线Fig.11 x coordinate curve of right knee
本文提出了以Oct-MobileNet为主干的改进OpenPose网络,对原网络结构进行了优化。实验结果表明,改进后的模型在精度略微减少的情况下模型计算量大幅减少,视频检测帧率达30 fps,满足后续动作评分系统的实时性需求。
本文将OpenPose得到的关键点位置进行归一化并构成高维向量,用向量表示人体姿态。以八段锦招式为例,通过计算模板动作和练习动作之间向量的余弦距离来表示每一帧动作的相似度,最后采用DTW算法计算视频动作的整体相似度并转化为最后得分。实验表明,本文提出的基于改进OpenPose的动作评分方法无须大量样本训练即可实现。算法在复杂度和速度上有较大优势,并且评价结果与实际情况吻合,在体育运动、健身锻炼等方面具有一定的应用价值。未来工作将关注在算法中加入更多评判条件及反馈信息,进一步完善动作评估系统的功能。