face recognition matlab code 人脸识别

实现了一下linear regression classification for face recognition


Linear Regression for Face Recognition from PAMI, 2010


%contact quxiaochao 在 gmail.com



function FR_LR
close all;
clear all;
clc;






%%%%%%  load face database (AR)
load('N.mat')
load('H.mat')
load('S.mat')
load('A.mat')


load('N_label.mat')
load('H_label.mat')
load('S_label.mat')
load('A_label.mat')






Tr_DAT   =   double([S  ]);
trls     =   [S_label  ]';
Tt_DAT   =   double([N H A ]);
ttls     =   [N_label H_label A_label]';
clear NewTest_DAT NewTrain_DAT testlabels trainlabels



%%%%%% ORL database
%
% load('ORL_DAT_1_train.mat')
% Tr_DAT = double(ORL_DAT{1});
% Tt_DAT = double(ORL_DAT{2});
% trls = ORL_DAT{3};
% ttls = ORL_DAT{4};
% trls = trls'
% ttls = ttls'
%


% load(['AR_DAT']);
% Tr_DAT   =   double(NewTrain_DAT(:,:));
% trls     =   trainlabels(:);
% Tt_DAT   =   double(NewTest_DAT(:,:));
% ttls     =   testlabels(:);
% clear NewTest_DAT NewTrain_DAT testlabels trainlabels


for i = 1:size(Tr_DAT,2) %L2 norm
    temp = Tr_DAT(:,i);
    Tr_DAT(:,i) = Tr_DAT(:,i)./(norm(temp));
end


for i = 1:size(Tt_DAT,2)
    temp = Tt_DAT(:,i);
    Tt_DAT(:,i) = Tt_DAT(:,i)./(norm(temp));
end


class_set = unique(trls)
class_model_projection_matrix = cal_class_model(Tr_DAT,trls); % calculate class specific  projection matrix


for i = 1:size(Tt_DAT,2) % classify test faces
    temp = Tt_DAT(:,i);
    label(i) = classify_face(class_model_projection_matrix,temp)
end


difference = find(label' ~= ttls);
ac = 1 - size(difference,1)/(size(Tt_DAT,2)) % accuracy




function class_model_projection_matrix = cal_class_model(Tr_DAT,trls)
class_set = unique(trls);
for i = 1:1:size(class_set,1)
    index = find(trls == class_set(i));
    class_model_data = Tr_DAT(:,index);
    class_model_projection_matrix{i} = class_model_data*inv(class_model_data'*class_model_data)*class_model_data';
    
end




function label = classify_face(p_matrix,test_face)
for i = 1:1:size(p_matrix,2)
    test_face_predicted = p_matrix{i}*test_face;
    error = test_face_predicted - test_face;
    class_error(i) = norm(error);
end
[class_error index] = sort(class_error);
label = index(1);



http://blog.csdn.net/xiaochaoqu/article/details/17199763

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值