人脸识别作业贵州大学解读.docx
《人脸识别作业贵州大学解读.docx》由会员分享,可在线阅读,更多相关《人脸识别作业贵州大学解读.docx(16页珍藏版)》请在冰豆网上搜索。
人脸识别作业贵州大学解读
图像处理与模式识别
课程报告
报告题目:
欧式距离分类器
学院:
大数据与信息工程学院
专业:
电子与通信工程
学号:
学生姓名:
任课教师:
刘本永教授
2015年6月
摘要:
首先对人脸识别相关的技术进行了简要的介绍,并列举了它们进行了简要的分析,做了简要的对比。
本文首先把人脸分为训练样本和测试样本,由于样本里生成的特征向量的维数过高,我们得通过PCA算法降维压缩,最后用欧式距离完成测试样本和训练样本的人脸识别,通过实验得出最后相匹的人脸。
关键词:
人脸识别PCA特征提取欧式距离
Abstract:
First,facerecognitiontechnologyrelatedtoabriefintroduction,andliststheminabriefanalysis,abriefcomparison.Firstly,thehumanfaceintotrainingandtestingsamples,duetothedimensionofthesampleinthegeneratedfeaturevectorsaretoohigh,wehavetogothroughPCAdimensionreductioncompressionalgorithm,andfinallycompletedtheEuclideandistancefacerecognitiontestsamplesandtrainingsamples,byexperimentlastmatchesoftheperson'sface.
Keywords:
facerecognitionPCAfeatureextractionEuclideandistance
1、引言
计算机人脸识别技术是近20年才发展起来的,90年代更成为科研热点。
仅1990年到1998年之间,IE可检索到相关的文献就多达数千篇。
计算机人脸识别技术就是利用计算机分析人脸图象,进而从中提取出有效的识别信息,用来“辨认”身份的一门技术。
人脸识别技术应用非常广泛,在国家安全、军事安全和公共安全领域,智能门禁、智能视频监控、公安布控、司机驾照验证等是典型的应用。
在民事和经济领域,各类银行卡、金融卡储蓄卡的持卡人的身份认证,社会保险人的身份验证等具有重要的应用价值。
虽然人类的人脸识别能力很强,并且能够记住并辨别上千个不同的人脸,但对于计算机就困难得多。
其表现在:
人脸表情丰富;人脸随年龄增长而变化;;人脸所成图象受光照、成象角度及成象距离等影响;而且从二维图象重建三维人脸是病态(illposed)过程。
目前尚没有很好的描述人脸的三维模型。
另外,人脸识别还涉及到图象处理、计算机视觉、模式识别以及神经网络等学科。
也和人脑的认识程度紧密相关。
这诸多因素使得人脸识别成为一项极富挑战性的课题。
因此,研究好人脸识别,不仅能推动图像处理,模式识别理论与应用的发展,更能推动其他相关学科的进步,比如认知科学、生理学的。
1.1、人脸识别相关技术介绍
1.1.1、基于几何特征的人脸识别判别方法
人脸的几何特征主要有:
眉毛的厚度以及与眼睛中心的垂直距离,鼻子的垂直位置和宽度,嘴巴的垂直位置、宽度以及它和上下嘴唇的高度等。
基于几何特征的人脸是被的主要思想是:
首先找出这些特点的具体位置,测出他们之间的距离,组成一个特征矢量,然后用这些特征矢量与人脸库中的特征矢量进行比较,找出最佳匹配。
所以,基于几何特征的人脸识别方法最终归结为特征矢量之间的匹配,基于欧式距离的判据是最常用的识别方法。
同时,识别所采用的几何特征是以人脸器官的形状和几何关系为基础的特征矢量,其分量通常包括人脸指定两点间的欧式距离、曲率、角度等。
基于几何特征的识别方法易于理解,而且对每幅图像只需存储一个特征矢量,对光照不敏感。
但从图中提取稳定的特征比较困难,对强烈的表情变化和姿势变化的鲁棒性差,因此它比较适合与粗分类。
1.1.2、基于模板匹配的人脸识别
模板匹配法是一种经典的模式识别方法,它充分利用了人脸的纹理和灰度特征。
它的识别方法就是将待识别的人脸图像与数据库中所有的模板进行比较,找出最相近的脸。
模板分为一般模板和弹性模板。
其中,一般的模板包括人脸的形状、眼睛、鼻子、眉毛等,而弹性模板是由一组根据特征形状的先验知识来设计可调参数来定义的。
这个参数是由能量函数来决定的,首先利用图像的边缘、峰值、谷值和强度信息以及特征形状的先验知识设计能量函数,然后将参数向能量函数减小的方向调整,当能量函数达到最小时,这组参数所对应的模板形状最符合特征形状。
模板匹配法要由于几何特征法。
1.1.3、基于K-L变换的特征脸识别方法
K-L变换是图像压缩中的一种最优正交变换。
人们将它用于统计特征提取,从而形成了子空间法模式识别的基础。
它的思想是:
通过K-L变换,得到高维图像空间的一组正交基,保留其中较大特征值对应的正交基,组成特征脸空间,然后将新的人脸图像投影到特征脸空间中,得到一组投影向量,作为识别的特征向量,比较其与已知人脸在人脸库中的位置,从而判断它是否是库中人脸,如果是,是哪一幅人脸。
其中,K-L变换的特征脸识别方法所用的最简单的分类做法是最小距离分类,而最小距离大多数是利用欧式距离来算。
基于K-L变换的特征脸识别法的识别比较简单且有效。
1.1.4、支持向量机的识别方法
支持向量机(SupportVectorMachine,SVM)起源于统计学习理论,它研究如何构造学习机,实现模式分类问题。
其基本思想是通过非线性变换将输入空间变换到一个高维空间,在高维空间求取最优线性分类面,以解决那些线性不可分的分类问题。
而这种非线性变换是通过定义适当的内积函数(即核函数)来实现的。
SVM技术中核函数及其参数的选取难度较大。
由于它基于结构风险最小化原理,而不是传统统计学的经验风险最小化,因而表现出很多优于已有方法的性能。
由于SVM的训练需要大量的存储空间,非线性SVM分类器需要较多的支持向量,所以速度很慢。
2、实验原理
首先对图像预处理,转换成向量,再通过PCA算法对训练样本人脸数据库图像进行降维特征提取,再利用欧式距离对特征向量进行分类识别,寻找和待识别图片最为接近的训练样本图片。
2.1、图像预处理
通过从训练样本集中读取数据,先统计训练样本中的图片,再对二维图片进行转换,转为一维的向量,由于本样本集中的图片为黑白图片,因此对它的灰度先暂时没做处理,最后使每张图片的信息作为一列。
2.1.1、Matlab代码的实现
TrainFiles=dir(TrainDatabasePath);%训练集路径
Train_Number=0;%训练集中图片数量初值
fori=1:
size(TrainFiles,1)%目录中除图片本身外,还保存(.|…|Thnmbs.db)
ifnot(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..')|strcmp(TrainFiles(i).name,'Thumbs.db'))
Train_Number=Train_Number+1;%统计训练集中的图片
end
end
T=[];
fori=1:
Train_Number%对每一张图片
str=strcat('\',int2str(i),'.bmp');%字符串拼接,得到\i.jpg
str=strcat(TrainDatabasePath,str);%字符串拼接,得到每一张训练图片的完整路径
img=imread(str);%读入训练图片
[irowicol]=size(img);%得到图片大小
temp=reshape(img,irow*icol,1);%将二维图片转换为一维向量
T=[Ttemp];%每张图片的信息作为T的一列
End
2.2、特征值的提取
2.2.1、PCA进行特征值提取算法
具体步骤:
①初始化,获得人脸图像的训练集并计算特征脸,定义为人脸空间,存储在模板库中,以便系统进行识别;
②输入新的人脸图像,将其映射到特征脸空间,得到一组关于该人脸的特征数据;
③通过检查图像与人脸空间的距离判断它是否是人脸;
④若为人脸,根据权值模式判断它是否为数据库中的某个人,并做出具体的操作。
2.2.2、PCA人脸识别流程
通过图像预处理后,PCA人脸识别还包括以下几个步骤:
读入人脸库,训练成特征子空间;把训练图像和测试图像投影到上一步骤得到的子空间上;选择一定的距离函数进行识别。
下面详细描述整个过程:
①读入人脸库
归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。
设归一化后的图像是N×N的,按列相连就构成
维向量,可看作是
维空间中的一个点,可以通过K-L变换用一个低维子空间描述这个图像。
②计算K-L变换的生成矩阵,并求取图像的特征值和特征向量
假设人脸图像库中有N幅人脸图像,用向量表示为
(向量维数设为L),其人脸平均图像如式(2-1)所示:
(2-1)
由此可得到每幅图像的均差,如式(2-2)所示:
,
(2-2)
这样可计算协方差矩阵,如式(2-3)所示:
(2-3)
计算矩阵C的特征值
和对应特征向量
。
但是在实际计算中,矩阵C的大小是
,即使对尺寸较小的图像计算量还是很大。
为了减小运算量,现将每幅图像的均差形成一个矩阵,如式(2-4)所示:
(2-4)
则式(2-3)可以写成式(2-5):
(2-5)
因此,根据线性代数理论,将计算
的特征值
和对应特征向量
的问题转化为求
的特征值
和对应的特征向量
的问题。
的大小仅为N×N远远小于
,故简化了计算。
在求出
后,
可以通过式(2-6)得到:
(2-6)
③把训练图像和测试图像投影到特征空间
由特征向量所形成的向量空间可表示人脸图像的主要特征信息,将人脸图像库中所有N个图像的均差向此空间投影,得到各自的投影向量
如式(2-7)和(2-8)所示:
(2-7)
(2-8)
对于待识别人脸图像I,计算其与k差的投影向量,如式(2-9)所示:
(2-9)
再与人脸图像库中N个人脸图像对应的投影向量
比较,按照一定的距离准则完成识别。
④比较测试图像和训练图像,确定待识别样本类别
这里可以采用多种不同的分类器进行分类:
范式、
范式、最小距离、角度以及Mahalanobis距离等。
2.2.3、Matlab代码的实现
A=[];
fori=1:
Train_Number%对每一列
temp=double(T(:
i))-m;%每一张图与均值的差异
%setAi=Ti-m
A=[Atemp];%方差矩阵
end
%降维
L=A'*A;%L是协方差矩阵C=A*A’的转置
[VD]=eig(L);%对角线上的元素是L|C的特征值。
V:
以特征向量为列的满秩矩阵,D:
特征值对角矩阵。
即L*V=V*D.。
2.3、特征向量选取
上面所创建的用于投影的特征脸子空间使用的是所有r个非零的特征值对应的特征向量。
虽然协方差矩阵C最多有对应于非零特征值的N个特征向量,且r≤N,但是通常情况下,r仍然会太大,而根据应用的需求,并非所有的
,都有保留意义。
而特征空间投影的计算速度是直接与创建子空间所用的特征向量的数目相关,若考虑到计算时间等因素,可以适当减去一些信息量少的特征向量,且去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。
下面将讨论几种不同的特征值选择方法:
①标准的特征空间投影:
所有r个对应于非零特征值的特征向量均被用于创建特征脸子空间。
但是该方法在r值较大时,计算速度会较慢,且不利于分类。
②为进一步压缩特征向量和减小运算量,将特征值按大小顺序排序,忽略小特征值所对应的特征向量,即由下式得到
。
设
r为
的秩,r
N,
则压缩后的特征向量集如式(2-10)所示:
,M经过实验证明当M的取值为M=[r*20%]的时候识别率最佳。
③保持前面的z—1个特征向量:
将特征值按照降序排列,同时保留最前面的z一1个特征向量,其中z为训练图像的类别数。
④按照计算信息量来确定维数:
不同于前面固定的丢弃一些特征向量,该方法采用保证剩余的特征向量所包含的信息与总的信息量相比大于一定的阈值e,e的值通常取为0.9,可依照式(2-11)计算:
(2-11)
2.3.1、Matlab代码的实现
L_eig_vec=[];%特征值向量
fori=1:
size(V,2)%对每个特征向量
if(D(i,i)>1)%特征值大于1时
L_eig_vec=[L_eig_vecV(:
i)];%集中对应的特征向量
end
end
2.4、距离函数的选择
图像被投影到特征空间中,剩下的任务就是如何判别这些图像的相似性。
通常有两种方法来判别:
一种是计算在N维空间中图像间的距离,另一种是测量图像间的相似性。
当测量距离时,我们希望距离尽可能地小,一般选择与测试图像最近的训练图像作为它的所属的类别。
而测量相似性的时候,则希望图像尽可能地相似,也就是说具有最大的相似性的训练图像类别是测试图像所属的类别。
而本实验主要采取的是欧式距离来度量的。
欧式距离又称泛数,它被广泛地应用于向量间的距离度量:
其中x和r分别表示输入特征向量X和参考特征向量R的第i个元素,K表示特征向量维数。
相应的点和类之间的最小欧式距离定义
其中cir表示参考类的第c个参考特征向量的第i个元素,min()表示输入特征向量和参考类c个参考特征向量欧式距离的最小值。
计算向量与哪类人脸的向量距离最近,得到识别的结果。
2.4.1、Matlab代码的实现
[irowicol]=size(temp);%测试图片大小
InImage=reshape(temp,irow*icol,1);%转置后转为一维
Difference=double(InImage)-m;%L_eig_vec'
ProjectedTestImage=Eigenfaces'*Difference;%测试图像的特征向量
Euc_dist=[];
fori=1:
Train_Number%对每列
q=ProjectedImages(:
i);%取出训练图像
temp=(norm(ProjectedTestImage-q))^2;%欧式距离
Euc_dist=[Euc_disttemp];%
end
2.5、实验主程序
clearall
clc
closeall
%Youcancustomizeandfixinitialdirectorypaths
TrainDatabasePath=uigetdir(strcat(matlabroot,'\work'),'Selecttrainingdatabasepath');%设置训练集路径
TestDatabasePath=uigetdir(strcat(matlabroot,'\work'),'Selecttestdatabasepath');
prompt={'Entertestimagename(anumberbetween1to10):
'};
dlg_title='InputofPCA-BasedFaceRecognitionSystem';
num_lines=1;
def={'1'};
TestImage=inputdlg(prompt,dlg_title,num_lines,def);
TestImage=strcat(TestDatabasePath,'\',char(TestImage),'.bmp');
im=imread(TestImage);
%T=CreateDatabase(TrainDatabasePath);
T=CreateDatabase(TrainDatabasePath)
[m,A,Eigenfaces]=EigenfaceCore(T);
OutputName=Recognition(TestImage,m,A,Eigenfaces);
SelectedImage=strcat(TrainDatabasePath,'\',OutputName);
SelectedImage=imread(SelectedImage);
figure;
subplot(1,2,1);imshow(im);
title('TestImage');
subplot(1,2,2);imshow(SelectedImage);
title('EquivalentImage');
str=strcat('Matchedimageis:
',OutputName);
disp(str);
3、实验结果
TrainDatabase(如图3-1)里存放了42张图片,TestDatabase(如图3-2)里存放了10张图片,所有图片格式和分辨率都相同。
图3-1
图3-2
运行主程序时,先设置好TrainDatabase的路径(如图3-3),再设置好TestDatabase的路径(如图3-4)
图3-3图3-4
之后还会弹出你想要匹配的图片号(1-10)(如图3-5)
图3-5
最终会显示出TestImage和在TrainDatabase里匹配出来EquivalentImage。
如果所要匹配的图片和TrainDatabase里的图片相同,则匹配出来的图片则相同(如图3-6);
图3-6
4、结论与不足
通过这个实验报告,使我对Matlab编程有了更深刻的了解,在编程的同时,还得把本学期学习的相关的理论知识(比如PCA相关算法)应用上,毫无疑问,这巩固了本学期所学的相关知识,更有利我们深刻了解人脸识别相关的理论。
通过这个实验,由于我的样本值都取得很少,同时,人脸库也是标准ORL人脸库,所以最后实现的人脸匹配度还是令人欣慰的,可以做到只要训练样本里有的图片,都可把匹配的图片找出来。
不足:
①通过测试,假如训练样本里没有的图片,我们是不能找出与之相近似的图片,这还得通过后期的修改和调试;
②由于本次实验的样本选得比较少,若在样本很多的情况下,可能会造成图像识别的速率大大降低,这也得我们后期对程序进行相关的改善。
通过一学期的《图像处理与识别》的学习,我学会了如何通过查找文献资料、书籍和同学老师一起讨论来得到自己想要获得的知识,这不仅提高了我的学习能力,同时还提高了自我管理的能力,这使得我成长了很多,这一学期里我要感谢我的课程老师——刘本永老师,感谢我的同学。
5、参考文献
[1]周昕.基于BP神经网络的人脸识别技术的研究[D].南京理工大学.2007
[2]齐兴敏.基于PCA的人脸识别技术的研究[D].武汉理工大学.2007
[3]徐媛.基于几何特征的人脸识别方法研究[D].中国地质大学.2008
[4]姜贺.基于几何特征的人脸识别算法的研究_[D].大连理工大学.2008
[5]张翠平.人脸识别技术综述[J].中国图像图形学报.2000,(5):
885-894
[6]孙艳秋.通用人脸图像预处理方法及其MATLAB仿真[J].辽宁科技学院学报.2005,(7):
7-9
[7]黄金钰.LBP直方图与PCA的欧式距离的人脸识别[J].计算机系统应用.2012,(6):
202-205
读书的好处
1、行万里路,读万卷书。
2、书山有路勤为径,学海无涯苦作舟。
3、读书破万卷,下笔如有神。
4、我所学到的任何有价值的知识都是由自学中得来的。
——达尔文
5、少壮不努力,老大徒悲伤。
6、黑发不知勤学早,白首方悔读书迟。
——颜真卿
7、宝剑锋从磨砺出,梅花香自苦寒来。
8、读书要三到:
心到、眼到、口到
9、玉不琢、不成器,人不学、不知义。
10、一日无书,百事荒废。
——陈寿
11、书是人类进步的阶梯。
12、一日不读口生,一日不写手生。
13、我扑在书上,就像饥饿的人扑在面包上。
——高尔基
14、书到用时方恨少、事非经过不知难。
——陆游
15、读一本好书,就如同和一个高尚的人在交谈——歌德
16、读一切好书,就是和许多高尚的人谈话。
——笛卡儿
17、学习永远不晚。
——高尔基
18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。
——刘向
19、学而不思则惘,思而不学则殆。
——孔子
20、读书给人以快乐、给人以光彩、给人以才干。
——培根