0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种基于前后信息的纠错算法

SwM2_ChinaAET 来源:未知 作者:李倩 2018-05-06 10:11 次阅读

摘要:针对传统方法在人体行为识别方面拓展性不强等问题,提出一种序列化的研究思想,提取骨骼图的特征矢量,用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

    文章

    1118

    浏览量

    54746
  • 识别算法
    +关注

    关注

    0

    文章

    44

    浏览量

    10298

原文标题:【学术论文】人体行为序列化识别算法研究

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一种改进的SEDF调度算法

    【摘要】:Xen由于其很低的性能损失,而逐渐成为最受欢迎的虚拟化管理工具之.但是,它的SEDF调度算法存在在SMP下不能支持全局负载平衡的问题.本文针对此问题提出一种名为IEDF的改进算法
    发表于 04-24 10:03

    一种基于量化DCT域音频水印新算法

    本帖最后由 luna 于 2011-3-3 14:38 编辑 提出一种新的基于量化DCT域的音频水印算法,根据DC分量和AC分量在水印的鲁棒性和不可听性中起着不同的影响来设计水印算法,使水印
    发表于 03-03 00:31

    一种基于混沌和小波变换的大容量音频信息隐藏算法

    `音频信息隐藏的主要原理是利用人耳听觉系统的某些特性,将秘密信息隐藏到普通的音频数据流中以达到隐蔽通信的目的.提出了一种基于混沌和小波变换的大容量音频隐藏算法.该
    发表于 03-06 18:32

    一种基于FPGA的任意锁相倍频算法

    摘 要:提出了一种基于FPGA的任意锁相倍频算法。通过对倍频系统总体结构的分析,提出了实现该算法的原理及其具体的设计方法,同时提供了个基于FPGA器件完成的设计实例。仿真和实测结果表
    发表于 12-04 22:29

    FFT 算法一种 FPGA 实现

    本帖最后由 lee_st 于 2017-11-22 08:28 编辑 摘 要: FFT 运算在OFDM 系统中起调制和解调的作用。针对OFDM 系统中FFT 运算的要求, 研究了一种易于
    发表于 11-21 15:55

    一种改进的矩不变自动阈值算法

    摘要:提出了一种改进的矩不变自动阈值算法。该算法针对矩不变自动阈值法忽略图像细节的缺点,在矩不变自动阈值的基础上增加了基于目标边缘像素的梯度调整,从而使分割效果兼顾图像的整体和细节。该算法
    发表于 08-24 16:22

    为什么要提出一种数据隐藏新算法

    为什么要提出一种数据隐藏新算法?DDE双重差值扩展算法包括哪些?
    发表于 04-20 07:05

    介绍一种防止相位假信号的具体算法

    什么是S参数测量?S参数插补算法是什么?介绍一种防止级联的S参数出现相位假信号的具体算法
    发表于 04-30 07:00

    请问怎样去设计一种纠错逻辑电路?

    怎样去设计一种纠错逻辑电路?怎样对检纠错逻辑电路进行仿真?
    发表于 05-06 08:12

    怎样去设计一种同步补偿机制(CDCO算法)?

    本文基于发送方接收方双向同步算法的原理,提出一种基于时钟漂移与偏移的同步补偿机制(CDCO算法)。
    发表于 05-17 06:18

    如何去实现一种错误控制编码的算法

    什么是错误控制编码?如何去实现一种错误控制编码的算法?什么是解码算法
    发表于 06-21 08:13

    分享一种超级实用的步进电机调速算法

    [导读] 大家好,我是逸珺。今天想分享一种超级实用的步进电机调速算法,这种算法在步进电机调速方案中可以说是一种非常优异的方案。梯形调速算法
    发表于 09-03 09:05

    基于FPGA的检纠错逻辑算法的实现

    基于汉明码的纠错原理.根据对64位数据进行检纠错处理的需要,设计一个利用8位校验码,以实现该功能的算法逻辑,并通过FPGA实现。
    发表于 09-15 15:14 1410次阅读
    基于FPGA的检<b class='flag-5'>纠错</b>逻辑<b class='flag-5'>算法</b>的实现

    一种改进的高速链路前向纠错编码

    在高速链路的可靠传输中,物理层前向纠错的研究主要集中在提高编码的纠错性能,且编码冗余位全部用于纠错校验,难以满足用户在传输中加裁定制信息的应用需求。针对这一问题,设计了
    发表于 11-21 15:41 15次下载
    <b class='flag-5'>一种</b>改进的高速链路前向<b class='flag-5'>纠错</b>编码

    基于纠错码的灰度位信息隐藏算法

    针对空域图像信息隐藏(IH)算法健壮性较差的缺陷,研究了基于纠错码的图像信息隐藏算法。利用纠错
    发表于 01-07 10:12 0次下载
    基于<b class='flag-5'>纠错</b>码的灰度位<b class='flag-5'>信息</b>隐藏<b class='flag-5'>算法</b>