PCA及其在人脸识别中的应用与改进

时间:2011-06-21

 

  人脸识别是模式识别研究领域的重要课题,也是一个目前非常活跃的研究方向。它一般可描述为:给定一个静止或视频图像,利用已有的人脸数据库来确认图像中的一个或多个人。近年来,关于人脸图像线性鉴别分析方法的研究激起了人们的广泛兴趣,其焦点是如何抽取有效的鉴别特征和降维。特征抽取研究肩负两方面的使命:寻找针对模式的鉴别性的描述,以使此类模式的特征能地区别于彼类;在适当的情况下实现模式数据描述的维数压缩,当描述模式的原始数据空间对应较大维数时,这一点会非常有意义,甚至必不可缺。

  在人脸图像识别中,主成分分析 ( Principal Component Analysis , PCA )是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。计算主成分的目的是将高维数据投影到较低维空间。给定 n 个变量的 m 个观察值,形成一个 n ′ m 的数据矩阵, n 通常比较大。对于一个由多个变量描述的复杂事物,人们难以认识,那么是否可以抓住事物主要方面进行重点分析呢?如果事物的主要方面刚好体现在几个主要变量上,我们只需要将这几个变量分离出来,进行详细分析。但是,在一般情况下,并不能直接找出这样的关键变量。这时我们可以用原有变量的线性组合来表示事物的主要方面, PCA 就是这样一种分析方法。

  以上方法在处理人脸等图像识别问题时,遵循一个共同的过程,即首先将图像矩阵转化为图像向量,然后以该图像向量作为原始特征进行线性鉴别分析。由于图像矢量的维数一般较高,比如,分辨率为100×80的图像对应的图像向量的维数高达8 000,在如此高维的图像向量上进行线性鉴别分析不仅会遇到小样本问题,而且经常需要耗费大量的时间,有时还受研究条件的限制(比如机器内存小),导致不可行。针对这个问题,人们相继提出不少解决问题的方法。概括起来,这些方法可分为以下两类:从模式样本出发,在模式识别之前,通过降低模式样本特征向量的维数达到消除奇异性的目的,可以降低图像的分辨率实现降维;从算法本身入手,通过发展直接针对于小样本问题的算法来解决问题[6,7].

  本文基于主成分分析的思想,从原始数字图像出发,在模式识别之前,先对整个图像训练矩阵集进行分块,该块中的图像尽可能具有同样的性质,从而更接近于高斯分布;再用PCA方法对每个分块得到的子图像训练矩阵进行分析,得到多个变换矩阵,通过这些变换矩阵将训练图片向量和测试图片向量投影到特征空间进行鉴别。这样做主要基于如下考虑:在传统的PCA算法中,要求训练集符合高斯分布,得到的结果才是理想的,但是实际操作中训练样本由于光照、表情、姿态等因素远离高斯分布,而改进的PCA算法通过对其进行归类训练子训练集(由于影响因素较小,更接近于高斯分布)提取主元,同时该方法可以增加主元的维数,能提供更多的有效特征。在着名的FERET人脸库上的试验结果表明,本文提出的方法在识别性能上明显优于传统的PCA方法,识别率有显着提高。



  1.2 特征抽取

  原始图像的维数较大,不利于直接用于分类,必须对原始数据进行降维。如何找出能代表原始图像的低维数据是进行分类的关键。



  2 推广的PCA方法

  2.1 思想与投影矩阵

  传统PCA的模型中存在诸多的假设条件,决定了它存在一定的限制,在有些场合可能会效果不好甚至失效。传统的PCA算法要求标准训练样本矩阵符合高斯分布,也就是说,如果考察的数据的概率分布并不满足高斯分布或是指数型的概率分布,那么PCA将会失效。在这种模型下,不能使用方差和协方差来很好地描述噪音和冗余,对教化之后的协方差矩阵并不能得到很合适的结果。



  3 实验结果与分析

  实验是在FERET人脸库上进行的。FERET人脸库由200个人、每人7幅图组成:第1幅图是人脸的正面照,第2~5幅图是人脸角度的变换,第6幅图表情的变换,第7幅图是亮度的变化。每幅图的分辨率是80×80.图1是FERET人脸库的某一人的7幅图像。

 


  FERET数据库中每张图片都有一个类别标号,代表其不同因素下采集的图片,比如标号00012_930831_fa_a,其中00012表示类别ID,930831表示样本生成时间,fa表示人脸偏转角度,a表示光照强度。本文的实验就是根据不同的图像标号来划分数据集合,从而达到外在因素较少的情况下,数据尽可能地满足简单的高斯分布。

  将每类的前4幅图作为训练样本,后3幅图作为测试样本,这样训练样本总数为800,测试样本为600.首先,利用传统的PCA算法,即不对标准训练样本矩阵集进行分块,计算出不同能量系数下的识别率。再利用推广的PCA算法,分别实验两种情况:(1)将各个类训练样本的前两幅图组合为训练样本矩阵1,将各个类的训练样本的第3、4幅图组合为训练样本矩阵2,这样就将传统PCA中的训练矩阵集分为两个子训练矩阵集。对这两个子训练矩阵集进行计算得到变换矩阵[P1,P2].再将测试样本和训练样本通过[P1,P2]投影到特征空间,对不同能量系数的情况计算得到识别率。(2)将每类的4个训练样本图片分别组合为四子训练矩阵集,然后用同样的方法计算识别率。得到的实验结果如图2所示。

 

  本文分别采用余弦分类器进行分辨率的计算。从图中可以看出,对推广的PCA的具体应用其识别率均优于传统的PCA方法。进一步分析其原因:推广的PCA通过对标准训练样本矩阵集进行分块,对每一个子训练矩阵集抽取主元,虽然单个子训练集抽取的主元维数可能比较低,但是由于有多个子训练矩阵集,所以总体看来其抽取的主元维数还是较传统的PCA主元维数多,因此能提高识别的。表1为当能量系数为0.9时不同方法抽取的主元维数。

 

  本文提出了推广的PCA的人脸识别方法,其本质是通过对标准训练样本矩阵集做分块,并对其子块分别作PCA,抽取子块的主元。这样做是为了使影响因素较小,更接近于高斯分布,并且提高了主元的维数,在分类器进行分类时能够更好地减少误差,便于模式识别。本实验使用环境为 Microsoft Windows XP,硬件配置为Petium4,3.0 GHz CPU的计算机,优化算法采用Matlab编写。

  在试验中发现,对同一数据库,对样本矩阵采用不同的分块,获得的识别率一般不同,如何寻求分块方式有待进一步研究。

 


  
上一篇:详解如何为D类放大器选取合适的参数
下一篇:便携式设备的移动电视功能实现方案

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料