APP下载

面向引体向上的视频图像关键点检测监测方法

2022-12-28刘毅乐涂亚庆

关键词:力图双人关键点

刘毅乐, 涂亚庆

(陆军勤务学院 军事物流系,重庆 401331)

0 引 言

引体向上是高效的人体上肢力量训练科目,其核心要义是借助上肢、胸部和背部肌群,发力使身体向上位移一定幅度。引体向上是军校体能考核的主要课目,有着强身健体、提高体能素质的重要意义。当前,在引体向上考核中以人力监考为主,一名考官只能同时监督一人,若同时对多人进行监督则需要消耗较多人力。在学员自我训练中,容易因无人监督而导致动作不规范,产生训练效果差和训练受伤的情况。对引体向上进行自动化监测,能提高训练效果,节省人力资源,有十分重要的军事意义。

常见的体育运动监测手段有2种:①以各类穿戴式传感器为主体的监测手段[1-2],主要依靠微机电技术(micro-electro-mechanical system,MEMS)制造的小型传感器作为监测仪器,通过直接佩戴或附着于衣物的方式附于人体上收集人体运动数据,进而对人体运动进行监测。此手段准确率高,效果较好,但具有不可避免的延迟和穿戴带来的舒适性差的缺点。②以视频图像处理为基础的监测手段[3],主要通过视频图像处理技术,对运动视频进行逐帧分析,以图像特征在时序上的关联性进行运动监测。该方法能实现非接触式监测,但存在特征寻找准确率不高、对复杂场景分析难的缺点。

近年来,视频图像深度学习[4]高速发展,相关智能算法被应用到日常生活的各个领域,在简单场景识别中有优异的效果,在复杂场景下也能保持较高识别能力。谷歌使用RetinaNet[5]作为其自动驾驶的监测算法;文献[6]使用目标检测网络实现了飞机目标识别;文献[7]使用深度学习实现了道路小目标检测。

关键点检测技术在行人监测、安保监控等领域相对成熟。文献[8]使用关键点检测语义信息实现了行人属性及异常行为识别;文献[9]使用关键点检测道路的标志线实现了道路场景感知;文献[10]使用关键点进行人体行为分析,实现了视频安全监控系统。

目前有一些文献是基于关键点检测引体向上的研究。文献[11]采用Kinect进行关键点检测,效果良好但是仪器设备较贵;文献[12]选择深度学习进行关键点检测,使用专业数据集训练网络达到了优异效果,但专业数据集的数据量大,需要的硬件要求较高;文献[13]使用人脸识别进行面部质心提取,准确率较高,但存在摄像头安放位置要求的限制。近年来,使用自构建数据集的研究越来越多[14],其数据集具有体量小、针对性强、硬件需求低的特点,但在引体向上监测上使用自构建数据集的效果暂无定论。同时,以上方法都只针对单人进行引体向上监测,对双人引体向上进行监测的手段则未提及。

基于上述问题,本文提出一种基于视频图像关键点检测的引体向上监测方法,使用自构建数据集训练关键点检测算法,实现单人与双人引体向上的自动监测。

1 监测方法

1.1 动作分析

引体向上有固定的动作要领和判定标准。以标准正手引体向上为例,单次引体向上可分为拉杠阶段和下杠阶段,如图1所示。在拉杠阶段,手肘部弯曲,带动身体向上位移,期间身体保持平直。部分人员在此期间身体会有不同幅度的前后摆动。当下颌过杠后,进行计数并进入下杠阶段,手臂泄力后缓缓伸直,身体下移至手臂完全伸直,即完成一次引体向上。

图1 引体向上动作循环图Fig.1 Pull-up action cycle

1.2 方法构建

从引体向上的动作要领可以看出,在整个过程中,变化最剧烈的是上肢手臂动作,其次是主干躯体的纵向位移以及可能发生的前后摆动,而抓杠双手基本不发生任何位移。一般认为完成一次引体向上需保证下颌过杠,因此,引体向上判定标准主要在于下颌最高点与单杠的相对位置和过程中身体的姿态。

下颌位置是判断动作是否达标的重要依据。对引体向上过程中下颌的位置信息按时序采集,得到下颌位置的变化规律如图2所示,其最大高度就是图2中的最大值点。因此,通过设置门限代替单杠高度,再与下颌最高点进行比较,就能实现引体向上的监测。

图2 下颌位置的变化规律Fig.2 Change of chin position

根据引体向上动作要领,在引体向上过程中,手部仅会产生横向位移,纵向位置不变。虽然拍摄时的手部抖动会导致人体在视频图像中的位置发生改变,但在关键点检测过程中,身体各个部位的相对位置不会发生改变,因此,可以将门限设置为视频中每一帧的双手纵坐标均值,即允许门限值随时间变化。目前主要监测手段都需要提前找到单杠位置,但本文认为单杠高度就是所设门限高度,因此不需要提前寻找。

精确判断下颌位置的最高点同样影响着引体向上监测的准确性。本文利用2帧之间下颌位置求得斜率,当斜率方向发生变化时,认为下颌位置到达顶点。为避免关键点估计误差带来的梯度误判,使用2个连续正向斜率与2个反向斜率之间的变化处,作为顶点判断依据。梯度计算公式表示为

(1)

(1)式中,(xi,yi)和(xi-1,yi-1)分别为当前与之前下颌在图像中的位置坐标。根据上述方法设计,引体向上监测方法流程如图3所示。

图3 监测方法流程Fig.3 Flow chart of monitoring method

此监测方法无需寻找单杠位置,能够减小计算量,提高监测效率。同时,本文采用人体关键点的相对位置作为监测判断依据,因此,关键点检测结果受镜头抖动的影响较小。

2 算法设计

2.1 关键点检测网络算法

关键点指对图像处理任务有意义的像素点,具有特殊的语义或特殊的代表性,针对不同的图像处理目的,寻找关键点的方式有所不同。目前,关键点检测主要用于时空兴趣点(space-time interest points,SPIT)[15]检测、目标检测[16]、图像分割[17]等。

基于深度卷积神经网络的关键点检测有2种不同思路:①直接寻找关键像素点的回归法[18];②寻找以关键像素点为中心的概率区域的热力图(Heatmap)方法。通常情况下,前者的网络复杂度相对较低、计算速度相对较快;后者往往需要较为复杂的网络结构,导致计算速度较慢。实际应用中,前者在小尺寸图像上精度较好,但在大尺寸图像上精度较差;后者在任何尺寸图像上都能维持较高的精度。因此,本文使用后者作为关键点提取的方法,采用多层卷积神经网络构建关键点检测网络。

2.1.1 卷积神经网络算法

卷积神经网络是关键点检测网络的基本单元,一个卷积神经网络层主要包含卷积层、激活函数和池化层。卷积层由卷积核、输入通道和输出通道构成,如图4所示。

图4 卷积层原理Fig.4 Principle of convolution layer

输入通道数为m个,记为xm;输出通道为n个,记为yn;卷积核个数与输出通道数相对应为n个,记为wn。设输出单通道为a×b的矩阵,输入单通道为i×j的矩阵,卷积核为s×s的矩阵,对应关系为

a=i-s+1

b=j-s+1

(2)

以s=3为例,第c个输出通道Yc、第d个输入通道Xd、第c个卷积核用矩阵Wc分别表示为

(3)

(4)

(5)

Yc由卷积核Wc在m个通道的输入xm上以一定步幅进行由上至下、由左至右的滑动采样,而后由各采样区域的对应元素相加得到。以步幅为1时,第k个输入通道Xk为例,当卷积核步进到由上至下第e次,由左至右第f次时,对应Yc的输出区域Ycef为

(6)

(6式)中,°为矩阵与矩阵哈达玛积的运算符号。

记为

Ycef=Xkef°Wc

(7)

卷积核Wc在Xk上的横向和纵向步进的次数与输出大小一致,都分别为a、b,则输出Yc的最终值由卷积核Wc在每个输入通道Xk|k=1~m上进行采样后对应元素相加得出,记为

(8)

所有的输出通道构成卷积层的输出,进入激活函数。激活函数负责给卷积层的输出添加非线性变量,以ReLU函数为例表示为

(9)

为了缩小卷积层输出的尺寸以减小计算量,通常采用池化操作,以卷积核为2×2的最大值池化为例,其过程如图5所示。

图5 最大值池化原理Fig.5 Principle of maxpool2d

设输入单通道矩阵为X,将其分割为2×2的小矩阵Ai,则对应输出矩阵B的元素bi表示为

(10)

bi=max(a11,a12,a21,a22)

(11)

最大值池化与卷积类似,但是其卷积步幅为卷积核的大小,只改变输入尺寸,不改变输入的通道数,使用卷积核采样区域内最大值代表该区域特征。

2.1.2 热力图算法

热力图的核心思想是让网络直接寻找某一个区域,该区域包含所需的关键点,通过寻找区域内概率最大的点来确定关键点位置,热力图本质上是一种二维正态分布。设目标点在图像上的坐标为(xk,yk),则本文构造的热力图的所有坐标点(x,y)满足

(12)

(12)式中,σ表示二维正态分布的方差,在热力图上表现为有效范围的大小。

2.1.3 优化算法

关键点检测的网络在训练时需要将网络输出与正确结果进行比对,得到损失(loss),根据损失优化每个卷积核的参数,达到预期训练效果。

本文采用的损失函数为均方根误差(mean squared error,MSE)算法,表示为

(13)

(14)

(15)

(13)—(15)式中:Om×n为网络最终输出的热力图;O′m×n为给定的正确热力图;oij和o′ij分别为Om×n和O′m×n中的任一元素。训练过程中希望损失是减小的,故本文采用自适应梯度下降(Adam)优化算法,具体表示为

Δloss=L(W+ΔW)-L(W)≤0

(16)

(16)式中:W为权重集;ΔW为预期权重增量;L为(15)式与权重相关的表达形式,将被减数按泰勒(Talor)集数展开至第2项,表示为

L(W+ΔW)=L(W)+L′(W)ΔW

(17)

(17)式中,L′为L对权重W的导数。将(17)式代入(16)式得

L(W+ΔW)-L(W)=L′(W)ΔW≤0

(18)

则权重增量为

ΔW=-γL′(W)

(19)

(19)式中,γ为学习率。将(19)式代入(17)式,简化得到

lt+1=lt-γkL

(20)

(20)式中:lt+1为L(W+ΔW);lt为L(W);kL为-L′2(W)。此时引入动量因子β1和均方根因子β2构造变量vt、ht分别为

vt=β1vt-1+(1-β1)kL

(21)

(22)

(21)—(22)式中,β1和β2均属于(0,1)。(20)式变为

(23)

(23)式就是本文使用的算法。

2.2 单人监测网络设计

目前基于热力图进行关键点检测的方法有Mask-RCNN[19]、Openpose[20]等,其中,Openpose结构较为简单,使用相对广泛。鉴于引体向上的监测环境并不复杂,本文采用基于Openpose模型进行网络的设计。

为减小网络的参数量,提高运算速度,本文改进Openpose网络并进行训练,具体改进为使用自编译模块进行骨骼点间的连线,代替原有的部分亲和字段(part affinity fields,PAF)模块;使用卷积神经网络代替池化层以提取更详细的特征;使用Unet的前8层,并额外增加2个512通道数的层,来构成前端网络,代替VGG-19的前端网络。总体网络结构设计共6层,采用人体姿态卷积机(convolutional pose machines,CMP)[21]架构进行搭建,具体结构如图6所示。

图6 网络结构Fig.6 Frame of network

实测发现,简化后的网络在保证有一定深度的同时,占用显存仅为3 GByte左右,占用空间较小,在目前主流显卡显存为6~8 GByte的背景下,本文设计的网络有利于依托正常设备进行网络训练,达到监测目的。

2.3 双人监测网络设计

在单人监测的基础上,为进一步实现双人监测,使用YOLOv5结合本文网络进行自上而下式的双人引体向上监测。YOLOv5[22]是一款成熟的目标检测分类网络,能够在图像中找到不同对象并用bounding Box进行框选。本文以YOLOv5作为前端网络负责识别视频图像中的人物,提取人物所在的图像区域后,由改进Openpose负责关键点检测,最终实现引体向上监测,具体流程如图7所示。

图7 双人监测流程图Fig.7 Flow chart of double person monitoring module

YOLOv5分类结果的种类较多,不能直接作为改进Openpose的输入。针对此问题,本文自编译了一个裁剪模块,放于2个网络之间,能够根据YOLOv5的输出,以bounding Box的高度为判断依据,自动寻找引体向上的人物,并裁剪以人物为中心的一定区域,具体流程如图8所示。

图8裁剪模块流程图
Fig.8Flowchartofcropmodule

2.4 网络训练

网络的训练需要数据集,为验证自构建数据集的监测效果,本文自构建了一个小型引体向上数据集,用于对网络进行训练。该数据集包含338张图片,使用labelme对每张图片进行标注,标注数据存储为json格式。数据集如图9所示。

图9 自构建数据集Fig.9 Self dataset

在训练网络前,将数据集的图片通过裁剪、填充、改变尺寸的操作,将图片归一化为同一正矩形尺寸;对标注数据也进行相应的调整。同时,采用数据增强的方法,对样本的尺寸、对比度、亮度进行调整,扩大训练的样本数量为原来的4倍。本文使用的关键点为9个,使用热力图作为关键点检测方法,热力图所对应的人体关节点位置如图10所示。

图10 9个人体关键点Fig.10 9 key-points of human body

使用热力图表示的关键点如图11所示。热力图大小与输入图片尺寸大小相关,虽然热力图尺寸越大,最终训练出的网络效果越好,但所需要的计算量和占用显存空间也就越大。本文将输入图片尺寸归一化为400×400,对应的输出热力图尺寸为50×50。训练网络使用MSE算法计算残差,使用Adam进行优化,训练网络。

图11 热力图表示关键点Fig.11 Using heatmap express key-points

3 实 验

3.1 单人监测

将实地拍摄的视频图像分为测试集和验证集,将测试集预处理后输入已训练的网络,得到效果图如图12所示,其中,数字1,2表示动作计数。由图12可见,本文的提出的算法能够正确检测关键点,算法可以正常运行并对引体向上进行监测。使用关键点连线代替PAF构建人体骨骼也具有较好的直观性,能够体现人体在进行引体向上时的动作特征。

图12 单人引体向上实验效果图Fig.12 Experimental effect diagram of single pull-up

将双手及下颌关键点位置实时记录,对双手和下颌高度均值进行分析。在实验图像流中,二者随时间的变化如图13所示。

图13 关键点位置图Fig.13 Key-points position

由图13可见,本文提出的监测方法在原理上没有问题,且效果良好,能够对引体向上进行正确监测。

3.2 双人监测

通过双人引体向上实验对构建的模型进行验证,监测效果如图14所示,其中,数字2,3表示动作计数。从图14可见,本文构建的模型能很好地识别双人的关键点,并对引体向上进行监测及识别,实验效果良好。

图14 双人引体向上实验效果图Fig.14 Experimental effect diagram of double pull-up

3.3 准确率

使用验证集视频检验算法的监测功能,对总共100个引体向上样本进行监测,本文算法均能够正常进行计数。在单人检测上,将结果分为达标且判断达标(TT)、达标但判断不达标(TF)、不达标但判断达标(FT)、不达标且判断不达标(FF);在双人检测上,从视频图像中随机挑选100张图像检测双人的识别率,分为双人检测到双人(double detect true, DDT)、双人检测到单人(double detect false, DDF)、单人检测到双人(single detect false, SDF)、单人检测到单人(single detect true, SDT),最终结果如表1所示。网络效果和网络训练与现有方法的对比结果如表2所示。

表1 测试结果Tab.1 Test result

表2 对比结果Tab.2 Test result

由表1—表2可见,本文的监测方法能够达到监测目的。同时,本文的算法成本低,在自构建的小数据集上,网络准确率较高,支持多人识别,训练时间短,便于对网络进行重新调整和训练。

实验结果表明,本文的算法能够有效地进行引体向上的监测,具有非接触式监督的优点,同时能够保证双人监测,大大提高了监测效率,节省了人力,为日常训练自动化监测、考核时辅助监督提供了一种较为廉价的监测方法。

4 结束语

针对单人或双人的引体向上的监测问题,本文提出了一种基于关键点检测的自动监测方法。在分析引体向上动作的基础上,根据特定身体部位的变化规律,设计了引体向上监测方法。针对特定身体部位关键点的识别,论文基于Openpose网络模型设计了关键点识别网络,使用自构建数据集训练网络,采用热力图输出结果;使用YOLOv5作为前端网络,完成了双人引体向上的关键点识别网络的构建。实验表明,本文提出的方法在构建数据集上的训练时间大幅度缩短,且能达到94%的准确率。综上,本文提出的监测方法具有一定的应用价值能提高军队训练效率,在引体向上等体育运动的自动监测上做出了有益探索。

猜你喜欢

力图双人关键点
论建筑工程管理关键点
肉兔育肥抓好七个关键点
建筑设计中的防火技术关键点
乔·拜登力图在外交政策讲话中向世界表明美国回来了
双人面具
——为小提琴与钢琴而作
中国第一个双人滑冰世界冠军
———申雪、赵宏博
写在受降日
中职建筑力学中弯矩剪力图的简单画法
弯曲内力图教学方法探讨
“双人运球”乐翻天