一种基于自反馈基因表达式编程的人体行为识别方法与流程

文档序号:12786854阅读:317来源:国知局
一种基于自反馈基因表达式编程的人体行为识别方法与流程

本发明涉及人体行为识别领域,特别涉及一种基于自反馈基因表达式编程的人体行为识别方法。



背景技术:

近几年,人体行为识别研究是国际上计算机学科最热门的前沿研究课题之一,具有重要的理论研究价值,研究课题内容丰富,涉及到图像处理与分析、机器视觉、人体生理学、人体运动学、模式识别和人工智能等多学科领域知识。人体行为识别研究不但拓宽了学科间的研究方向,而且带动相关学科的发展,同时也是智慧城市与公共安全迫切需要解决的关键技术,其广泛应用于人机智能交互、智能视觉监控、基于内容的视频检索、虚拟现实等领域。目前人体识别的大部的研究还只停止在静态的识别,人体运动的复杂性和易变性使得识别的准确性和高效性无法满足相关行业的实用要求。

目前,现有技术中对人体行为的识别主要是采用关节点佩戴传感器或者是采用多摄像头进行多视角监视,关节点佩戴传感器是指在人体的某个部位放上传感器,这种方式识别人体的行为种类有限,且识别准确度不高、识别速度慢、识别行为单一且可扩展性差;采用多摄像头进行多视角监视是指在各个视角位置安装摄像头,通过各个视角的摄像头拍摄到的图片判定人体的行为,这种方式存在成本高、数据精度低、使用不便、受环境因素影响大等缺陷。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种基于自反馈基因表达式编程的人体行为识别方法,该方法利用自反馈基因表达式(SGEP)建立人体运动模型,然后将人体运动模型的梯度信息作为人体运动模型特征对各类人体行为进行精确刻画,最后通过神经网络对人体行为进行识别,具有人体行为识别准确度高以及识别速度快的优点。

本发明的目的通过下述技术方案实现:一种基于自反馈基因表达式编程的人体行为识别方法,其特征在于,步骤如下:

S1、获取人体行为深度图像,然后从人体行为深度图像中分别提取出人体N个关节点各自对应的三维时间序列数据,作为一个样本;

S2、利用自反馈基因表达式编程对样本进行建模,获取到样本对应的各关节点运动序列,从而得到各样本基于关节点的人体运动模型;其中所述自反馈基因表达式编程由基因表达式编程在交叉、变异操作后再加入TIS插串操作构造得到,其中TIS插串操作指的是在关节点运动序列头部插入函数符串,用于增加关节点运动序列有效位的长度增长;

S3、提取人体运动模型的梯度信息作为模型特征;

S4、通过步骤S1获取到训练样本集,并且各训练样本通过步骤S2的方式获取到各训练样本的人体运动模型,然后通过步骤S3的方式提取各训练样本的人体运动模型的模型特征;

S5、各训练样本的人体运动模型的模型特征作为神经网络的输入,对神经网络进行训练,将训练得到的神经网络模型,作为最终的人体行为分类器;

S6、通过步骤S1获取到测试样本,并且测试样本通过步骤S2的方式获取到测试样本的人体运动模型,然后通过步骤S3的方式提取测试样本的人体运动模型的模型特征;

S7、将测试样本的人体运动模型的模型特征输入至步骤S5中获取到的人体行为分类器中,通过该人体行为分类器得到人体行为识别结果。

优选的,所述步骤S1中使用微软体感设备Kinect结合第二代SDK以及OpenCV计算机视觉库获取人体行为深度图像;其中利用TOF(Time Of Flight,飞行时间)技术,计算微软Kinect传感器中红外传感器发射的红外光线到达人体后反射的相位差,得到基于人体的人体行为深度图像;

各个关节点对应的三维时间序列数据是以微软体感设备Kinect的红外传感器为原点所建立的空间直角坐标系得到的,该空间直角坐标系包括x轴、y轴和z轴,其中x轴正方向为平行于微软体感设备Kinect水平方向向左,y轴正方向为垂直于微软体感设备Kinect倾斜方向向上,z轴正方向为微软体感设备Kinect朝向方向。

优选的,所述步骤S1中N为25以上。

优选的,所述步骤S1中在获取到人体行为深度图像后,将人体行为深度图像中的人体与背景进行分割,然后转化为骨架追踪系统,从而获取人体的多个关节点三维时间序列数据。

优选的,所述步骤S2中自反馈基因表达式编程对样本进行建模,得到基于关节点的人体运动模型的具体过程如下:

S21、确定人体运动模型所需的函数符集和终结符集以及终结符个数,并设定循环终止条件;

S22、创建随机关节点运动序列初始种群,将各关节点运动序列表达为基因表达式树;关节点运动序列由函数符集和终结符集构成,终结符集中包括关节点三维时间序列数据中时间t以及关节点三维时间序列数据的坐标分量;

S23、计算种群中各关节点运动序列的适应值,然后通过相对误差估计模型或绝对误差模型对种群中各关节点运动序列对环境的适应能力进行评估,在评估结果符合条件的情况下,从种群选择出一定数量的个体作为父体;并且判断是否满足循环终止条件,若满足,则跳转到S26,否则进入步骤S24;

S24、根据步骤S23选择出的父体,对种群中的关节点运动序列进行基因表达式编程的交叉、变异操作;

S25、对种群的关节点运动序列进行TIS插串操作,得到下一代种群个体,回到步骤S23;

S26、输出模型,得到最优染色体所表示的函数表达式,即关节点的人体运动模型。

更进一步的,步骤S21中函数符集F为:

F={S,C,T,I,R,N,P,Q,E,A,G,L,B,D,F,H}

其中函数符集F中的各元素代表含义如下:

S表示正弦函数Sin,C表示余弦函数cos,T表示正切函数tan,I表示反正弦函数asin,R表示反余弦函数acos,N表示反正切函数atan,P表示幂函数pow,Q表示平方根函数sqrt,E表示自然数为底的指数函数exp,A表示绝对值函数abs,G表示符号函数sign,L表示自然对数函数ln,B表示以10为底的对数函数lg,D表示双曲正弦函数sinh,F表示双曲余弦函数cosh,H表示双曲正切函数tanh;

步骤S21中所述终结符集包括多维终结字符以及常数终结字符集;

其中多维终结字符T为:

T={a,b,c,d,e,f,g,h,i};

其中多维终结符集T中的各元素分别代表多维变量中每个自变量,在检验人体运动模型时将各变量所对应的实际值代入人体运动模型中;

其中常数终结符集C为:C={1000,-1000}。

优选的,其特征在于,TIS插串操作的过程如下:

当关节点运动序列有效长度m=1时,即关节点运动序列的根位置是一个常数,此时,从关节点运动序列根位置开始到第[L/4]位变异为随机得来的函数符串;其中[L/4]表示L/4取整数部分,L为关节点运动序列的长度;同时关节点运动序列头部的其它字符依次后移,超出头部长度的字符串删除;其中L为关节点运动序列的长度,h为关节点运动序列头部的长度;

当关节点运动序列效长度1<m<h时,在关节点运动序列有效位的最后一个函数符后面插入h-m个随机得来的函数符串,关节点运动序列头部插入点后的其他字符依次后移,超出头部长度的字符串删除。

优选的,所述步骤S3中,对于各关节点Ji(i=1,2...,N),N为样本中关节点的总数,记得到的人体运动模型为zi=Fi(x,y,t);步骤S3中提取人体运动模型的模型特征具体过程如下:

等距地取k个时刻记为tj,j=1,2,…,k;

计算各关节点的梯度信息和i=1,2,…,N;j=1,2,…,k;其中分别表示第i个关节点在第tj时刻对应的x,y坐标值;

将上述计算得到的各关节点梯度信息和i=1,2,…,N;j=1,2,…,k作为人体运动模型为zi=Fi(x,y,t)的模型特征。

更进一步的,所述步骤S5中通过各训练样本的人体运动模型的模型特征训练得到神经网络模型的具体过程如下:

S51、首先建立单隐层神经网络框架,将步骤S4中得到各训练样本的人体运动模型的模型特征i=1,2,…,N;j=1,2,…,k作为神经网络的输入训练样本集,其中设置N×2k个输入神经网络,设置隐层神经元个数为N×4k+1个;根据人体行为包括的类别数M设置输出神经元个数为M个,即输出向量为{c1,c2,…,cs,…,cM},其中cs∈R,且取值区间为[0,1],当cs=max{c1,c2,…,cM}时,cs取为1,即神经网络输出向量为{0,0,…,1,…,0},表示人体行为属于第s类行为;

S52、设置神经网络学习率η为0~1之间的随机数,且神经网络变换函数f(x)设置为Sigmoid函数,学习规则为连续感知器学习规则,利用误差反向传播算法训练神经网络,得到神经网络模型。

优选的,其特征在于,所述步骤S5中,针对于各训练样本的人体运动模型的模型特征,作为神经网络的输入,通过十拆交叉验证法训练得到神经网络模型,作为最终的人体行为分类器。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明人体行为识别方法针对获取到的人体行为深度图像,从中分别提取出人体多个关节点各自对应的三维时间序列数据作为一个样本,然后利用自反馈基因表达式编程对样本进行建模,得到各样本基于关节点的人体运动模型,并且提取人体运动模型的梯度信息作为模型特征。获取到训练样本集后,将训练样本集中训练样本对应的人体运动模型的模型特征输入至神经网络,将训练得到神经网络模型作为人体行为分类器;获取到测试样本后,将测试样本对应的人体运动模型的模型特征输入至上述获取的人体行为分类器中,通过该人体行为分类器得到人体行为识别结果。本发明采用由现有技术中的基因表达式编程(GEP)在交叉、变异操作后再加入TIS插串操作构造得到自反馈基因表达式编程对样本进行建模,其中TIS插串操作指的是在关节点运动序列头部插入函数符串,用于增加关节点运动序列有效位的长度,从而可以以增加种群个体的均匀性,使其更能快速的收敛到问题的全局最优解,避免陷入局部最优解。因此本发明中采用自反馈基因表达式编程对样本进行建模能够有效提高人体行为识别的准确度以及识别的速度。

(2)本发明中将对于特定行为具有代表性的梯度信息作为人体运动模型中的模型特征,相比现有技术中采用全局或者局部运动特征作为模型特征,本发明的模型特征能够更准确的反映出人体行为运动,大大减少特征复杂度,提高特征代表性以及识别正确率。

(3)本发明使用微软体感设备Kinect结合第二代SDK以及OpenCV计算机视觉库获取人体行为深度图像,能有效提高数据精度,在一定程度上解决现有技术中使用传统摄像设备识别效率低、识别效果受环境因素影响大以及佩戴关节传感器成本高、使用不方便等技术问题;

附图说明

图1是本发明方法流程图。

图2是本发明方法中自反馈基因表达式编程建立人体运动模型流程图。

图3是本发明方法中自反馈基因表达式编程建立人体运动模型过程中建立的表达式树图。

图4是图3中表达式树图的生成过程。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

本实施例公开了一种基于自反馈基因表达式编程的人体行为识别方法,其特征在于,如图1所示,步骤如下:

S1、获取人体行为深度图像,然后从人体行为深度图像中分别提取出人体N个关节点各自对应的三维时间序列数据,作为一个样本,即一个样本中包括人体N个关节点的三维时间序列数据;其中在本实施例中使用微软体感设备Kinect结合第二代SDK以及OpenCV计算机视觉库获取人体行为深度图像,利用TOF(Time Of Flight,飞行时间)技术,计算微软Kinect传感器中红外传感器发射的红外光线到达人体后反射的相位差,得到基于关节点的人体行为深度图像。各个关节点对应的三维时间序列数据是以微软体感设备Kinect的红外传感器为原点所建立的空间直角坐标系得到的,该空间直角坐标系包括x轴、y轴和z轴,其中x轴正方向为平行于微软体感设备Kinect水平方向向左,y轴正方向为垂直于微软体感设备Kinect倾斜方向向上,z轴正方向为微软体感设备Kinect朝向方向。本步骤中在获取到人体行为深度图像后,将人体行为深度图像中的人体与背景进行分割,然后转化为骨架追踪系统,从而获取人体的多个关节点三维时间序列数据在本实施例中N为25,即从人体行为深度图像中分别提取出人体25个关节点对应的三维时间序列数据。

S2、利用自反馈基因表达式编程对样本进行建模,获取到样本对应的各关节点运动序列,从而得到各样本基于关节点的人体运动模型;其中所述自反馈基因表达式编程(SGEP)由基因表达式编程(GEP)在交叉、变异操作后再加入TIS插串操作构造得到,其中TIS插串操作指的是在关节点运动序列头部插入函数符串,用于增加关节点运动序列有效位的长度增长。

S3、提取人体运动模型的梯度信息作为模型特征;对于各关节点Ji(i=1,2...,N),记得到的人体运动模型为zi=Fi(x,y,t);步骤S3中提取人体运动模型的模型特征具体过程如下:

等距地取k个时刻记为tj,j=1,2,…,k;

计算各关节点的梯度信息和i=1,2,…,N;j=1,2,…,k;其中分别表示第i个关节点在第tj时刻对应的x,y坐标值;

将上述计算得到的各关节点梯度信息和i=1,2,…,N;j=1,2,…,k作为人体运动模型为zi=Fi(x,y,t)的模型特征。

S4、通过步骤S1获取到训练样本集,并且各训练样本通过步骤S2的方式获取到各训练样本的人体运动模型,然后通过步骤S3的方式提取各训练样本的人体运动模型的模型特征。

S5、将各训练样本的人体运动模型的模型特征作为神经网络的输入,通过设置神经网络的层数、神经元的个数、初始化权值参数以及选择梯度下降优化算法,对神经网络进行训练,将训练得到神经网络模型作为最终的人体行为分类器;具体过程如下:

S51、首先建立单隐层神经网络框架,将步骤S4中得到各训练样本的人体运动模型的模型特征i=1,2,…,N;j=1,2,…,k输入至神经网络,其中设置N×2k个输入神经网络,设置隐层神经元个数为N×4k+1个;根据人体行为包括的类别总数M设置输出神经元个数为M个,即输出向量为{c1,c2,…,cs,…,cM},其中cs∈R,1,2,…,s,…,M分别表示人体行为所属类别,且取值区间为[0,1],当cs=max{c1,c2,…,cM}时,cs取为1,即神经网络输出向量为{0,0,…,1,…,0},表示人体行为属于第s类行为;

S52、设置神经网络学习率η为0~1之间的随机数,且神经网络变换函数f(x)设置为Sigmoid函数,即f(x)=1/(1+e-x),学习规则为连续感知器学习规则,利用误差反向传播算法训练神经网络,得到神经网络模型。

在本步骤中,对于各训练样本的人体运动模型的模型特征,作为神经网络的输入,通过十拆交叉验证法训练得到神经网络模型,作为最终的人体行为分类器。

S6、通过步骤S1获取到测试样本,并且测试样本通过步骤S2的方式获取到测试样本的人体运动模型,然后通过步骤S3的方式提取测试样本的人体运动模型的模型特征。

S7、将测试样本的人体运动模型的模型特征输入至步骤S5中获取到的人体行为分类器中,通过该人体行为分类器得到人体行为识别结果。

本实施例上述步骤S2中,如图2所示,自反馈基因表达式编程对样本进行建模,得到各样本基于关节点的人体运动模型的具体过程如下:

S21、确定人体运动模型所需的函数符集和终结符集以及终结符个数,并设定循环终止条件,然后进入步骤S22;其中本步骤中函数符集F为:

F={S,C,T,I,R,N,P,Q,E,A,G,L,B,D,F,H}

其中函数符集F中的各元素代表含义如下:

S表示正弦函数Sin,C表示余弦函数cos,T表示正切函数tan,I表示反正弦函数asin,R表示反余弦函数acos,N表示反正切函数atan,P表示幂函数pow,Q表示平方根函数sqrt,E表示自然数为底的指数函数exp,A表示绝对值函数abs,G表示符号函数sign,L表示自然对数函数ln,B表示以10为底的对数函数lg,D表示双曲正弦函数sinh,F表示双曲余弦函数cosh,H表示双曲正切函数tanh;

即函数符集F为:F={Sin,cos,tan,asin,acos,atan,pow,sqrt,exp,abs,

sign,ln,lg,sinh,cosh,tanh}

本步骤中终结符集包括多维终结字符以及常数终结字符集;

其中多维终结字符T为:

T={a,b,c,d,e,f,g,h,i};

其中多维终结符集T中的各元素分别代表多维变量中每个自变量,在检验人体运动模型时将各变量所对应的实际值代入人体运动模型中;其中常数终结符集C为:C={1000,-1000}。

本步骤中循环终止条件通常设置为以下条件之一:

(1)代表构造整个人体运动运动模型的种群的演化次数达到了一定值;

(2)代表整个人体运动运动模型的种群最优个体的适应值达到预先设定的值,或在一定演化次数内没有变化。

S22、创建随机关节点运动序列初始种群,将种群中各关节点运动序列为基因表达式树,即ET树;其中初始种群即为初始的人体运动模型,由各关节点运动序列构成,而关节点运动序列又是由函数符集和终结符集组成;其中终结符集中包括关节点三维时间序列数据中时间t,关节点三维时间序列数据坐标分量等;

本步骤中将各关节点运动序列表达式转变为基因表达式树的过程如下:

将随机生成的关节点运动序列的首个符号作为表达式的根节点;

按顺序依次将关节点运动序列的字符通过广度遍历的方法为每个元素集函数符或终结符生成树结点,其中,子结点的数目即为该结点应含参数的个数(终结符及无参函数所需参数个数即为0,子结点的代表值依照序列中符号顺序填充补齐。

本实施例中的关节点运动序列代表演化算法中的基因,比如第i个关节点为Ji,某个行为下在某一时刻t该关节点的坐标数据为通过第i个关节点的三维时间序列数据可以获取到,如是一个合法的序列,其中Q表示函数符开方,带下划线的部分为基因尾部,不带下划线的部分为基因头部。图3与之对应的表达式树。其中图4A至4G所示为图3的表达式树的生成过程。

S23、计算种群中各关节点运动序列的适应值,然后通过相对误差估计模型或绝对误差模型对种群中各关节点运动序列对环境的适应能力进行评估,在评估结果符合条件的情况下,从种群选择出一定数量的个体作为父体;并且判断是否满足循环终止条件,若满足,则跳转到S26,否则进入步骤S24;

其中本步骤中所使用的相对误差估计模型为:

其中本步骤中所使用的绝对误差估计模型为:

其中n为种群中提取的关节点运动序列验证样本的总数,fi表示关节点Ji运动序列的适应度值,R为一常数,(0,R)为适应度值控制的范围;P(i,j′)是利用关节点Ji对应的运动序列所求出的第j′个关节点运动序列验证样本的函数值,Yj′是第j′个关节点运动序列验证样本的真实值;

采用二范数(是指空间上两个向量矩阵的直线距离),形如:来评价当前模型的好坏,其中是预测向量,Y是实际值向量。在本步骤中当fi无限趋近于n*R时,即相对误差估计模型和绝对误差估计模型中|P(i,j′)-Yj′|无限趋近于0时的情况下,则在本步骤中判断评估结果符合条件。

S24、根据步骤S23选择出的父体,对种群中的个体进行基因表达式编程的交叉、变异操作;

S25、对种群个体进行TIS插串操作,得到下一代种群个体,回到步骤S23;

S26、输出模型,得到最优染色体所表示的函数表达式,即关节点的人体运动模型。

关节点运动序列由头部和尾部组成,关节点运动序列的长度是指头部和尾部的长度之和,关节点运动序列中有效长度一般小于关节点运动序列的长度。设关节点运动序列头部的长度是h,尾部的长度为I,则关节点运动序列头部的长度h和关节点运动序列尾部的长度I之间的关系可以定义为:

I=h(n-1)+1;

其中,上式中,n表示函数符集合中所含参数目数最多的函数符的参数目数数量。如此规定是为了保证关节点运动序列的长度足够且序列不会由于长度原因导致非法的现象。

其中关节点运动序列中有效长度的计算步骤如下:

1)建立两个指针p、q指向关节点运动序列的第一个符号;

2)如果指针p指向的是函数符,则指针q后移,后移的位数为该函数符所需参数个数;

3)指针p后移1位;

4)如果指针p不在指针q之后,返回第2)步;

5)计算关节点运动序列的有效长度位数,从关节点运动序列第一个符号位起到指针q所指向的符号位止即为有效序列,其长度即为序列的有效长度;

在本实施例中上述TIS插串操作过程包括如下:

当关节点运动序列有效长度m=1时,即关节点运动序列的根位置是一个常数,此时,从关节点运动序列根位置开始到第[L/4]位变异为随机得来的函数符串;其中[L/4]表示L/4取整数部分;同时关节点运动序列头部的其它字符依次后移,超出头部长度的字符串删除;其中L为关节点运动序列的长度,h为关节点运动序列头部的长度。

例如某关节点运动序列为:ab*/aba+*aababbbbbaba,其中带横线部分为关节点运动序列的尾部,而未带横线部分为关节点运动序列的头部,a、b、c分别代表关节点Ji的坐标数据该关节点运动序列的长度L=21,其头部长度h=10,尾部长度I=11,通过该序列可以得出其有效长度m=1,满足m=1,根据上述TIS插串操作,从根位置开始到第[L/4]位变异为随机得来的函数符串,即将关节点运动序列的第一个位置开始至第五个位置变异为随机得到的函数字符串,若随机得到的函数字符串为*-+QS,则进行TIS插串操作后,该关节点运动序列变为*-+QS ab*/aababbbbbaba,其中关节点运动序列的第一个位置开始至第五个位置变异为*_*SQ的同时,其头部的ab*/aba+*后移,后移后超出头部长度的字符串ba+*被删除。由TIS插串操作后的该关节点运动序列*-+QS ab*/aababbbbbaba,可以得知该关关节点运动序列的有效位变为了13。

当关节点运动序列效长度1<m<h时,在关节点运动序列有效位的最后一个函数符后面插入h-m个随机得来的函数符串,关节点运动序列头部插入点后的其他字符依次后移,超出头部长度的字符串删除;

例如某关节点运动序列为:+b/ababa+*ababbbbaba,其中带横线部分为关节点运动序列的尾部,而未带横线部分为关节点运动序列的头部,该关节点运动序列的长度L=21,其头部长度h=11,尾部长度I=10,通过该序列可以得出其有效长度m=5,有效位为+b/ab,满足1<m<h,根据上述TIS插串操作,在有效位的最后一个函数符/后插入h-m=5各随机得到的函数字符串,若随机得到的函数字符串为*_*SQ,则进行TIS插串操作后,该关节点运动序列变为+b/*_*SQ abababbbbaba,其中*_*SQ插入后,头部的ababa+*后移,后移后超出头部长度的字符串aba+*被删除。由TIS插串操作后的该关节点运动序列为+b/*_*SQ abababbbbaba,可以得知该关节点运动序列的有效位变为14,有效长度越长就越能保证种群个体分布的均匀性,能更好的避免算法吸入局部最优解。

当关节点运动序列有效长度为m>=h,不做任何操作;

由上述可见,本实施例采用由现有技术中的基因表达式编程(GEP)在交叉、变异操作后再加入TIS插串操作构造得到自反馈基因表达式编程对样本进行建模,在建模过程中通过TIS插串操作增加关节点运动序列有效位的长度,从而可以以增加种群个体的均匀性,使其更能快速的收敛到问题的全局最优解,避免陷入局部最优解。因此本实施例方法采用自反馈基因表达式编程对样本进行建模能够有效提高人体行为识别的准确度以及识别的速度。同时,本实施例对于特定行为具有代表性的梯度信息作为人体运动模型中的模型特征,相比现有技术中采用全局或者局部运动特征作为模型特征,本实施例提取的模型特征能够更准确的反映出人体行为运动,大大减少特征复杂度,提高特征代表性以及识别正确率。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1