摘要:针对传统方法在人体行为识别方面拓展性不强等问题,提出一种序列化的研究思想,提取骨骼图的特征矢量,用SVM训练和识别静态动作,形成序列即可表示动态动作,因此只要丰富静态动作库,就可以实现多种动态动作的识别,具有很好的拓展性。为了减少静态动作识别错误产生的影响,提出一种基于前后信息的纠错算法。实验表明,该算法具有较高的识别准确率,并且具有很好的鲁棒性和实时性。
0引言
随着科学技术的发展,计算机的运算能力大大提升,针对大数据的处理渐渐得以实现。在此基础上发展而来的人体行为姿态识别为人机交互、视频监控和智能家居等方面的应用提供了基础。近些年,研究人员已经在人体行为识别方面做了大量的研究工作,取得了许多重要的成果,但是对于复杂人体行为的识别准确率较低,仍然有待于提高。
基于视觉的人体行为识别方法[2]可以分为两类,一类基于模板匹配[3],一类基于机器学习[4]。基于模板匹配的方法通过计算当前动作与模板库里的模板之间的相似度,把当前模板判定为最相似动作的过程。IBANEZ R和SORIA A等人通过提取人体肢体行为轨迹,分别用动态时间规整(DTW)和隐马尔科夫(HMM)算法,基于模板匹配进行人体行为识别[5]。基于机器学习的方法通过提取样本特征对样本训练,得到一个分类器,此分类器具有预测未知样本的能力。TRIGUEIROS P和RIBEIRO F等人就对比了几种机器学习算法在手势识别上的应用[6]。但是,这些算法都是为某一具体行为动作所设计,当需要检测额外的行为动作时,又需要重新设计方案,拓展性较差。
本文使用从Kinect[7]采集的骨骼图数据(由MSRC-12 Gesture Dataset数据库[8]提供),Kinect提取的骨骼图像能够克服光线强弱等外界因素带来的干扰,具有较强的鲁棒性;提取骨骼特征,并采用机器学习的算法对静态动作分类,最终形成序列;从序列中找出需要识别的动作序列的过程即可表示动态动作识别过程,此过程具有很好的实时性和拓展性。
1基于骨骼图的特征提取
选取既能够充分表示人体某一动作,又不包含过多的冗余信息的人体特征特征提取对行为识别的研究很有价值。根据人体机械学理论,本文通过提取4个关节点向量、5个关节点角度和4个关节点距离系数表示人体行为姿态。
1.1关节点向量提取
如图1所示,4个关节点向量分别是左上臂(VSL-EL)、右上臂(VSR-ER)、左大腿(VHL-KL)和右大腿(VHR-KR)。现以左上臂为例,计算左上臂向量。已知左肩膀(ShoulderLeft)关节点坐标为SL(Sx,Sy,Sz),左手肘(ElbowLeft)关节点坐标为EL(Ex,Ey,Ez),则左上臂关节点向量计算方法如式(1)所示。其他关节点向量以此类推。
1.2关节点角度提取
在原有向量的基础上提取4个关节点角度。联合关节点向量,可以描述人体左小臂、右小臂、左小腿和右小腿的活动状态。图1中θEL、θER、θKL和θKR分别表示左肘关节点角度、右肘关节点角度、左膝关节点角度和右膝关节点角度。θHC表示臀部中心到头部的向量与竖直方向向量之间的夹角,可以表示人体姿态的弯腰程度,描述整体躯干的活动状态。夹角可以通过式(2)计算获得。
其中V1、V2分别表示两个关节点向量,θ表示这两个关节点向量的夹角。
1.3关节点距离系数提取
为了能够让选取特征对上肢手部活动更加敏感,本文加入4个关节点距离系数。图1中,a为臀部中心到头部的关节向量,b为头部到右手的关节向量,c为头部到左手的关节向量,d为臀部中心到右手的关节向量,e为臀部中心到左手的关节向量。通过式(3)可以获得头部到左右手的相对距离系数d1、d2和臀部中心到左右手的相对距离系数d3、d4。
至此,基于骨骼图的特征可以表示为式(4)所示的特征矩阵,共计4×3+5+4=21维。
2基于SVM的识别算法流程
支持向量机[9](Support Vector Machines,SVM)是一种用于分类的算法,它能够在多维空间找出完美划分事物的超平面。本文使用SVM进行动作分类,以二分类支持向量机为例,已知训练样本集T:
使用多个二分类器形成多分类器,用丰富的样本训练并识别人体静态姿势。
2.2动态动作的序列化识别
设定某一采样频率,所提取到每一帧骨骼图都以静态的方式呈现。对每一帧骨骼图进行静态动作识别,可以得到一串长序列。在长序列中寻找待识别序列即为动态动作识别。如图2所示,一组抬起双手举高(Start system)的动作可以分解为G1、G2、G3 3个静态动作,因此只要在长序列中检测到连续的G1、G2、G3 3个静态动作即可判定出现“抬起双手举高”的动态动作。
2.3分类的纠错过程
为了减小静态姿势识别错误对动态动作识别准确率的影响,本文提出一种基于前后信息的姿态纠正算法。一般情况下,相邻两帧或者多帧的数据描述的都是同一动作。算法流程图如图3所示,其中predict是分类器预测的结果,sequence是最终形成的长序列。首先判断当前预测结果是否与长序列队尾数据相同,如果相同,说明当前动作与上一帧动作相同,把预测结果加入长序列队尾;如果不相同,需要验证当前预测结果是否出错。此算法判断当前动作之后的n(本文选取15)帧预测结果中出现最多的数据是否等于当前动作预测结果,并且其所占比是否大于某一阈值(本文选取0.5),如果是,将当前动作的预测结果加入长序列队尾;如果否,说明当前动作预测结果出错,长序列队尾数据保持不变。
3实验验证
3.1训练静态动作
MSRC-12 Gesture Dataset是微软提供的数据库,共包括12组动作。本文选择其中3组动作,分别为Start system、Duck和Push right,如图2、图4和图5所示。
显然,大多数志愿者保持某一静态动作的时间并不一致。为了合理利用资源和方便处理,把姿势划分为进行态和保持态两种状态:
(1)进行态是一组动作的中间状态,即两种静态姿态的过度,可包含运动过程中较大范围的运动姿态,图2(b)的G2和图5(b)中的G5即是进行态。因为进行态不能对决策结果起决定性作用,所以进行态并不需要非常高的识别精确度。
(2)保持态是一组动作中保持时间较长的状态,能够对姿势的识别起决定性作用,因此需要很高的识别准确率。图2(a)中的G1、图2(c)中的G3、图4(b)中的G4以及图5(c)中的G6都属于保持态。实验中,从10人中选取600帧G1姿势,5人中选取550帧G2、G3、G4、G5和G6姿势,共3 350帧数据,用于训练分类器,SVM识别结果见表1。
3.2静态动作结果分析
采用十折交叉验证法检验分类器的性能,最终得到的平均识别准确度为93.12%。表1为单个姿态的识别准确度。从表1可以看出,位于保持态的姿态识别准确率普遍在90%以上,达到较高的准确率。进行态姿态识别准确率比保持态稍低,但是从前文可知,这对最终的判定结果影响不大。
3.3序列纠错
采用2.3节所述的方法进行姿态序列纠错。不失一般性,从实验的3 350帧数据中随机选取150帧数据(原序列)为例,见图6(a)。在原序列第30帧左右,姿势2(G2)向姿势3(G3)过度阶段出现了较多错分类现象。图6(b)是采用2.3节方法纠错后序列,可以看出,整个序列变得光滑得多,上述的分类错误得到了抑制,大大方便了后续动作识别。
3.4态动作识别验证
为便利于分析,将经过纠错处理的数据中连续的n个“1”用一个“1”表示,其他姿态以此类推。以Start system为例,当检测到连续的1,2,3或者1,3则可以判定出现一组Start system动作,当检测到连续的1,2,3,2,1、1,2,3,1、1,3,2,1、1,3,1则判定完成Start system动作并回到站姿(G1)。用MSRC-12 Gesture Dataset数据测试,测试结果见表2。为了对比算法的优劣,表2中同时列出了文献[10]的随机森林算法的识别情况。
由表2明显可以看出,与文献[10]的算法相比,本文提出的算法的识别准确率更高。通过实验得知,Start system、Duck和Push right 3种动作具体的识别准确率分别是71.82%、80%和76.36%。
4总结
本文算法可以实现实时提取骨骼数据,计算骨骼特征,分类识别并形成序列,具有很好的实时性。序列化的动态动作识别方法可以满足各种动作的任意组合,具有很好的拓展性。实验表明,本文算法具有较高的识别准确率。但是,对采集到的每一帧骨骼图进行分类无疑会增加算法复度。因此,如何降低冗余的分类识别,是下一步研究需要解决的问题。
-
人机交互
+关注
关注
12文章
1206浏览量
55380 -
识别算法
+关注
关注
0文章
44浏览量
10359
原文标题:【学术论文】人体行为序列化识别算法研究
文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论