基于GPU加速的人脸表情识别及互动方法
技术领域
本发明涉及计算机数字多媒体、增强现实及体感交互技术领域,特别涉及一种基于普通摄像头的人脸表情检测及互动方法,尤指一种基于GPU加速的人脸表情识别及互动方法。
背景技术
人脸是非语言交流中最具有表现力的通道之一,人脸表情为研究情绪、意图、性格提供了线索。准确高效识别人脸表情的能力可以为很多应用提供支撑,想象空间巨大。
在过去几十年中,很多计算机***被构建出来,用来理解人类表情或与之互动。大多数***都将表情识别为一些原型表情(高兴、惊讶、愤怒、悲伤、恐惧、恶心)。在日常生活中,这些原型表情很少出现,而在人脸特征上通过一两个小变化来交流却有很多,比如说紧闭嘴唇表示愤怒,嘴唇倾斜往下表示悲伤。一些单独特征的改变,特别是在眉毛和眼皮区域的变化,更是一种副语言,如抬起眉毛表示着开心。为了获得这些精细的人类情绪和副语言的交流,对人类表情细微变化的自动检测是非常必要的。
面部编码***(FACS)是使用最广泛的、基于解剖学原理的编码***,它通过观察面部外观的瞬间轻微变化,将其编码成不同肌肉的运动。使用FACS,研究者可以将任何在解剖学上可行的面部表情,解码成Action Unit。对愉快、悲伤、惊讶、恐惧、愤怒、恶心这六种基本表情,则可以使用AU的组合表示,例如愉快是AU6与AU12的组合。
对人脸表情的识别主要分为对原型表情的识别和对人脸Action Unit的识别,shan使用LBP对表情原型进行了识别分类。Zhao提出了一种基于LBP的动态纹理识别算法,并通过这个算法对原型表情进行了识别分类。Cohn使用Gabor滤波识别笑脸。Sebe使用了PBVD模型通过用户指定的方式获得脸部特征点,然后通过模型形变获得表情特征,使用SVM支持向量机对特征进行分类从而获得原型表情。
对人脸Action Unit进行识别的算法有很多,Lucey使用AAM活动外形模型对人脸的63个特征点进行匹配,通过SVM支持向量机、NN最近邻及LDA对AU进行识别分类。Jiang提出的LPQ-TOP方法是一种基于LBP-TOP和LBQ的改进方法,实现了对9个AU的识别分类,准确率达到了84.6%。Bartlett和Littlewort使用Gabor滤波对表情原型和AU都进行了识别。Littlewort也使用Gabor滤波对人脸图像进行特征提取,并使用SVM进行AU识别分类。
在人脸表情识别的研究中,很多研究者关注识别的准确率,而对效率并不是特别在意,因此,开发一种能够实时进行表情交互的***是十分必要的,一方面这能够更好地让使用者对交互***进行评判,另一方面,也能够基于此开展更多的互动研究。
实时表情交互***是一个可以用于实时识别人脸表情AU的软件工具。***可以通过摄像头处理实时视频,也可以处理视频文件或者单张图片。通过对16个面部AU的识别,***既可以响应单个AU,也可以通过组合,对愉快、悲伤、惊讶、愤怒、恶心和恐惧这六种原型表情进行识别,或对交互动作进行定制。所有该***的输出都在图形界面进行显示,直接输出为文件。通过基于socket的进程间通信手段,实时表情交互***可以为其他应用提供AU识别功能,有助于基于AU的应用开发。
发明内容
本发明的目的在于提供一种基于GPU加速的人脸表情识别及互动方法,解决了现有技术存在的人脸识别效率低下等问题。基于GPU加速的Gabor滤波识别人脸表情,该方法能够让用户在普通摄像机前,通过表情的变化来与计算机进行交互,在数字家庭、游戏及医学上有着广阔的应用前景。
本发明的上述目的通过以下技术方案实现:
基于GPU加速的人脸表情识别及互动方法,包括以下步骤:
步骤(1)、通过普通摄像头或者视频获得动态人脸表情:
将普通摄像头连接到计算机,并将普通摄像头放置于演奏者脸部正前方,距离人脸50-60厘米,通过摄像头获得包含正面人脸的图像;
步骤(2)、使用基于Haar特征和AdaBoost级联分类器的识别方法对人脸进行检测,提取出离摄像头最近,即占据画面最大的人脸图像:
步骤(3)、通过提取出的人脸图像,使用基于Haar特征及AdaBoost的识别方法,识别出瞳孔、鼻尖等位置坐标。
步骤(4)、将人脸分为若干个关键区域:
通过对人脸微表情的分析,我们将人脸分为若干个区域,其中,以瞳孔位置为中心,向左15像素,向右15像素,向上35像素,向下15像素的区域为眉毛表情区域,用来检测眉毛的细微变化,另外分别还有覆盖眼睛微表情、面颊微表情以及嘴唇微表情的区域;
步骤(5)、对整张人脸实现基于GPU加速的Gabor滤波:
Gabor滤波需要大量分别对Gabor核实部和虚部的卷积操作,Gabor核越大,卷积图像越大,耗时越长,我们选用21*21像素大小的Gabor核,卷积图像为150*150。针对卷积算法耗时长的特性,使用了基于FFT的方法,将空间域的卷积操作转化为频率域的相乘操作,每次卷积只需要1次FFT变换,1次相乘和1次逆FFT变换,时间复杂度为nlog(n),可以达到较快的速度,同时使用GPU加速并行处理技术,对FFT变换进行加速,同时将Gabor核的FFT变换结果保存在显存中,减少运算的时间。Gabor滤波之后,每个像素点都拥有40个幅值作为特征。
步骤(6)、对人脸特征点附近的关键区域进行特征提取:
通过将步骤(4)中获得的眉毛表情区域ROI以及其他ROI,将每一个ROI中的像素点根据从左到右、从上到下的顺序进行排列,再将40个幅值代入,得到这个ROI的特征;
步骤(7)、如果此时为训练模式,则将提取出的特征根据微表情出现与否打上标签,并通过增量SVM训练的方式生成识别模型:CK、CK+、MMI等人脸表情数据库中,包含表情的图片以及制作者手工标记的微表情信息,通过将对应的图像通过步骤(1)至步骤(6),获得对应的特征,通过根据制作者手工标记的微表情信息,以具体微表情作为分类集合微表情区域特征,通过带惩罚的SVM支持向量机进行训练,其中惩罚参数为10,获得微表情识别模型;共对16个表情进行识别,所以生成了16个微表情识别模型;
步骤(8)、如果此时为识别模式,则将提取出的特征投入对应的识别模型中,获得微表情的具体信息:通过步骤(7),可以生成16个微表情识别模型,通过将步骤(6)中生成的特征,投入到相应的C-SVM中,可以准确的获得微表情是否出现的信息。
所述的步骤(2)中使用基于Haar特征和AdaBoost级联分类器的识别方法对人脸进行检测,提取出离摄像头最近,即占据画面最大的人脸图像,其步骤是:
(2.1)、在步骤(1)获得的图像基础上,使用OpenCV自带的基于Haar特征和AdaBoost级联分类器方法进行人脸检测,其中scale参数为1.1,minNeighbors参数为3;
(2.2)、将所有检测出来的人脸以人脸大小从大到小进行排序,计算出人脸大小的中位数,并删除比中位数大30%和比中位数小30%的人脸,在剩余的人脸中,选择最大的一个并记录其坐标;
(2.3)、图像预处理:在表情识别中,源图片在大小、光照、位置方面有很多差异,而理想输入是纯表情区域,所以需要经过如下步骤的预处理:
(2.3.1)、光照归一化,即直方均衡;
(2.3.2)、几何归一化,即转换至150*150分辨率;
(2.4)、把一个椭圆形的掩膜以人脸的中心覆盖在图像上,长轴长度为图像高度的47%,短轴长度为图像宽度的41.6%,划出纯表情区域,以有效排除掉人脸之外的噪声。
本发明的有益效果在于:本发明解决了人脸识别效率低下的问题,并且通过Socket连接让用户能够与其他程序进行交互,用户无需使用鼠标键盘等交互设备,只需要使用自己的表情就可以与电脑进行交互,在数字家庭、游戏以及医疗领域具有广阔的前景,并且具有较高的可用性以及现实意义。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本发明的流程图;
图2为本发明的软件界面图。
具体实施方式
下面结合附图进一步说明本发明的详细内容及其具体实施方式。
参见图1及图2所示,本发明的基于GPU加速的人脸表情识别及互动方法,包括以下步骤:
步骤1. 通过普通摄像头或者视频获得动态人脸表情:将普通摄像头连接到计算机,并将普通摄像头放置于演奏者脸部正前方,距离人脸50-60厘米,通过摄像头获得包含正面人脸的图像。
步骤2. 使用基于Haar特征和AdaBoost级联分类器的识别方法对人脸进行检测,提取出离摄像头最近(占据画面最大)的人脸图像:
2.1 在步骤1获得的图像基础上,使用OpenCV自带的基于Haar特征和AdaBoost级联分类器方法进行人脸检测,其中scale参数为1.1,minNeighbors参数为3;
2.2 将所有检测出来的人脸以人脸大小从大到小进行排序,计算出人脸大小的中位数,并删除过大(比中位数大30%)和过小(比中位数小30%)的人脸,在剩余的人脸中,选择最大的一个并记录其坐标;
2.3 图像预处理:在表情识别中,源图片在大小、光照、位置方面有很多差异,而我们的理想输入是纯表情区域,所以需要经过如下步骤的预处理:
2.3.1 光照归一化(直方均衡);
2.3.2 几何归一化(转换至150*150分辨率);
2.4 把一个椭圆形的掩膜以人脸的中心覆盖在图像上(长轴长度为图像高度的47%,短轴长度为图像宽度的41.6%),划出纯表情区域,可以有效排除掉人脸之外的噪声。
步骤3. 通过提取出的人脸图像,使用基于Haar特征及AdaBoost的识别方法,识别出瞳孔、鼻尖等位置坐标。
步骤4. 将人脸分为若干个关键区域:
通过对人脸微表情的分析,将人脸分为若干个区域,其中,以瞳孔位置为中心,向左15像素,向右15像素,向上35像素,向下15像素的区域用来检测眉毛的细微变化,另外分别还有覆盖眼睛微表情、面颊微表情以及嘴唇微表情的区域。
步骤5. 对整张人脸实现基于GPU加速的Gabor滤波:
Gabor滤波需要大量分别对Gabor核实部和虚部的卷积操作,Gabor核越大,卷积图像越大,耗时越长,我们选用21*21像素大小的Gabor核,卷积图像为150*150。针对卷积算法耗时长的特性,使用了基于FFT的方法,将空间域的卷积操作转化为频率域的相乘操作,每次卷积只需要1次FFT变换,1次相乘和1次逆FFT变换,时间复杂度为nlog(n),可以达到较快的速度,同时使用GPU加速并行处理技术,对FFT变换进行加速,同时将Gabor核的FFT变换结果保存在显存中,减少运算的时间。Gabor滤波之后,每个像素点都拥有40个幅值作为特征。
步骤6. 对人脸特征点附近的关键区域进行特征提取:
通过将步骤4中获得的眉毛表情区域ROI以及其他ROI,将每一个ROI中的像素点根据从左到右、从上到下的顺序进行排列,再将40个幅值代入,得到这个ROI的特征。
步骤7. 如果此时为训练模式,则将提取出的特征根据微表情出现与否打上标签,并通过增量SVM训练的方式生成识别模型:CK、CK+、MMI等人脸表情数据库中,包含表情的图片以及制作者手工标记的微表情信息,通过将对应的图像通过步骤1至步骤6,获得对应的特征,通过根据制作者手工标记的微表情信息,以具体微表情作为分类集合微表情区域特征,通过带惩罚的SVM支持向量机进行训练,其中惩罚参数为10,获得微表情识别模型。共对16个表情进行识别,所以生成了16个微表情识别模型。
步骤8. 如果此时为识别模式,则将提取出的特征投入对应的识别模型中,获得微表情的具体信息:通过步骤7,可以生成16个微表情识别模型,通过将步骤6中生成的特征,投入到相应的C-SVM中,可以准确的获得微表情是否出现的信息。
以上所述仅为本发明的优选实例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。