设计题目:基于PCA的人脸特征抽取及识别 学 专
院: 业:
电子工程学院 智能科学与技术
姓名:钟佩学号:02085156 时
间: ____________20门年门月 _____
指导教师:纟侯水平
目录
摘要3
1. PCA进行特征抽取和识别的方法及理论基础3
1.1 K-L 变换 3
1.2利用PCA进行人脸识别4 1.3 PCA的理论基础4
13.1投影4
1.3.2 PCA的作用及其统计特性5 1.3.3特征脸6 1.3.4图片重建7
1.3.5奇异值分解(SVD) 7
13.6利用小矩阵计算大矩阵特征向量8 1.3.7图片归一化8
2. 结果9
1. 识别率9 2. 特征脸9 3. 人脸重构10 3 .参考文献10 4附录—matlab源码11
4.1人脸识别:U 4.2特征人脸12 4.3人脸重建14
摘要
对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一 幅
N*N象素的图像可以视为长度为N2的矢量,这样就认为这幅图像是位于N2维空间中的 一个点,
这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图 像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识別的基本思想 都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像 的这种投影间的某种度量来确左图像间的相似度,最常见的就是各种距离度量。在本文中, 我们将讨论PVA算法来对人脸进行特征抽取和识别。
1. PCA进行特征抽取和识别的方法及理论基础
1.1 K-L变换
PCA方法是由Turk和Pcntlad提出来的,它的基础就是Karhunen-Loeve变换(简称KL
变换),是一种常用的正交变换。下面我们首先对IGL变换作一个简单介绍: 假设X为n维的随机变量,X可以用n个基向量的加权和来表示:
X = £如
/-I
式中:M是加权系数,b是基向量,此式还可以用矩阵的形式表示:
X 二(必.02,….0”)(勺4.….oj 二①a
取基向量为正交向量,即
1 . - /
J ①,=/ l0 i-J J则系数向量为: a= 综上所述,K-L展开式的系数可用下列步骤求出: 步骤一求随即向量x的口相关矩阵R = ,由于没有类别信息的样本集的□均值 向量,常常没有意义,所以也可以把数据的协方差矩阵'—\")('—〃/]作为 K丄坐标系的产生矩阵,这里a是总体均值向量。 步骤二求出口相关矩阵或协方差矩阵R的本征值人和本征向量必,①=(处如…妙) 步骤三展开式系数即为<1= 4>rX K_L变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转 变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带 有较少信息的坐标系以达到降低特征空间维数的目的。 1.2利用PCA进行人脸识别 完整的PCA人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成 特征子空间:把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一泄 的距离函数进行识别。下而详细描述整个过程(源码见'faceRec.in')。 1. 读入人脸库 归一化人脸库后,将库中的每人选择一泄数量的图像构成训练集,其余构成测试集。设 归一化后的图像是\"m,按列相连就构成N=n*m维矢虽,可视为N维空间中的一个点,可 以通过K-L变换用一个低维子空间描述这个图像。 2. 计算K-L变换的生成矩阵 所有训练样本的协方差矩阵为(以下三个等价): 】• 二(工耳〃屮〃q k=l 2. CA 是平均人脸,M训练人脸数,协方差矩阵G是 一个N左N的矩阵,N是如的维数。 为了方便计算特征值和特征向量,一般选用第2个公式。根据K-L变换原理,我们所求 的新坐标系即由矩阵4•如的非零特征值所对应的特征向量组成。直接求N*N大小矩阵G的 特征值和正交归一特征向量是很困难的,根据奇异值分解原理(见段落125和1.2.6),可以 通过求解川A的特征值和特征向量来获得AM的特征值和特征向量。 在计算得到G的所有非零特征值闪*•…人』(从大到小排序,1 WYM )及英对应的单 位正交特征向量:%\"I后,可以得到特征空间乙'[\"。丹…坷』w护\",从而可以 计算一张图片X在特征空间上的投影系数(也可以理解为X在空间U中的坐标): Y = U^X 凸L T(2) 3.识别 利用公式(2),首先把所有训练图片进行投影,然后对于测试图片也进行同样的投影, 采用判别函数对投影系数进行识别0 1.3 PCA的理论基础 13.1投影 设d维样本X2,•…Xrv以及一个d维基W ,那么标量: y/=WT X/ 是相当于XZ在基上的坐标值。如果w=i,M就是把,X向方向为W的直线进行投影的结果, 可以从图I看到。推广之,如果有一组基(m个)组成的空间以得到)0在空间W上的坐标为: Y = wTxe W = bvi w2. ,那么可 ^\\ 证明:w\\=||w||-H-co$^ Xv ||x||-cos^ = y, M=1 => wrx, = y 图I投影图 进一步,表达= m+ ae表示w是一条通过点m,方向为e的直线。 13.2 PCA的作用及其统计特性 采用PCA对原始数据的处理,通常有三个方而的作用一降维、相关性去除、槪率估计。下 面分别进行介绍: ■去除原始数据相关性 从统计学上讲,E\\[X -E(x)][r-E(r)](称为随机变量x与Y协方差,记为 Cov(X.Y).令- 济阿,称为随机变量X与Y的相关系数。P^=1KIJX与 Y是相关的,pxv=o,则X与Y是不相关的。 命题1对于矩阵A来说,如果AA是一个对角阵,那么A中的向量是非相关的。 由PCA处理的人脸库数据的非相关性可以从两点进行说明。 (1)基底的非相关性 特征空间基'心[\"0・5…是非相关的,即UU=I o (2)投影系数的非相关性 由SVD可知卫=妙・你・…血} = UA巴 其中0二兀一%也是平均人脸。根 据公式(2)可以把A映射到特征空间上,得到:B=XA,其中B是非相关的,可 由下而得到证明: Y的协方差矩阵为:万%曲\" =,V M 由命题1可知,B是非相关的。 ■统讣参数(均值及方差) 均值即观L平均人脸。 命题2随机变虽:方差越大,包含的信息越多,当一个变屋方差为0时,该变虽:为常数,不 含任何信息。 用PCA讣算主分量,就是寻找一组向钛 使得原始数据4 = {4,(|>2,・・・4肘}在这组 向量上的投影值的方差尽可能大。最大方差对应的向量就是第一主成份,以后递推就是 第二主成份,第三主成份……。 用PCA计算主分量就是求原始数購4 = { 442,・・・4耐}(其中4>严矿他)协方差 矩阵的特征向量° = [\"0・5…,由公式(3)可知,\"1心=(巩心..7』是A在⑷ 上的投影值,英中P的方差就⑷对应的特征值入i,可以理解为: 命题3所有原始数据在主分虽山上的投影值方差为儿。 ■降维 如果在原始空间表示一幅Mm大小的图片X,那么需要一个N=n*m维矢量,但是当用公 式(2)把它映射到特征空间后,只需要一个r*l维的向量就可。 另外,由命题2可知,可以根据方差的大小来判断特征向量的重要性。由ORL图片库的 200个人脸计算得到的特征值呈图2分布,可知特征向量重要性呈指数下降,据此可以只选 用前而几个重要的特征向量来构建特征空间。 通过计算,前71个特征值占了90.17%,因此r可以取71而非200,从而达到进一 步降维的作用。 133特征脸 U = 心…“T1中的每一个单位向量都构成一个特征脸,如图3所示。由这些特征脸所 张成的空间称为特征脸子空间,需要注意对于正交基的选择的不同考虑,对应较大特征值的 特征向疑(正交基)也称主分量,用于表示人脸的大体形状,而对应于较小特征值的特征向量 则用于描述人脸的具体细廿,或者从频域来看,主分量表示了人脸的低频部分,而此分量则 描述了人脸的髙频部分(源码见TigenFace.nf)。 1 2 10 50 70 平均脸 图3特征脸,分别是第1, 2, 10, 50, 70分虽,最后一张是平均脸。 13.4图片重建 要进行图丿「x的重建,首先对x投影到特征空间上,得到系数卩二刃⑺-心),然后选用一 部分系数与特征向量进行原始图片的重建:厂二〃々+口(1:/)样(1:为其中1\"表示取前t个 元素 o ( J4l,reconstnict.m,) 在图4中,其中前两张图片来自训练样本,第3张来自测试样本,可以看到对于训练样本, PCA系数可以对图片实现很好重建,而对于训练样本以外的图片重建效果很差。 , 巳 t 二 t=100 t=150 t=199 图4人脸图像重建。第1列图片是输入原始图,其它列图片是重建结果,数字表示t的数目。 13.5奇异值分解(SVD) 设A是秩为r的m*n (m»n)维矩阵,则存在两个正交矩阵和一个对角阵: A 二[%…:存]二 UW' •其中\"二[\"oM,…•\"一i],?二卜0\"*』,A 二加g(心必•…必且UU、= I , W=/, 八呈降序排列。其中宀为44吒加宀和AS昌严的非零特征值,他和刃分別是川V和加 对应于入;的特征向量。可得一个推论: U = A KA-1 可以计算AS的特征值廿及相应的正交归一特征向量八,后,可由推论知人如•的正交归一特 征 向量叮朴 注意,协方差矩阵•才)M的特征值为:儿2/M。 13.6利用小矩阵计算大矩阵特征向; 高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量: 设:A是秩为r的m*n (m»n)维矩阵,5\"孑凸严,是一个矩阵,现在要求g的 特征值及特征向量,可通过先求小矩阵川少曰L的特征向量卜。…亠』和特征值 [心心…不],两者之间有以下关系: ATA ・、[二占• vr 左私〉AAT(A vi) = Ai(A V,) 显然,OAA7■的特征向量是A®(注意没有单位化),R•人…虫』亦为其特征值。 结论:1.2.5与1.2.6的方法计算协方差矩阵的特征向量,特征值的结果是一致的,只是要 注意 1.2.5中的特征值要除以M, 1.2.6中的特征向呈要单位化。 13.7图片归一化 图片标准化通常是一个整体概念,要求把图片归一到均值为0,方差为1下情况下。 这个槪念类似于一般正态分布向标准正态分布的转化: 命题4若X~Nd\\贝IJ Z=±^~.V(0.1) b 所以要对一组图片中的一张X进行归一化(标准化),只需要减去均值,除以方差就可以了。 \" / 均值呛=?A;r 方差好可(―吆)(—〃屏] 2.结果 1・识别率 accuracy = 0. 8800 2 •特征脸 B B fi n S ■ ■ ■ ■ ■ i @ B 1 ■ ■ ■ ■ i 3•人脸重构 3・参考文献 [1]数字图像处理与机器视觉一一Visual C++与Matlab实现 张铮 王艳平 薛桂香箸 4附录一matlab源码 4.1人脸识别 % FaceRec ・m % PCA人脸识别修订版,识别率88$ % calc >:meanz sigma and its eigen decomposition allsamples= [ ]。%所有训练图像 for i=l:40 for j=l:5 a=imread(strcat('D:\\ORL\\s*,num2str(i), *\\*,num2str(j)z * ・pgm'))o % imshow(a)。 b=a(l:112*92)o咎b是行矢量\"N,其中N=10304,提取顺〃是先列后行,即从上 到下,从左到右 b=double(b)。 allsamples= [allsamplesc b] □ %allsamplcs 是•个M*N 矩阵,allsamplcs 中每•行 数据代表一张图 片,其中M = 200 end end samplemean=mean (allsamples) o % Y•均I冬l丿1 X N for i=l: 200 xmean (ir : ) =allsamples (ir : ) -samplemeano % XOlcan 丿E一 彳、M XN 矩阵,xmean每一行保存的数据是“每个图片数据■平均图片” endo %获取特征值及特征向量 s i gma=xme an* >:me a n 1。 % M *M阶矩阵 [v d]=eig(sigma)» dl=diag(d)o %按特征值大小以降序排列 dsort = flipud(dl)o vsort = fliplr(v)o %以下选择90%的能量 dsum = sum(dsort)o dsum__extract = 0。 p = 0o while ( dsum__extract/dsum < 0・9) p = p + dsum^extract = sum(dsort(1:p))o end i=lo 賓训练阶段川•算特征脸形成的坐标系 base = xmean * * vsort(:,1:p) * diag(dsort(1:p)・A(-1/2))o %base是NXp阶矩阵,除以dsort⑴人(1/2)是对人脸图像的标准化(使其方差为1) % xmean* * vsort(:,i)是小矩阵的特征向量向大矩阵特征向疑转换的过程 % while (i<=p && dsort(i)>0) %base(:J) = dsort(i)(-l/2) * xmean* ♦ vsort(:,i)o % base 是NXp 阶矩阵,除以dsort(i)(l/2) 是 A A 对人脸图像的标准化(使其方差为1) % i = i + lo %xmean' * vsort(:,i)是小矩阵的特征向虽:向大矩阵特 征向疑转换的过程 %end %以下两行add by gongxun将训练样本对坐标系上进行投影,得到一个M*p阶矩阵allcoor allcoor = allsamples * base。% allcoor里而是每张训练人脸图片在M*p子空间中 的一个点,即在子空间 中的组合系数 accu = 0. $下而的人脸识别过程中就是利用这些组合系数來进行识别 %测试过程 for i=l:40 for j=6:10务读入40X5副测试图像 a=imread(strcat(* D:\\ORL\\s *,num2str(i), *\\*,num2str(j)z * ・pgm'))o b=a(l:10304)o b=doublm(b)o tcoor= b * baseo for k=l:200 mdist(k)=norm(tcoor-allcoor(k, : ) ) o endo •算坐标,是1 Xp阶矩阵 务三阶近邻 [dist,index2]=sort(mdist)。 classl = f loor ( (inde>:2 (1) -1) /5 ) +1 c class2=floor((index2(2)-1)/5)+1。 class3=floor ( (inde>:2 (3) -1) /5) +1 o if classl^=class2 && class2-=class3 class=classlo elseif classl==class2 class=classlo elseif class2==class3 class=class2o endo if class==i accu=accu+lo endo endo endo accuracy=accu/200毛输出识别率 4.2特征人脸 % eigface ・m function [] = eigface() % calc >:meanz sigma and its eigen decomposition close allo clco clear allo allsamples= []。%,听仃训练图像 for i=l:40 for j=l:5 a=imread(strcat(* D:\\ORL\\s1,num2str(i), 1\\*,num2str(j)z * ・pgm*))o % imshow(a)» b=a (1:112*92) » % b是行矢量IXN,其中N =10304,提取顺序是先列后行,即从上 到下,从左到右 b=doublm(b)o allsamples= [allsamplesc b] □ %allsaniples 是一个M * N 矩阵,allsamplcs 中每一仃 数据代表一 张图片,英中M = 200end end samplemean=mean (allsamples) o % T'•均图片 9 1 X N for i=l:200 xmean(i, :)=allsamples(i, :)-samplemeano % xmcan 是 •个M XN 矩阵,xmean每一行保 存的数据是“每个图片数据•平均图片” endo %获取特征值及特征向疑 s i gma=xme an* xme a n1。 % M *M阶矩阵 [v d]=eig(sigma)o dl=diag(d)。 $按特征值大小以降序排列 dsort = flipud(dl)o vsort = fliplr(v)o $以下选择90%的能量 dsum = sum(dsort)o dsum^extract = 0c p = 0o while( dsum_extract/dsum < 0・9) p = p + lc dsum_extract = sum(dsort(1:p))o end p = 199o % (训练阶段川•算特征脸形成的坐标系 % while (i<=p && dsort(i)>0) % base(:J) = dsort(i)A(-l/2) * xmean' * vsort(:,i)o % base 是NXp 阶矩阵,除以 dsort(i)M/2)是对 人脸图像的标准化 % i = i + U % xmean1 * vsoil(:j)是小矩阵的特征向量向大矩 阵特征向量转换的过程 %end base = xmean * * vsort(:,1:p) * diag(dsort(1:p)・A(-1/2))o %生成特征脸,并显示出来 for (k=l:p)z temp = reshape (base (:, k) , 112,92)o if(k<21) figure (1)o subplot(4z 5,k),imshow(mac2gray(temp))。 elseif(k<41) figure (2)。 subplot (4,5, (k-20) ) , imshow (mat;2gray (temp))。 elseif(k<61) figure (3)o subplot (4,5, (k-40) ) , imshow (ma*t2gray (temp) ) » elseif(k<81) figure (4 ) <» subplot(4,5, (k-60)),imshow(mat2gray(temp))。 elseif(k<101) figure(5)。 subplot(4,5, (k-80)),imshow(mat2gray(temp))。 elseif(k<121) figure (6)。 subplot (4,5, (k-100)),imshow(mat2gray(temp))。 figure (7)。 subplot (4,5, (k-120) ) , imshow (ma*t2gray (temp))。 elseif(k<161) figure (8)。 sub plot (4,5, (k-140) ) , imshow (mat;2gray (temp))。 elseif(k<181) figure (9)。 subplot (4,5, (k-160)),imshow(mat2gray(temp))o else(k<200) figure (10)。 subplot (4,5,(k-180)),imshow(mat2gray(temp))o end end avg = reshape(samplemean, 112, 92)o subplot(4,5,20),imshow(mat2gray(avg)),title(' T•於J脸 1 ) □ 保存 save(1D:\\ORL\\model.mat *, 1 base *, 'samplemean')。 4.3人脸重建 % Reconstruct ・m function [] = reconstruct() $将模型close allo clear allo clc load D:\\ORL\\model・mat。 %汁算新图片在特征子空间中的系数 img = 1D:\\0RL\\s2\\3・pgm* a=imread(img)» b=a(l:112*92)o %1)是行矢量1XN,其中N=10304,提取顺序是先列后行,即从上到 卜,从左到右b=double (b) ° b=b-samplemeano c = b * base. %C是图片a在子空间中的系数,是Fp行矢肚 %根据特征系数及特征脸重建图 figure (1) subplot(1,6,1),imshow(img)» %前15个 t = 15 o temp = base ( :z1:t) * c (1:t) 1o temp = temp + samplemean * o subplot(1,6,2),imshow(mat2gray(reshape(temp, H2z92)))o %前50个 t = 50o temp = base(:,1:t) * c (1:t) 1o temp = temp + samplemean * o subplot(1,6,3),imshow(mat2gray(reshape(temp, 112,92)))o %前100个 t = 100o temp = base ( :,1:t) * c (1:t) 1o temp = temp + samplemean * o subplot (1,6,4), imshow (ma,t2gray (reshape (temp, 112, 92) ) ) o %前150个 t = 150o temp = base (:,1:t) * c (1:t) f o temp = temp + samplemean'o subplot(1,6,5),imshow(mat2gray(reshape(temp, 112,92)))o %前199个 t = 199o temp = base (:,1:t) * c (1:t) 1o temp = temp + samplemean * o subplot (1,6,6), imshow (ma*t2gray (reshape (temp, 112, 92) ) ) o 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务