1.一种基于改进维特比算法的连续动作识别方法,其特征在于:其包括训练过程和识别过程;
所述训练过程的具体实施步骤如下:
步骤一、对训练数据中的人体全身动作视频数据进行预处理;
将每一种人体全身动作的训练数据称为一个训练样本集;一个训练样本集中的训练样本数量用R表示,R≥20;分别对每个训练样本集中的每个人体全身动作视频数据做预处理,得到一条单一动作编码序列;
所述对每个训练样本集中的每个人体全身动作视频数据做预处理,得到一条单一动作编码序列的具体操作步骤为:
步骤1.1:利用人体骨架提取工具从每个人体全身动作视频的每帧图像中提取人的骨架信息;
所述骨架信息为人体关节点在三维体感摄像机所建立的原始坐标系上的三维坐标值;所述人体关节点的个数用符号m表示,m≥10;
步骤1.2:建立矫正坐标系;
以脊柱关节点为坐标原点,以左肩膀关节点和右肩膀关节点的连线为X轴,以垂直于X轴并指向所述三维体感摄像机的方向为Z轴,重建右手坐标系,第三轴为Y轴,则重建的三维坐标系称为矫正坐标系;
步骤1.3:获得每个人体全身动作视频的每帧图像中的全部人体关节点在矫正坐标系中的坐标值,得到矫正骨架信息;
步骤1.4:为了解决因不同人体型不同造成的对矫正骨架信息的影响,对步骤1.3得到的矫正骨架信息进行归一化处理,具体为:
步骤1.4.1:建立人体模型;所述人体模型定义了每两个相邻并连接的关节点之间的距离;
步骤1.4.2:按照人体模型中定义的相邻并连接的关节点之间的距离,调整矫正骨架信息,具体操作位:首先保证脊柱关节点位置不变;然后对于其它关节点,在保证相邻并连接的两个相邻关节点连线与矫正坐标系所成角度不变的情况下,调整各个关节点的位置,使相邻并连接的两个关节点的距离与人体模型中与之对应的相邻并连接的两个关节点之间的距离相等;
经过步骤1.4的操作,得到归一化处理后的矫正骨架信息;
步骤1.5:得到每个人体全身动作视频对应的单一动作编码序列;
将每个人体全身动作视频的每帧图像对应的归一化处理后的矫正骨架信息中的m个人体关节点的三维坐标信息,组成一个3×m维的向量;然后通过K均值聚类算法对训练数据中全部人体全身动作视频中的各帧图像对应的3×m维向量进行聚类,并将各帧图像用一个距离最近的聚类中心的序号来表示,该序号称为聚类编码;因此,一个人体全身动作视频用一组代表各帧图像的聚类编码的有序序列表示,该有序序列称为单一动作编码序列;
通过步骤1.5的操作,将每个人体全身动作视频表示为一个单一动作编码序列;
步骤二、建立HMM分类器;
在步骤一操作的基础上,建立HMM分类器;所述HMM分类器的模型参数为λ={N,M,AN×N,BN×M,π,o};其中,N表示模型的隐式状态数,5≤N≤10;M为显式状态数量,即步骤一第5步中所述对训练数据中全部人体全身动作视频中的各帧图像对应的3×m维向量进行聚类后的聚类数量;AN×N为N×N的状态转移概率矩阵;BN×M为N×M混淆矩阵,即隐式状态转移到显式状态的概率矩阵;π为初始隐式状态分布N维向量;o为最终隐式状态分布N维向量,表示最终的隐式状态的分布情况,用于辅助判断动作的起始位置;
步骤三、训练HMM分类器;
在步骤二操作的基础上,同时训练Q个HMM分类器,Q表示训练数据中人体全身动作类别的数量;即:对应每一种人体全身动作,训练一个HMM分类器;用φq表示第q种人体全身动作对应的HMM分类器,1≤q≤Q;
所述识别过程的具体实施步骤如下:
步骤四、对待识别人体全身连续动作视频x进行预处理,得到待识别人体全身连续动作视频x的连续动作编码序列;
所述待识别人体全身连续动作视频x包括1个以上人体全身动作;
步骤4.1:利用人体骨架提取工具从待识别人体全身连续动作视频x的每帧图像中提取人的骨架信息,其包含的关节点与步骤1.1中所述骨架信息中包含的关节点相同;
步骤4.2:建立矫正坐标系;
以脊柱关节点为坐标原点,以左肩膀关节点和右肩膀关节点的连线为X轴,以垂直于X轴并指向所述三维体感摄像机的方向为Z轴,重建右手坐标系,第三轴为Y轴,则重建的三维坐标系称为矫正坐标系;
步骤4.3:获得待识别人体全身连续动作视频x的每帧图像中的人体关节点在矫正坐标系中的坐标值,得到矫正骨架信息;
步骤4.4:为了解决因不同人体型不同造成的对矫正骨架信息的影响,对第4.3步得到的矫正骨架信息进行归一化处理,得到归一化处理后的矫正骨架信息;
步骤4.5:得到待识别人体全身连续动作视频x对应的连续动作编码序列;
将待识别人体全身连续动作视频x对应的归一化处理后的矫正骨架信息中的m个人体关节点的三维坐标信息,组成一个3×m维的向量;然后利用步骤一第5步得到的K个聚类中心,将待识别人体全身连续动作视频x的各帧图像用一个距离最近的聚类中心的序号来表示,得到连续动作编码序列;
步骤五、通过步骤三得到的Q个HMM分类器,得到待识别人体全身连续动作视频x包含的动作类别序列,具体过程为:
步骤5.1:依次从待识别人体全身连续动作视频x的每一帧图像中找出活跃关节;具体为:
分别计算当前图像帧中的每个关节与前一图像帧中的对应关节的距离,并将距离最大的关节作为备选活跃关节;如果备选活跃关节与前一帧图像的活跃关节不是同一关节,则判断d2≤2×d1是否成立,如果成立,则将前一帧图像的活跃关节确定为当前帧图像的活跃关节;否则,将当前帧的备选活跃关节确定为当前帧图像的活跃关节;其中,d1表示前一图像帧中的活跃关节与当前图像帧中的对应关节的距离;d2表示当前图像帧中的备选活跃关节与前一图像帧中的对应关节的距离;此方法可以避免因为同时有两个关节在运动而造成的活跃关节在二者之间来回变换;
步骤5.2:对待识别人体全身连续动作视频x进行分割;具体为:
步骤5.2.1:当相邻两帧图像的活跃关节发生变化时,在两帧图像之间进行分割;分割后的每一段视频称为一个图像子序列;
步骤5.2.2:对于步骤5.2.1得到的每个图像子序列,按照动作快慢进行分割;具体为:用D表示当前图像子序列中每帧图像的活跃关节的平均活动距离,活动距离为图像中的活跃关节与前一图像帧中的对应关节的距离;如果同时满足以下3个条件:①前一帧活跃关节的活动距离不大于0.3×D;②当前帧活跃关节的活动距离大于0.3×D;③当前帧之前的连续e帧图像活跃关节的活动距离均不大于0.3×D;则在当前帧与前一帧图像之间做分割;其中,5≤e≤15;经过步骤5.2.2的操作,得到更多图像子序列;
步骤5.2.3:对于步骤5.2.2得到的每个图像子序列按照动作变化角度进行分割;具体为:用p1表示前一帧活跃关节;用p2表示当前帧活跃关节;用p3表示后一帧活跃关节;如果向量与向量的夹角大于60度,则在当前帧与下一帧之间做分割;
经过步骤5.2的操作,完成对待识别人体全身连续动作视频x的分割,得到的图像子序列的数量用符号H表示,H≥1;
步骤5.3:选出候选动作;
依次对步骤5.2得到的每一个图像子序列分别进行如下操作:从步骤四得到的连续动作编码序列中,找到当前图像子序列对应的编码序列,并将其分别输入到步骤三得到的Q个HMM分类器,选择概率值最高的C个HMM分类器对应的动作作为候选动作,记为Lh={lh,g|g=1,2,...,C},Lh表示第h个图像子序列的候选动作集合;lh,g表示第h个图像子序列的第g个候选动作;C表示每个图像子序列的候选动作数量;其中,3≤C≤5;
步骤5.4:确定动作类别序列;通过改进的维特比算法依次对每个图像子序列求解最优动作类别;具体为:
步骤5.4.1:通过公式(6)依次计算待识别人体全身连续动作视频x的第h个图像子序列为候选动作集合中第J个候选动作的能量值,用符号Ωh,J表示;其中,1≤h≤H;1≤J≤C;
<mrow>
<msub>
<mi>&Omega;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
<mo>=</mo>
<munder>
<mi>min</mi>
<mrow>
<mi>I</mi>
<mo>=</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>,</mo>
<mn>...</mn>
<mo>,</mo>
<mi>C</mi>
</mrow>
</munder>
<mo>{</mo>
<msub>
<mi>&Omega;</mi>
<mrow>
<mi>U</mi>
<mo>,</mo>
<msub>
<mi>l</mi>
<mrow>
<mi>U</mi>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
</mrow>
</msub>
<mo>+</mo>
<mi>&delta;</mi>
<mo>+</mo>
<msub>
<mi>&lambda;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
<mo>,</mo>
<mi>I</mi>
</mrow>
</msub>
<msub>
<mi>&Theta;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
<mo>,</mo>
<mi>I</mi>
</mrow>
</msub>
<mo>}</mo>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,U表示第U个图像子序列的动作不是候选动作集合中第J个候选动作,但第U+1个图像子序列到当前图像子序列的动作都为候选动作集合中第J个候选动作,U∈[1,J-1];lU,J表示第U个图像子序列的第J个候选动作;δ是一个常数惩罚项,δ=0.6;λh,J,I可通过公式(7)计算得到;Θh,J,I可通过公式(10)计算得到;
<mrow>
<msub>
<mi>&lambda;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
<mo>,</mo>
<mi>I</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>K</mi>
<mo>=</mo>
<mi>U</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>-</mo>
<msub>
<mover>
<mi>&Phi;</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>K</mi>
<mo>,</mo>
<msub>
<mi>I</mi>
<mrow>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>1</mn>
<mo>-</mo>
<msub>
<mover>
<mi>&Phi;</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>I</mi>
<mo>-</mo>
<mi>U</mi>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,可通过公式(8)计算得到;可通过公式(9)计算得到;
<mrow>
<msub>
<mover>
<mi>&Phi;</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<msub>
<mi>&Phi;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
<mrow>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<msup>
<mi>I</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</msubsup>
<msub>
<mi>&Phi;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<msup>
<mi>I</mi>
<mo>&prime;</mo>
</msup>
</mrow>
</msub>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,Φh,J表示第h个图像子序列由第g个候选动作第J个候选动作对应的HMM分类器输出的概率;Φh,I′表示第h个图像子序列由第I′个候选动作对应的HMM分类器输出的概率;
<mrow>
<msub>
<mover>
<mi>&Phi;</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>K</mi>
<mo>,</mo>
<msub>
<mi>l</mi>
<mrow>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<msub>
<mi>&Phi;</mi>
<mrow>
<mi>K</mi>
<mo>,</mo>
<msub>
<mi>l</mi>
<mrow>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>J</mi>
</mrow>
</msub>
</mrow>
</msub>
<mrow>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<msup>
<mi>I</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</msubsup>
<msub>
<mi>&Phi;</mi>
<mrow>
<mi>h</mi>
<mo>,</mo>
<msup>
<mi>I</mi>
<mo>&prime;</mo>
</msup>
</mrow>
</msub>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
3
其中,表示第K个图像子序列由第J个候选动作对应的HMM分类器输出的概率;
其中,Φ<U+1,h>,J表示从U+1个图像子序列到第h个图像子序列由第J个候选动作对应的HMM分类器输出的概率;η是一个常数因子,η;可通过公式(11)计算得到;oJ,end(h)可通过公式(12)计算得到;
其中,beg(U+1)表示第U+1个图像子序列对应的编码序列里第一个编码值;BJ,i,beg(U+1)表示第J个候选动作对应的HMM分类器的混淆矩阵第i行第beg(U+1)列的元素值;πJ,i表示第J个候选动作对应的HMM分类器的初始隐式状态分布概率向量第i个元素值;
<mrow>
<msub>
<mi>O</mi>
<mrow>
<mi>J</mi>
<mo>,</mo>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>h</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>N</mi>
</munderover>
<msub>
<mi>B</mi>
<mrow>
<mi>J</mi>
<mo>,</mo>
<mi>i</mi>
<mo>,</mo>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>h</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>J</mi>
<mo>,</mo>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>12</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,end(h)表示第h个图像子序列对应的编码序列里最后一个编码值;BJ,i,end(h)表示第J个选动作对应的HMM分类器的混淆矩阵第i行第end(h)列的元素值;σJ,i表示第J个选动作对应的HMM分类器的最终隐式状态分布概率向量第i个元素值;
步骤5.4.2:对于待识别人体全身连续动作视频x的每个图像子序列,从步骤5.4.1计算得到的其候选动作集合中候选动作的能量值中选择最大值,将最大值对应的候选动作,作为该图像子序列的动作类别;
经过步骤五的操作,即可得到待识别人体全身连续动作视频x包含的动作类别序列。