基于matlab的人脸识别课程设计(5)

2019-01-07 19:25

人脸识别方法的分析与研究

附录

% Kernel PCA toy example for k(x,y)=exp(-||x-y||^2/rbf_var), cf. Fig. 4 in

% @article{SchSmoMue98,

% author = \

% title = \% journal = {Neural Computation}, % volume = 10, % issue = 5,

% pages = \% year = 1998}

% This file can be downloaded from http://www.kernel-machines.org. % Last modified: 4 July 2003

% parameters

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% rbf_var = 0.1; xnum = 4; ynum = 2;

max_ev = xnum*ynum;

% (extract features from the first Eigenvectors) x_test_num = 15; y_test_num = 15;

cluster_pos = [-0.5 -0.2; 0 0.6; 0.5 0]; cluster_size = 30;

% generate a toy data set

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% num_clusters = size(cluster_pos,1); train_num = num_clusters*cluster_size; patterns = zeros(train_num, 2); range = 1;

randn('seed', 0);

for i=1:num_clusters,

patterns((i-1)*cluster_size+1:i*cluster_size,1) = cluster_pos(i,1)+0.1*randn(cluster_size,1); patterns((i-1)*cluster_size+1:i*cluster_size,2) = cluster_pos(i,2)+0.1*randn(cluster_size,1); end

test_num = x_test_num*y_test_num;

x_range = -range:(2*range/(x_test_num - 1)):range;

- - - 18 -

人脸识别方法的分析与研究

y_offset = 0.5;

y_range = -range+ y_offset:(2*range/(y_test_num - 1)):range+ y_offset; [xs, ys] = meshgrid(x_range, y_range); test_patterns(:, 1) = xs(:); test_patterns(:, 2) = ys(:);

cov_size = train_num; % use all patterns to compute the covariance matrix

% carry out Kernel PCA

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for i=1:cov_size, for j=i:cov_size,

K(i,j) = exp(-norm(patterns(i,:)-patterns(j,:))^2/rbf_var); K(j,i) = K(i,j); end end

unit = ones(cov_size, cov_size)/cov_size; % centering in feature space!

K_n = K - unit*K - K*unit + unit*K*unit;

[evecs,evals] = eig(K_n); evals = real(diag(evals)); for i=1:cov_size,

evecs(:,i) = evecs(:,i)/(sqrt(evals(i))); end

% extract features

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% do not need the following here - only need test point features %unit_train = ones(train_num,cov_size)/cov_size; %for i=1:train_num, % for j=1:cov_size,

% K_train(i,j) = exp(-norm(patterns(i,:)-patterns(j,:))^2/rbf_var); % end %end

%K_train_n = K_train - unit_train*K - K_train*unit + unit_train*K*unit; tatures = zeros(train_num, max_ev); tatures = K_train_n * evecs(:,1:max_ev);

unit_test = ones(test_num,cov_size)/cov_size; K_test = zeros(test_num,cov_size); for i=1:test_num, for j=1:cov_size,

K_test(i,j) = exp(-norm(test_patterns(i,:)-patterns(j,:))^2/rbf_var);

- - - 19 -

人脸识别方法的分析与研究

end end

K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit; test_features = zeros(test_num, max_ev); test_features = K_test_n * evecs(:,1:max_ev);

% plot it

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1); clf

for n = 1:max_ev,

subplot(ynum, xnum, n);

axis([-range range -range+y_offset range+y_offset]);

imag = reshape(test_features(:,n), y_test_num, x_test_num); axis('xy')

colormap(gray); hold on;

pcolor(x_range, y_range, imag); shading interp

contour(x_range, y_range, imag, 9, 'b'); plot(patterns(:,1), patterns(:,2), 'r.')

text(-1,1.65,sprintf('Eigenvalue=%4.3f', evals(n))); hold off; end

- - - 20 -

人脸识别方法的分析与研究

- - - 21 -


基于matlab的人脸识别课程设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:曲柄连杆机构 习题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: