趁着还未工作,先把过去做的东西整理下出来~
Github源码: https://github.com/Blz-Galaxy/OpenCV-Face-Recognition
(涉及个人隐私,源码不包含测试样本,请谅解~)
对实验结果更感兴趣的朋友请直接看 第5章
【摘要】这是一篇关于人脸识别方法的实验报告。报告首先回顾了人脸识别研究的发展历程及基本分类;随后对人脸识别技术方法发展过程中一些经典的流行的方法进行了详细的阐述;最后作者通过设计实验对比了三种方法的识别效果并总结了人脸识别所面临的困难与挑战。一些能反映方法性能的实验数据同样会在报告中展现,以便于更直观的了解其特点。
【关键词】人脸识别;局部二值模式(LBP);线性判别(LDA);主成分分析(PCA)
注: 该报告所使用的方法描述来源于现有文献 ,这里仅以论文格式进行呈现。
简单来说,人脸识别就是利用计算机分析人脸视频或者图像,并从中提取出有效的识别信息,最终判别人脸对象的身份。它是基于生物识别技术的最要身份识别方法之一,涉及到计算机图形学、计算机视觉、模式识别、人工智能、计算智能等技术。对于人脸识别问题的研究已有几十年的时间,在理论研究和实际开发方面都取得了一定的成果,并在不断的发展与完善。另外,基于人脸图像的计算机视觉和模式识别问题也成为近些年研究的热点问题。其中包括人脸检测,人脸识别,人脸表情识别等各类识别问题。
人脸与人体的其他生物特征(指纹、虹膜等)一样与生俱来,其生物特征内在的稳定性和唯一性使其成为了作为身份识别的理想依据。与其他生物识别系统相比,人脸识别系统具有直接、友好、方便等特点,容易被使用者接受。因此,其在信息安全、刑事侦破、出入口控制等领域都有着广泛的应用前景。
关于人脸识别的研究最早始于心理学家们在20世纪50年代的工作,而真正从工程应用的角度来研究它则开始于20世纪60年代。最早的研究者是Bledsoe,他建立了一个半自动的人脸识别系统,主要是以人脸特征点的间距、比率等参数为特征。早期的人脸识别方法有两大特点:
1)大多数识别方法是基于部件的,它们利用人脸的几何特征进行识别,提取的信息是人脸主要器官特征信息及其之间的几何关系。这类方法比较简单,但是很容易丢失人脸的有用信息,从而在视角、表情等变化的情况下识别能力差。鉴于这种情况,后来出现了性能较优的模板匹配方法,即根据图像库中的人脸模板与待识别人脸模板在灰度上的相似程度来实现人脸识别,这类方法在一定时期内占据主流。
2)人脸识别研究主要是在较强约束条件下的人脸图像识别。假设图像背景单一或无背景,人脸位置已知或很容易获得,因此对现实场景产生的图像处理效果不佳。
90年代中期以来,人脸识别方法向着整体识别和部件分析相结合的趋势发展。研究人员开始逐渐认识到人脸识别算法必须能够充分地利用人脸的各种特征信息,融合人脸的形状拓扑结构特征、局部灰度特征和全局灰度分布特征等多种特征。因此,出现了很多新的算法,这些算法是将原先单一的算法结合起来,共同完成人脸的识别。灰度和形状分离的可变形模型方法就是其中之一。90年代后期,一些商业性的人脸识别系统开始逐渐进入市场,人脸识别技术成为当今国际安全防范最重要的手段之一。但是,这些技术和系统离实用化还有一定的距离,性能和准确率有待提高。1991年Turk和Pentland [1]、[2] 首次提出著名的“特征脸”(Eigenface)方法,利用主成分分析(Principal Component Analysis,PCA)取得了不错的识别效果;Belhumer [3] 在他的论文中,成功地将Fisher判别准则应用到了人脸分类当中,提出了Fisherface方法;从此基于子空间和统计特征的人脸识别技术成了一种主流的技术,这种基于线性子空间的技术主要包括主成分分析、线形判别分析(Linear Discriminant Analysis,LDA)等方法。总体来说,这一阶段的基于机器学习方法的人脸识别技术得到了迅速的发展,在一些识别系统里面获得了不错的识别效果。最近几年,人脸识别的研究有了新的发展,基于机器学习的理论,研究者提出了许多新颖的方法,其中包括遗传算法(Genetic Algorithm,GA)、AdaBoost、贝叶斯分类器、支持向量机(Support Vector Machine,SVM)等方法。
2000年以后,人脸识别方法的性能虽然有了一定的提高,但仍与人们的要求还有一定的差距,现有方法对光照、年龄、表情、姿态、距离等条件的变化比较敏感,当某些条件发生变化时,识别效果很不理想。目前,人脸识别技术仍只能用于某些对识别准确率要求不高的场合。
人脸识别从不同的角度有不同的分类方法,报告基于人脸识别的发展过程将其分为基于几何特征、基于代数特征和基于机器学习三类人脸识别方法。
基于几何特征的方法是将人脸用一个几何特征矢量的表示,根据模式识别中层次聚类的思想设计分类器达到识别目的。通常采用的几何特征有人脸的五官如眼睛、鼻子、嘴巴等的局部形状特征。脸型特征以及五官在脸上分布的几何特征。提取特征时往往要用到人脸结构的一些先验知识。识别所采用的几何特征是以人脸器官的形状和几何关系为基础的特征矢量,本质上是特征矢量之间的匹配,其分量通常包括人脸指定两点间的欧式距离、曲率、角度等[9] 。
基于几何特征的识别方法比较简单、容易理解,但所使用的能量函数中各种代价的加权系数的选择是经验性的,没有形成统一的特征提取标准;从图像中抽取稳定的特征较困难,特别是特征受到遮挡时;对较大的表情变化或姿态变化的鲁棒性较差。
基于代数特性的方法通常是将空间图像的像素点变换投影空间[10] ,用一定数量的基本图像对人脸图像进行线性编码。
1)主成分分析(PCA)。PCA方法最早由Sirovitch和Kirby[5]、[6] 引人人脸识别领。主成分分析是多元统计分析中用来分析数据的一种方法,它是一种用较少数量的特征对样本进行描述以达到降低特征空间维度的方法,其基础是KL展开式。Turk等人[1]、[2] 首先提出了基于KL展开式的人脸识别方法,即特征脸(Eigenface)法。
2)独立分量分析(ICA)。独立分量分析是一种对多变量数据进行非正交线性坐标变换的方法,坐标轴方向由可以观察到的混合数据的二阶和高阶统计信息确定,变换的目的是使变换后的变量间相互独立[4] 。与PCA方法不同的是ICA方法要求特征空间的各个分量间统计独立。
在基于几何特征的方法中,人脸的特征是预先定义好的;而在基于机器学习的方法中,人脸的特征和类别利用统计分析和机器学习的技术从样本中学习来的。学习所得的人脸特征和类别存在于由各种算法所保证的分布规律、模型和判别函数中,并被用于人脸的检测和识别。
基于学习的分类器是现今比较流行的技术,有很多研究者在从事该研究,主要包括人工神经网络,支持向量机,隐马尔可夫模型(Hidden Markow Model,HMM)[7],贝叶斯决策和AdaBoost算法等技术。
特征提取是人脸识别系统中最为重要的一个组成部分。主成分分析方法(PCA)是应用最广泛的一种特征提取方法之一,它是一种统计学方法,在信号处理、模式识别、数字图像处理等领域已经得到了广泛的应用。特征脸方法是从主成分分析导出的一种人脸识别和描述技术。它将包含人脸的图像区域看作一随机向量,采用K-L变换得到正交K-L基,对应其中较大特征值的基具有与人脸相似的形状,因此又被称为特征脸。利用这些基的线性组合可以描述、表达和逼近人脸图像,所以可进行人脸识别与合成。识别过程就是将人脸图像映射到由特征脸组成的子空间上,并比较其在特征脸空间中的位置。
假设一幅人脸图像包含N个像素点,它可以用一个N维向量Γ表示。这样,训练样本库就可以用Γi(i=1,...,M)表示。协方差矩阵C的正交特征向量就是组成人脸空间的基向量,即特征脸。
将特征值由大到小排列:λ1≥λ2≥...≥λr ,其对应的特征向量为μk。这样每一幅人脸图像都可以投影到由u1, u2, ..., ur组成的子空间中。因此,每一幅人脸图像对应于子空间中的一点。同样,子空间的任意一点也对应于一幅图像。
虽然协方差矩阵Ω最多有对应于非零特征值的k(k远小于M)个特征向量,但是通常情况下,k仍然很大,而事实上,根据应用的要求,并非所有的特征向量都有需要保留,而特征空间投影的计算速度是直接与创建子空间所用的特征向量的数目相关,若考虑到计算时间的因素,可以适当的减去一些信息量少的特征向量,而且去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。
有了这样一个由“特征脸”组成的降维子空间,任何一幅人脸图像都可以向其投影得到一组坐标系数,这组系数表明了该图像在子空间中的位置,从而可以作为人脸识别的依据。换句话说,任何一幅人脸图像都可以表示为这组“特征脸”的线性组合,其加权系数即是K-L变换的展开系数,也可以称为该图像的代数特征。因此,在获得特征脸之后,就可以对每一类别的典型样本进行投影,由此得到每个人脸的投影特征从而构成人脸特征向量,作为下一步识别匹配的搜索空间。
输入图像及其在人脸空间上的投影(重构图像),人脸图像在人脸空间中的投影变化不明显而非人脸图像的投影变化明显。因此,检测一幅图像中是否存在人脸的基本思想是,计算该图像中任意位置处的局部图像与人脸空间之间的距离ε。其中,ε是局部图像是否为人脸的度量。因此,只要计算给定图像任意一点上的ε,就可以得到映射图ε(x,y) 。
线性判别分析(linear/fisher discrimination analysis,LDA)思想是将多维空间上的样本投影到一条直线上,形成一维特征空间。在该直线上样本的投影具有最佳可分性,即同类模式尽可能的密集,不同类模式尽可能分开。
LDA实质上就是多维模式空间到一维特征空间的映射,利用类的成员信息形成一组特征向量,特征向量体现了不同的人脸变化,称此特征空间为Fisherface。该方法以训练样本的类内散布矩阵与类间散布矩阵为基础构造最优投影空间。与PCA相比,LDA更好地反映了不同人脸之间的差异性,即增加了类间差异,但却忽略了同一个体由于光照、姿态等因素的不同而产生的类内差异。与基于K -L变换的人脸识别方法相比,基于Fisher的人脸识别方法能够抑制图像之间的与识别信息无关的差异,同时能够提取出异类之间有益于识别的特征,因此具有更加优越的识别性能。
Fisherfaces方法被Belhumeu等人提出,它是由Fisher线性判别式(Fisher’s lineardiscriminant,FLD)思想派生而来,同时考虑类间离散度和类内离散度,使这两者的比率达到最大。Belhumeur的实验证明,Fisherfaces的性能优于Eigen-faces。但即便如此,Fisherfaces还是存在两个明显的问题,即小样本问题(样本数目小于样本维数),以及多数实际问题属于非线性可分,传统的Fisher线性分析在这些问题上不能取得良好的结果[9]。因此,一系列Fisherfaces的改进方法也被提出。
在数学上,Fisher鉴别准则最终转化为求取散布矩阵 特征值的问题。但是对人脸识别的应用来说,由于通常没有足够的训练样本来保证类内离散度矩阵Sw为满秩,无法直接求解,因此需要加入一定的条件或策略才行,这里就不作具体介绍了。
LBP算子是执行纹理描述的最好的方法之一,它已经广泛用于各种应用软件,并且被证明有很高的判别能力、计算效率及不变形单调灰度水平变化的优势,能适用与各种复杂的图像分析任务。使用LBP作为人脸表示的想法是由于脸部能被看做由微模块组成,这种组成能很好的用LPB运算表述出来。
局部二值模式是一种灰度范围内的纹理描述方法,最初LBP算子定义为在3×3的窗户,以窗口的中心像素为阈值,将周围8个像素的灰度值与其比较,大于中心像素则标记为1,否则为0。这样3×3周围的8个点可以得到一个8位无符号的二进制数,这个二进制数转换为一个十进制整数,即该窗口的LBP值,用这个值来反映该区域的纹理信息。基本的LBP计算见图1。
图1 基本的LBP算子
LBP可以用不同尺寸的邻域来表示,采用圆形领域结合双线性插值,邻域的半径R和像素数目P可以任意选取,用符号(P,R)表示像素的领域关系。我们可以用式子LBP 表示LBP运算(上标u2表示使用统一模式)[8]、[11]。圆形邻域的实例参见图2。
图2 (8,1)、(16,2)、(8,2)邻域
LBP方法进行人脸描述,这一过程包括使用纹理描述符对人脸局部进行描述,在将其组合起来成一个整体。人脸图像被划分为几个局部区域,纹理描述符从这些单独的区域提取出来,这些描述符串联起来组成了人脸的整体描述。
把脸部区域分成确定的m份 ,每个区域单独做直方图计算,m个直方图的计算结果组合到一起形成空间增强直方图,空间增强直方图的大小为m×n,其中n为单个直方图的大小。在空间增强直方图中,我们能有效的有效的对脸部进行三个不同层次的描述,这三个层次是:直方图的LBP标志包含的信息组成一个像素级;一个小的区域上的标志集合起来组成一个地域级;这些区域的直方图连接在一起构成完整的人脸。
为了更好的了解各种人脸识别算法的性能与效果,这里通过openCV对PCA、Fisher线性判别、LBP三种算法进行了测试。实验使用的人脸图片共560张,由28位同学提供,其中每人20张(10张用于训练,10张用于测试)。图3与图4分别展示了前6位同学的训练样本与测试样本实例。
图3 训练样本(部分)
图4 测试样本(部分)
图5显示了28位同学提供的样本分别在三种识别算法下的识别情况。
图5 三种方法的匹配效果对比
其中24号样本在PCA、Fisher算法下的正确匹配数量少于一半。27号样本(参见图6)由于拍照环境过于复杂,在有限的训练样本中无法正确匹配。
图6 27号的训练样本(上)与测试样本(下)
表1 三种算法的识别率比较
表2 三种算法的性能对比
表1给出了三种算法对于每组样本的识别比例,经过统计可以得出,在上述的样本空间里主成分分析方法的识别率为91.0714%;Fisher线性判别方法的识别率为89.6429%;局部二值模式下的识别率为90.3571%。此外,表2还结合了样本训练的时间与预测所有测试样本的时间,给出了三种算法在性能上的对比。从中,我们发现PCA方法的总体表现较为出色。
综合比较目前常用的几种人脸识别方法,通过分析可以看出,每种方法都有各自优缺点,应根据具体的识别任务和条件选择合适的识别方法。由于人脸识别的复杂性,仅单独使用任何一种现有的方法一般都不会取得很好的识别效果,将各种人脸识别方法组合是今后研究的一种趋势。而如何有效地与基于其它生物特征识别方法结合来提高识别效率也是一个重要的研究方向。
目前,人脸识别技术已经从理论走向了实用,在特殊场合已经得到了广泛应用,但是限制其应用的最主要难题是:人脸姿态、光照变化、表情变化所导致的识别效果不理想。对于姿态的变化,采用通用3D模型和形变模型的方法是目前较好的选择;对于光照变化,熵图像是处理光照变化的一个有效方法,结合图像变形技术可以更好地处理光照和姿态的变化;对于表情变化,采用同一个体和不同个体的图像进行弹性变形的概率模型方法获得了较好的识别效果,也可以采用3D模型和形变模型进行识别。而随着真三维获取技术的发展,人脸识别技术有望取得突破性的进展并得到广泛的应用。
课程的学习让我对图像处理的知识体系有了比较全面的认识,为今后相关问题的解决提供了广阔的思路。此外,各位同学的报告与展示也让我收获良多。在此,我向提供人脸图片样本的同学们表示感谢。 (涉及个人隐私,源码不包含样本)
[1] Turk M, Pentland A. Eigenfaces for recognition[J]. Journal of cognitive neuroscience, 1991, 3(1): 71-86.
[2] Turk M A, Pentland A P. Face recognition using eigenfaces[C]//Computer Vision and Pattern Recognition, 1991. Proceedings CVPR'91., IEEE Computer Society Conference on. IEEE, 1991: 586-591.
[3] Belhumeur P N, Hespanha J P, Kriegman D. Eigenfaces vs. fisherfaces: Recognition using class specific linear projection[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1997, 19(7): 711-720.
[4] Bartlett M, Lades H, Sejnowski T. Independent component representations for face recognition. Proceeding of the SPIE Symposium on Electronic Imaging: Human Vision and Electronic Imaging[M]. SPIE Press, 1998.3299.
[5] Sirovich L, Kirby M. Low-dimensional procedure for the characterization of human face[ J]. Journal of the Optical Society of America, 1987, 4(3): 519-524.
[6] Kirby M, Sirovich L. Application of the Karhunen-Loeve procedure for the characterization of human faces[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,1990,12(1):103-108.
[7] Samaria F, Young S. HMM based architecture for face identification[J]. Image and ComputerV ision, 1994, 12(8): 537-543.
[8] T. Ahonen, A. Hadid, M. Pietikainen. Face description with local binary patterns: Application to face recognition[J]. IEEE Trans. Pattern Anal. 2006, 28(5): 2037-2041.
[9] 吴巾一,周德龙. 人脸识别方法综述[J]. 计算机应用研究, 2009, 26(9): 3205-3209.
[10] 段锦著. 人脸自动机器识别[M]. 北京: 科学出版社, 2009.
[11] 黄非非. 基于LBP的人脸识别研究[D]. 天津: 天津大学, 2009.