发明名称 一种基于深度序列的人体行为识别方法
摘要 本发明公开了一种基于深度序列的人体行为识别方法,基于法线信息的LBP算子;空间金字塔方式组合LBP算子;组合LBP算子的稀疏表示;行为序列的分割与对齐;为获取深度图中反映不同人体行为表面的曲面特征,进一步提高人体行为识别的鲁棒性,根据深度图中人体结构的相似性及关联信息,定义了深度图中法向信息的LBP描述算子,该算子在细节上保持了人体行为曲面的几何特性,局部空间上提取了曲面的局部特征,并以此作为深度图中人体行为局部特征表示。全局上,基于字典学的编码方法整合了细节信息,自适应时空金字塔和稀疏系数的池化处理保持住了人体曲面的局部空间结构关系,实现对三维人体行为的细节和整体特征描述。
申请公布号 CN105740833A 申请公布日期 2016.07.06
申请号 CN201610077386.5 申请日期 2016.02.03
申请人 北京工业大学 发明人 孙艳丰;张坤;胡永利
分类号 G06K9/00(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 沈波
主权项 一种基于深度序列的人体行为识别方法,其特征在于:该方法为一种基于改进局部二值模式(LBP)与稀疏表示的人体行为识别方法,深度序列的描述符计算流程主要步骤如下:S1基于法线信息的LBP算子在模式识别中,LBP算子最早应用于二维人脸图像的识别,它在图像一个区域窗口内,以窗口的中心像素为阈值,将相邻若干个像素的灰度值与其进行比较,若邻域像素值大于中心像素值,则该像素点的位置被标记为1,否则标记为0;这样,一个区域窗口中便可产生一个二进制数(通常转换为十进制数),即得到该窗口中心像素点的LBP值,这个值反映了该区域的局部纹理信息;鉴于LBP算子在二维模式识别领域中的成功应用,本文将LBP算子推广到深度视频序列中,提出了描述深度视频中基于表面法向信息的LBP算子,这种LBP算子很好地描述曲面的曲率变化特性;由于深度序列看作是一个函数:<img file="FDA0000921810440000011.GIF" wi="467" he="75" />这样便得到了由一系列的点(x,y,z,t)组成满足S(x,y,t,z)=f(x,y,t)‑z=0的四维超平面;该超平面上点(x,y,z,t)的法线方向为:<maths num="0001"><math><![CDATA[<mrow><mi>N</mi><mo>=</mo><mo>&dtri;</mo><mi>S</mi><mo>=</mo><msup><mrow><mo>(</mo><mfrac><mrow><mo>&part;</mo><mi>z</mi></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>&part;</mo><mi>z</mi></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>&part;</mo><mi>z</mi></mrow><mrow><mo>&part;</mo><mi>t</mi></mrow></mfrac><mo>,</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>T</mi></msup><mo>;</mo></mrow>]]></math><img file="FDA0000921810440000012.GIF" wi="586" he="139" /></maths>和传统梯度方向相比,法向量的方向与4D曲面的形状相关,法向量的方向分布能够比传统的梯度方向提供更多的几何信息,也能够更精确地表述四维超平面的几何信息;考虑到法线代表四维空间中的方向,基于原来LBP算子的构造思路,根据深度图中某一点法线与其邻域点法线间的角度关系定义该点的新的LBP算子:<maths num="0002"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>L</mi><mi>B</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>c</mi></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>7</mn></munderover><mi>B</mi><mrow><mo>(</mo><mi>A</mi><mi>n</mi><mi>g</mi><mi>l</mi><mi>e</mi><mo>(</mo><mrow><msub><mi>N</mi><mi>n</mi></msub><mo>-</mo><msub><mi>N</mi><mi>c</mi></msub></mrow><mo>)</mo><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mn>2</mn><mi>n</mi></msup></mrow></mtd></mtr><mtr><mtd><mrow><mi>B</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mtable><mtr><mtd><mrow><mi>i</mi><mi>f</mi></mrow></mtd><mtd><mrow><mi>x</mi><mo>&lt;</mo><mi>&lambda;</mi></mrow></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mi>e</mi><mi>l</mi><mi>s</mi><mi>e</mi></mrow></mtd></mtr></mtable></mfenced></mrow></mtd></mtr></mtable><mo>,</mo></mrow>]]></math><img file="FDA0000921810440000013.GIF" wi="779" he="299" /></maths>其中,P<sub>c</sub>表示当前点即LBP邻域窗口的中心点,N<sub>c</sub>表示点P<sub>c</sub>位置的法线向量,N<sub>n</sub>表示点P<sub>c</sub>邻域中第n个点的法线向量,Angle(N<sub>c</sub>,N<sub>n</sub>)表示两个法向量间的角度度量关系,λ为一设定的阈值,其约束二值函数B(x)的取值;但这种LBP算子存在一个不足:它只覆盖了一个固定半径范围内的小区域,在这个区域内只能够取到一个正方形邻域点,这显然不能满足不同规格表面的需要;为了适应不同尺度的特征,对这种LBP算子进行了改进,用圆形邻域代替了正方形邻域,改进后的LBP算子允许在半径为r的圆形邻域内有任意多个像素点;从而得到了半径为r的圆形区域内含有n个采样点的LBP算子;S2空间金字塔方式组合LBP算子人体行为在视频序列的前后帧之间具有关联性,将相邻帧中某一点及其邻近点的LBP特征进行组合,使原始深度序列中的每个像素用他邻域信息组合成的超像素表示,这样能够全面描述相邻点之间的关联性和动态性,得到多维组合LBP特征来表示人体行为动态信息,提高行为特征的表示能力;为了提高组合LBP算子的尺度不变性,LBP算子的组合方式是采用空间金字塔的方式选取所需要的点,多维金字塔法组合方式能够捕获中心点局部领域内的多层表观信息,具有更好的鲁棒性;如图2,在点p所在的帧内,黑色圆形标记点p作为空间金字塔的第一层,四个菱形标记的点为金字塔的第二层,九个十字标记的点为第三层,这样在一帧内便取了14个点;然后在该帧的前后帧按照同样的方式取点,计算每一点的法向LBP特征,将这些LBP特征组合成一个向量,最终得到中心点p的LBP组合特征,该特征维度为42;若原始深度序列的维度为W×H×T,那么通过这种组合方式,原深度序列表示为一个矩阵,该矩阵的维度是42×W*H*T;S3组合LBP算子的稀疏表示根据上述方法,对深度序列每一帧的所有像素点都提取到一个LBP特征,进而也提取了组合LBP特征,然而得到的数据依然是一个序列,只不过这里已经将原始测量空间中的测量特征转换为二值特征;但是,这个二值特征与空间位置、时间位置是紧密相关的,如果直接用这个二值特征进行判别分析的话,会因为位置没有对齐产生很大的误差;为此,本方法首先使用基于字典的方法来解决这个问题,即通过训练样本学习一组字典,然后通过这个字典对所有样本进行规格化表示来消除这种误差;给定一个由C个类别的组合LBP特征表示的训练矩阵X=(X<sub>1</sub>,X<sub>2</sub>,...,X<sub>C</sub>),特征矩阵<img file="FDA0000921810440000021.GIF" wi="402" he="97" />表示属于第i类的n<sub>i</sub>个深度序列的组合LBP特征<img file="FDA0000921810440000022.GIF" wi="327" he="75" />连结在一起表示;通过下面优化模型可以求得训练样本的字典和稀疏表示系数;<maths num="0003"><math><![CDATA[<mrow><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mrow><mi>D</mi><mo>,</mo><mi>A</mi></mrow></munder><mfrac><mn>1</mn><mi>C</mi></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>C</mi></munderover><mrow><mo>(</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>i</mi></msub><mo>-</mo><msub><mi>DA</mi><mi>i</mi></msub><mo>|</mo><msubsup><mo>|</mo><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><mi>&lambda;</mi><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><msub><mo>|</mo><mn>1</mn></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000921810440000023.GIF" wi="731" he="145" /></maths><maths num="0004"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo></mrow></mtd><mtd><mrow><msubsup><mi>d</mi><mi>k</mi><mi>T</mi></msubsup><msub><mi>d</mi><mi>k</mi></msub><mo>&le;</mo><mn>1</mn><mo>,</mo><mo>&ForAll;</mo><mi>k</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>K</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000921810440000024.GIF" wi="534" he="67" /></maths>其中,<img file="FDA0000921810440000025.GIF" wi="241" he="91" />为重构误差项,||A<sub>i</sub>||<sub>1</sub>为稀疏约束项,D∈R<sup>42×K</sup>为稀疏字典,字典的第一维度42与组合LBP特征的维度相同,K为字典的第二维度即字典D的视觉词的总数,D的每一列<img file="FDA0000921810440000026.GIF" wi="148" he="88" />称为视觉词,矩阵A<sub>i</sub>为原始特种X<sub>i</sub>相对于字典D的稀疏表示,λ是稀疏正则项;对于一个W×H×T维的深度视频序列,通过上述模型学习得到样本的组合LBP特征矩阵的字典和稀疏表示系数,以此稀疏表示系数作为组合特征的新的特征表示;这个系数相对于原来的底层特征,具有更好的判别性,但它是一个矩阵而不是向量,另外由于不同序列采集的帧数不同,导致这个矩阵的维度不统一,无法直接拿来进行分类度量,为此需要首先对行为视频序列进行分割,保证分割后的深度序列具有相同数目的子序列;然后融合每个子序列的特征表示作为该视频序列的描述符,这样将各时段的局部特征信息融合起来表示原始深度序列既考虑到了整个深度视频序列所代表的动作信息,又着重表示了整个序列中与行为最相关的局部信息;S4行为序列的分割与对齐S4.1视频帧的分割针对深度数据,在空间维度提取出人体区域后将这个区域划分为4×3的网格而不是直接将原有序列的整帧进行分割,使用该区域的数据信息进行识别不仅能够降低所需处理的数据量,更重要的是可以尽可能的滤除背景的影响,捕捉到人体躯干的运动情况,使得到的描述符鲁棒性更强;进行视频帧分割时,为了保持相邻的法向量之间的相关性,使它们对噪声更具有鲁棒性,本文利用时空金字塔模型,从局部时间维度聚集法向量;时间金字塔的经典构建方法是对整个序列在时间维度进行均匀分割,然而,不同人在执行同一动作时可能有不同的速度,而且执行的次数也不尽相同,所以这种均匀的分割处理不能够很好地应对这种变化;考虑到深度数据的特点,使用了一种新的时间分割方法;给定一个深度序列,首先将第i帧投影到三个正交的平面,即正面、侧面和顶面得到三幅投影后的图像<img file="FDA0000921810440000031.GIF" wi="207" he="90" />那么这帧的能量为:<maths num="0005"><math><![CDATA[<mrow><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mn>0</mn><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><munder><mo>&Sigma;</mo><mrow><mi>v</mi><mo>&Element;</mo><mrow><mo>{</mo><mrow><mi>f</mi><mo>,</mo><mi>s</mi><mo>,</mo><mi>t</mi></mrow><mo>}</mo></mrow></mrow></munder><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></munderover><mi>s</mi><mi>u</mi><mi>m</mi><mrow><mo>(</mo><mo>|</mo><mrow><msubsup><mi>I</mi><mi>v</mi><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>-</mo><msubsup><mi>I</mi><mi>v</mi><mi>j</mi></msubsup></mrow><mo>|</mo><mo>&gt;</mo><mi>&xi;</mi><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mo>&gt;</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000921810440000032.GIF" wi="859" he="236" /></maths>ξ是设定的阈值,sum(·)计算二值图中的非零值的个数;通过均匀划分这个能量对序列进行划分;先对能量进行均匀划分后得到五个时刻t<sub>0</sub>,t<sub>1</sub>,t<sub>2</sub>,t<sub>3</sub>,t<sub>4</sub>,利用这几个时刻构造一个三层的时间金字塔:t<sub>0</sub>‑t<sub>4</sub>时间段内所有的帧作为第一层;将t<sub>0</sub>‑t<sub>4</sub>分为两个子序列t<sub>0</sub>‑t<sub>2</sub>、t<sub>2</sub>‑t<sub>4</sub>作为金字塔的第二层;再对t<sub>0</sub>‑t<sub>2</sub>、t<sub>2</sub>‑t<sub>4</sub>进一步划分得到四个子序列t<sub>0</sub>‑t<sub>1</sub>、t<sub>1</sub>‑t<sub>2</sub>、t<sub>2</sub>‑t<sub>3</sub>、t<sub>3</sub>‑t<sub>4</sub>作为金字塔的第三层;构建的时间金字塔见图3;在时空维度,原深度序列被划分为4×3×7个子序列;S4.2池化处理对于每一个子序列,通过前面字典学习得到了字典及其稀疏表示系数,使用了池化(Pooling)技术对稀疏系数进行处理得到每个子序列的描述符;原始的池化技术主要有两种,平均值池化就是对池化数据取平均值,最大值池化就是求池化数据的最大值;根据稀疏系数的特点,本文使用一种全新的池化方法,即空间平均池化与时间最大池化;另外,并不是直接对稀疏系数进行池化,而是通过池化组合LBP特征和字典的每个视觉词的加权差异来表示原有数据;给定一个维度为W×H×T的深度序列,它的组合LBP特征为<img file="FDA0000921810440000041.GIF" wi="546" he="81" />x<sub>i</sub>表示深度序列中第i个点的组合LBP特征,P=W*H*T,表示该深度序列的组合LBP特征总数,关于字典D的稀疏表示系数为<img file="FDA0000921810440000042.GIF" wi="566" he="82" />x中在该序列第t帧的子集计为N<sub>t</sub>;对字典的每个视觉词,首先应用空间平均池化计算组合LBP特征与视觉词之间的差异:<maths num="0006"><math><![CDATA[<mrow><msub><mi>u</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mo>|</mo><msub><mi>N</mi><mi>t</mi></msub><mo>|</mo></mrow></mfrac><munder><mo>&Sigma;</mo><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>N</mi><mi>t</mi></msub></mrow></munder><msubsup><mi>&alpha;</mi><mi>i</mi><mi>k</mi></msubsup><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>-</mo><msub><mi>d</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000921810440000043.GIF" wi="571" he="147" /></maths>其中,<img file="FDA0000921810440000044.GIF" wi="229" he="75" />表示第t帧内第k个视觉词的池化差异向量,|N<sub>t</sub>|表示集合N<sub>t</sub>中元素个数,<img file="FDA0000921810440000045.GIF" wi="67" he="78" />为组合LBP特征x<sub>i</sub>对应字典D的稀疏系数α<sub>i</sub>的第k个元素;然后,使用时间最大池化方法得到差异向量u<sub>k</sub>,u<sub>k</sub>的第m个元素<img file="FDA0000921810440000048.GIF" wi="122" he="68" />的计算方法为:<maths num="0007"><math><![CDATA[<mrow><msubsup><mi>u</mi><mi>k</mi><mi>m</mi></msubsup><mo>=</mo><munder><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mrow><mi>t</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>T</mi></mrow></munder><msubsup><mi>u</mi><mi>k</mi><mi>m</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>m</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><mn>42</mn><mo>,</mo></mrow>]]></math><img file="FDA0000921810440000046.GIF" wi="659" he="92" /></maths>u<sub>k</sub>保留了最大的差异向量,在保留序列重要的类别信息的同时又去除了很多冗余的信息;最后,将所有视觉词的差异向量连结起来得到该子序列的M*K维的描述符:<img file="FDA0000921810440000047.GIF" wi="515" he="91" />这样一个深度序列的描述符就只与稀疏表示中字典的视觉词的个数K有关;最终的将S4.1中的84个子序列的描述符串联在一起作为原始深度序列的最终的描述符,将这个描述符输入到与SVM分类器进行分类识别。
地址 100124 北京市朝阳区平乐园100号