人脸图像分类算法康乐乐.doc
文本预览下载声明
深圳大学考试答题纸
(以论文、报告等形式考核专用)二○ 一四 ~二○ 一五 学年度第 1 学期
课程编号 2202500001 课程名称 科学计算语言 主讲教师 刘维湘 评分 学 号 2012220001 姓名 康乐乐 专业年级 生物医学工程2012 一班 教师评语: 题目: 人脸图片的分类算法
论文要求及评分标准:
自拟题目,并根据给定的数据集,对项目相关的背景,任务和意义
进行阐述(25’);
对项目中的核心算法的原理进行说明(20’);
提供完整代码,并提供代码必要的详细注释(20);
对实验结果进行分析和讨论(20’);
列出必需的主要参考文献(15’)。
进行人脸图片分类的背景及意义:
二十一世纪是一个信息时代。在这个信息量极度膨胀的世界,我们有需要建立起一种基于计算机的信息自动归类系统。对于图片信息来说,其所表现的内容就更多了。一张图片所包含的信息量往往要多于相同存储空间的文字内容。因此图片的分析也就成了当代的热门话题。在分析图像信息之前,我们有必要先对图像信息进行分类。这就像是将浩如烟海的书籍整理排列,建成图书馆的过程。人脸图像的分类服务于人脸识别。人脸识别是新兴的一种技术。它根据人脸的不同特征,进行身份信息的验证。这项技术前景较为广阔。在信息化的社会中,我们将通过储存于计算机中的人脸图像来快速验证个人信息。如果这项技术发展成熟,那么无疑,将给安保等行业带来一场改革。人脸识别的前提就在于人脸图像的分类,这正是一项浩大工程的基础,研究人脸分类的算法自然也受到了特别的重视。
实验过程:
2.1 对实验数据的分析:
实验选择的数据来自于NYU_UMist人脸数据集。我们首先要对这组数据进行一定的理解。根据数据本身的注释行:Grayscale faces 8 bit [0-255], a few images of several different people.400 total images, 64x64 size.我们可以知道,这组数据描述了400张黑白人脸图像,每张图像的像素点为64*64=4096个;
我们将数据载入,得到如下结果:
图1. 载入数据包后
从图中可以看出,有一个名为“faces”的矩阵,它的大小为4096*400,我们可以想象,400代表着400幅人脸图像,而4096则是每幅图像的特征。因为每幅图像的像素点的确为4096个,这也刚好佐证了我们的猜想。由此可见,矩阵“faces”所表现的正是这400张人脸图像,并且通过4096个特征来刻画每一幅图像,这4096个特征对应于图像的4096个像素点。
图2. 给出的400张人脸图像
从图片可以看出,400张图像描述的是40个不同的人,其中每人都有10张不同角度的人脸图像。
2.2 分类算法:
Knnclassify的作用是,给出已知类别的一组样本,然后对于新输入的样本,用最临近样本的标签推测新样本的标签。
clear all
load olivettifaces
faces=faces; %将矩阵进行转置,使行表示样本,列表示特征
a=[0;0;0;0;0;0;0;0;0;0]; %添加标签
group=[];
for i=1:40
group=[group;a+i];
End
K = 40; % Cross-validataion folds
rule = nearest;
kn = 5; % the number of nearest neighbors
distance = euclidean;
cp = classperf(group);
indices = crossvalind(Kfold,group,K);
for i = 1:K %交叉验证
test = (indices == i); train = ~test;
class = knnclassify(faces(test,:),faces(train,:),group(train,:), kn, distance,rule);
classperf(cp,class,test);
end
Acc = 1 - cp.ErrorRate %正确率
图3. 给样本添加标签
因为只有40个人,我们给样本添加的标签也就只用了40种,分别用数字“1、2、3...40”表示。前十个样本是第一个人,有共同标签“1”,以此类推。
在运行过后,我们得到该算法的准确度:
图4. 当kn=15时的准确率
图5. 当kn=10时的准确率
图6. 当kn=5时的准确率
下面我们从“workspace”中查看分
显示全部