梁玉强,陈劲杰,叶其含
(上海理工大学 机械工程学院,上海 200093)
基于AdaBoost和BP网络的机器人动作理解
梁玉强,陈劲杰,叶其含
(上海理工大学 机械工程学院,上海 200093)
针对机器人动作理解,设计基于强分类器的BP网络机器人动作理解系统,阐述了BP网络模型和AdaBoost算法并说明了弱分类器与强分类器的训练步骤。使用了公开的MSRC-12 Gestrue数据集来验证系统的可靠性。为实现原始数据的降维并保证运动信息的完整,系统通过提取了关键帧中人的9段骨骼向量与中心骨骼向量间的夹角作为动作特征;利用BP网络弱分类器对训练样本的错分误差更新样本的权值;并将10轮训练得到的分类器融合为最后的决策函数,完成了对不同个体的6种动作的准确识别。
强分类器;AdaBoost;BP神经网络;弱分类器
随着以统计为基础的机器学习方法的备受关注。机器人动作理解系统以AdaBoost提升方法和BP神经网络算法为依托,通过样本训练获得强分类器,并以此为基础识别人体动作,输出操作结果。该方法可以根据不同的动作自适应来获取动作特征集,并且不用筛选特征,构造出的分类器具有很高的精度,且不会出现过匹配问题。
1.1 提取感兴趣的关节点
当用户做出不同的动作时,Kinect[1]追踪的骨骼关节点具有不同的角度和位置信息。在人体骨骼拓扑结构的基础上,将Kinect捕捉到的20个人体关节点进行分层,如图1所示。为进一步降低特征数据维数以提高计算效率,提取第一、二层的共16个关节点。
1.2 定义骨骼向量
将提取的16个关节点,每相邻两点连接成一段骨骼,定义为一个向量。第一层关节点连接出7个骨骼向量,依次为{a1,a2,…,a7},组成了人的躯干;第二层关节点连接出8个骨骼向量,依次为{a8,a9,…a15},组成人的四肢,如图1所示。
图1 分层关节点及骨骼向量
1.3 计算骨骼向量间的夹角
将人体骨骼向量中头部和四肢的骨骼向量{a1,a8,a9,a10,a11,a12,a13,a14,a15},与由脊椎和臀部中心组成中心骨骼向量a5之间的夹角作为运动特征。在给定帧,右小臂骨骼向量与中心骨骼向量的夹角
(1)
其中,θi的取值范围为[0,π],下标i为动作骨骼向量中该段骨骼向量的索引值。采用式(1)的动作特征表示方法,人体姿态可以用个9元组表示:X=(θ1,θ2,…,θ9),不仅实现了原始数据序列维度的下降,而且能有效地保留运动特征[2]。
规定以30帧/s的频率采集样本,样本长度L视具体动作的长度而定,每个样本提取总帧数的1/10 帧作为关键帧,那么动作特征的每一个分量就是[L/10]维的时空特征向量。因为每个时刻的人体姿态均为一个9元组,所以从样本中提取的动作特征是一个9×[L/10]的矩阵,将其转化为一维向量,则每个动作对应的向量含有9×[L/10]个元素,构成了BP网络的输入样本。对于每个弱分类器的分类方法,采用BP神经网络去得到一个弱分类器。
2.1 BP神经网络
BP网络全称误差反向传播算法的多层感知器,是人们认识最为清楚一类神经网络[3]。BP算法的学习过程中,输入层中任意神经元的输入等于输入模式向量的相应分量,对其余各层,设隐层任一神经元j的输入为netj,输出为yj,输入层中任一神经元i的输出为yi,则有
netj=∑iwijyi
(2)
yj=f(netj)
(3)
其中,wij为神经元i与神经元j之间的连接权;f(·)为神经元的输出函数
(4)
其中,θj为神经元阈值,它影像输出函数水平方向的位置;h0是用来修改输出函数形状的参数。
设输出层第k个神经元的实际输出为yk,输入为netk,则yk和netk分别为
(5)
yj=f(netk)
(6)
对于一个输入模式Xp,若输出层中第k个神经元的期望输出dpk,实际输出为ypk,则输出层的输出方差为
(7)
权值wjk的修改应使Ep最小,因此wjk应沿Ep的负梯度方向变化。当输入Xp时,wjk的修正增量Δpwjk应与(∂Ep/∂wjk)成正比,即
(8)
令δpk=-∂Ep/∂netk,得输出单元的误差和修正增量为
δpk=(dpk-ypk)ypk(1-ypk)
(9)
Δpwjk=ηδpkypj
(10)
对于隐层中的神经元j和输出层中的神经元i,可算得误差和修正增量为
δpj=ypj(1-ypj)∑kδpkwjk
(11)
Δpwij=ηδpjypj
(12)
隐层中的神经元输出的误差返回输入层,修正其权值。
BP网络实质上是使用梯度下降方法解决了一个非线性优化问题。隐层神经元的个数与输入输出层神经元的个数有直接关系,可以参考经验公式进行设计[4]
(13)
其中,n为隐层神经元个数;ni为输入层神经元个数;no为输出层神经元个数;a为1~10之间的常数。
2.2 训练弱分类器
使用BP网络获取弱分类器的具体步骤如下:
(1)定义时空特征向量集x。一个时空向量集包含了所有骨骼点信息的一个时空特征向量,因此一个是个时空特征向量集包含9个[L/10]维向量,即X=(x1,x2,…,x9),每个向量X表示一个骨骼点的某个坐标的时空向量;
(2)对权值和神经元阈值初始化。赋予它们在(0,1)上呈正太分布的随机数;
(3)输入样本并给定期望输出值:d1,d2,…,dm;
(4)计算实际输出。依次计算每层神经元的实际输出,直到计算出输出层各神经元的实际输出y1,y2,…,ym。各个神经元的输出根据式(5)进行计算;
(5)修正权值。从输出层开始,向隐层递推,递推公式为
wij(t+1)=wij(t)+ηδjyj
(14)
其中,wij(t)是t时刻从神经元i(输入层或隐层神经元)到高一层神经元j(隐层或输出神经元)的连接权;yi是神经元i在t时刻的输出;η是步长调整因子,0<η<1。如果神经元j属于输出层,则
δj=yj(1-yj)(dj-yj)
(15)
如果神经元j属于隐层,则
δj=yj(1-yj)∑kδkwjk
(16)
其中,yj是神经元j在t时刻的输出;k是神经元j的上一层即输出层的神经元编号;
(6)转到第步骤(3)。如此循环,直到权值稳定或到达规定学习次数为止。
AdaBoost算法又被称为自适应强分类器理论[5]。对某一动作A,给定一个二分类的训练数据集M={(x1,y1),(x2,y2),(xn,yn) },其中,每个样本点由实例与标记组成。实例xi∈X⊆Rn,标记yi∈Y={-1,1},X是实例空间,Y是标记集合,yi=-1表示样本xi不属于动作A,为负样本,yi=1表示样本xi属于动作A,为正样本。AdaBoost利用以下算法,从训练数据中学习一系列弱分类器,并将这些弱分类器乘以权重线性组合成为一个强分类器。
(1)初始化样本的权值分布
(17)
(2)对t=1,2,…,T,t表示当前训练的轮数,弱分类器一共迭代T轮。使权值分布Dt的训练集通过学习得到基本分类器Gt(x):X→{-1,1};
1)训练第t个弱分类器时,预测训练数据输出,计算Gt(x)在训练数据集上的分类误差率
(18)
计算弱分类器的权值
(19)
其中,αt表示Gt(x)在最终分类器中的重要性,由式(19)可知,当et≤ 1/2时,αt≥ 0,并且αt随着et的减小而增大,所以分类误差率越小的弱分类器在最终分类器中的作用越大。
3)更新训练数据集的权值分布
Dt+1=(wt+1,wt+1,2,…,wt+1,N)
(20)
其中,zt是规范化因子
(21)
它使分布权值和为1。由式(21)可知,被弱分类器Gt(x)被错误分类的样本的权值得以扩大,而正确分类样本的权值被缩小,两相比较,误分类样本的权值被放大e2αt倍,因此,误分类样本在下一轮学习中起更大的作用。不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在弱分类器的学习中起不同的作用。
构建弱分类器的线性组合
(22)
得到最终分类器
(23)
线性组合f(x)实现T个分类器加权表决。系数αt表示了基本分类器Gt(x)的重要性,其和不为1。f(x)的符号决定实例x的类,其绝对值表示分类的确信度。
为验证算法的有效性和鲁棒性,在微软的MSRC-12 Gesture数据集上对其进行测试。MSRC-12 Gesture数据集由6 244个标记好的动作实例组成,内容丰富且具有代表性[6]。它利用Kinect采集了大量的人体动作深度序列,包含 30名表演者示范的12种动作,每种动作每个演员执行3次[7]。这些动作分为象形姿势和隐喻姿势两大类,每类各6种动作[8],覆盖了手臂、腿、躯干以及他们的组合的多种动作[9]。
每轮训练后获得的10个弱分类器的权值αt如表1所示。为说明AdaBoost算法对BP网络分类器的提升效果,统计了10个BP网络弱分类器和强分类器的识别结果。每个弱分类器的识别结果如表2所示。强分类器对每种动作的识别正确数、错误数和识别误差率如表3所示。
表1 10个弱分类器的权值
表2 10个BP网络弱分类器识别错误数
表3 强分类器错误数和误差率
对比表2和表3,发现弱分类器的平均误差率高于强分类器,这说明AdaBoost算法确实可以提高BP网络分类器的识别率。究其原因,一方面BP网络容易陷入局部极小值,导致错误分类增加,表2中第9个弱分类器的识别错误数高达48个,误差率高达16%,拉高了BP网络识别的平均误差率;另一方面是因为强分类器能够通过每轮BP网络的错误分类调整权重,削弱错误特征的影响,从而提高整体识别率。
机器人对于人体动作的理解是其展开动作模仿学习的关键,然而动作理解包含了从底层处理到高层推理的全过程,涉及底层运动特征的提取和表征、动作的表示方法以及高层行为语义的推理模型。本文基于体感交互设备Kinect进行人体关节数据获取,并以AdaBoost提升方法和BP神经网络算法设计了一个包含特征提取、样本训练和动作识别的机器人动作理解系统架构,实现了对不同个体动作的准确识别。
[1] 张昊.基于Kinect的人体行为分析及其应用[D].广州:广东工业大学,2014.
[2] 杨涛,肖俊,吴飞,等.基于分层曲线简化的运动捕获数据关键帧提取[J].计算机辅助设计与图形学学报,2006,18(11):1691-1697.
[2] 齐敏,李大健,郝重阳.模式识别导论[M].北京:清华大学出版社,2009.
[3] 陈伟涛,杨沛,刘朝阳,等.BP神经网络在雷达目标识别中的应用[J].电子科技,2010,23(12):18-19.
[4] 徐丹.基于视觉的机器人动作模仿研究[D].天津:河北工业大学,2006.
[5] 郭丹丹,朱希安.基于时空域AdaBoost算法的人体动作识别研究[J].北京信息科技大学学报,2015,30(2):50-54.
[6] 曹莹,苗启广,刘家辰,等.Adaboost算法研究进展与展望[J].自动化学报,2013,39(6):745-758.
[7] 匿名角落.Adaboost算法的一些说明[EB/OL].(2012-05-04)[2016-10-21]http://blog.sina.com.cn/s/bolg_6354bd9f0100yk4y.html.
[8] Wang Yongxiong,Shi Yubo.Human activities segmentation and location of key frames based on 3D skeleton[C].北京:第三十三届中国控制会议,2014.
[9] 谭灵焱,吴军,文先益.自平衡人形机器人动作控制器的设计[J].电子科技,2010,23(12):35-38.
[10] 陈万军,张二虎.基于深度信息的人体动作识别研究综述[J].西安理工大学学报,2015,31(3): 253-264.
[11] Kohli P,Nowozin S,Mentis H.Description of the MSR-C-12 gesture dataset[EB/OL].(2012-06-05)[2016-10-02]https://www.researchgate.net/publication/239761374_Instructing_people_for_training_gestural_interactive_systems?ev=auth_pub.
[12] 王明良,孙怀江.基于分层运动姿态协方差的人体动作识别[J].计算机应用究,2015,32(12): 3794-3797.
[13] 朱凯,王正林.精通Matlab神经网络[M].北京:电子工业出版社,2010.
[14] 朱国刚,曹林.基于Kinect传感器骨骼信息的人体动作识别[J].计算机仿真,2014,31(6) :329-333.
[15] 李靖意.基于Kinect深度图像的人体动作识别研究[D].北京:北京邮电大学,2012.
[16] 汪丽.面向动作分析的虚拟人体建模研究[D].济南:山东大学,2006.
[17] 刘飞.基于Kinect骨架信息的人体动作识别[D].上海:东华大学,2014.
Robot Motion Understanding Based on AdaBoost and BP Networks
LIANG Yuqiang,CHEN Jinjie,YE Qihan
(School of Mechanical Engineering,University of shanghai for Science and Technology,Shanghai 200093,China)
According to the understanding of robot motion, this paper designs a BP network robot motion understanding system based on the strong classifier, expounds the BP network model and AdaBoost algorithm, and explains the steps of the weak classifier and the strong classifier. The MSRC-12 Gestrue data set is used to verify the reliability of the system. In order to reduce the dimension of the original data and guarantee the realization of motion information system integrity, we extract the angle between the 9 bone vector and center vector skeleton key frame between the as the feature of action; then using BP neural network classifier to the training samples of the misclassification error update sample weights; finally get the 10 round of training as the final classifier fusion decision function, complete the accurate identification of 6 different actions of the individual.
strong classifier;AdaBoost;BP neural network;weak classifier
2016- 11- 01
梁玉强(1992-),男,硕士研究生。研究方向:智能机器人。陈劲杰(1969-),男,副教授。研究方向:智能机器人等。叶其含(1990-),男,硕士研究生。研究方向:机电一体化。
10.16180/j.cnki.issn1007-7820.2017.08.017
TP242
A
1007-7820(2017)08-063-04