基于PCA的人脸识别算法实现 下载本文

重庆邮电大学本科毕业设计(论文)

则D是一个对角阵而E则是对称阵A的特征向量排成的矩阵。

这里要提出的一点是,A是一个m*m的矩阵,而它将有p(p<=m)个特征向量。其中p是矩阵A的的秩。如果p<=m,则A即为退化阵。此时分解出的特征向量不能覆盖整个m空间。此时只需要在保证基的正交性的前提下,在剩余的空间中任意取得m-p维正交向量填充E的空格即可。它们将不对结果造成影响。因为此时对应于这些特征向量的特征值,也就是方差值为零

求出特征向量矩阵后我们取P?ET,则A?PTDP,由线形代数知识可知矩阵P有性质

P?1?PT,从而进行如下计算:

1111CY?PAPT?P(PTDP)PT?(PPT)D(PPT)?(PP?1)D(PP?1) (4.17)

n?1n?1n?1n?11CY?D (4.18)

n?1可知此时的P就是我们需要求得变换基。至此我们可以得到PCA的结果: X的主元即是XXT的特征向量也就是矩阵P的行向量。 矩阵CY对角线上第i个元素是数据X在方向pi的方差。 我们可以得到PCA求解的一般步骤:

1采集数据形成m*n的矩阵。m为观测变量个数,n为采样点个数。 ○

2在每个观测变量(矩阵行向量)上减去该观测变量的平均值得到矩阵X。 ○

3对XXT进行特征分解,求取特征向量以及所对应的特征根。 ○

六、PCA的假设

PCA的模型中存在诸多的假设条件,决定了它存在一定的限制,在有些场合可能会造成效果不好甚至失效。PCA的假设条件包括:

1. 线形性假设

如同本节开始的例子,PCA的内部模型是线性的。这也就决定了它能进行的主元分析之间的关系也是线性的。现在比较流行的kernel-PCA的一类方法就是使用非线性的权值对原有PCA技术的拓展。

2. 使用中值和方差进行充分统计

使用中值和方差进行充分的概率分布描述的模型只限于指数型概率分布模型。(例如高斯分布),也就是说,如果我们考察的数据的概率分布并不满足高斯分布或是指数型的概率分布,那么PCA将会失效。在这种模型下,不能使用方差和协方差来很好的描述噪音和冗余,对转换之后的协方差矩阵并不能得到很合适的结果。不过,所幸的是,根据中央极限定理,现实生活中所遇到的大部分采样数据的概率分布都是遵从高斯分布的。所以PCA仍然是一个使用于绝大部分领域的稳定且有效的算法。

- 28 -

重庆邮电大学本科毕业设计(论文)

3. 大方差向量具有较大重要性

PCA方法隐含了这样的假设:数据本身具有较高的信噪比,所以具有最高方差的一维向量就可以被看作是主元,而方差较小的变化则被认为是噪音。这是由于低通滤波器的选择决定的。

4. 主元正交

PCA方法假设主元向量之间都是正交的,从而可以利用线形代数的一系列有效的数学工具进行求解,大大提高了效率和应用的范围。

七、总结:

PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

在前文的例子中,经过PCA处理后的数据只剩下了一维,也就是弹簧运动的那一维,从而去除了冗余的变量,揭示了实验数据背后的物理原理。

PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征, 却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

?图4.4 黑点表示采集数据,排列成转盘的形状。容易想象,该数据的主元是(P1,P2)或是旋转角。

- 29 -

重庆邮电大学本科毕业设计(论文)

如图表4.4中的例子,PCA找出的主元将是(P但是这显然不是最优和最简化的主元。1,P2)。

?(P1,P2)之间存在着非线性的关系。根据先验的知识可知旋转角是最优的主元。则在这种情况下,PCA就会失效。但是,如果加入先验的知识,对数据进行某种划归,就可以将数据转化为以?为线性的空间中。这类根据先验知识对数据预先进行非线性转换的方法就成为kernel-PCA,它扩展了PCA能够处理的问题的范围,又可以结合一些先验约束,是比较流行的方法。

有时数据的分布并不是满足高斯分布。如图表 5所示,在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式P(y1,y2)=P(y1)P(y2)来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使

P(y1,y2)=0这一类方法被称为独立主元分解(ICA)。

图4.5 数据的分布并不满足高斯分布,呈现明显的十字星状。这种情况下,方差最大的方向并不最优主元

方向。

PCA方法和线形代数中的奇异值分解(SVD)方法有内在的联系,一定意义上来说,PCA的解法是SVD的一种变形和弱化。对于m*n的矩阵X,通过奇异值分解可以直接得到如下形式:

X?U?VT (4.19)

其中U是一个m*m的矩阵,V是一个n*n的矩阵,而?是m*m的对角阵。?形式如下:

0???1????????r ? (4.20)?=?0???????00??- 30 -

重庆邮电大学本科毕业设计(论文)

其中?1??2?...??r,是原矩阵的奇异值。由简单推导可知,如果对奇异值分解加以约束:U的向量必须正交,则矩阵U即为PCA的特征值分解中的E,则说明PCA并不一定需要求取XXT,也可以直接对原数据矩阵X进行SVD奇异值分解即可得到特征向量矩阵,也就是主元向量。

八、在计算机视觉领域的应用

PCA方法是一个具有很高普适性的方法,被广泛应用于多个领域。这里要特别介绍的是它在计算机视觉领域的应用,包括如何对图像进行处理以及在人脸识别方面的特别作用。

1. 数据表示

如果要将PCA方法应用于视觉领域,最基本的问题就是图像的表达。如果是一幅N*N大小的图像,它的数据将被表达为一个N2维的向量:

X?(x1,x2,...,xN2)T (4.21)

在这里图像的结构将被打乱,每一个像素点被看作是一维,最直接的方法就是将图像的

像素一行行的头尾相接成一个一维向量。还必须要注意的是,每一维上的数据对应于对应像素的亮度、灰度或是色彩值,但是需要划归到同一纬度上。

2. 模式识别

假设数据源是一系列的20幅图像,每幅图像都是大小N*N,那么它们都可以表示为一个

N2维的向量。 将它们排成一个矩阵:

ImagesMatrix?(ImageVec1,ImageVec2,?,ImageVec20) (4.22)

然后对它们进行PCA处理,找出主元。

为什么这样做呢?据人脸识别的例子来说,数据源是20幅不同的人脸图像,PCA方法的实质是寻找这些图像中的相似的维度,因为人脸的结构有极大的相似性(特别是同一个人的人脸图像),则使用PCA方法就可以很容易的提取出人脸的内在结构,也就是所谓的“模式”,如果有新的图像需要与原有图像比较,就可以在变换后的主元维度上进行比较,衡量新图与原有数据集的相似度如何。对这样的一组人脸图像进行处理,提取其中最重要的主元,可以大致描述人脸的结构信息,称作“特征脸”(EigenFace)。这就是人脸识别中的重要方法“特征脸方法”的理论根据。近些年来,基于对一般PCA 方法的改进,结合ICA、kernel-PCA等方法,在主元分析中加入关于人脸图像的先验知识,则能得到更好的效果。

3. 图像信息压缩

使用PCA方法进行图像压缩,又被称为Hotelling算法,或者Karhunen and Leove(KL)变换。这是视觉领域内图像处理的经典算法之一。具体算法与上述过程相同,使用PCA方法处理一个图像序列,提取其中的主元。然后根据主元的排序去除其中次要的分量,然后变换

- 31 -