您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页PCA的人脸特点提取和识别

PCA的人脸特点提取和识别

来源:筏尚旅游网
工程设计报告

设计题目:基于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 . - /

r0. =

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务