下载频道> 资源分类> matlab源码> 算法设计> 人脸识别识别正确率仿真源码程序

标题:人脸识别识别正确率仿真源码程序
分享到:

所属分类: 算法设计 资源类型: 文件大小: 6.24 KB 上传时间: 2016-01-28 20:23:32 下载次数: 8 资源积分:1分 提 供 者: xiaopeng2 人脸识别识别正确率仿真源码程序
内容:
人脸识别识别正确率仿真源码程序,程序员在编程的过程中可以参考学习使用,希望对IT程序员有用,此源码程序简单易懂、方便阅读,有很好的学习价值!
%faces.mat为ORL人脸图像库,共40人,每人10幅图像,其中每人的前5幅作为训练样本,
%后5幅作为测试分类样本,统计正确分类率。分类准则为余弦距离分类。
 
%真实的图像尺寸为112x92=10304,列向量堆积对应人脸库矩阵的每一列。 
%%人脸数从10:10:400,分别求出其识别概率。。。做出图形趋势图。。
 clear all
clc
load  faces.mat;
a1=faces;%%样本库
pattennumbers=40;
accu=zeros(1,pattennumbers);
 
 
for ii=1:pattennumbers
    
  
%for i=1:20
%f=reshape(a(:,i),112,92);
%subplot(5,4,i);
%imshow(f);
%imagesc(f);
%end
 
%patten提取用pca method
%其中每人的前5幅作为训练样本,训练样本总数为200,后5幅作为测试分类样本,
%测试样本总数也为200
%clear all
i=0;
j=0;
trainsamples=[];
 
testsamples=[];
 
index1=[1 2 3 4 5];
index2=[6 7 8 9 10];
    
    
    
numbpatten=ii*10;
 
while(j<numbpatten)
    
 
   index1=[j+1 j+2 j+3 j+4 j+5];
   index2=[j+6 j+7 j+8 j+9 j+10];
   trainsamples=[trainsamples,a1(:,index1)] ;
   testsamples=[testsamples,a1(:,index2)];
 
   
  j=j+10;
  
   
end
 
 
 
 
 
 
 
%% 通过训练样本求出人脸的特征子空间U
%training
 
num=numbpatten/2;%训练样品数
trainsamples=trainsamples';
testsamples=testsamples';
trainsamplesmean=mean(trainsamples);%samplesmean维数为1*10304,为训练样本的均值行向量 
testsamplesmean=mean(testsamples);
trainallsamples=trainsamples-repmat(trainsamplesmean,num,1);%200*10304
testallsamples=testsamples-repmat(testsamplesmean,num,1);
trainallsamples=trainallsamples';%10304*200 为A矩阵
testallsamples=testallsamples';
 
a=trainallsamples;
 
Gt=a'*a;
 
[V D]=eig(Gt);
[PD index2]=sort(-diag(D));
PV=V(:,index2);
 
dim=num;%%可以根据特征谱信息来选取
%dim=num;
PV=PV(:,1:dim);%200*50 PY为特征脸空间
 
U=trainallsamples*PV;%为特征脸空间 10304*100
 
%% (GA)遗传算法进行人脸特征的筛选(U)
%遗传算法作用于特征脸空间空间后变为U1
 
%% 获得训练样本的特征
Y1=zeros(dim,num);%为训练样本的特征100*200
for i=1:num
    Y1(:,i)=U'*trainallsamples(:,i);
      
    
end
 
 
%% 获得测试样本特征
Y2=zeros(dim,num);%为训练样本的特征100*200
for i=1:num
    Y2(:,i)=U'*testallsamples(:,i);
      
    
end
  
%%
% trainsamples is 训练样本,testsamples is 测试样本
 
 %Y1=Getpatten(trainsamples,numbpatten);%为训练样本的特征空间 100*200
 %Y2=Getpatten(testsamples,numbpatten);%为测试样本的特征空间 100*200
 
 
%% 采用余弦距离分类器进行分类
num=numbpatten/2;
%num测试人脸数
  mdist=zeros(1,num);
for i=1:num
    
    for j=1:num
     
    mdist(j)=(Y1(:,j)'*Y2(:,i))/(norm(Y1(:,j))*norm(Y2(:,i)));%余弦距离分类器
    
               %mdist(j)=norm( Y1(:,j)- Y2(:,i) );
    
    end  
    
    [dist ,index200]=sort(mdist);
    
     class=ceil(index200(num)/5);
     %index200(num)
     %class=ceil(index200(1)/5);
    i1=ceil(i/5);
     %ii
 
     
    if class==i1;
            accu(1,ii)=(accu(1,ii)+1);
           % accu
     end
  
    
end
%ii
% accu(1,ii)
 
  accu(1,ii)= accu(1,ii)/num;
 
 
end
 
 
plot(accu)
 
%%2010 ,by  哈工程alin
 
 
 
 
 

关键词: 正确率 人脸 源码

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
库纳格流体控制系统(上海)有限公司 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved