基于PCA与KPCA的SVM人脸识别程序含数据集,有界面,可直接运行.zip


该程序采用MATLAB编写,带有orl_faces人脸数据库。下载解压,可直接运行。程序包含训练,识别精度计算,识别匹配等过程。程序结果将以界面GUI形式展示。
资源截图
代码片段和文件信息
%用KPCA进行人脸识别的Matlab代码 
global h_axes1;
global h_axes2;
global edit2;
h_f=figure(‘name‘‘KPCA人脸识别系统‘‘position‘[300200600400]);
%clf reset;%clf 清除当前的图像的所有自图像,Reset重新设置图像的目标属性为默认值
set(h_f‘defaultuicontrolfontsize‘12);
set(h_f‘defaultuicontrolfontname‘‘宋体‘);

h_axes1=axes(‘parent‘h_f‘position‘[0.20.280.250.56]‘Unit‘‘normalized‘‘visible‘‘on‘);
h_axes2=axes(‘parent‘h_f‘position‘[0.550.280.250.56]‘Unit‘‘normalized‘‘visible‘‘on‘);

figcolor=get(h_f‘color‘);
edit2=uicontrol(h_f‘style‘‘text‘‘position‘[15033030040]...
    ‘backgroundcolor‘figcolor);%动态变化提示
button_open=uicontrol(h_f‘style‘‘push‘‘string‘‘选择照片‘...
‘position‘[250 40 100 50]‘callback‘‘GUIopen‘);
button_recg=uicontrol(h_f‘style‘‘push‘‘string‘‘测试准确率‘...
    ‘position‘[100 40 100 50]‘callback‘‘face‘);
button_match=uicontrol(h_f‘style‘‘push‘‘string‘‘KPCA图像识别‘...
    ‘position‘[400 40 100 50]‘callback‘‘GUIrecg‘);
set(edit2‘string‘‘读取训练数据并训练....‘)
drawnow
allsamples=[];%所有训练图像 
for i=1:40 
    for j=6:10
      a=imread(strcat(‘Datas‘num2str(i)‘‘num2str(j)‘.pgm‘)); 
      %a=imread(strcat(‘./Data/s‘num2str(i)‘/‘num2str(j)‘.jpg‘));
      b=a(1:112*92); % b是行矢量 1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右 
      b=double(b); 
      allsamples=[allsamples; b];  % allsamples 是一个200 * 10304 矩阵,allsamples 中每一行数据代表一张图片。
  end 
end 
 
cov_size=size(allsamples1); 
train_num=cov_size; 
patterns=allsamples; 
for i=1:cov_size 
  for j=i:cov_size 
    K(ij) =(patterns(i:)*patterns(j:)‘+1)^0.7; 
    K(ji) = K(ij); %核函数是对称的
  end 
end 
unit = ones(cov_size cov_size)/cov_size; 
K_n = K - unit*K - K*unit + unit*K*unit; %改变核矩阵以实现数据在高维空间去均值
 
[evecsevals] = eig(K_n); %求去均值后的核矩阵的特征值、特征向量
evals = real(diag(evals)); %取特征值实部
[l1l2]=sort(-1*evals‘); 
evals=l1*(-1); 
evecs=evecs(:l2); % 取排序后特征值对应的特征向量
for i=1:cov_size %因为K为满秩矩阵
  evecs(:i) = evecs(:i)/(sqrt(evals(i))); %这样可以使特征空间中协方差矩阵C的特征向量归一化
end 
 
 
%  90%的贡献率 
dsum = sum(evals); 
    dsum_extract = 0; 
    p = 0; 
    while( dsum_extract/dsum < 0.9) 
        p = p + 1; 
        dsum_extract = sum(evals(1:p)); 
    end 
 

max_ev=p; 
 
 
unit_train = ones(train_numcov_size)/cov_size; 
 
for i=1:train_num 
  for j=1:cov_size 
    K_train(ij) =(patterns(i:)*patterns(j:)‘+1)^0.7; 
  end 
end 
K_train_n = K_train - unit_train*K - K_train*unit + unit_train*K*unit; 
features = zeros(train_num max_ev); 
features = K_train_n * evecs(:1:max_ev); % 训练样本在特征空间的投影
 
 
allcoor = features; 
 
 
 
accu=0; 
% 测试过程 
for i=1:40 
    for j=1:5 %读入40 x 5 副测试图像 
        a=imread(strcat(‘Datas‘num2str(i)‘‘num2str(j)‘.pgm‘)); 
        %a=imread(strcat(‘./Data/s‘num2str(i)‘/‘num2str(j)‘.jpg‘));
        b=a(1:10304); 
        b=double(b); 
        unit_test = ones(1cov_size)/cov_size; 
        K_test = zeros(1cov_size);  
      for j=1:cov_size 
        K_test(j) = (b*patterns(j:)‘+1)^0.7; 
      end 
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-24 16:35  实验代码
     目录           0  2019-05-24 16:48  实验代码KPCA+SVM人脸识别
     目录           0  2019-05-24 16:30  实验代码KPCA+SVM人脸识别Data
     目录           0  2019-05-24 16:30  实验代码KPCA+SVM人脸识别Datas1
     文件       10318  1994-04-18 14:17  实验代码KPCA+SVM人脸识别Datas11.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas110.pgm
     文件       10318  1994-04-18 14:17  实验代码KPCA+SVM人脸识别Datas12.pgm
     文件       10318  1994-04-18 14:17  实验代码KPCA+SVM人脸识别Datas13.pgm
     文件       10318  1994-04-18 14:17  实验代码KPCA+SVM人脸识别Datas14.pgm
     文件       10318  1994-04-18 14:17  实验代码KPCA+SVM人脸识别Datas15.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas16.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas17.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas18.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas19.pgm
     目录           0  2019-05-24 16:30  实验代码KPCA+SVM人脸识别Datas10
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas101.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas1010.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas102.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas103.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas104.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas105.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas106.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas107.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas108.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas109.pgm
     目录           0  2019-05-24 16:30  实验代码KPCA+SVM人脸识别Datas11
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas111.pgm
     文件       10318  1994-04-18 14:07  实验代码KPCA+SVM人脸识别Datas1110.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas112.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas113.pgm
     文件       10318  1994-04-18 14:18  实验代码KPCA+SVM人脸识别Datas114.pgm
............此处省略867个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)