论文部分内容阅读
人体动作识别是计算机视觉领域的重要研究内容之一,它能够代替我们人眼进行人体动作意图的理解,随着近些年人工智能技术浪潮的迅猛来袭,它越来越受到研究者的青睐。人体动作识别在很多领域有着重要的应用,例如在医疗监护,公共安防,人机互动,和游戏娱乐等领域。现存的方法中,根据计算机处理数据类型的不同,大致分为以下几类:基于RGB数据的,基于RGB-D数据的,基于人体二维,三维骨骼点数据的。RGB数据携带大量冗余信息,因此除了带来计算量大的缺点外,还易受到光照,背景变化,遮挡等因素的影响,对识别精度和识别速度都有较大的影响。因此本文采用基于深度信息的三维骨骼点数据作为人体动作识别的特征。针对目前动作识别算法精度还不够高和实际动作识别系统比较难实现的问题,本文的研究内容主要包括以下几个方面:1.本文首先提出了一种基于两种特征协同规整的特征用于动作识别,这两种特征分别是经过预处理的骨骼点位置特征和速度特征,我们使用动态时间规整(DTW,Dynamic Time Warping)的方法把它们从骨骼序列中提取出来,因为在特征提取时对这两种特征使用协同规整的方式,所以我们把提取出来的特征叫做协同规整(CWTDF,Cooperative Warp of Two Discriminative Features)特征。在后面实验部分的识别精度对比中,在三大标准数据集MSR-Action3D,Florence3D-Action和UTKinect-Action上,我们提出的这种特征表示的识别精度超过了许多现有的方法。为了证明CWTDF特征的优越性,我们还考虑了另外一种场景,同样使用上述两种特征组合,但是在使用DTW算法进行特征抽取时,两种特征分别进行抽取,然后再进行融合,我们把用这种方式得到的特征叫做分离规整(SWTDF,Separate Warp of Two Discriminative Features)特征。在后面的实验部分也证明了,这种特征的识别精度在三大标准数据集上均不如CWTDF特征。这个结论也说明了利用DTW算法进行特征之间的协同挖掘所获得的特征比单独进行特征挖掘再融合所获得的特征更能够表示一个特定动作,这也是本论文的贡献之一。2.为了进一步提高动作识别的精度,在基于传统方法提取的特征对识别精度提升有限的情况下,本文还提出了一个使用机器学习的方法自动从原始特征中提取有用信息的算法,即基于骨骼点子特征学习的动作识别算法。该算法按人体的自然结构把人体的骨骼点分为5个部分,分别是人的四肢和躯干,每个部分都包含3个骨骼点,然后分别计算每个部分的相关特征。这样划分的依据是当我们在做某个动作时通常是身体的四肢和躯干中的一个或某几个部分动作的组合。在后面的实验部分也证明了这种分法能够为后续的特征学习提供足够的信息,使得分类精度达到较高的水平。在特征学习阶段我们设计了一个损失函数,因为我们最终采用的是K近邻分类算法,所以损失函数的目的是使得训练集中样本的原始特征X经过线性变换(左乘转换矩阵L)后,同类样本之间的欧式距离尽量的小,同时异类样本之间的距离尽量的大。经过梯度下降法不断的迭代,使得算法的识别精度不断提升。经过三大标准数据集的测试,我们的动作识别算法精度超过了许多文献的方法。我们还用实验的方法选取了算法中的相关参数,以使分类精度达到较高的水平。3.本文还设计了一个基于Kinect的动作识别系统,该系统可以利用Kinect摄像头对人体动作进行实时的识别,我们已经使用C#语言完成了系统的编写工作。该系统利用人体上半身和下半身共计12个角度作为每帧的动作特征,利用平均取帧法,每个动作取得12帧数据组成一个向量作为这个动作的特征表示。分类器选用一个3层的神经网络,是我们使用python编写的,待在python上训练好模型后,我们将权值矩阵拷贝到C#中。数据集是我们自己用Kinect设备采集的。经过测试,我们系统的分类正确率为85%。虽然本方法的正确率不如上述两种方法高,但是本方法的优点是特征计算简单,易于实际系统(C#)的实现,且利用角度特征不受骨骼尺寸大小的影响。