没有合适的资源?快使用搜索试试~ 我知道了~
首页人脸识别实验报告(含代码及优化)
人脸识别实验报告(含代码及优化)
需积分: 50 4.2k 浏览量
更新于2023-05-28
评论 12
收藏 829KB PDF 举报
人脸识别实验报告(含代码及优化),主要运用特征提取,PCA,包含实验原理、步骤、代码及优化
资源详情
资源评论
资源推荐

EX2 人像识别
一、 问题描述及实验要求
设 m 个人,每人 n 张人脸图像,即图像为 x
1,1
,x
1,2
,…,x
1,n
,x
2,1
,x
2,2
,…,x
2,n
,…,x
m,1
,x
m,2
,…,x
m,n
,试用 KL
变换(PCA)或其他变换, 设计人脸特征提取算法,并设计人脸识别系统。附实验数据 yale 人
脸识别(15 人 x 每人 11 幅)。
1
…
n
1
…
2
…
…
…
:
:
:
m
…
图 2. 人脸图像
二、 实验原理
人脸识别一个自然而然的想法就是将两张图像进行比对,两张图片的差异越小说明两张图像越
相似。本实验中相似程度的判别准则为二范数(空间中的欧氏距离),越小相似度越高,图像
中的人脸就越有可能是同一人脸。
1. 特征降维
Yale 人脸库中的图像都是 128*128 的灰度图片,将图像数字化,以每个像素作为 1 维特征,
一幅图像就有 16384 维特征,显然,如果不做任何处理就直接进行比对识别的话,运算量

太大,且效果不一定好。因为某些特征并没有很大的区分度,比如背景特征,背景对我们
要做的人脸识别并没有很大的帮助,甚至背景的变化还会对我们的识别结果造成剧烈影响。
解决上述问题的方法是:降维,用低维特征去代替高维特征,选择具有高区分性的特征,
去除对分类无用或者有负面影响的特征。本实验训练集和测试集人脸的比较正是降维后特
征与特征之间的比较。
2. 特征抽取
特征抽取是特征降维的一种方法,它将已有的特征进行组合或线性变换建立一个新的特征
子集。
3. 主成分分析 PCA (Principal Component Analysis)
PCA 是一种特征抽取,在尽可能好地代表原始数据的前提下,通过线性变换将高维空间中
中心化后的样本数据(高维特征)投影到低维空间中。PCA 的本质是基的变换:
,
,
,
是样本均值,
是在
上的投影分量,
。是
的投影。
1 维情形
尽可能好地代表原始数据就是说,用 d 维超平面,以残差和最小的方式去近似 n 维空间中

的数据。即要求
满足:
(其中
)
最小。
可以看出,要想 使 残 差 平 方 和 最 小 , 就 要 让 项:
最大,即需要取
有最大投影个的
,来让该
项最大。
是
维矩阵,称为散布矩阵,或者协方
差矩阵。
显然我们应该选择矩阵
的前个最大特征值所对应的特征向
量作为
的方向。
这样,对具有维特征的样本
,通过线性变换,我们在维空间中用最具有代表性的个
特征
,
,
来最佳近似它,
,
,
称为主成分(Principal Component),
分别对应基
,
,
,
。
4. 快速 PCA
基于 PCA 进行特征抽取时,最主要的工作量是计算 维矩阵的特征值和特征向量。显
然当非常大时直接去计算的特征值和特征向量是很困难的。
为了解决这个问题,我们引入一个 PCA 加速技巧。
不妨设我们有个样本(维,),样本矩阵为
,
,则

散布矩阵
,考虑矩阵
,设维列向量是的特征向量,则:
两边同时左乘
,由矩阵乘法的结合律得:
即为散布矩阵
的特征向量。
可以看到,与有相同的非零特征值,且的尺寸远远小于散布矩阵,所以可以通过求
的特征值和特征向量来求的特征值和特征向量。
三、 实验内容及步骤
取每个人脸的前 9 幅作为训练集,后两张作为测试集。伪代码:
1. 读入数据 ReadFaces()函数:输入每个人要读取的图像数 nFacesPerPerson,读取的人数 nPerson,
并设定 bool 参数 bTest。
1) 读入一张图片的 size,根据 size 设置向量化人脸容器 FaceContainer,每行存储一张人脸信
息;
2) 若 bTest=0,读入训练集人脸(每个人脸的前 9 张),存储到 FaceContainer 中,否则读入测
试集人脸,存储;
3) 设定 faceLabel 为 FaceContainer 每一行存储的人脸所对应的人的标记。
2. 快速 PCA 实现函数 fastPCA():输入样本矩阵 A,降维后的维数 k。
1) 求样本矩阵的均值 meanVec=mean(A),规模[r,c]=size(A);
2) 计算协方差矩阵的转置 covMatT
Z=(A-repmat(meanVec,r,1));
covMatT=Z*Z';
3) 计算 covMatT 的前 k 个特征值和特征向量,得到协方差矩阵的 k 个特征向量
[V,D]=eigs(covMatT,k);
V=Z'*V;
4) 将特征向量归一化为单位特征向量
for i=1:k
V(:,i)=V(:,i)/norm(V(:,i));
剩余15页未读,继续阅读


















涛奋男孩
- 粉丝: 4
- 资源: 16
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0