orl_faces数据集分享
orl_faces数据集
今天整理电脑时发现还有这个数据集,本想删掉但想起当初找的时候来之不易。明明github上开源的东西,百度一搜非得是开会员,要这个要那个的,秉着开源精神(关注或者点赞都可以/doge)我今天就把网盘链接放这了,需要的自取:
链接:https://pan.baidu.com/s/1Iq52vrjYOBvksyNcZz_zCg
提取码:zan0
附上当时PCA人脸识别的matlab代码
function FaceRecognition
%本算法使用的是orl_faces数据集(ORL人脸数据集共包含40个不同人的400张图像,是在1992年4月至1994年4月期间由英国剑桥的Olivetti研究实验室创建)
%注意修改数据集文件路径,共5处
clear % calc xmean,sigma and its eigen decomposition
close all
%%
allsamples=[];%所有训练图像
syms line %line用来分割10组(一共有40个人,每个人有10张照片,40个人的一张照片作为一组)照片,分别用来训练和测试准确度
line=9;%用一个人的9张照片训练,剩下一张用来测试
for i=1:40%40个人 for j=1:line %取每个人的前line张照片 a=imread(strcat('E:\orl_faces\s',num2str(i),'\',num2str(j),'.pgm')); b=a(1:112*92); % b是行矢量 1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右 b=double(b); allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M=200 end
end
%%
train=40*line;%用来训练的总图片数量
samplemean=mean(allsamples); % 平均图片,1 × N
figure%平均图
display('平均脸:')
imshow(mat2gray(reshape(samplemean,112,92)));
%%
for i=1:train xmean(i,:)=allsamples(i,:)-samplemean; % xmean是一个M × N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”
end;
figure%差值图
display('差值脸:')
imshow(mat2gray(reshape(xmean(1,:),112,92)));
%%
sigma=xmean*xmean'; % M * M 阶矩阵
[v,d]=eig(sigma);
d1=diag(d);
[d2,index]=sort(d1); %以升序排序
cols=size(v,2);% 特征向量矩阵的列数for i=1:cols vsort(:,i) = v(:, index(cols-i+1) ); % vsort 是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量,每一列构成一个特征向量 dsort(i) = d1( index(cols-i+1) ); % dsort 保存的是按降序排列的特征值,是一维行向量
end %完成降序排列 %以下选择90%的能量
dsum = sum(dsort);
dsum_extract = 0;
p = 0;
while( dsum_extract/dsum < 0.9) p = p + 1; dsum_extract = sum(dsort(1:p));
end
a=1:1:train;
for i=1:1:train
y(i)=sum(dsort(a(1:i)) );
end
%%
figure
y1=ones(1,train);
plot(a,y/dsum,a,y1*0.9,'linewidth',2);
grid
title('前n个特征特占总的能量百分比');
xlabel('前n个特征值');
ylabel('占百分比');
%%
figure
plot(a,dsort/dsum,'linewidth',2);
grid
title('第n个特征特占总的能量百分比');
xlabel('第n个特征值');
ylabel('占百分比');
%%
i=1; % (训练阶段)计算特征脸形成的坐标系
while (i<=p && dsort(i)>0) base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化,特征脸i = i + 1;
end
%%
allcoor = allsamples * base; accu = 0; % 测试过程
for i=1:40 for j=(line+1):10 %读入数据集中剩下的测试图像 a=imread(strcat('E:\orl_faces\s',num2str(i),'\',num2str(j),'.pgm')); b=a(1:10304); b=double(b); tcoor= b * base; %计算坐标,是1×p阶矩阵 for k=1:(train) mdist(k)=norm(tcoor-allcoor(k,:)); end; %三阶近邻 [dist,index2]=sort(mdist); class1=floor(index2(1)/line)+1; class2=floor(index2(2)/line)+1; class3=floor(index2(3)/line)+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;
display('模型识别率')
accuracy=accu/(400-train) %输出识别率
%%
display('比如说,我想找这第七个人,这是他第10张照片')
i1=7; j1=10;%数据集中的第7个人,其第10张照片
figure
imshow((strcat('E:\orl_faces\s',num2str(i1),'\',num2str(j1),'.pgm')));
for i=1:40 a=imread(strcat('E:\orl_faces\s',num2str(i1),'\',num2str(j1),'.pgm'));%这行意思是告诉机器要找谁b=a(1:10304); b=double(b); tcoor= b * base; %计算坐标,是1×p阶矩阵 for k=1:trainmdist(k)=norm(tcoor-allcoor(k,:)); end;[dist,index2]=sort(mdist); %三阶近邻 class1=floor(index2(1)/line)+1; class2=floor(index2(2)/line)+1; class3=floor(index2(3)/line)+1; if class1~=class2 && class2~=class3 class=class1; elseif class1==class2 class=class1; elseif class2==class3 class=class2; end; if class==i figure%平均图display('选了s7的第10张照片,该张照片没训练过,机器不认识,如果识别出这张照片是s7这个人,那就随便挑一张(这里就挑j1-1即第9张)显示')imshow(strcat('E:\orl_faces\s',num2str(i),'\',num2str(j1-1),'.pgm')); end;
end
运行效果
视频链接: https://imgbed4iloker.oss-cn-hangzhou.aliyuncs.com/video/video/matlab_pca%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB_batch.mp4
解说下次有空再写
orl_faces数据集分享相关推荐
- 数据集分享 | IWR1642呼吸心跳数据集
本文编辑:@调皮连续波,保持关注调皮哥,获得更多学习内容和建议! 各位大佬好,我是调皮哥,感谢大家的关注. 因为疫情,有的人回不了学校的实验室,因此早在先前我就想为大家采集一些数据,提供给大家做算法分 ...
- 最全自动驾驶数据集分享系列八 | 仿真数据集
目前关于自动驾驶数据集你想知道的,应该都在这里了,这是「整数智能」自动驾驶数据集八大系列分享之系列八: 「本期划重点」 全球首个多传感器虚拟标注数据集:51WORLD 最大的自动驾驶多任务合成数据集: ...
- kaggle数据集、mnist数据集、imdb数据集分享
数据集文件分享: kaggle数据集.mnist数据集.imdb数据集分享 mnist 数据集 链接:https://pan.baidu.com/s/1g5GQf1RhRprUNizwkazdJQ 提 ...
- Python爬虫下载加州高速路网PeMS交通流量数据集以及交通公开数据集分享
由于PeMS(PeMS)下载交通数据集一次只能下载一周数据,并且要一次一次的点击,比较麻烦. 故写出了一个小的爬虫程序,自动下载PeMS路网上VDS的数据集(前提需要FQ,需要挂全局代理) 下载为5分 ...
- 最全自动驾驶数据集分享系列一|目标检测数据集(2/3)
目前关于自动驾驶数据集你想知道的,应该都在这里了,这是「整数智能」自动驾驶数据集八大系列分享之系列一: 「本期划重点」 清华大学推出全球首个车路协同自动驾驶研究数据集 Nexar视频数据集覆盖70多个 ...
- 最全自动驾驶数据集分享系列一|目标检测数据集(3/3)
目前关于自动驾驶数据集你想知道的,应该都在这里了,这是「整数智能」自动驾驶数据集八大系列分享之系列一: 「本期划重点」 Mapillary推出最大.最多样化的公开交通标志数据集,覆盖全球六大洲 DTL ...
- 公开数据集分享(一)-MMWHS
公众号中有粉丝私信我,向我咨询公开数据集(MMWHS)的数据,下面我给大家大概介绍一下这个数据集,并提供我之前关于这个数据集做的一些工作. MMWHS-是一个全心脏分割的工作,一共是8类,数据集的具体 ...
- 最全遥感样本数据集分享:场景识别数据集
之前给大家介绍了基础的遥感数据知识和智能遥感任务,本期就来盘点一下在遥感模型训练中常用的数据集. 从应用领域出发,遥感影像样本数据集可分为8个类型:遥感场景识别.土地覆被/利用分类.专题要素提取.变化 ...
- 深度学习【道路提取】:马萨诸塞州道路数据集分享
最近忙着弄毕业论文,方向是道路自动提取方向的,在网上找了好久的相关的数据集,也只有这个的了马萨诸塞州道路数据集,写了个爬虫,多线程,挂着VPN也要用一天(家里网不太好哈哈),拿出来分享一下,因为我看网 ...
- 20 w 新闻数据集分享
新闻系列的分享进入尾声了,在开启这个系列前,我说过一个目标是,让 nlper 有足够多的新闻语料数据集去训练. 不知不觉中,新闻聚合网站(https://xt98.tech:9494) 自从 2021 ...
最新文章
- JScrollPane 滚动处理
- java resume过时方法_学点开发|关于Java多线程用法解析
- SAP一句话入门:Human Resource
- spoj 	Help the Military Recruitment Office!
- imageNamed和imageWithContextOfFile的区别?哪个性能高
- transport request 实现原理
- 机器学习朴素贝叶斯算法+tkinter库界面实现好瓜坏西瓜分类
- 用python画面积图_Python笔记:用matplotlib绘制面积图
- java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...
- 数据库工作笔记14---win10系统安装sqlserver2005提示服务无法启动
- POJ NOI MATH-7657 连乘积末尾0的个数
- 常见并发工具的使用和原理解析——Condition(重点在第五节)
- 小程序Git版本管理
- 单例模式中的懒汉模式和饿汉模式是什么?区别又是什么?
- html制作作业提交入口,制作网页详细操作步骤
- linux病毒扫描工具,linux病毒扫描工具ClamAV使用
- 电脑壁纸软件(Bing Wallpaper)
- echarts-特殊需求
- 签了工作之后才发现,自己太草率了.....我看过的关于职业规划最好最全面的一篇文章...
- 【全文检索】sqlite-fts4和pgsql的全文检索对比