




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上基于PCA的人脸识别方案摘要:分析了基于主成分分析方法(PCA)的人脸识别特点,并对其实现方法进行了分析和仿真,结果表明方案比较完整的实现了人脸识别的功能,对于实际应用也有参考价值。关键词:PCA 人脸识别 分析一 概述生物特征识别技术所研究的生物特征包括人脸、指纹、手掌纹、掌型、虹膜、视网膜、静脉、声音(语音)、体形 人脸识别、红外温谱、耳型等,相应的识别技术就有人脸识别、指纹识别、掌纹识别、虹膜识别、视网膜识别、静脉识别、语音识别(用语音识别可以进行身份识别,也可以进行语音内容的识别,只有前者属于生物特征识别技术)、体形识别、键盘敲击识别、签字识别等。人脸识别特指
2、利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,可以将人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大;它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。人脸识别的优势人脸识别的优势在于其自然性和不被被测个体察觉的特点。所谓自然性,是指该识别方式同人类(甚至其他生物)进行个体识别时所利用的生物特征相同。例如人脸识别,人类也是通过观察比较人脸区分和确认身份的,另外具有自然性的识别还有语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。不被察觉的特
3、点这会使该识别方法不令人反感,并且因为不容易引起人的注意而不容易被欺骗。人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。本文是通过基于主成分分析的方法实现对人脸的识别,仿真结果也表明本文设计的算法的有效性,在特定场合下的应用具有一定的参考意义。二 PCA算法概述对同一个体进行多项观察时,必定涉及多个随机变量X1,X2,Xp,它们都是的相关性, 一时难以综合。这时就需要借助主成分分析 (principal component analys
4、is)来概括诸多信息的主要方面。我们希望有一个或几个较好的综合指标来概括信息,而且希望综合指标互相独立地各代表某一方面的性质。任何一个度量指标的好坏除了可靠、真实之外,还必须能充分反映个体间的变异。如果有一项指标,不同个体的取值都大同小异,那么该指标不能用来区分不同的个体。由这一点来看,一项指标在个体间的变异越大越好。因此我们把“变异大”作为“好”的标准来寻求综合指标。1.主成分的一般定义 设有随机变量X1,X2,Xp,样本标准差记为S1,S2,Sp。首先作标准化变换我们有如下的定义:(1) 若C1=a11x1+a12x2+ +a1pxp,且使 Var(C1)最大,则称C1为第一主成分;(2)
5、 若C2=a21x1+a22x2+a2pxp, (a21,a22,a2p)垂直于(a11,a12,a1p),且使Var(C2)最大,则称C2为第二主成分;(3) 类似地,可有第三、四、五主成分,至多有p个。2. 主成分的性质 主成分C1,C2,Cp具有如下几个性质:(1) 主成分间互不相关,即对任意i和j,Ci 和Cj的相关系数Corr(Ci,Cj)=0 i ¹ j (2) 组合系数(ai1,ai2,aip)构成的向量为单位向量,(3) 各主成分的方差是依次递减的, 即Var(C1)Var(C2)Var(Cp) (4) 总方差不增不减, 即Var(C1)+Var(C2)+ +Var(
6、Cp)=Var(x1)+Var(x2)+ +Var(xp)=p这一性质说明,主成分是原变量的线性组合,是对原变量信息的一种改组,主成分不增加总信息量,也不减少总信息量。(5) 主成分和原变量的相关系数 Corr(Ci,xj)=aij =aij(6) 令X1,X2,Xp的相关矩阵为R, (ai1,ai2,aip)则是相关矩阵R的第i个特征向量(eigenvector)。而且,特征值li就是第i主成分的方差, 即Var(Ci)= li 其中li为相关矩阵R的第i个特征值(eigenvalue)l1l2lp03. 主成分的数目的选取 前已指出,设有p个随机变量,便有p个主成分。由于总方差不增不减,C
7、1,C2等前几个综合变量的方差较大,而Cp,Cp-1等后几个综合变量的方差较小, 严格说来,只有前几个综合变量才称得上主(要)成份,后几个综合变量实为“次”(要)成份。实践中总是保留前几个,忽略后几个。保留多少个主成分取决于保留部分的累积方差在方差总和中所占百分比(即累计贡献率),它标志着前几个主成分概括信息之多寡。实践中,粗略规定一个百分比便可决定保留几个主成分;如果多留一个主成分,累积方差增加无几,便不再多留。4.主成分回归主成分分析本身往往并不是目的,而是达到目的的一种手段。因此,它多用在大型研究项目的某个中间环节。例如,把它用在多重回归中,便产生了主成分回归。另外,它还可以用于聚类、判
8、别分析等。本节主要介绍主成分回归。在多重回归曾指出,当自变量间高度相关时,某些回归参数的估计值极不稳定,甚至出现有悖常理、难以解释的情形。这时,可先采用主成分分析产生若干主成分,它们必定会将相关性较强的变量综合在同一个主成分中,而不同的主成分又是互相独立的。只要多保留几个主成分,原变量的信息不致过多损失。然后,以这些主成分为自变量进行多重回归就不会再出现共线性的困扰。如果原有p个自变量X1,X2,Xp,那么,采用全部p个主成分所作回归完全等价于直接对原变量的回归;采用一部分主成分所作回归虽不完全等价于对原变量的回归,但往往能摆脱某些虚假信息,而出现较合理的结果。以上思路也适用于判别分析,当自变
9、量高度相关时,直接作判别分析同样有多重共线性问题,可先计算自变量的主成分,然后通过主成分估计判别函数。主成分分析( Principal Component Analysis ,PCA )或者主元分析。是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。计算主成分的目的是将高维数据投影到较低维空间。给定n个变量的m个观察值,形成一个 n m 的数据矩阵,n通常比较大。对于一个由多个变量描述的复杂事物,人们难以认识,那么是否可以抓住事物主要方面进行重点分析呢?如果事物的主要方面刚好体现在几个主要变量上,我们只需要将这几个变量分离出来,进行详细
10、分析。但是,在一般情况下,并不能直接找出这样的关键变量。这时我们可以用原有变量的线性组合来表示事物的主要方面,PCA 就是这样一种分析方法。PCA 的目标是寻找r( r<n )个新变量,使它们反映事物的主要特征,压缩原有数据矩阵的规模。每个新变量是原有变量的线性组合,体现原有变量的综合效果,具有一定的实际含义。这r个新变量称为“主成分”,它们可以在很大程度上反映原来n个变量的影响,并且这些新变量是互不相关的,也是正交的。通过主成分分析,压缩数据空间,将多元数据的特征在低维空间里直观地表示出来。例如,将多个时间点、多个实验条件下的基因表达谱数据( N 维)表示为 3 维空间中的一个点,即将
11、数据的维数从 降到 。在进行基因表达数据分析时,一个重要问题是确定每个实验数据是否是独立的,如果每次实验数据之间不是独立的,则会影响基因表达数据分析结果的准确性。对于利用基因芯片所检测到的基因表达数据,如果用 PCA 方法进行分析,可以将各个基因作为变量,也可以将实验条件作为变量。当将基因作为变量时,通过分析确定一组“主要基因元素”,它们能够很好地说明基因的特征,解释实验现象;当将实验条件作为变量时,通过分析确定一组“主要实验因素”,它们能够很好地刻画实验条件的特征,解释基因的行为。具体的 PCA 分析步骤如下:(1)第一步计算矩阵 X 的样本的协方差矩阵 S : (2-1) (2-2)其中,
12、j=1,2,m。(2) 第二步计算协方差矩阵S的本征向量 e1,e2,eN的本征值, i = 1,2,N 。本征值按大到小排序:;(3)第三步投影数据到本征矢张成的空间之中,这些本征矢相应的本征值为。现在数据可以在三维空间中展示为云状的点集。对于 PCA ,确定新变量的个数 r 是一个两难的问题。我们的目标是减小 r ,如果 r 小,则数据的维数低,便于分析,同时也降低了噪声,但可能丢失一些有用的信息。究竟如何确定 r 呢?这需要进一步分析每个主元素对信息的贡献。令代表第 i 个特征值,定义第 i 个主元素的贡献率为:(2-3)前 r 个主成分的累计贡献率为: (2-4)贡献率表示所定义的主成
13、分在整个数据分析中承担的主要意义占多大的比重,当取前 r 个主成分来代替原来全部变量时,累计贡献率的大小反应了这种取代的可靠性,累计贡献率越大,可靠性越大;反之,则可靠性越小。一般要求累计贡献率达到 70% 以上。经过 PCA 分析,一个多变量的复杂问题被简化为低维空间的简单问题。三 基于PCA的人脸识别方法分析本文探究的人脸识别方案就是基于PCA(主成分分析)的方法进行的,PCA方法的基本原理是:利用K-L变换抽取人脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸图像比较进行识别。首先,程序是很机械的,它对人脸的识别是建立在对数据库的学习训练之上的
14、,也就是对采集设备传送过来的对象面部图像进行处理,并与数据库内的对象面部图像进行匹配,最终给出识别的结果。也就是说人脸识别首先解决的就是基于数据库的训练学习。图像的数据量很大,事实上对图像的处理是通过降维处理进行的,先将图像进行灰度化,然后将灰度化的图像进行矩阵变换和运算,为了便于说明,这里假设训练集有200个样本(灰度图),每个样本大小为M*N。那么就可以写出训练样本的矩阵:x=(x1,x2,x200)T 其中向量xi为第i个图像的每一列向量堆叠成一列的MN维列向量,即把矩阵向量化如下所示:如第i个图像为:则xi为:接下来做的就是计算训练集的均值,也即“平均脸”,按照以下的公式进行:然后计算
15、每张人脸与平均脸的差值:然后构建协方差矩阵:接着可以根据上面构造的协方差矩阵,求出其特征值和特征向量,构造特征脸空间,协方差矩阵的维数为MN*MN,如果考虑到起位数较大,计算量比较大,可以采用奇异值分解(SingularValue Decomposition ,SVD)定理,通过求解ATA来获得AAT的特征值和特征向量。求出ATA的特征值i及其正交归一化特征向量i,根据特征值的贡献率选择前P个最大特征向量及其对应的特征向量,即:一般取=99%即使训练样本在前P个特征向量集上的投影有99%的能量。求出原协方差矩阵的特征向量:则特征脸空间为:将每一张人脸与平均脸的差值脸矢量投影到特征脸空间。即:这
16、样训练阶段的任务就算告成,接下来就是对采集到的人脸图像进行识别,首先是将待识别的人脸图像与平均脸的差值脸投影到特征空间得到其特征向量表示:接下来我们定义一个阈值,它的含义是作为一个分类的标准,对输入的人脸图像进行分类,得出可靠地结论,定义如下:然后用欧氏距离来计算T与每个人脸的距离i,欧氏距离(Euclid Distance),是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。在二维空间中的欧氏距离就是两点之间的直线段距离。为了区分人脸和非人脸还需要计算原始图像与由特征脸空间重建的图像f的距离:其中:然后根据以下的规则进行分类:若,则输入图像不是人脸图像;若<,且对于任意的
17、i,i则输入图像包含未知人脸;若<,且对于任意的i,i<则输入图像为库中第K个人的图像。四 人脸识别的仿真设计 仿真不同于真正的硬件设计,常常借助与计算机实现,因而忽略掉一些不影响主要实现的细节,如图像摄取和硬件的传输。只关心图像的训练和识别,这才是方案的核心。因此本文所涉及的仿真设计部分分为了四个部分:主函数、创建数据库函数、特征脸核心算法、识别算法,其中主函数调用余下三个函数实现人脸识别的功能。前面提到仿真忽略了一些细节,具体的就是这里我们自己将一些人的不同头像建成一个简单的图像库,这些头像整体上都比较居中更加便于处理,也即降低了姿态和配合度对结果的影响。下面主要解构本次仿真的
18、程序。首先是创建数据库函数,创建是指对已有的 图像进行处理也即训练的过程,此过程是将已有的图像进行遍历处理,处理过程包括灰度化,将图像重构成为一维的向量,最后将这个一位向量重组成为一个二维向量返回,这个二维向量包含之前所有的一维图像向量。function T = CreateDatabase(TrainDatabasePath)TrainFiles = dir(TrainDatabasePath);Train_Number = 0;for i = 1:size(TrainFiles,1)ifnot(strcmp(TrainFiles(i).name,'.')|strcmp(Tr
19、ainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'Thumbs.db') Train_Number = Train_Number + 1; endend T = ;for i = 1 : Train_Number str = int2str(i); str = strcat('',str,'.jpg'); str = strcat(TrainDatabasePath,str); img = imread(str); img = rgb2gray(img); irow icol = s
20、ize(img); temp = reshape(img',irow*icol,1); T = T temp; end其次是特征脸核心算法,主要是通过主成分分析来判定不同面部图像的最大区别,这个函数首先接收之前创建数据库函数返回的二维矩阵,按照之前的分析构建协方差矩阵进而求出归一化的特征向量构建特征脸空间,然后求出原图片的特征脸空间。function m, A, Eigenfaces = EigenfaceCore(T) m = mean(T,2); Train_Number = size(T,2);A = ; for i = 1 : Train_Number temp = doubl
21、e(T(:,i) - m; A = A temp; endL = A'*A; V D = eig(L); L_eig_vec = ;for i = 1 : size(V,2) if( D(i,i)>1 ) L_eig_vec = L_eig_vec V(:,i); endendEigenfaces = A * L_eig_vec; 最后是识别算法,首先将待识别的图片投影到特征脸空间,提取待测图片的主成分,计算与数据库中的已有图片对应特征脸空间的欧氏距离,距离最近者就是训练数据库中的与之匹配的图片。function OutputName = Recognition(TestImag
22、e, m, A, Eigenfaces)ProjectedImages = ;Train_Number = size(Eigenfaces,2);for i = 1 : Train_Number temp = Eigenfaces'*A(:,i); ProjectedImages = ProjectedImages temp; end InputImage = imread(TestImage);temp = InputImage(:,:,1); irow icol = size(temp);InImage = reshape(temp',irow*icol,1);Differ
23、ence = double(InImage)-m; % Centered test imageProjectedTestImage = Eigenfaces'*Difference; Euc_dist = ;for i = 1 : Train_Number q = ProjectedImages(:,i); temp = ( norm( ProjectedTestImage - q ) )2; Euc_dist = Euc_dist temp;end Euc_dist_min , Recognized_index = min(Euc_dist);OutputName = strcat(
24、int2str(Recognized_index),'.jpg');接下来的工作就显得简单了只需依次调用者几个函数,并将结果打印出来即可。实际应用的人脸识别系统结构复杂,事实上是软硬件兼有的庞大系统,本篇提出的方案更多的是理论上的预设和实际的仿真,本篇仿真的数据库规模不大,是验证性的,当然也支持大量的图片库,在此基础上验证预设的正确性,对实际的应用有一定的参考价值。五 方案优缺点分析与展望人脸识别是现今社会的应用热点,在机场安检以及科研院所的保密等场合的应用已经展开,实际上关于人脸识别的研究和改进方兴未艾。通过本次的仿真设计我对人脸识别的方法有了更深层次的了解,也发现了一些不足
25、和有待改进之处。本次的设计算法对人脸正面图像(实验选取的都是正脸的图像)有比较好的区分能力。但对人脸图像不是非常端正的图像就不是很有效。也即是本方案的前提是对象有很好的姿态和配合度,否则可能不会有正确的响应,这样的话在区分之前就必须做必要的修正。但是本方案设计的仿真并不提供这种情况的探讨,也即是忽略了这方面的因素,下一步还需要探讨就是识别的灵敏与可靠性,以确保检测者的动作表情或者光线等外界因素引起的偏差与错误。当然本此设计的算法本身也有改进的余地。在今后的学习和研究中,人脸识别的许多具体领域中仍然大有可为。参考文献:1 王慧琴.数字图像处理.北京邮电出版社2 张宏林,蔡锐.数字图像模式识别技术
26、及工程实践,20033 陈桂明,张明照,戚红雨.应用matlab语言处理数字信号与数字图像M.北京科学出版社.2000附:程序运行的情况:1训练数据库的全部图像2测试数据库的图像:3运行情况:第一步:运行程序:选择训练数据库路径:4同样的选择测试数据库路径:5输入测试的图像:默认1,我们选择2继续走6得到与测试的2号图像匹配的图像:看上去有点坏坏的家伙,不过还好,程序识别的不错。附:代码部分Main.m%识别主函数包括一个基于PCA面部识别的系统 clear allclcclose all% 选择训练和测试数据库路径TrainDatabasePath = uigetdir('C:Use
27、rsUncleSamDesktopface', '选择训练数据库路径' );TestDatabasePath = uigetdir('C:UsersUncleSamDesktopface', '选择测试数据库路径');%弹出对话框prompt = '请输入测试的图像名称(阿拉伯数字1到10):'dlg_title = '基于的面部识别系统的输入'num_lines= 1;def = '1'TestImage = inputdlg(prompt,dlg_title,num_lines,def)
28、;%生成路径TestImage = strcat(TestDatabasePath,'',char(TestImage),'.jpg');im = imread(TestImage);T = CreateDatabase(TrainDatabasePath);m, A, Eigenfaces = EigenfaceCore(T);OutputName = Recognition(TestImage, m, A, Eigenfaces);SelectedImage = strcat(TrainDatabasePath,'',OutputName);
29、SelectedImage = imread(SelectedImage);imshow(im)title('Test Image');figure,imshow(SelectedImage);title('Equivalent Image');str = strcat('Matched image is : ',OutputName);disp(str)CreateDataBase.mfunction T = CreateDatabase(TrainDatabasePath)% 这个函数将所有的训练数据库的二维图像重构成一个1D的列向量,然后将
30、这个向量构建一% 个2D矩阵T返回一个二维矩阵,包括所有的一维图像向量组,假设所有的P个图像都是% 同样的大小MxN那么这个一维向量的长度就是MN,T就是一个MNxP的二维矩阵%列出文件目录TrainFiles = dir(TrainDatabasePath);Train_Number = 0;for i = 1:size(TrainFiles,1) if not(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'Thumbs.
31、db') Train_Number = Train_Number + 1; %训练数据库中的图像数目 endend% 构建一个二维矩阵T = ;for i = 1 : Train_Number % 选择数据库中每个图像的名字作为关联数字 str = int2str(i); str = strcat('',str,'.jpg'); str = strcat(TrainDatabasePath,str); img = imread(str); img = rgb2gray(img); irow icol = size(img); temp = reshape
32、(img',irow*icol,1); % 把二维图像重构成一维向量 T = T temp; % 'T'在每次循环后就会变大 EndEigenface.mfunction m, A, Eigenfaces = EigenfaceCore(T)%用主成分分析来判定不同面部图像的最大区别%这个函数得到一个一个二维矩阵,它包含所有的图片训练信息并返回从训练数据库中得到的三个输出信息%三个输出的含义:m训练数据库的均值, Eigenfaces 训练数据库协方差矩阵的特征向量 A居中的图像向量矩阵。% 计算图像的均值 m = mean(T,2); Train_Number = size(T,2);% 计算每个图像的方差A = ; for i = 1 : Train_Num
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子巡更施工方案
- 矿物电缆施工方案
- 墙壁暗管延长施工方案
- 电力馆 施工方案
- 二零二五年度现代农业土地承包租赁协议
- 二零二五年度企业集团内部公对公汇款合作协议
- 2025年度电影宣传演员聘用合同
- 二零二五年度餐馆服务员劳动合同与劳动权益维护协议
- 二零二五年度户外帐篷露营设施装修承揽合同
- 2025年度蔬菜批发市场租赁及销售合作合同模板
- 涉密工作标准体系保密管理新规制度
- 数据中心全生命周期绿色算力指数白皮书 2024
- (正式版)JC∕T 60021-2024 石膏基自流平砂浆应用技术规程
- 接触网工高级技师理论试题库及答案
- 初中美术备课组工作计划
- 湖北省武汉市江岸区2024年七年级下学期期末数学试题附答案
- 办公区域主要风险辨识与分级管控清单
- JB∕T 8527-2015 金属密封蝶阀
- 2024-2034年中国藏香猪养殖行业市场深度分析及发展潜力预测报告
- 中医培训课件:《中药封包技术》
- 内镜下内痔套扎治疗
评论
0/150
提交评论