本发明属图像处理和模式识别技术领域,具体涉及一种人脸表情的识别方法。
背景技术:
人脸表情识别是一个典型的图像处理、理解和分类的问题,是多学科交叉研究的前沿热点。除了涉及到图像处理、模式分析、模式分类、形态学的理论与方法外,还需要光学、心理学、矩阵等方面的理论做支撑。因此,表情识别技术的发展对这些学科的诸多方面提出新的要求,从而带动它们的发展。
早期的人脸表情识别多是在刻意摆出的、静态图片表情库中进行研究的。然而,人脸表情是一个连续的动态过程,因此在视频序列中进行人脸表情识别的研究更具有现实意义。对于识别视频序列中的人脸表情有两大挑战:(1)不同对象表达表情的差异性;(2)识别不同对象表达同种表情的速率。为克服这两大问题,需要一种更具有鲁棒性的方法,在更好的捕获变化表情的同时减轻不同目标之间差异性的影响。
心理学和生理学理论研究表明,人脸表情依靠肌肉的运动体现。摄像机捕获的人脸表情图像直观的反映了表情发生时人脸肌肉运动所产生的面部变形和纹理的变化。从整体上看,表情变化造成了面部器官的明显形变,会对人脸图像的全局信息产生影响。人脸表情发生时不仅有整体变化,也存在局部的变化,如面部肌肉的纹理,褶皱等。如果忽略不同表情对象之间的差异性,可以发现仍存在一些典型的局部运动模式,这些运动模式能够被不同对象所共享。其中面部运动编码系统(Facial Action Coding System:FACS)就是一个典型例子。FACS通过手动获得一系列运动单元(Action Units:AU),这些运动单元被定义为由人脸产生表情所引发的肌肉运动。因此可以通过分析AU的存在以及组成来进行表情识别。
技术实现要素:
本发明的目的是提供一种在格拉斯曼(Grassmann)流形上基于原型和Simile的表情识别方法,在以往人脸表情检测方法的基础上加以改进和创新,使识别结果更为理想,更适用于自然场景中的人脸表情识别。
本发明的格拉斯曼流形上基于原型和Simile的表情识别方法,包括下列步骤:
1.1选择人脸表情数据库:选取扩充的Cohn-Kanade人脸表情数据库,该数据库分别由不同种族、性别、年龄的123位人物的7种不同表情组成;选取共计950幅表情图像,包含高兴140幅、惊讶150幅、愤怒165幅、悲伤135幅、厌恶135幅、恐惧120幅、中性105幅7种表情图像;
1.2对步骤1.1所述人脸表情数据库的950幅表情图像进行不同人脸表情视频序列图像预处理:采用基于YIQ色彩空间建立肤色模型,进行人脸检测,确保样本序列中存在人脸图像,将检测出的人脸所有图像剪裁并归一化成96×96像素的灰度图像;
1.3将经过步骤1.2预处理的950幅表情图像平均分成5份,每份都包含7种表情图像,选取其中4份作为训练样本集,剩下的1份作为测试样本集;
1.4建立人脸局部表情模型:对步骤1.3中4份训练样本集图像的局部斑块区域建模,假设斑块的大小为s×s,长与宽分别为s个像素值,得到s2维的灰度特征向量,对于训练样本集序列的所有帧图像,都选取相同位置、相同大小的斑块作为处理对象,得到特征集F:
F={f1,f2,...,fT}
其中:代表第t帧表情图像的斑块特征;T为总帧数;
通过奇异值分解算法,将特征集F用一个线性子空间的协方差矩阵表示为:
其中:X=[x1,x2,…xr];x1,x2,…xr分别是第1,2,…,r个主导特征向量,线性子空间为r维;
将不同表情视频序列的不同表情局部斑块的特征向量的集合表示为:{Xi|i=1,2,…,N},将其作为一种表情特征,定义Xi为人脸局部表情模型;
1.5基于学习“原型”对局部表情模型Xi聚类:定义“原型”为通用的局部表情特征,这些局部表情特征能被不同目标的不同表情所共享,对所有人脸局部表情模型采用聚类算法从扩充的Cohn-Kanade人脸表情数据库中自动地发掘“原型”,得到一系列几何中心,每一个几何中心被视为其对应类集模型的样本;采用基于Grassmann核函数计算的关联矩阵的聚类算法,两个线性子空间Xi和Xj的相似性由下式计算:
其中:A为Grassmann流形上用于光谱聚类运算的关联矩阵;Xi和Xj分别表示第i个和第j个线性子空间,i,j=1,2,…,N且i≠j;F代表Frobenius范数;
定义一个对角线矩阵D,Dij=∑jAij,j=1,2,...,N;对关联矩阵A进行归一化,得到矩阵L:
L=D-1/2AD-1/2
选取矩阵L的前l个特征向量构成一个新的矩阵U,将U的每一行作为Rl上的一个点来对待,在这个新的嵌入式的空间中,采用K-means算法得到聚类分配结果,这个结果能简单地与Grassmann流形中原始人脸局部表情模式Xi一一对应,整个聚类算法的步骤如下:
输入人脸表示视频库训练样本集提取出的人脸局部表情模型:{Xi|i=1,2,...,N}
输出K个聚类结果:{Jk|k=1,2,...,K},Jk表示第k个聚类值,其中:
1)计算关联矩阵A∈RN×N,其中:
2)定义一个对角线矩阵D,其中:Dij=∑jAij,计算归一化矩阵L=D-1/2AD-1/2;
3)寻找矩阵L的前l个特征向量:u1,u2,...,ul;
4)用u1,u2,...,ul作为每一列的元素构成一个新矩阵U,按下式重新进行归一化: i,j=1,2,...,l;
5)选取矩阵U每一列的前N行作为Rl上的一个点,然后对这些点采用K-means算法,使Rl上的第i点对应Grassmann流形上原始人脸表情模式Xi;
6)当矩阵U的第i行被聚类为第k类的时候,将聚类结果Jk,k=1,2,...,K,分配对应至原始模型Xi;
1.6基于Simile分类器的高级特征提取,包括下列步骤:
1.6.1构建Simile分类器:通过训练样本集构建Simile分类器,训练样本集包括M个局部表情模型,针对之前K个原型,训练出M×K个Simile分类器Ci=1,...,M×K;其中分类器的正样本为特定局部表情模型的特征值,负样本为其他局部表情模型的特征值;
1.6.2计算高级描述子:对步骤1.5的聚类结果Jk,k=1,2,...,K通过步骤1.6.1的M×K个Simile分类器Ci=1,...,M×K,形成高级特征C(X)=<C1(J(X)),...,CM×K(J(X))>;
1.7采用SVM分类器进行人脸表情识别,包括下列步骤:
1.7.1构建多类SVM分类器:采用One-against-one投票策略的SVM,识别7种表情:高兴、悲伤、愤怒、厌恶、害怕、惊讶、中性,构建21个SVM二分类器;
1.7.2识别过程:让表情训练样本集依次经过21个SVM二分类器,通过One-against-one投票策略,决定最终类别归属;
1.8输出人脸表情识别结果。
因此选取CK+人脸表情数据库后,通过人脸区域检测,图像尺寸归一化,训练样本集,建立人脸局部表情模型,基于学习“原型”对局部表情模型聚类,构建Simile特征分类计算特征描述子,构建SVM分类器后就能实现人脸表情的识别。本发明只对局部表情区域进行建模,与对全脸进行建模相比降低了计算量;对表情局部特征进行进一步高级提取,能够更好地捕捉到人脸表情的微妙变化,提高自然场景下人脸表情的识别率,具有很好的鲁棒性。
附图说明
图1为格拉斯曼流形上基于原型和Simile的表情识别方法流程图
图2为流程详解框图
其中:(A)为不同对象的人脸表情图;(B)为表情“原型”图;(C)、(D)为测试图像局部区域与原型之间相似值图;(C)和(D)中柱状表示与“原型”的相似度;
图3为基于学习原型的详解图
其中:(a)为视频序列;(b)为Grassmann流形上的人脸表情模式;(c)为原型:每个类集的karcher质心。
具体实施方式
下面结合附图对本发明的目的、具体技术方法和效果进行描述。
本发明在格拉斯曼流形上基于原型和Simile进行表情识别,如图1所示为本发明的基本框架,本方法的具体实施从八点进行描述:
1.选择人脸表情数据库:选取扩充的Cohn-Kanade人脸表情数据库:the extended Cohn-Kanade database,CK+,该数据库分别由不同种族、性别、年龄的123位人物的7种不同表情组成;选取共计950幅表情图像,包含高兴140幅、惊讶150幅、愤怒165幅、悲伤135幅、厌恶135幅、恐惧120幅、中性105幅7种表情图像;
2.进行不同人脸表情视频序列图像预处理:本发明采用基于YIQ色彩空间建立肤色模型,进行人脸检测,确保样本序列中存在人脸图像;
2.1.对于彩色人脸表情图像中任意像素点p,将其从RGB模型变换YIQ模型;
2.2.如果满足不等式则p点为肤色像素,反之为非肤色像素:其中Ip和Qp分别代表YIQ空间中的I分量和Q分量,g和q分别代表I分量和Q分量的范围,m代表I分量的均值;
2.3.选择YIQ空间的肤色范围为(5,150),进行人脸检测;
2.4.将检测出人脸的图像进行剪裁,保留脸部区域,并剪裁为96×96像素的归一化灰度图像;
3.将步骤2.4所述经过人脸检测以及尺寸归一化后的950幅表情图像平均分成5份,每份都包含7种表情图像,选取其中4份作为训练样本集,剩下的1份作为测试样本集;
4.建立人脸局部表情模型
对步骤3中4份训练样本集图像的局部斑块区域建模,假设斑块的大小为s×s,长与宽分别为s个像素值,得到s2维的灰度特征向量,对于训练样本集序列的所有帧图像,都选取相同位置、相同大小的斑块作为处理对象,得到特征集F:
F={f1,f2,...,fT}
其中:代表第t帧表情图像的斑块特征;T为总帧数;
通过奇异值分解算法,将特征集F用一个线性子空间的协方差矩阵表示为:
其中:X=[x1,x2,...xr];x1,x2,...xr分别是第1,2,...,r个主导特征向量,线性子空间为r维;
将不同表情视频序列的不同表情局部斑块的特征向量的集合表示为:{Xi|i=1,2,...,N},将其作为一种表情特征,定义Xi为人脸局部表情模型;
5.基于学习“原型”对局部表情模型Xi聚类
定义“原型”为通用的局部表情特征,这些局部表情特征能被不同目标的不同表情所共享,对所有人脸局部表情模型采用聚类算法从扩充的Cohn-Kanade人脸表情数据库中自动地发掘“原型”,得到一系列几何中心,每一个几何中心被视为其对应类集模型的样本;因为线性子空间{Xi|i=1,2,...,N}是位于Grassmann流形上点的集合,因此传统欧氏空间的聚类算法不适用,为解决这个问题,采用基于Grassmann核函数计算的关联矩阵的聚类算法,两个线性子空间Xi和Xj的相似性由下式计算:
其中:A为Grassmann流形上用于光谱聚类运算的关联矩阵;Xi和Xj分别表示第i个和第j个线性子空间,i,j=1,2,...,N且i≠j;F代表Frobenius范数;
定义一个对角线矩阵D,Dij=∑jAij,j=1,2,...,N对关联矩阵A进行归一化,得到矩阵L:
L=D-1/2AD-1/2
选取矩阵L的前l个特征向量构成一个新的矩阵U,将U的每一行作为Rl上的一个点来对待,在这个新的嵌入式的空间中,采用K-means算法得到聚类分配结果,这个结果能简单地与Grassmann流形中原始人脸局部表情模式Xi一一对应,整个聚类算法的步骤如下:
输入人脸表示视频库训练样本集提取出的人脸局部表情模型:{Xi|i=1,2,...,N}
输出K个聚类结果:{Jk|k=1,2,...,K},Jk表示第k个聚类值,其中:
1)计算关联矩阵A∈RN×N,其中
2)定义一个对角线矩阵D,其中Dij=ΣjAij,计算归一化矩阵L=D-1/2AD-1/2;
3)寻找矩阵L的前l个特征向量:u1,u2,...,ul;
4)用u1,u2,...,ul作为每一列的元素构成一个新矩阵U,按照下式重新进行归一化: i,j=1,2,...,l;
5)选取矩阵U每一列的前N行作为Rl上的一个点,然后对这些点采用K-means算法,使Rl上的第i点对应Grassmann流形上原始人脸表情模式Xi;
6)当矩阵U的第i行被聚类为第k类的时候,将聚类结果Jk,k=1,2,...,K分配对应至原始模式 Xi;
6.基于Simile分类器的高级特征提取
为了获得一个统一的基于原型的人脸表情表示,设计Simile特征来探索通用原型和特定模式之间的关系。Simile的核心思想是:一张人脸表情图像可以描述为与训练样本集各个人脸表情图像之间的相似性,这些相似值作为人脸图像的高级特征,包括下列步骤:
6.1.构建Simile分类器:通过训练样本集构建Simile分类器,训练样本集包括M个局部表情模型,针对之前K个原型,训练出M×K个Simile分类器Ci=1,...,M×K;其中分类器的正样本为特定局部表情模型的特征值,负样本为其他局部表情模型的特征值;
6.2.计算高级描述子:对步骤5的聚类结果Jk,k=1,2,...,K通过步骤6.1的M×K个Simile分类器Ci=1,...,M×K,形成高级特征C(X)=<C1(J(X)),...,CM×K(J(X))>;如图2(C)、(D)所示,两张人脸图像通过步骤6.1构建的Simile分类器能得到一系列相似值(图中块的高度);这些相似度输出值组成了人脸表情图像的高级特征描述子C(X);
7.采用SVM分类器进行人脸表情识别,包括下列步骤:
7.1.构建多类SVM分类器:采用One-against-one投票策略的SVM,识别7种表情:高兴、悲伤、愤怒、厌恶、害怕、惊讶、中性,构建21个SVM二分类器;
7.2.识别过程:让表情训练样本集依次经过21个SVM二分类器,通过One-against-one投票策略决定最终类别归属;
8.输出人脸表情识别结果。