代码块1
data_preprocessing:
dirOutput = dir('*.h5');
fileNames = {dirOutput.name}';
numClasses = size(fileNames,1);
disp('number of classes: ');
disp(numClasses);
options.ReducedDim = 40;
for class_id=2:numClasses
tic;
filename = fileNames{class_id};
disp(['Reading the h5 file: ' ,filename]);
data = h5read(filename, '/fc7');
data = double(bsxfun(@minus, data, mean(data)));
W = PCA(double(data)',options);
data = W'*data;
save([filename(1:end-3) '_40.mat'],'data');
toc;
end
代码块2
idx.m:
clear;clc;
dirOutput = dir('.');
dirNames = {dirOutput.name}';
dirNames = dirNames(3:end-5);
numClasses = size(dirNames,1);
disp('number of classes: ');
disp(numClasses);
for class_id=2:numClasses
tic;
disp(class_id);
frame_names = dir([dirNames{class_id} '/*.jpeg']);
frame_names = {frame_names.name}';
idx{class_id-1} = cell2mat( cellfun(@(x) str2double(x(1:6)), frame_names, 'UniformOutput', false) );
toc;
end
save('idx.mat', idx);
代码块3
compute S.m:
clear;clc;
load class_names;
load idx;
indices = idx;
clear idx;
for i = 1:length(indices)
load([class_names{i} '_40.mat'],'data');
idx = indices{i};
uni_idx = unique(idx);
for j = 1:length(uni_idx)
frames = data(:,idx==uni_idx(j));
S{j} = frames*((frames'*frames+1e-6*eye(size(frames,2)))\frames');
end
save([class_names{i} '_S'],'S');
clear S;