一种基于kinect的运动人体姿态识别方法

文档序号:6628176阅读:1769来源:国知局
一种基于kinect的运动人体姿态识别方法
【专利摘要】本发明提供了一种基于kinect的运动人体姿态识别方法,它包括以下步骤:定义姿态的行为模式、训练姿态序列样本采集、样本姿态序列的特征提取和归一化、样本姿态特征的降维、训练多类姿态分类机、对新的姿态序列进行识别。本发明同时还具有以下有益效果:(1) 本发明可以识别出输入姿态序列的整体含义,与传统的方法相比,能够识别的含义更加丰富,也更加接近人际交流的层次。(2) 本发明与传统的识别特定姿态的算法相比,更加泛用。(3) 本发明提出一种对用户体型和位置不变的特征表示方法,能够更加真实地反映出人体姿态本身的变化,因此提高了姿态识别的正确性。(4) 本发明与传统的基于数据库搜索的方法相比,具有更高的识别效率。
【专利说明】-种基于kinect的运动人体姿态识别方法

【技术领域】
[0001] 本发明涉及一种基于kinect的人体姿态识别方法。

【背景技术】
[0002] 让计算机像人类一样对世间的文字、语言,乃至现象进行理解是人工智能的重要 目标之一。随着人工智能技术的发展,文字识别,语音识别等技术已经逐步成熟,但在对人 类姿态进行理解方面,仍然存在非常大的困难。其原因在于一直以来,与文字,声音等信号 相比,人体姿态识别的基础,即人体姿态描述形式仍然没有一个定论。虽然一些学者提出了 在视频中提取人体部件的算法,但是由于视频会受到光照,人穿着的衣服的影响,导致这些 算法存在着较大的局限性。
[0003] 近几年,微软公司推出了一款名为kinect的产品。这款集动态捕捉、影音识别、社 群互动等多项相关技术为一体的体感传感器大大带动了与图形图像相关的产业以及学术 研究领域的发展。更重要的是,这款产品提供了实时地表示人体姿态的方法,能够比较准确 的检测到人体的空间位置,并用三维链式骨骼系统对检测到的人体姿态进行表示。这种快 速有效的人体姿态描述方法的诞生,为人体姿态的识别带来了曙光。
[0004] 现有的人体姿态识别算法往往都是对人体所处的某一时刻的"状态"进行识别,这 类方法能够很准确地识别出"举手"、"抬腿"等简单的静态姿态。但在自然的人际交流场景 中,人类倾向于使用一系列的动作组合表示出更为复杂的含义。对于这种一连串动作组成 的动态姿态进行识别,是当前人体姿态识别研究领域的研究重点与难点。


【发明内容】

[0005] 本发明所要解决的技术内容是提供一种基于kinect的运动人体姿态识别方法。 通过对事先定义好的几类姿态进行训练,本发明可以自动地对kinect捕捉的运动人体姿 态序列所表示的意义进行识别。为此本发明采用以下技术方案,它包括以下步骤:
[0006] (1)、根据用户的要求,事先定义数种运动姿态的行为模式;
[0007] (2)、令不同人表演(1)中定义的运动姿态,录制与每个预定义姿态行为对应的多 个姿态序列,作为识别算法的训练样本;
[0008] (3)、计算每种运动姿态的相同长度的代表子片段,并对片段中的每一帧进行特征 提取;
[0009] (4)、对(3)中得到的所有训练样本的归一化的姿态特征进行降维处理,得到每个 样本的低维特征表示的同时,保存每个特征对应的基向量;
[0010] (5)、将(4)中得到的每个训练样本的低维特征和其对应的姿态类别作为输入,使 用SVM算法训练特征分类器;
[0011] ¢)、对于kinect捕获的一组新的姿态序列,使用(3)中的方法对其进行特征提取 后,将特征投影到(4)中得到的基向量上进行降维,并将得到的低维特征输入(5)中得到的 多类分类器,将分类器输出的结果作为该姿态序列的识别结果。
[0012] 在采用以上技术方案的基础上,本发明还可以采用以下进一步方案:
[0013] 使用kinect录制用户表演的预定义姿态,对于捕获的每一帧深度图像,将其中属 于人体的区域分割出来,并使用人体部件检测算法对人体的部件进行划分。
[0014] 进一步的,对每种运动姿态寻找相同长度的代表子片段步骤,使用了贪心算法计 算每类姿态中与其他类别姿态相关程度最小的姿态片段作为该姿态的代表片段,完成姿态 序列长度归一化。
[0015] 进一步的,对姿态序列进行特征提取步骤中,使用每根骨骼的相对增量旋转的四 元数定义每一帧的人体姿态,其中对于骨骼i,相对增量旋转为其相对于初始骨架中对应 骨骼的旋转氏和其前一级骨骼j对应的旋转L之间的旋转增量:(Lr 1Rp
[0016] 进一步的,使用PCA算法对所有姿态样本的整个姿态序列特征进行降维,并使用 cross validation方法选择降维度
[0017] 由于本发明的技术方案,本发明同时还具有以下有益效果:
[0018] (1)本发明可以识别出输入姿态序列的整体含义,与传统的方法相比,能够识别的 含义更加丰富,也更加接近人际交流的层次。
[0019] (2)本发明可以支持用户自定义需要识别的姿态,与传统的识别特定姿态的算法 相比,更加泛用。
[0020] (3)由于本发明提出了一种对用户体型和位置不变的特征表示方法,能够更加真 实地反映出人体姿态本身的变化,因此提高了姿态识别的正确性。
[0021] (4)本发明由于事先使用训练算法对各种类姿态序列的样本进行学习,因此在判 断一个新来的姿态序列所属类别的时候,只需要进行一系列简单的线性运算即可得到分类 结果,与传统的基于数据库搜索的方法相比,具有更高的识别效率。

【专利附图】

【附图说明】
[0022] 图1为本发明所提供的方法的整体流程图。
[0023] 图2为kinect提取的人体链式骨骼系统图示。
[0024] 图3为使用Iibsvm进行训练分类模型得到的模型信息。
[0025] 图4为用户自定义的姿态模式。
[0026] 图5为用户自定义的每个姿态的平均帧数。
[0027] 图6表示对使用不同长度的特征训练的分类器进行测试,每组动作选择6个测试 样本,我们选择测试正确率最高的作为最终的特征维数。
[0028] 图7为分类器的测试结果。

【具体实施方式】
[0029] 图1是本发明的基本流程图,通过对事先定义好的几类姿态进行训练,使用训练 过程中得到的基向量和线性分类器,本发明可以自动地对kinect捕捉的人体姿态序列所 表示的意义进行识别。下面对本发明的各个流程进行详细说明:
[0030] (1)、定义姿态的行为模式:
[0031] 首先必须声明,本发明允许用户自己预定义不同种类、数量的姿态,以满足不同用 户的需求。在本说明书中,结合当前互动游戏的需求,定义了 9种不同的行为。具体动作规 范如图4所示。
[0032] (2)、训练姿态序列样本采集:
[0033] 在定义了姿态行为后,需要收集每个姿态所对应的训练样本。如图2所示,使用 kinect对预定义姿态进行采集,使用其自带的三维链式骨骼系统记录每种姿态的行为。为 了让系统能够适应不同用户在执行特定姿态时出现的差异,对于每一个姿态,请3到5个不 同身材的人员进行多次表演。将采集的所有数据的60%作为训练用数据,40%作为测试数 据。为了训练数据的平衡性,保证每一类姿态下的训练样本数目尽量相同。对人体部件进 行如图2中所示的连接,得到用"图"表示的人体姿态。
[0034] (3)、样本姿态序列的特征提取和归一化:
[0035] 首先需要明确姿态序列中每帧静态姿态的表示。kinect的三维骨架使用了 15个 顶点的3维位置表示人体运动姿态,但是这种表示方式会受到人的位置和身材的影响,并 不能很好地表示姿态本身。为此,需构造一种对用户体型和位置不变的特征表示。首先定 义一个自然姿态的初始三维骨架,并将kinect捕获的任意姿态表示为该姿态下每段骨骼 的相对增量旋转,并使用四元数进行表示。其中对于骨骼i,相对增量旋转为其相对于初始 骨架中对应骨骼的旋转氏和其前一级骨骼j对应的旋转L之间的旋转增量:O^r 1Rp
[0036] 如图5所示,完成不同的姿态需要花费的时间差异会导致捕获的姿态序列的帧 数不尽相同,因此需要对姿态序列进行归一化处理。
[0037] 本发明思路是:因为不同姿态序列的长度不一致,所以采用序列片段代表整体 姿态序列的方法,其中某类姿态的代表片段是某类姿态序列中连续的一段姿态,而且是 与其他类别的姿态序列区分度最大的一段姿态。设姿态类别数为N,代表片段长度为T, 对第i类姿态,其代表片段起始帧为该类完整姿态序列的第4帧,则代表片段可以表示 为一个T维的向量,记为V i (Α,Τ)。则每类代表片段的计算方法可以转化为优化问题: arg min Il γο/τ(V1 (./;,Γ),…,V、(/,、,Π ) 111。其中,使用 c〇rr 计算片 性,0表示不相关,1表示完全一致。通过优化上式,可以找到每类姿态序列中与其他类区分 度最大的片段。
[0038] 实验中手动选择T = 40,并使用贪心算法对代表片段进行优化。在实验中发现, 使用连续的T帧作为代表片段并不比从T帧中采样数帧作为代表片段的姿态识别正确率更 高,但却会大大增加计算量。因此实际保存代表片段时,每5帧取一关键帧,每类姿态只取 8帧作为代表片段。
[0039] (4)、样本姿态特征的降维:
[0040] 通过(3)的处理,所有的姿态样本都表示为相同长度的特征向量。但是,通过实 验,发现数据在原始特征空间并没有很好的区分度。因此我们对姿态特征向量进行了降维 处理。将所有训练样本的特征向量输入PCA算法进行训练,保存最大的数个特征向量作为 基向量,对应地,将每个训练样本在基向量上的投影作为该样本的降维表示。由于不同用户 预定义的姿态并不相同,无法给出最优的特征维数,对此的做法是:如图6所示,使用cross validation算法选择基向量的个数。
[0041] (5)、训练多类姿态分类机:
[0042] 将每个训练样本的低维特征和其对应的姿态类别作为输入,训练特征分类器。使 用支持向量机算法,具体使用了通用的Iibsvm库建立了对9类预定义姿态分类的模型,模 型信息如图3所示。
[0043] (6)、对新的姿态序列进行识别:
[0044] 在实际检测动作的时候,会输入一段很长的序列,甚至是实时的,对序列进行逐帧 检测,对当前帧+后续40帧进行采样,使用(3)中的方法对其进行特征提取后,将特征投影 至IJ (4)中得到的基向量上进行降维,并将得到的低维特征输入(5)中得到的多类分类器,将 分类器输出的结果作为该姿态序列的识别结果。我们将(2)中采集的所有数据的40%进行 分类测试。图7为数据测试结果。
【权利要求】
1. 一种基于kinect的运动人体姿态识别方法,其特征在于它包括以下步骤: (1) 、根据用户的要求,事先定义数种运动姿态的行为模式; (2) 、令不同人表演(1)中定义的姿态,录制与每个预定义姿态行为对应的多个姿态序 列,作为识别算法的训练样本; (3) 、计算每种运动姿态的相同长度的代表子片段,并对片段中的每一帧进行特征提 取; (4) 、对(3)中得到的所有训练样本的归一化的姿态特征进行降维处理,得到每个样本 的低维特征表示的同时,保存每个特征对应的基向量; (5) 、将(4)中得到的每个训练样本的低维特征和其对应的姿态类别作为输入,使用 SVM算法训练特征分类器; (6) 、对于kinect捕获的一组新的姿态序列,使用(3)中的方法对其进行特征提取后, 将特征投影到(4)中得到的基向量上进行降维,并将得到的低维特征输入(5)中得到的多 类分类器,将分类器输出的结果作为该姿态序列的识别结果。
2. 如权利要求1所述的一种基于kinect的人体姿态识别方法,其特征在于:使用 kinect录制用户表演的预定义姿态,对于捕获的每一帧深度图像,将其中属于人体的区域 分割出来,并使用人体部件检测算法对人体的部件进行划分。
3. 如权利要求1所述的一种基于kinect的人体姿态识别方法,其特征在于:对每种运 动姿态寻找相同长度的代表子片段步骤,使用了贪心算法计算每类姿态中与其他类别姿态 相关程度最小的姿态片段作为该姿态的代表片段,完成姿态序列长度归一化。
4. 如权利要求1所述的一种基于kinect的人体姿态识别方法,其特征在于:对姿态序 列进行特征提取步骤中,使用每根骨骼的相对增量旋转的四元数定义每一帧的人体姿态, 其中对于骨骼i,相对增量旋转为其相对于初始骨架中对应骨骼的旋转A和其前一级骨骼 J对应的旋转&之间的旋转增量= W1A。
5. 如权利要求1所述的一种基于kinect的人体姿态识别方法,其特征在于:使用PCA 算法对所有姿态样本的整个姿态序列特征进行降维,并使用cross validation方法选择降 维度。
【文档编号】G06K9/00GK104517097SQ201410495282
【公开日】2015年4月15日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】童若锋, 王兆坤 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1