本发明属于计算机视觉技术领域,涉及头部姿态估计技术,主要应用于安全驾驶,和人机交互问题中。
背景技术:
头部姿态估计是指根据包含头部的数字图像,利用机器学习和计算机视觉的方法准确快速地估计该图像中对应头部的偏转角度,也称为头部姿态。它是近年来计算机视觉和机器学习领域研究的热门问题,在人机交互、安全驾驶和关注度分析等方面都有非常广泛的应用。例如:在人机交互领域,头部的偏转角度可以用于控制电脑或机器显示的方向和位置;在安全驾驶领域,头部姿态可用于辅助视线估计,从而提示驾驶员正确的视线方向。近年来,头部姿态估计在流形学习和子空间理论发展的基础上,有了进一步的发展。现有头部姿态估计方法可以分为三个大的类别:1.基于容貌的方法,2.基于分类的方法和3.基于回归的方法。
基于容貌的头部姿态估计方法的基本原理是将输入的头部图像与数据库中已有的图像进行一一比对,并将找到的最相似的图像所对应的角度作为待估计图像的头部姿态(即角度)。该类方法最大的缺陷在于其只能输出离散的头部偏转角度,并且由于需要与所有已有图像进行依次比对,运算量巨大。参见文献:D.J.Beymer,Face Recognition under Varying Pose,IEEE Conference on Computer Vision and Pattern Recognition,pp.756-761,1994和J.Sherrah,S.Gong,and E.J.Ong,Face Distributions in Similarity Space under Varying Head pose Image and Vision Computing,vol.19,no.12,pp.807-819,2001。
基于分类的头部姿态估计方法是指根据输入图像的特征和对应头部偏转角度训练分类器,并利用学习好的分类器区分待估计图像头部偏转角度所属的类别,从而确定头部姿态的大致范围。该类方法中常用的分类器包括支持向量机(Support Vector Machine,SVM),线性判决分析(Linear Discriminative Analysis,LDA),核线性判决分析(Kernel Linear Discriminative Analysis,KLDA),这类方法的主要缺点是无法估计输出连续的头部姿态,参见文献:J.Huang,X.Shao,and H.Wechsler,Face Pose Discrimination using Support Vector Machines(SVM),International Conference on Pattern Recognition,pp.154-156,1998。
基于回归的头部姿态估计方法是目前最常用的估计方法,该方法的基本原理是利用已有图像特征和对应的头部角度建立映射函数,并利用映射函数估计待处理图像对应的头部姿态。该类方法解决了前述两种方法无法估计输出连续姿态的问题,同时减少了运算复杂度,参见文献G.Fanelli,J.Gall,and L.Van Gool,Real Time Head Pose Estimation with Random Regression Forests,IEEE Conference on Computer Vision and Pattern Recognition,2011,pp.617-624和文献H.Ji,R.Liu,F.Su,Z.Su,and Y.Tian,Convex Regularized Sparse Regression for Head Pose Estimation,IEEE International Conference on Image Processing,pp.3617-3620,2011。
上述方法都是直接建立从输入特征到目标值的映射函数,其局限性在于当训练数据存在稀疏或分布不均匀问题时,估计误差增大。为了解决上述问题,本专利提出了一种基于累积属性的头部姿态估计方法,该方法首先将头部姿态图像映射到累积属性,在将累积属性转换为姿态。
技术实现要素:
本发明提供了一种基于累积属性的头部姿态估计方法。首先采集一定数量的头部图像,并记录头部头像对应的头部姿态;之后,对图像提取梯度方向直方图特征,并将头部姿态转化为累积属性;然后,建立头部图像的梯度方向直方图特征和累积属性之间的映射关系,以及累积属性和头部姿态之间的映射关系;最后,给定一幅待估计姿态的头部图像时,提取梯度方向直方图特征,并根据上述学到的映射模型映射到累积属性,再从累积属性映射到头部姿态角度。
为了方便地描述本发明内容,首先对一些术语进行定义。
定义1:头部姿态。在三维空间中头部旋转的角度通常由一个向量表示,该向量由三个元素构成,第一个元素为俯仰角,第二个元素为偏航角,第三个元素为旋转角。
定义3:俯仰角。在图1(b)所示的x-y-z坐标系中,俯仰角是指以x轴为中心旋转的角度θ。
定义3:偏航角。在图1(a)所示的x-y-z坐标系中,偏航角是指以z轴为中心旋转的角度φ。
定义4:旋转角。在图1(c)所示的x-y-z坐标系中,旋转角是指以z’为中心旋转的角度Ψ。
定义5:梯度方向直方图特征。利用像素强度梯度或边缘的方向分布描述一幅图像中的物体的表象和形状的视觉特征提取方法。其实现方法先将图像分成小的叫做方格单元的连通区域;然后采集方格单元中各像素点的梯度方向或边缘方向直方图;最后把这些直方图组合起来就可以构成特征描述子。为了提高精确度,还可以把这些局部直方图在图像的更大的区间(block)中进行对比度归一化(contrast-normalized),此方法通过先计算各直方图在这个区间(block)中的密度,然后根据这个密度值对区间中的各个方格单元做归一化。通过该归一化能对光照变化和阴影有更强的鲁棒性。
定义6:累积属性。累积属性是姿态角度的另一种有效表示,被用在视觉估计中,作为从面部特征到年龄映射的中间层。若已知一个人的头部姿态为y,首先将姿态的第k维yk(k=1,2,3)转化为累计属性
由构成的累计属性向量将姿态数据的每一维都有进行这样的变换,最后可以得到姿态y对应的累积属性向量
这里H=361×3。
定义7:梯度。当函数y=f(x)的自变量x的维数为D时候,梯度定义为为函数f(x)关于变量xd的偏导数。
定义8:后向传播算法。是一种监督学习算法,常被用来训练多层神经网络。一般包含两个阶段:(1)前向传播阶段将训练输入送入网络以获得激励响应;(2)反向传播阶段将激励响应同训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。
定义9:梯度下降法。梯度下降法是一个最优化算法,为求解函数f(x)取极值时,自变量的取值可以迭代求解,即:
直到梯度值为零,得到解。
本发明详细技术方案为一种基于累计属性的头部姿态估计方法,该方法包括:
步骤1:采集N幅包含不同姿态的头部图像(见图1),并根据采集每幅图像时各图像对应的标记头部俯仰、偏航和旋转角(见图2),即头部姿态做记录,yn的第一维表示俯仰角,第二维表示倾斜角,第三维表示旋转角,下标n表示第n幅图像;
步骤2:将彩色图像转换为灰度图像,若采集图像已为灰度图像则无需进行转化;
步骤3:将步骤2中得到头部图像归一化为大小为64×64像素的归一化图像,并提取梯度方向直方图特征(Histogram of Oriented Gradient,HOG),并记任意第n幅图像对应的梯度方向直方图特征向量D表示该梯度方向直方图特征向量的维度;
步骤4:将所有N幅图像对应的梯度方向直方图特征向量按顺序排列可以得到输入数据矩阵X,即X=[x1,x2,…,xN];
步骤5:将N幅图像对应的头部姿态转化为对应的累积属性,对于任意一幅图像对应的头部姿态yn,将其第k维ynk(k=1,2,3)转化为累积属性,转化方法为:
最后由构成的累计属性向量将姿态数据的每一维都进行这样的变换,最后可以得到姿态yn对应的累计属性向量
这里H=361×3,将所有图像对应的累计属性向量按顺序排列为矩阵A=[a1,a2,...,aN];
步骤5:将N幅图像对应的头部姿态向量按顺序排列为数据矩阵Y,即Y=[y1,y2,...,yN];
步骤6:通过栈式自编码模型建立梯度方向直方图X=[x1,x2,...,xN]和累计属性A=[a1,a2,...,aN]之间的非线性映射关系,栈式自编码的参数用符号θ表示,目标函数为:
其中hj(xn)是栈式自编码对输出向量第j维元素为1的概率估计,anj表示第n个样本对应的累计属性向量的第j个元素,λ控制约束项‖θ‖2的强弱,进一步的hj(xn)的最后一层都是对应二值(0/1)逻辑回归模型;
步骤7:利用后向传播算法求解步骤6中目标函数关于网络参数每一个元素的偏导数,由此得到关于θ的梯度,即
步骤8:初始化参数θ,初始化的原则是随机初始化,之后利用梯度下降算法调整网络参数,使得输入信号的重构误差最小;
步骤9:利用步骤7中得到的梯度利用梯度下降法得到将输入特征映射到累计属性时的网络最佳参数;
步骤10:将X=[x1,x2,...,xN]作为输入,送入到步骤9中学到的栈式自编码模型中,并得到对应的累积属性估计值向量
最后得到所有图像对应的累积属性矩阵
步骤11:利用随机森林方法估计累积属性和目标姿态Y=[y1,y2,...,yN]之间的映射关系;
步骤12:当给定一个新的头部图像时,我们先利用步骤9中学到的栈式自编码模型估计对应的累积属性,在利用步骤10中学到的随机森林模型将累积属性映射到姿态。
进一步的:
步骤3中在梯度方向直方图特征计算的过程中,区域个数的参数设置为2×2,每一区域中图像单元的个数参数设置为4×4,方向柱的个数设置为9,最后得到任意一幅图像对应的梯度方向直方图特征的维数为1152。
步骤6中的输入特征需要进行取值范围的压缩,将其范围限定到[0.1,0.9]之间;栈式自编码模型的隐含层数目为3,第一个隐含层的节点数目为300,第二个隐含层节点数目为250,第三个隐含层的节点数目为200。
步骤10中用到的随机森林方法,决策树的个数设置为500,随机特征的维数设置为35。
本发明的创新之处在于:
提出姿态估计中的累积属性,利用建立图像特征和累积属性之间的深度回归关系,模拟二者之间的映射关系。同时提出将累积属性利用随机森林方法映射到目标姿态。由于上述创新,使得本专利提出的头部姿态估计方法有较为理想的估计准确性。
附图说明
图1头部姿态估计示意图。
图2是栈式自编码模型。
具体实施方式
实现语言:Matlab,C/C++
硬件平台:Intel core2E7400+4G DDR RAM
软件平台:Matlab2015a,VisualStdio2010
采用本发明的方法,首先在VisualStdio2010或matlab平台上对采集到的用于训练的头部姿态图像提取梯度方向直方图特征,并将对应的头部姿态数据转化为累积属性;之后利用栈式自编码模型建立梯度方向直方图特征和累积属性之间的映射关系;接着利用随机森林建立累积属性和头部姿态之间的映射关系;最后,当给定待估计图像时,提取梯度方向直方图特征,通过上述学到的模型映射到累积属性,再映射到头部姿态。
本发明详细技术方案为一种基于累计属性的头部姿态估计方法,该方法包括:
步骤1:采集N幅包含不同姿态的头部图像(见图1),并根据采集每幅图像时各图像对应的标记头部俯仰、偏航和旋转角(见图2),即头部姿态做记录,yn的第一维表示俯仰角,第二维表示倾斜角,第三维表示旋转角,下标n表示第n幅图像;
步骤2:将彩色图像转换为灰度图像,若采集图像已为灰度图像则无需进行转化;
步骤3:将步骤2中得到头部图像归一化为大小为64×64像素的归一化图像,并提取梯度方向直方图特征(Histogram of Oriented Gradient,HOG),并记任意第n幅图像对应的梯度方向直方图特征向量D表示该梯度方向直方图特征向量的维度;所述步骤3中在梯度方向直方图特征计算的过程中,区域个数的参数设置为2×2,每一区域中图像单元的个数参数设置为4×4,方向柱的个数设置为9,最后得到任意一幅图像对应的梯度方向直方图特征的维数为1152;
步骤4:将所有N幅图像对应的梯度方向直方图特征向量按顺序排列可以得到输入数据矩阵X,即X=[x1,x2,...,xN];
步骤5:将N幅图像对应的头部姿态转化为对应的累积属性,对于任意一幅图像对应的头部姿态yn,将其第k维ynk(k=1,2,3)转化为累积属性,转化方法为:
最后由构成的累计属性向量将姿态数据的每一维都进行这样的变换,最后可以得到姿态yn对应的累计属性向量
这里H=361×3,将所有图像对应的累计属性向量按顺序排列为矩阵A=[a1,a2,...,aN];
步骤5:将N幅图像对应的头部姿态向量按顺序排列为数据矩阵Y,即Y=[y1,y2,...,yN];
步骤6:通过栈式自编码模型建立梯度方向直方图X=[x1,x2,...,xN]和累计属性A=[a1,a2,...,aN]之间的非线性映射关系,栈式自编码的参数用符号θ表示,目标函数为:
其中hj(xn)是栈式自编码对输出向量第j维元素为1的概率估计,anj表示第n个样本对应的累计属性向量的第j个元素,λ控制约束项‖θ‖2的强弱,进一步的hj(xn)的最后一层都是对应二值(0/1)逻辑回归模型;
所述步骤6中的输入特征需要进行取值范围的压缩,将其范围限定到[0.1,0.9]之间;栈式自编码模型的隐含层数目为3,第一个隐含层的节点数目为300,第二个隐含层节点数目为250,第三个隐含层的节点数目为200。
步骤7:利用后向传播算法求解步骤6中目标函数关于网络参数每一个元素的偏导数,由此得到关于θ的梯度,即
步骤8:初始化参数θ,初始化的原则是随机初始化,之后利用梯度下降算法调整网络参数,使得输入信号的重构误差最小;
步骤9:利用步骤7中得到的梯度利用梯度下降法得到将输入特征映射到累计属性时的网络最佳参数;
步骤10:将X=[x1,x2,...,xN]作为输入,送入到步骤9中学到的栈式自编码模型中,并得到对应的累积属性估计值向量
最后得到所有图像对应的累积属性矩阵所述步骤10中用到的随机森林方法,决策树的个数设置为500,随机特征的维数设置为35。
步骤11:利用随机森林方法估计累积属性和目标姿态Y=[y1,y2,...,yN]之间的映射关系;
步骤12:当给定一个新的头部图像时,我们先利用步骤9中学到的栈式自编码模型估计对应的累积属性,在利用步骤10中学到的随机森林模型将累积属性映射到姿态。