计算机视觉基础大作业人脸识别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机视觉基础
期末大作业
题目:基于matlab的人脸识别系统设计物联网工程学院计算机科学与技术专业
学号
学生姓名
任课教师
二〇一六年六月
目录
摘要 (3)
1.概述 (4)
1.1 人脸识别技术 (4)
1.2人脸识别基本方法 (4)
1.2.1几何特征的人脸识别 (4)
1.2.2基于特征脸(PCA)的人脸识别 (4)
1.2.3神经网络的人脸识别 (5)
1.3人脸识别新技术 (5)
2.人脸识别功能的实现 (5)
2.1 PCA方法基本原理 (5)
2.2 基于主成分分析法的人脸识别 (6)
2.2.1 读入人脸库 (6)
2.2.2 计算K-L变换的生成矩阵 (6)
2.2.3 求解特征值和特征向量 (7)
2.2.4 样本投影与识别 (8)
2.3 基于PCA算法人脸识别的matlab实现 (8)
2.3.1 读取人脸库 (8)
2.3.2 利用生成矩阵求特征值和特征向量 (9)
2.3.3 选取阈值提取训练样本特征 (9)
2.3.4 选取测试样本进行识别 (9)
2.4 人脸识别代码 (10)
2.5 实验结果及分析 (11)
3.实验结果及实现功能 (12)
3.1 文件部分 (12)
3.2 图像预处理部分 (12)
3.3 训练部分 (13)
3.4识别部分 (13)
4.总结 (13)
4.1人脸识别的困难性 (13)
4.1.1相似性 (14)
4.1.2易变性 (14)
4.2 实验心得 (14)
参考文献: (14)
摘要
人脸识别系统以人脸识别技术为核心,是一项新兴的生物识别技术,是当今国际科技领域攻关的高精尖技术。

这次设计主要是完成了基于主成分分析(PCA)方法的人脸识别,PCA 方法的基本原理是:利用离散K-L变换提取人脸的主要成分,构成特征脸空间,识别时把测试样本投影到该空间,构成一组投影系数,通过与特征脸的距离比较,距离最小的特征脸对应的即是识别结果。

基于PCA的人脸识别其实一种统计性的模板比配方法,原理简单,易于实现,但也有不足,它的识别率会随着关照,人脸角度,训练样本集的数量而变换,但仍不失为一种比较好的方法。

关键词:人脸识别、PCA、特征提取
1.概述
1.1 人脸识别技术
人脸识别技术是采用某种技术和手段对人的身份进行标识,从而依据该标识对人进行身份识别,以达到监督、管理和识别目的的一种技术。

近年来由于在公安罪犯识别、安全验证、安全验证系统、信用卡验证等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点。

人脸识别基本上可分为两个方面:一是给定一幅待识别人脸图像,判别它是否是某人,即通常所说的身份验证,这是个“一对一”的两分类问题;另一个是给定一幅待识别人脸图像,判断它是谁,即通常所说的身份识别,这是一个一对多的问题
基于人脸图像整体特征的人脸识别方法由于不需要提取人脸图像中器官的具体信息,而且充分利用到人脸图像本身具有的灰度信息,因此可获得更高的识别性能。

基于人脸图像整体特征的人脸识别方法主要有特征脸法,最佳鉴别矢量集法,贝叶斯法,基于傅立叶变换特征法,弹性图匹配法,相关方法,线性子空间法,可变形模型法和基于人工神经网络的方法等等。

其中弹性图匹配法和傅里叶不变特征法侧重于表述人脸图像;最佳鉴别矢量集法,贝叶斯法,基于人工神经网络的方法侧重于分类;特征脸法和线性子空间法等侧重于人脸图像的重构。

1.2人脸识别基本方法
1.2.1几何特征的人脸识别
几何特征可以是眼、鼻、嘴等的形状和它们之间的几何关系(如相互之间的距离)。

这些算法识别速度快,需要的内存小,但识别率较低。

1.2.2基于特征脸(PCA)的人脸识别
特征脸方法是基于KL变换的人脸识别方法,KL变换是图像压缩的一种最优正交变换。

高维的图像空间经过KL变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。

如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法的基本思想。

这些方法需要较多的训练样本,而且完全是基于图像灰度的统计特性的。

目前有一些改进型的特征脸方法,也是本文所要讲述的的方法。

1.2.3神经网络的人脸识别 神经网络的输入可以是降低分辨率的人脸图像、局部区域的自相关函数、局部纹理的二阶矩等。

这类方法同样需要较多的样本进行训练,而在许多应用中,样本数量是很有限的。

1.3人脸识别新技术
传统的人脸识别技术主要是基于可见光图像的人脸识别,这也是人们最熟悉的识别方式,已有30多年的研发历史。

但这种方式有着难以克服的缺陷,尤其在环境光照发生变化时,识别效果会急剧下降,无法满足实际系统的需要。

解决光照问题的方案有三维图像人脸识别,和热成像人脸识别。

但目前这两种技术还远不成熟,识别效果不尽人意。

最近迅速发展起来的一种解决方案是基于主动近红外图像的多光源人脸识别技术。

它可以克服光线变化的影响,已经取得了卓越的识别性能,在精度、稳定性和速度方面的整体系统性能超过三维图像人脸识别。

这项技术在近两三年发展迅速,使人脸识别技术逐渐走向实用化。

2.人脸识别功能的实现
2.1 PCA 方法基本原理
设人脸图像(,)I x y 为二维m n ⨯灰度图像,用N m n =⨯维列向量X 表示。

人脸图像训练集为{|1,
,}i X i M =,其中M 为训练集中图像总数。

根据训练集构造N N ⨯总体散布矩
阵t S :1()()M T t i i i S X
X μμ==--∑ 其中μ为所有训练样本的平均向量:11M i i X
M μ==∑
选取一组标准正交且使得准则函数式(3.3)达到极值的向量1d ωω作为投影轴,其物理意义是使投影后所得特征的总体散布量(类间散布量与类内散布量之和)最大。

T t t J S ωω= 1T ωω=
其等价于:T t t T S J ωωωω
=
上式即为矩阵的Rayleig 熵,由Rayleigh 熵[7]的极值性质,最优投影轴1d ωω可取为t S 的d 个最大的特征值所对应的标准正交的特征向量。

对于m n ⨯人脸图像,总体散布矩阵t S 的大小为N N ⨯,对它求解特征值和特征向量是很困难的,由奇异值定理,一种取而代之的方法是解M M ⨯个较小的矩阵。

首先计算M M ⨯矩阵L 的特征向量(1,,)l v l M =:T L A A =、1[,
,]M A X X μμ=--矩阵t S 的特征向量:111[,,][,,][,,]M M M U X X v v AV μμμμ==--=(1,
,)l l M μ=由差值图像1(1,,)X l M μ-=与(1,,)l v l M =线性组合得到
取L 的前d 个最大特征值的特征向量计算特征脸,d 由门限值λθ确定:
11min /d M i j i j J d λλλθ==⎧⎫=>⎨⎬⎩

∑∑ 2.2 基于主成分分析法的人脸识别
完整的PCA 人脸识别的应用包括四个步骤:人脸图像的预处理;读入人脸库,训练形成特征脸空间;把训练样本和测试样本投影到特征脸空间中;选择一个距离函数按照某种规则进行识别。

下面看一下详细的过程:
2.2.1 读入人脸库
这次设计中选用英国剑桥大学人脸库即ORL 人脸库,此人脸数据库有40人,每人有10幅图像。

这些图像具有以下特点:有些图像拍摄于不同的时期;人的脸部表情和脸部细节有着不同程度的变化,比如,笑或不笑,眼睛或睁或闭,戴或不戴眼镜;人脸姿态也有相当程度的变化,深度旋转和平面旋转可达20。

;人脸的尺度也有多达10%的变化;图像的分辨率是 112x92。

在ORL 人脸库中选出每个人的前5幅图像作为训练图像,构成一个200幅图像的训练集,剩下的200幅图像构成测试集。

每幅图像按列相连构成10304维列向量,读入的训练样本集就构成10304×200的矩阵。

2.2.2 计算K-L 变换的生成矩阵
以训练样本集的总体散布矩阵为生成矩阵t S ,即:2001()()T t i i
i S X
X μμ==--∑ 其中i X 为第i 幅训练样本的图像向量,μ为训练样本集的均值向量,
训练样本的总数为200。

为了求的生成矩阵的特征值和正交归一化特征向量,由于矩阵维数过高,计算量太大,可以引进奇异值分解定理(SVD 定理)。

图2.1 平均脸
2.2.3 求解特征值和特征向量
SVD 定理的定义:若矩阵m n A R ⨯∈,则存在正交矩阵{}12,,,m n m U R μμμ⨯=∈,{}12,,,m n n V v v v R ⨯=∈,使得12(,,,)T p U AV diag W σσσ==,min(,)p m n =,即
T A UWV =,则称A 为奇异值分解。

其中,120,(1,2,,)p i i p σσσσ≥≥
≥≥=为A 的
奇异值,是T AA 或T A A 的特征值的平方根,即i σ=
奇异值向量具有良好的稳定性,所以它对图像噪音、图像光照条件引起的灰度变化具有不敏感的特性。

计算特征值和特征向量的基本步骤是:(1)创建协方差矩阵;(2)计算协方差矩阵的特征值和 特征向量;(3)按特征值由小到大顺序排列特征值和特征向量。

这些特征向量对应的图像很像人脸,所以被称为“特征脸”。

有了这样一个由“特征脸”组成的降维子空间,任何一幅图像都可以向其投影并获得一组坐标系数,这组坐标系数表明了该图像在“特征脸”子空间的位置,从而可以作为人脸识别的依据。

选择了其中30个特征脸如下图所示
图2.2 特征脸
2.2.4 样本投影与识别
得到特征脸子空间以后,就要把训练样本和测试样本都投影到特征脸子空间,每幅图像得到一组坐标系数,对应子空间中的一个点。

任何一幅图像都可以有这组特征脸线性组合,加权系数就是K-L变换的系数。

原始图像主成分取20的重建图主成分取50的重建图
主成分取100的重建图主成分取150的重建图完全重建图
2.3 基于PCA算法人脸识别的matlab实现
用matlab语言仿真PCA算法的人脸识别,分为以下几个步骤:
2.3.1 读取人脸库
allsamples=[]; % allsample用于存储读取的人脸图像矩阵
for i=1:40
for j=1:5
a=imread (strcat ('e: \ORL\s', num2str (i),'\', num2str (j),'.pgm'));
b=a (1:112*92);
b=double (b);
allsamples= [allsamples; b];
end
End
2.3.2 利用生成矩阵求特征值和特征向量
samplemean=mean (allsamples);
for i=1:200
xmean (i, :) =allsamples (i, :)-samplemean;
end
sigma=xmean*xmean';
[v d]=eig (sigma);
2.3.3 选取阈值提取训练样本特征
上面得到的200个特征向量,虽然已经比较小了,但计算量还是比较大。

其实不必要保留所有的特征向量,较大特征值对应的特征向量已经能够提供足够多的用于识别的特征。

一般是通过计算阈值进一步降低维数,这种方法的具体做法是把特征向量和特征值从大到小排列,选取特征值占总特征值之和的比值大于一定值所对应的特征向量。

阈值θ一般是取0.9。

计算公式是11/p M
i i
j j θλλ===∑∑。

但发现在这里θ取0.91更好,识别率更高一点。

通过程序运行可以发现,阈值选择为0.91时特征值个数减少为75个,就是说很多特征值是很小的,数值小的特征值对应的特征向量对识别只能提供很少的信息。

所以通过阈值选择,计算量减少了很多。

d1=diag (d);
dsort=flipud (d1);
vsort=fliplr (v);
dsum=sum (dsort);
dsum_extract=0;
p=0;
while (dsum_extract/dsum<0.91)
p=p+1;
dsum_extract=sum (dsort (1: p));
end
base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2));
allcoor=allsamples*base;
2.3.4 选取测试样本进行识别
测试样本识别的过程就是把测试图像投影到特征脸子空间,得到一组特征系数,然后按照欧式距离的最小近邻法与训练样本集投影得到的系数匹配,找到距离最小的样本就是识别的结果。

但为了克服单个样本的偶然性,这里选择最近的3个样本,然后把待识别人脸判别为这3个样本中同类样本最多的那个类别。

a=imread (strcat ('e: \ORL\s', num2str (i),'\', num2str (j),'.pgm'));
b=a (1:10304);
b=double (b);
tcoor=b*base;
for k=1:200
mdist (k)=norm(tcoor-allcoor(k,:));
end;
[dist, index2]=sort (mdist);
class1=floor ((index2 (1)-1)/5) +1;
class2=floor ((index2 (2)-1)/5) +1;
class3=floor ((index2 (3)-1)/5) +1;
if class1~=class2 && class2~=class3
class=class1;
elseif class1==class2
class=class1;
elseif class2==class3
class=class2;
end;
2.4 人脸识别代码
clear all
clc
allsamples=[]; % the array allsamples is used to restore all pictures
for i=1:40
for j=1:7
a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:112*92);
b=double(b);
allsamples=[allsamples;b];
end
end
samplemean=mean(allsamples); %average the pictures
for i=1:280
xmean(i,:)=allsamples(i,:)-samplemean;
end
sigma=xmean*xmean'; %obtain the M*M array
[v d]=eig(sigma);%vproduces a diagonal matrix D of eigenvalues and a
% full matrix V whose columns are the corresponding eigenvectors so
%that X*V = V*D.
d1=diag(d);%obtain the diagonal of the sigma
dsort=flipud(d1);
vsort=fliplr(v);
dsum=sum(dsort);
dsum_extract=0;
p=0;
while(dsum_extract/dsum<0.90)
p=p+1;
dsum_extract=sum(dsort(1:p));
end
base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2));
allcoor=allsamples*base;
accu = 0;
for i=1:40
for j=8:10
a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:10304);
b=double(b);
tcoor=b*base;
for k=1:280
mdist(k)=norm(tcoor-allcoor(k,:));
end;
[dist,index2]=sort(mdist);
class1=floor( (index2(1)-1)/7)+1;
class2=floor((index2(2)-1)/7)+1;
class3=floor((index2(3)-1)/7)+1;
if class1~=class2 && class2~=class3
class=class1;
elseif class1==class2
class=class1;
elseif class2==class3
class=class2;
end;
if class==i
accu=accu+1;
end;
end;
end;
accuracy=accu/120
2.5 实验结果及分析
对于ORL人脸库,选用每人前5幅图像作为训练样本,后5幅图像作为测试样本,训练样本和测试样本总数均为200,阈值选为0.91。

程序运行可得识别率为0.885。

选取的特征空间的维数是88。

PCA算法是基于人脸图像整体特征的人脸识别方法,影响识别率的因素主要有很多,如人脸库的差异,算法的差异,参数的选择,都会产生很大的影响。

但现在主要考虑两点因素:(1)阈值的选择,即特征空间的维数;(2)训练样本的数量。

下面就看一下选择不同的参数时候他们各自对识别率的影响如表2.1所示。

从上表可以看出当阈值一定时,训练样本数的增加会使识别率提高,大概每人每增加一幅图像,识别率提高4个百分点。

在训练样本数一定时,阈值的改变也相应的影响识别率,阈值太小的时候识别率显然很低,大概阈值到0.8以上时,识别率变化不大,这就说明,降低特征矩阵维数不但可以减少计算量,而且基本上不会影响识别率太多。

3.实验结果及实现功能
MATLAB提供了专门的GUI设计工具——图形用户界面开发环境(GUIDE),为了便于操作及演示的需要,利用GUIDE设计了可视化界面。

3.1 文件部分
“文件”菜单中有“打开”、“保存”、“退出”二级子菜单,分别用于打开,保存处理后的图像和退出界面操作。

3.2 图像预处理部分
“图像处理”菜单主要是完成一些基本的图像处理功能主要有两个作用:一个是消除或减少噪声,改善图像质量;另一个是模糊图像,使图像看起来柔和自然。

3.3 训练部分
3.4识别部分
4.总结
4.1人脸识别的困难性
人脸识别被认为是生物特征识别领域甚至人工智能领域最困难的研究课题之一。

人脸识别
的困难主要是人脸作为生物特征的特点所带来的。

4.1.1相似性
不同个体之间的区别不大,所有的人脸的结构都相似,甚至人脸器官的结构外形都很相似。

这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的。

4.1.2易变性
人脸的外形很不稳定,人可以通过脸部的变化产生很多表情,而在不同观察角度,人脸的视觉图像也相差很大,另外,人脸识别还受光照条件(例如白天和夜晚,室内和室外等)、人脸的很多遮盖物(例如口罩、墨镜、头发、胡须等)、年龄等多方面因素的影响。

在人脸识别中,第一类的变化是应该放大而作为区分个体的标准的,而第二类的变化应该消除,因为它们可以代表同一个个体。

通常称第一类变化为类间变化,而称第二类变化为类内变化。

对于人脸,类内变化往往大于类间变化,从而使在受类内变化干扰的情况下利用类间变化区分个体变得异常困难。

4.2 实验心得
人脸识别是一个跨学科富挑战性的前沿课题,但目前人脸识别还处在研究阶段,还未达到实用化.人脸识别难度较大,主要是在光线、表情、姿态变化以及附加物的影响时,很难找到一种算法能适应所有的情况。

本文采用的特征提取提和识别的方法是基于奇异值分解的特征提取法,在判断输入图像与训练图像之间的类似度时,用了较常用的欧式距离。

有待研究的问题还有:一是如何利用各种图像的特点,对静态人脸图像做相应的预处理,从而克服光照,表情变换对识别的影响,提高人脸识别的鲁棒性;二是在人脸识别的特征提取过程中,如何能利用图像的各种信息,比如灰度统计信息和结构信息,将各种可能的信息集合起来,找到能最大限度利用各种信息的识别方法。

人脸识别的方法是很多,各种方法都有各自的优缺点。

如果能把各种方法融合起来,将会是一个很好的方向。

参考文献:
1 董火明、高隽、汪溶贵,多分类器融合的人脸识别与身份认证,系统仿真学报,2004
2 王映辉,人脸识别/原理、方法与技术,2010-03,科学出版社
3 史东城,人脸图像信息处理与识别技术,2010-10-1,电子工业出版社
4 王正林,、刘明编著,《精通MATLAB 7》,2006,北京-电子工业出版社。

相关文档
最新文档