基于规则的身体动作快速识别方法
2022-02-18刘曦泽
刘曦泽
(1.中国标准化研究院理论战略研究所, 北京 100191; 2. 清华大学机械工程学院, 北京 100084)
随着科技的进步,基于计算机视觉的动作识别成为人类行为数据的重要来源之一,也为基于人因的设计决策提供了依据。由于人体结构以及运动的复杂性,加之客观环境的多样性,对动作识别的研究很难排除背景等外部因素的干扰。为了提升人体动作捕捉识别的准确率和效率,学者主要从两个方向展开了研究。
一是通过建立人体姿态的三通道彩色RGB图像进行人体轮廓分析与识别,董楠[1]和Chen等[2]提出了一种基于深度学习的静态轮廓图像提取方法,以增加准确度;Russel等[3]在静态轮廓图的基础上结合并行卷积神经网络对步态能量图像(gait energy image,GEI)进行识别,用以寻找失物主人或犯罪分子;Liu[4]利用Gabor小波提取主动能量图(active energy image,AEI)的幅度谱,研究如何提升动作幅度特征的识别能力;李锐等[5]以帧差能量图(frame difference energy image,FDEI)的行质量向量作为步态特征的识别方法,提升了特征的提取效率和识别速度,具有较高实用性。随着深度图像传感器成本的降低与智能算法的不断优化,基于RGB-D图像的动作识别技术逐渐崭露头角。即便如此,该类方法仍存在成本较高、计算时间较长的问题。
二是基于关节点数据的人体动作识别方法,该方法又细分为两类。一类是通过概率统计对识别结果进行动态分类,董宁等[6]利用混合贝叶斯网络模型提升人体动作识别的效率和准确率,但该方法的算法实现较为复杂;杨世强等[7]利用隐马尔可夫模型和深度置信网络对连续动作识别展开研究,通过复合算法提升连续动作的识别效果,但该方法识别响应速度较慢;张恒鑫等[8]采用级联支持向量机(support vector machine,SVM)快速检测人体区域,并开展关节点时空特征分析以提高识别精度。另一类是通过建立分类特征数据库进行模板匹配的方法,该方法的典型代表是动态时间规整算法(dynamic time warping,DTW)[9],丁重阳等[10]对DTW进行了改进,并采用SVM对关节点模型的行为特征进行分类,提升了识别的准确率,但因为算法较为复杂,效率方面缺乏优势。设备使用方面,Kinect由于能够自动生成关节点模型,成为动作识别研究的主流设备。胡欣荣等[11]采用多特征融合识别算法对Kinect关节点模型进行分析实现三维动作识别,但该研究未解决二维坐标与三维坐标的转换问题,也未提供标准动作库的建立方法;郭小焕等[12]针对手部关节的识别精度问题,利用阈值分割和正向运动学等方法对Kinect获取的关节信息进行计算,推算关节实时位置;李琪等[13]构建了双Kinect系统,用以跟踪三维人体姿态以及运动生物力学的性能评估,但结果准确度上仍需要进一步提升。近年来,深度学习方法也被引入动作识别领域,能够提供较好的识别结果[2, 14]。
以上研究均从算法角度提升动作识别效率,但较少综合讨论关节点数量以及整体位移等关键因素对识别结果的影响以及识别规则的构建方法[15-16]。因此,现提出一种综合关节点模型简化、坐标系转换、判别函数与判别规则数据库构建、规则比对判别的身体动作快速识别方法,以期减少关节点数量和整体位移因素对识别结果的负面影响,为低精度要求场景下的身体动作快速识别提供理论基础。
1 基于规则的身体动作快速识别方法
提出了一种基于规则的身体动作快速识别方法,如图1所示,主要包括三个阶段。首先,基于实验与人因标准建立关节点简化模型,定义判别参数与人体中心投影坐标系;然后设计判别函数,并通过实验获取关节夹角和中心参数的参照值,代入函数建立动作分类库与判别规则库;最后,将设备采集的实时参数数据带入判别函数,与规则进行匹配输出动作识别结果,若匹配失败,则扩展关键帧范围再次匹配。
Fi为综合判定指标图1 基于规则的身体动作快速识别流程Fig.1 Fast recognition process of body action based on rules
2 建立静态人体简化模型
基于人体模型的动作识别方法本质上就是将人体的姿态参数化,通过对参数的判断达到识别的目的。关节点的数量决定了识别计算的复杂程度,较多的关节点会导致计算周期较长,无法及时给出动作判定结果。因此出于简化计算的考虑对Kinect V2生成的关节点模型进行简化处理,使关节点模型只包含快速判别所需的若干关键参数。
2.1 关节点模型的简化
首先,基于GB/T10000—1988《中国成年人人体尺寸》[17]以及人因工程学的部分研究[18-19]对Kinect V2获取的25个关节点进行层次分类,如表1所示。
第一层:身体躯干关节点。人体的躯干相关关节点,是某些动作所需的特征信息的部分来源。
第二层:四肢关节点。人体的大多数动作都主要依靠人体的四肢来表达,它们包含了大量的人体运动或姿态的特征信息。
第三层:手、脚关节点。手和脚在本研究的动作中能够提供的信息非常少,是对局部动作(手势识别、脚部运动等)进行精细动作捕捉的信息来源。
针对以上层次分类,现对体育锻炼、医疗康复等场景中的行走、奔跑、蹲下起立、跳跃等身体主要动作,各进行了100组实验,探索关节点坐标-关节夹角-动作分类之间的关系。第一层关节点中,有96%的实验数据证明头、颈部、脊肩交点、左肩、右肩、脊柱中心、髋关节中心、左髋、右髋在运动中相对位置基本固定不变,不影响身体动作的判定;第二层关节点中,有94%的数据证明省略左腕、右腕、左踝、右踝不影响动作分类;第三层关节点中,100%的数据显示手脚的细节对身体整体动作识别无影响,但对手势识别造成关键影响。
基于上述分析,对部分相邻且对身体动作识别影响不大的关节点进行融合,对手脚的细节关节点进行了精简,得到如图2和表1所示的精简模型。该精简模型包括11个关键的骨骼关节点,为头、脊肩交点、左肘、右肘、左手、右手、髋关节中心、左膝、右膝、左脚、右脚。
表1 合并前后关节点分层表Table 1 Joint points before and after the merger
φ1为左臂与身体躯干夹角;φ2为右臂与躯干夹角;φ3为左右腿夹角;φ4为右肘关节夹角;φ5为左肘关节夹角;φ6为右膝关节 夹角;φ7为左膝关节夹角;H为头部与脚部坐标均值差的绝对值;h为髋关节中心与脚部坐标均值差的绝对值图2 简化的人体关节点模型Fig.2 Simplified human joint points model
以图2为基础,重新对11个关键关节点进行层次的分类处理(表1):躯干关节点与头为第一层关节点,四肢中间节点为第二层关节点,肢端合并为第三层关节点,分层的目的在于定义识别过程中的优先顺序,级别越高的关节点越先进行定义与识别。
2.2 建立人体中心投影坐标系
一般的人体动作识别建立在图像坐标系的基础上,所获取的数据反映了人体各部分的相对运动以及整体的位移,在身体动作识别过程中,整体位移仅对移动方向的识别提供帮助,属于无效参数。建立人体中心投影坐标系能够剥离位移对识别的干扰,使识别过程专注于身体动作,提升识别准确度与速度。将髋关节中心定义为空间坐标的原点中心,垂直水平面向上为Y轴的正向,视频采集设备指向髋关节中心的方向为Z轴正向,垂直于YOZ平面的方向为X轴方向,如图3所示。后续人体关节点坐标、中心等参数的获取均为该坐标系在XOY平面内的投影。
2.3 关节夹角与身体中心参数
通过对上述简化模型的分析,对坐标系中XOY投影平面中的7个与人体动作识别有较大影响的夹角参数进行定义,如图2所示。
在动作识别过程中,夹角φ可以通过关节向量的三角余弦公式计算得到[20]。基于人因工程,上述的7个关键关节角度存在一定的范围要求[21]。取同一角度在行走、奔跑、跳跃、下蹲等运动过程中的角度最大值为上限,定义角度参数范围,如表2所示。
除上述角度参数外,还需要定义人体中心参数。为避免中心的高度(Y坐标值)随着人与设备之间的距离变化的影响,在简化模型的基础上,将髋关节中心与头部距离地面的高度比作为中心参数,如式(1)所示。
图3 中心投影坐标系定义Fig.3 Definition of central projection coordinate system
表2 关节夹角参数极限值及其范围Table 2 Limit value and range of joint angle parameters
其具体算法如下。
(1)获取头部的y值和脚部坐标的y脚均值(取两只脚y值的平均值)差的绝对值,记为H,H=y头-y脚均值。
(2)获取髋关节中心和脚部坐标的y均值差的绝对值,记为h,h=y中心-y脚均值。
(3)计算中心参数η。
(1)
2.4 建立动作判别函数与判别规则
通过实验发现[22],在奔跑或行走过程中,中心参数的变化不显著,夹角参数变化明显;在下蹲和跳跃过程中,夹角参数难于识别,但中心参数变化显著。因此,可以在区分水平、垂直等大类运动的基础上,再根据关节夹角变化的幅度综合值来识别具体运动。
2.4.1 参数的无量纲化处理
(1)夹角参数的无量纲化。利用表2中每个夹角参数的范围,可分别对大类运动夹角和具体运动夹角进行无量纲化处理,即
(2)
(3)
式中:φi为实测的夹角值;φ参为通过测量实验建立的参照值;φn为人体自然站立时各关节夹角;φmax和φmin为人体运动时各关节夹角的理论极限值。
(2)中心参数按照定义无需进行处理。
2.4.2 判别函数的建立
当人静止站立时,中心参数η≈1/2,考虑到η在行走或奔跑时的变化不大,而在跳跃或蹲下起立时变化显著,在建立判别函数时,进行两项细节处理:①将判别过程分为两阶段,首先区分水平或垂直运动大类,再识别具体动作;②将中心参数的两倍作为分母以增强识别显著性。基于上述分析,动作的判别函数建立,即
(4)
(5)
式中:wj为参数权重,可采用层次分析法计算得到;εj、μj为无量纲化后的夹角数值;η为中心参数;F1为大类动作综合判定指标;F2为具体动作综合判定指标。式(4)用以判别中心参数是否显著变化,即行走、奔跑之类的水平运动或跳跃、下蹲之类的垂直运动;式(5)用以判别具体动作。
2.4.3 建立动作的判别规则
在建立判别函数的基础上进一步建立判别规则,分为以下两步。
(1)建立动作判别规则。进行参照数据集实验,将实验数据代入判别函数,归纳判别规则库(表3)。
(2)动作识别。进行动作识别时,判断实时测量数据的F1、F2是否与规则库中的规则相匹配,如图1所示,若符合,则显示识别结果。通过与表3中的规则进行对比可直接输出大部分的身体动作识别结果,但由表3可知,F2并不是一个连续的范围值,在跳跃动作与蹲起动作之间存在重合的判定范围区域,需要做进一步判定。借助特殊关节点坐标进行二次判定,如跳跃时,手腕关节点一般会高于头部,在蹲下起立的过程中则往往不会发生,因此可以通过计算手腕关节的y坐标是否高于头部进一步判定是跳跃或是蹲下。
表3 动作判别规则Table 3 Action discrimination rules
3 实验与讨论
针对关节点模型的简化以及相关夹角、中心参数的定义,需要通过实验验证模型、参数的合理性和可行性,并获取判别函数中参数的参照值,作为动作判别依据。
3.1 实验条件与假设
实验环境为Intel Core i5-3317U,CPU@1.7 GHz,4 GB内存,Windos10操作系统。影像获取设备为像素1 000 W的摄像机,拍摄点距地面0.88 m,拍摄距离2.5 m。地点选取统一背景,墙壁为白色。实验的背景与光照的组合随机。实验过程中,要求实验者穿着简单易分辨,如穿着黑、红等与墙壁颜色反差较大的衣物,无干扰物,如背包等。在可靠度为95%的前提下取样本比例估计P=0.9,精度百分比E=3%,通过统计样本量计算得到样本数n=400组,即每个动作做100组实验。一共6人参与,3男3女,每个动作重复6次。
针对实验过程中可能发生的影响,做出如下条件假设。
(1)实验时,始终采用人的侧面进行拍摄,如行走或奔跑时的运动方向与摄像机镜头的方向成90°视角,跳跃等动作时人的正面朝向与摄像机镜头成90°视角。
(2)假设实验的动作是绝大部分人的自然动作,符合人体运动的人因学原理,如跳跃时踝关节点不会高于膝盖等。
(3)每次实验的环境保持一致。
3.2 实验内容
以行走、奔跑、跳跃以及蹲下起立为例,验证关节点简化模型与中心参数的合理性,并获取各参数的参照值。每组动作根据速度再细分,如行走可以分为快走,慢走和正常速度,奔跑也可以类似的再分。通过录像的方式录取动作视频作为原始动作资料,具体如表4所示。
使用Total_Video_Converter-影音转换V 3.11软件将拍摄好的实验视频转化成jpg格式的静态图片帧。根据每个动作一个循环的时间位标准,进行视频分段,将每段视频包含的一个完整循环动作以每帧若干秒为间隔分帧处理。每个动作的一个完整循环时间如表4所示。对视频进行分帧处理后的效果如图4所示。
图4 视频分帧示意图Fig.4 Schematic diagram of video framing
3.3 数据采集与处理
基于分帧后的静态图像进行动作判别,是某一时刻的状态量而不是过程量,所以关键帧图像的选取十分重要。在建立参考数据集时,以一个完整的循环动作为基础,选取每个角度达到最大值或最小时(即一个循环过程中的前半个循环和后半个循环的转折点)的帧图像作为关键帧数据,并以关键帧的夹角参数和中心参数作为参照值。以奔跑中的φ1和φ4为例,图5为奔跑过程中φ1和φ4的角度循环变化。各动作参数数据图如图6所示。
竖直虚线标注出的为关键帧数据;φ1为由小变大的数据;取每个 循环的最大值;φ4为由大变小的数据,取每个循环的最小值图5 奔跑中φ1和φ4角度的变化(部分)Fig.5 Changes of φ1and φ4in running (part)
表4 实验内容及安排Table 4 Experimental content and arrangement
图6 各动作参数数据图Fig.6 Data diagram of each action parameter
由图6可知,奔跑过程中各夹角最大值存在较小波动,总体平稳,中心参数η的变化也不明显,说明数据有较好的聚集性。通过实验其他动作也具有类似结论。因此,关节点简化模型与中心坐标系的建立均能有效识别身体动作,可以基于该模型及参数建立参照规则库。通过实验,将测量数据的平均值作为动作识别时的参照值,如表5所示。将实验获取的关键帧数据(图5)与表5中的参照数据代入式(2)~式(5),得到F1和F2的范围,建立如表3所示的规则库。
表5 各动作各夹角识别参照值Table 5 Identification reference value of each action angle
3.4 识别结果讨论
通过影像分析建立规则库后,再利用Kinect V2获得关节模型对人体进行实时关节点跟踪,利用软件MATLAB(R2010b)读取关节点的空间坐标,并将获取的夹角和中心坐标带入判别函数,将计算值与所建立的规则库进行匹配,达到实时识别动作的效果。随机选取约4/5的实验样本作为参照实验数据,用于代入判别函数归纳得到判别规则,1/5的实验样本作为测试样本,验证关节点简化模型、中心坐标系、关键参数以及判别函数的有效性。
同时,为了验证本文方法的先进性和有效性,与其他类型方法进行了比较。表6列出了本文方法与3种主要识别方法在2个不同公开数据集上的识别率和平均耗时。经过比较,在保证识别率的基础上,本文方法只需通过实验数据构建判别函数参照值,将测量数值与参照值进行多次比对即可,不需要大量的数据作为数据库进行一维或者二维的匹配,判别简单,计算量小;与基于时序增强的判别方法比较,不需要获得连续的视频或帧图像,计算速度较快。本文方法在保证识别率的基础上有效简化了识别过程,提升了识别速度,识别时间稳定。
表6 实验测试结果及与其他方法的比较Table 6 Test results and comparison with other methods
4 结论与展望
针对体育锻炼、医疗康复等场景对身体动作识别效率的需求,提出了一种基于规则的身体动作快速识别方法。根据人因原理及实验验证对Kinect设备采集的25个关节点进行了融合,建立了关节点简化模型与中心投影坐标系,并且定义了身体动作相关的关键夹角参数和中心参数,设计了动作判别函数。通过实验,获取参数的参照数据,建立了动作识别的规则库,通过与规则库进行对比,达到快速识别身体动作的目的。最后,利用公开数据集将本文方法与若干其他方法进行了比较,证明了本文方法在识别效率上有明显优势。在今后的研究中,将考虑利用多设备从多方向获取数据,开展多数据源的协同身体动作识别,并进一步探索降低无关因素干扰的方法。