APP下载

基于关键帧和骨骼信息的人体动作识别方法*

2019-11-18吴建国

传感器与微系统 2019年11期
关键词:关键帧质心骨骼

李 顺, 郭 星, 吴建国

(1.安徽大学 智能嵌入式技术研究中心,安徽 合肥 230601;2.安徽大学 计算机科学与技术学院,安徽 合肥 230601)

0 引 言

人体动作识别一直是计算机视觉、人工智能和模式识别等热门研究方向[1],包括视频智能监控、康复训练、虚拟现实、人机交互等[2]。目前动作识别主要分为两类方法:利用穿戴式设备来获取人体运动信息[3],方法增加人体负担和操作复杂,且实际推广困难;目前主流的利用视觉捕捉技术[4],通过摄像头采集人体运动信息,一种是传统的三原色(RGB)彩色摄像头采集信息然后分析识别动作,例如Wang L等人[5]提取视频中每一帧的图像,根据图像处理等相关算法和彩色视频行为库对比,实现动作的分类和识别。普通摄像头容易受光照以及背景变化等噪声影响,且获取图像信息有限,后期处理相当困难,且在识别速度和准确率上较差。另外一种是3D深度传感器,例如微软Kinect、Intel RealSense 3D等,能克服传统RGB摄像头易受光照影响且能提供三维深度信息。微软的Kinect的上市,使研究人员低成本获取视频中人体各关节点三维坐标信息和场景深度信息等[6]。目前基于关节点信息的人体动作识别研究得到关注,如Xia L等人[7]将获取的人体关节点信息转换为直方图,然后使用HMM模型对动作分类和识别,Patsadu O等人[8]将Kinect获取的关节点信息利用反向传播(back propagation,BP)神经网络、支持向量机(support vector machine,SVM)等多种分类器进行人体动识别研究。Kinect获取的骨骼信息视频中,帧率为30 FPS,并不是每一帧都是关键帧,冗余帧的存在会在动作识别速度和精度上都会干扰。个体的身高和体型差异,不能直接使用骨骼点信息,需要将骨骼信息转换成具有缩放和角度不变性的特征量。

本文利用Kinect v2采集人体骨骼点信息,通过改进的动态时间规整(dynamic time warping,DTW)算法解决与动作模板库中模板动作时间序列长度不一致的问题[9],实现对6种常见动作的识别。通过实际测试,以及与其他算法对比实验,表明本文方法在识别率和识别速度上效果显著。

1 关键帧提取

关键帧是反映视频中关键的视频信息[10]。K-means算法常用来提取视频中的关键帧,但传统的K-means算法易受噪声和孤立点的影响。本文针对Kinect v2采集的动作视频中25个骨骼点结合人体运动的认知,采用加权K-means算法提取关键帧[11]。

1.1 加权K-means聚类算法

在人体运动中,不同骨骼点的地位不同,例如脊柱点相对于手腕点权重更大,且在动作中手腕点摆动幅度较大对聚类中心会干扰。针对每个骨骼点在运动中不同权重,骨骼点的权值定义为

(1)

Kinect v2采集的人体骨架视频中,每一帧图像包含25个骨骼点三维坐标值组成75维的向量。一段动作序列由N个帧图像组成,表示为{f1,f2,…,fN-1,fN},fi∈FN,fi为N帧图像中第i帧,FN为由每帧75维向量组成的一段动作视频的向量集合。将向量集合FN聚类划分成K个簇,每个簇中帧相似度较高。

1)从帧集合FN中随机选取K个帧作为聚类质心,表示c1,c2…ck,k≤N。

2)根据式(2),计算每帧fi与K个聚类质心的欧氏距离,并将其归类到距离最近的聚类质心的那个簇中

labeli=argmin‖fi-cj‖,1≤j≤k

(2)

3)根据式(3),更新每个簇的加权平均值聚类质心

(3)

式中Gj为聚类Cj中数据对象的权值,rij为fi是否属于j类,如果是,rij为1,否则为0。

4)重复计算步骤(2)和步骤(3),直至新旧质心相等或差值小于阈值结束。

1.2 提取关键帧

通过上面的方法,将一段动作视频划分为k个簇,并获取到每个簇的聚类质心ci。计算聚类质心ci和动作序列中帧fi同一骨骼点的三维坐标值的欧氏距离,寻找关键帧。例如,计算骨骼点1和聚类质心的骨骼点1的欧氏距离,以此类推,距离值最小的骨骼点标记为1,其他记为0,如视频中帧通过计算结果为{1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1}。具体步骤如下:

1)利用加权K-means算法获取一段动作序的K个聚类质心,Gi={(xi1,yi1,zi1),(xi2,yi2,zi2),…,(xij,yij,zij)},i∈(1,2…,k),j=25。其中,(xij,yij,zi1j)为第i个聚类质心中第j个骨骼点的三维坐标。一段连续动作视频为Fn={(xn1,yn1,zn1),(xn2,yn2,zn2),…,(xnj,ynj,znj)},n∈(1,2,3,…,N),j=25。其中,(xnj,ynj,znj)为动作视频中第n帧的第j骨骼节点的三维坐标。

2)计算聚类质心Gi和动作视频中帧Fn中25个相对应骨骼点三维坐标之间的欧氏距离为

D=Min(Gi,Fn)

={dis((xi1,yi1,zi1),(xn1,yn1,zn1)),

dis((xi2,yi2,zi2),(xn2,yn2,zn2)),…,

(4)

dis((xij,yij,zij),(xnj,ynj,znj))}

式中n∈(1,2,3,…,N),j=25,dis((xij,yij,zij),(xnj,ynj,znj))为第i个聚类质心和第n帧在骨骼点j上的三维坐标值的欧氏距离。对动作视频中的每一帧计算距离后,将最小值的dis((xij,yij,zij),(xnj,ynj,znj))标记为1,否则标记为0。通过式(3)获取每一帧和K个聚类质心对应关键点的最小欧氏距离,并根据D中1的个数多少,排序选取前K个帧作为关键帧,再根据每个关键帧在原始动作视频的索引排序,就可以保证K个关键帧和动作视频中帧顺序一致。

通过对本文中6种常见动作实验对比,k=10时准确度和识别速度能两者俱佳。

2 人体运动特征提取

动作视频的关键帧提取后,需要对关键帧中的特征向量进行提取,个体的体型差异、距离Kinect远近和动作的差异性。本文针对人体动作的运动特征,利用骨骼点数据构建人体结构向量[12],计算出向量角度[13]和向量模比值作为描述动作的特征量。

2.1 Kinect人体结构向量构建

根据人的动作行为特点,本文构建22组人体结构向量表示人体的躯干信息,如GRShoullder_RElbow表示右肩到右肘关节部位,GRElbos_Rhand为有右肘到右手部位。

2.2 计算向量角度

人在做同一个动作时,人体的肢体变化趋势幅度相似,如右挥手时,右肘部分关节角度变化明显。因此选取向量角度值作为特征能很好消除个体差异和Kinect距离等问题。设向量a=(x1,y1,z1),b=(x2,y2,z2),根据式(5)计算两向量的夹角〈a,b〉。

(5)

利用上述式(5)计算人体结构的向量角度,如根据GRShoullder_RElbow和GRElbos_Rwrist可计算出右肘部位的关节角度GRShoullder_RElelow_Rwrist,如图1所示。

图1 右肘关节角度

利用骨骼点三维坐标信息,结合人体动作行为分析,从关键帧中提取出跟日常动作关键性的16个关节角度组成的关节角度特征向量,ANneck_RShoulder_Relbow,ARShoulder_RElbow_Rwrist,ANneck_LShoulder_Lelbow,ALShoulder_LElbow_Lwrist,ANeck_RShoulder_Spine,ANeck_LShoulder_Spine,ARElbow_RWrist_Spine,ARShoulder_RElbow_Spine,ALShoulder_LElbow_Spine,ALElbow_LWrist_Spine,ARShoulder_Spine_RHip,ASpine_RHip_RKnee,ARHip_RKnee_RFoot,ALShoulder_Spine_LHip,ASpine_LHip_LKnee,ALHipt_LKnee_LFoot。

2.3 计算向量模比值

如果使用关节角度来描述所有动作,在某些动作描述时往往信息不足。比如头部与上肢体的相对位置,仅仅通过关节角度不能提供足够的信息。因此,本文引入4个向量模比值来提供根据丰富的行为信息。GHead_Rhand,GHead_Lhand,Gspine_Rhand,GSpine_Lhand,分别为头部到双手和脊椎到双手的人体结构向量。根据式(6)计算出4组向量模比值

a=(x1,y1,z1),b=(x2,y2,z2),

(6)

4组向量模比值分别为RHead_Rhand,RSpine_Rhand,RHead_Lhand,RSpine_Lhand。

2.4 动作特例量表示

动作视频中关键帧的姿态特征由16个关节角度和4个向量模比值组成20维的特征向量组成,即B=(A1,A2…A16,R1,R2,R3,R4),A为关节角度,R表示向量模比值。一个动作序列F有连续的姿态表示,即F=(B1,B2,…,Bi)。

3 动作识别算法

Kinect采集的动作序列与动作模板在时序上存在明显的不一致。本文采用优化后的DTW算法可以很好解决时序不一致问题,判断两个序列的相似度,从而实现动作的识别。

3.1 DTW算法

测试模板X和标准模板Y是长度为m和n的序列:X=(x1,x2,…,xi,…,xM),Y=(y1,y2,…,yj,…,yN)。其中,xi和yi在维数上相同,N和M可以不相同。d(x1,y1)为x1和y1的距离值,可表示为d(1,1),D(X,Y)为由x1和y1的距离值d(x1,y1),经过若干节点对,直到xM和yN的距离值d(xM,yN)的累计距离和,即

D(X,Y)=∑d(xi,yi),1≤i≤M,1≤j≤N

(7)

为了确保在X和Y搜索出一条全局最优路径,需要满足三个约束条件。第一边界条件,从左下角(1,1)开始到右上角(M,N)终止;第二单调性,路径需保证时间顺序上单调不减;第三连续性,不能跳过某个点去匹配,即(i,j)的下一点必须是(i+1,j),(i,j+1)和(i+1,j+1)的其中之一。为了避免路径的斜率过大或过小,一般限定在0.5~2的范围内。全局最优的规整路径有且仅有一条,通过以上的条件,DTW算法的迭代公式如下

(8)

3.2 传统DTW的改进方式

DTW算法采用欧氏距离虽然精度高,但运算量较大,空间复杂度和时间复杂度都是O(M×N),对DTW改进的主要方式是:全局路径限制和放宽端点对齐。文献[14]的全局路径限制方法,通过将路径的斜率限制在0.3~3范围内,以减少运算量,但精确度也相应降低。实际应用过程中,起点和终点的位置会发生变化,产生误差。放宽端点对齐方法,会在(1,1),(1,2),(2,1)等中选最小值作为松弛起点,相应的会在(N,M),(N-1,M),(N,M-1)中选一个作为松弛终点,该方法增加了精确度,减少了误差,却未减少运算量。

3.3 本文改进的DTW算法

DTW算法在路径搜索过程中,必须满足三条约束条件,而且部分交汇点的会冗余计算,且每个点的匹配计算,只和前两个点相关,并不需要保存累计距离矩阵和帧匹配矩阵。

本文实验中,分别用2×N的数组dist[][]和pairs[][]表示距离值和帧对。用指针now指向当前帧对,返回两个序列当前的帧信息和距离,用指针pre指向当前的前一时间。故DTW中的式(8)可改成

(9)

在二维数组dist和paris中,now和pre指针循环移动确保数组中元素操作,以减少操作时间。本文改进的DTW算法中,dist和paris都是2×N的数组。其时间和空间复杂度为O(N),相较于传统O(M×N),速度提升明显。

4 实验结果与分析

4.1 实验平台的搭建

本系统的硬件环境为:PC一台,CPU是i5—7500、内存为16 GB,Kinect v2;软件开发环境是:Windows 10,Visual Studio 2017,Kinect for Windows SDK v2.0,C#编程语言。该人体动作识别系统通过C#编写后台和WFC编写界面实现,系统界面如图2所示。系统中的动作模板库,基于MSRAction3D数据集预处理后制成,也可以录制自定义动作加入动作模板库[15]。通过Kinect v2采集2 s内动作视频,然后系统进行计算处理,对动作进行识别和显示。

图2 人体动作识别系统界面

4.2 动作识别结果与分析

实验对6种常见动作挥手、双手举起、前推、踢腿、站立、原地踏步进行测试。实验中,选取20个在身高和体型具有差异性的被测试人员,每个人重置做一个动作20次,每组动作具有400个样本,共2 400个动作样本,本文对6种动作分别用wave,raise,push,kick,stand,step表示,实验结果如表1所示。

表1 本文人体动作识别混淆矩阵

表2为基于传统K-means和DTW算法的人体动作识别结果。

表2 传统K-menas的人体动作识别混淆矩阵

对比表1和表2可以看出,改进后的识别算法,动作识别的准确率提高明显,且识别速度较之前提高近37 %。对比表1和表2发现采用加权K-means算法提取关键帧后,在提高准确度同时降低误判的种类。例如在踢腿(kick)动作上,利用传统K-means算法时,误判动作有5种涉及上下半身;而使用了加权K-means算法后,在准确率提高的同时误判动作只有下半身2种。同时在较复杂动作识别上,由于采用加权K-means减少孤立点和噪声对聚类精度影响,识别准确度更显著,表明本文加权K-means算法提取关键帧的有效性以及改进DTW算法降低运算复杂度。

4.3 与其他算法比较

同时本文选取其他两种动作识别方法与本文方法进行比较。方法一基于关节点坐标信息,通过预定义阈值完成动作识别[16],例如脚距离地面达到预定义高度即为抬腿动作。方法二文献[17]基于关节角度特征向量,使用SVM分类器的动作识别方法。图3为三种方法在识别率上的混淆矩阵对比。

从图3的结果可以看出:1)方法一的平均识别率为79 %,由于直接利用骨骼点的三维坐标信息,如果阈值设置的不合理会导致不同体型的识别率差距很大。同时如果动作不标准,相似动作很难区分;2)方法二的平均识别率为84 %,方法对运动幅度较大的动作识别相对稳定,但对区分小和较复杂的动作准确率相对较低,容易受到噪声干扰;3)本文克服了空间位置和角度的变化,及人体体型差异的影响,使其平均动作识别率为95.6 %。

图3 三种识别方法的混淆矩阵对比

5 结 论

本文的方法不受光照、视角和场景变化等外部因素的影响,同时克服了传统方法设备昂贵和操作复杂等诸多限制。实验结果表明:本文方法在识别率和速度上提升明显,且具有良好的鲁棒性,具有实际推广性。

猜你喜欢

关键帧质心骨骼
重型半挂汽车质量与质心位置估计
做家务的女性骨骼更强壮
基于GNSS测量的天宫二号质心确定
三减三健全民行动——健康骨骼
基于改进关键帧选择的RGB-D SLAM算法
骨骼和肌肉
基于相关系数的道路监控视频关键帧提取算法
基于聚散熵及运动目标检测的监控视频关键帧提取
论“关键帧”在动画制作中的作用
一种海洋测高卫星质心在轨估计算法