Adapting training scripts to new output format (Bosphorus and BP4D).

This commit is contained in:
Tadas Baltrusaitis 2018-02-12 20:16:26 +00:00
parent 89d9647a85
commit 83d8697bcd
23 changed files with 243 additions and 125 deletions

View File

@ -9,10 +9,11 @@ end
find_FERA2011;
output_dir = 'E:\datasets\face_datasets_processed\fera2011';
FERA2011_dir = [FERA2011_dir, '/../'];
% Go two levels deep
fera_dirs = dir([FERA2011_dir, '/train*']);
fera_dirs = dir([FERA2011_dir, '*']);
fera_dirs = fera_dirs(3:end);
parfor f1=1:numel(fera_dirs)
fera_dirs_level_2 = dir([FERA2011_dir, fera_dirs(f1).name]);

View File

@ -10,7 +10,7 @@ find_SEMAINE;
% Go two levels deep
semaine_dirs = train_recs;
output_dir = 'E:\datasets\face_datasets_processed\semaine';
output_dir = 'E:\datasets\face_datasets_processed\semaine\train';
parfor f1=1:numel(semaine_dirs)
@ -33,7 +33,7 @@ end
%%
semaine_dirs = devel_recs;
out_loc = [SEMAINE_dir, '../processed_data/devel/'];
output_dir = 'E:\datasets\face_datasets_processed\semaine\devel';
parfor f1=1:numel(semaine_dirs)

View File

@ -6,7 +6,7 @@ else
fprintf('Bosphorus dataset location not found (or not defined)\n');
end
hog_data_dir = ['D:\Datasets\face_datasets'];
hog_data_dir = ['E:\Datasets\face_datasets_processed\bosph'];
all_recs = dir([Bosphorus_dir, '/BosphorusDB/BosphorusDB/bs*']);
all_recs_mat = cat(1, all_recs.name);

View File

@ -1,5 +1,5 @@
function [data_train, labels_train, data_devel, labels_devel, raw_devel, PC, means_norm, stds_norm, valid_ids_test] = ...
Prepare_HOG_AU_data_generic(train_users, devel_users, au_train, bp4d_dir, hog_data_dir, pca_file)
Prepare_HOG_AU_data_generic(train_users, devel_users, au_train, bp4d_dir, features_dir)
%%
addpath(genpath('../../data extraction/'));
@ -11,9 +11,9 @@ labels_other = cat(1, labels_other{:});
% First extracting the labels
[ labels_train, valid_ids_train, vid_ids_train ] = extract_BP4D_labels(bp4d_dir, train_users, au_train);
train_geom_data = Read_geom_files(train_users, hog_data_dir);
train_geom_data = Read_geom_files(train_users, features_dir);
% Reading in the HOG data (of only relevant frames)
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(train_users, hog_data_dir);
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(train_users, features_dir);
train_appearance_data = cat(2, train_appearance_data, train_geom_data);
% Subsample the data to make training quicker
@ -67,8 +67,8 @@ vid_ids_train_string = vid_ids_train_string(reduced_inds,:);
[ labels_devel, valid_ids_devel, vid_ids_devel ] = extract_BP4D_labels(bp4d_dir, devel_users, au_train);
% Reading in the HOG data (of only relevant frames)
devel_geom_data = Read_geom_files(devel_users, hog_data_dir);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(devel_users, hog_data_dir);
devel_geom_data = Read_geom_files(devel_users, features_dir);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(devel_users, features_dir);
devel_appearance_data = cat(2, devel_appearance_data, devel_geom_data);
labels_devel = cat(1, labels_devel{:});

View File

@ -1,5 +1,5 @@
function [data_train, labels_train, vid_ids_train_string, data_devel, labels_devel, vid_ids_devel_string, raw_devel, PC, means_norm, stds_norm, success_devel] = ...
Prepare_HOG_AU_data_generic_intensity(train_users, devel_users, au_train, bp4d_dir, hog_data_dir)
Prepare_HOG_AU_data_generic_intensity(train_users, devel_users, au_train, bp4d_dir, features_dir)
%%
addpath(genpath('../data extraction/'));
@ -10,10 +10,10 @@ au_other = setdiff([6, 10, 12, 14, 17], au_train);
[ labels_other, ~, ~ ] = extract_BP4D_labels_intensity(bp4d_dir, train_users, au_other);
labels_other = cat(1, labels_other{:});
train_geom_data = Read_geom_files(train_users, hog_data_dir);
train_geom_data = Read_geom_files(train_users, features_dir);
% Reading in the HOG data (of only relevant frames)
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(train_users, hog_data_dir);
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(train_users, features_dir);
train_appearance_data = cat(2, train_appearance_data, train_geom_data);
% Subsample the data to make training quicker
@ -65,9 +65,9 @@ end
% First extracting the labels
[ labels_devel, valid_ids_devel, vid_ids_devel ] = extract_BP4D_labels_intensity(bp4d_dir, devel_users, au_train);
devel_geom_data = Read_geom_files(devel_users, hog_data_dir);
devel_geom_data = Read_geom_files(devel_users, features_dir);
% Reading in the HOG data (of only relevant frames)
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(devel_users, hog_data_dir);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(devel_users, features_dir);
devel_appearance_data = cat(2, devel_appearance_data, devel_geom_data);
valid_ids_devel = logical(cat(1, valid_ids_devel{:}));

View File

@ -1,5 +1,5 @@
function [data_train, labels_train, vid_ids_train_string, data_devel, labels_devel, vid_ids_devel_string, raw_devel, PC, means_norm, stds_norm, success_devel] = ...
Prepare_HOG_AU_data_generic_intensity_dynamic(train_users, devel_users, au_train, bp4d_dir, hog_data_dir)
Prepare_HOG_AU_data_generic_intensity_dynamic(train_users, devel_users, au_train, bp4d_dir, features_dir)
%%
addpath(genpath('../data extraction/'));
@ -10,10 +10,10 @@ au_other = setdiff([6, 10, 12, 14, 17], au_train);
[ labels_other, ~, ~ ] = extract_BP4D_labels_intensity(bp4d_dir, train_users, au_other);
labels_other = cat(1, labels_other{:});
train_geom_data = Read_geom_files_dynamic(train_users, hog_data_dir);
train_geom_data = Read_geom_files_dynamic(train_users, features_dir);
% Reading in the HOG data (of only relevant frames)
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files_dynamic_pp(train_users, hog_data_dir);
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files_dynamic_pp(train_users, features_dir);
train_appearance_data = cat(2, train_appearance_data, train_geom_data);
% Subsample the data to make training quicker
@ -65,9 +65,9 @@ end
% First extracting the labels
[ labels_devel, valid_ids_devel, vid_ids_devel ] = extract_BP4D_labels_intensity(bp4d_dir, devel_users, au_train);
devel_geom_data = Read_geom_files_dynamic(devel_users, hog_data_dir);
devel_geom_data = Read_geom_files_dynamic(devel_users, features_dir);
% Reading in the HOG data (of only relevant frames)
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files_dynamic_pp(devel_users, hog_data_dir);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files_dynamic_pp(devel_users, features_dir);
devel_appearance_data = cat(2, devel_appearance_data, devel_geom_data);
valid_ids_devel = logical(cat(1, valid_ids_devel{:}));

View File

@ -7,10 +7,10 @@ function [geom_data, valid_ids] = Read_geom_files(users, hog_data_dir)
for i=1:numel(users)
geom_files = dir([hog_data_dir, '/train/', users{i} '*.params.txt']);
geom_files = dir([hog_data_dir, '/train/', users{i} '*.csv']);
geom_dir = [hog_data_dir, '/train/'];
if(isempty(geom_files))
geom_files = dir([hog_data_dir, '/devel/', users{i} '*.params.txt']);
geom_files = dir([hog_data_dir, '/devel/', users{i} '*.csv']);
geom_dir = [hog_data_dir, '/devel/'];
end
@ -20,14 +20,25 @@ function [geom_data, valid_ids] = Read_geom_files(users, hog_data_dir)
m_file = [geom_dir, '/' nm '.params.mat'];
if(~exist(m_file, 'file'))
if(i == 1)
tab = readtable(geom_file);
column_names = tab.Properties.VariableNames;
valid_ind = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'valid'));
shape_inds = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'p_'));
end
res = dlmread(geom_file, ',', 1, 0);
save(m_file, 'res');
valid = res(:, valid_ind) > 0.7;
res = res(:, shape_inds);
% Do not consider global parameters
res = res(:, 7:end);
save(m_file, 'res', 'valid');
else
load(m_file);
end
valid = res(:, 4);
res = res(:, 11:end);
actual_locs = res * V';
res = cat(2, actual_locs, res);

View File

@ -7,10 +7,10 @@ function [geom_data, valid_ids] = Read_geom_files_dynamic(users, hog_data_dir)
for i=1:numel(users)
geom_files = dir([hog_data_dir, '/train/', users{i} '*.params.txt']);
geom_files = dir([hog_data_dir, '/train/', users{i} '*.csv']);
geom_dir = [hog_data_dir, '/train/'];
if(isempty(geom_files))
geom_files = dir([hog_data_dir, '/devel/', users{i} '*.params.txt']);
geom_files = dir([hog_data_dir, '/devel/', users{i} '*.csv']);
geom_dir = [hog_data_dir, '/devel/'];
end
@ -22,15 +22,26 @@ function [geom_data, valid_ids] = Read_geom_files_dynamic(users, hog_data_dir)
m_file = [geom_dir, '/' nm '.params.mat'];
if(~exist(m_file, 'file'))
if(i == 1)
tab = readtable(geom_file);
column_names = tab.Properties.VariableNames;
valid_ind = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'valid'));
shape_inds = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'p_'));
end
res = dlmread(geom_file, ',', 1, 0);
save(m_file, 'res');
valid = res(:, valid_ind) > 0.7;
res = res(:, shape_inds);
% Do not consider global parameters
res = res(:, 7:end);
save(m_file, 'res', 'valid');
else
load(m_file);
end
valid = res(:, 4);
res = res(:, 11:end);
actual_locs = res * V';
res = cat(2, actual_locs, res);

View File

@ -32,7 +32,7 @@ for a=1:numel(aus)
rest_aus = setdiff(all_aus, au);
% load the training and testing data for the current fold
[train_samples, train_labels, valid_samples, valid_labels, ~, PC, means, scaling] = Prepare_HOG_AU_data_generic_dynamic(train_recs, devel_recs, au, BP4D_dir, hog_data_dir_BP4D, pca_loc);
[train_samples, train_labels, valid_samples, valid_labels, ~, PC, means, scaling] = Prepare_HOG_AU_data_generic_dynamic(train_recs, devel_recs, au, BP4D_dir, hog_data_dir_BP4D);
train_samples = sparse(train_samples);
valid_samples = sparse(valid_samples);

View File

@ -32,7 +32,7 @@ for a=1:numel(aus)
rest_aus = setdiff(all_aus, au);
% load the training and testing data for the current fold
[train_samples, train_labels, valid_samples, valid_labels, ~, PC, means, scaling] = Prepare_HOG_AU_data_generic(train_recs, devel_recs, au, BP4D_dir, hog_data_dir_BP4D, pca_loc);
[train_samples, train_labels, valid_samples, valid_labels, ~, PC, means, scaling] = Prepare_HOG_AU_data_generic(train_recs, devel_recs, au, BP4D_dir, hog_data_dir_BP4D);
train_samples = sparse(train_samples);
valid_samples = sparse(valid_samples);

View File

@ -35,7 +35,7 @@ for a=1:numel(aus)
rest_aus = setdiff(all_aus, au);
% load the training and testing data for the current fold
[train_samples, train_labels, ~, valid_samples, valid_labels, vid_ids_devel, ~, PC, means, scaling, success_devel] = Prepare_HOG_AU_data_generic_intensity(train_recs, devel_recs, au, BP4D_dir_int, hog_data_dir_BP4D, pca_loc);
[train_samples, train_labels, ~, valid_samples, valid_labels, vid_ids_devel, ~, PC, means, scaling, success_devel] = Prepare_HOG_AU_data_generic_intensity(train_recs, devel_recs, au, BP4D_dir_int, hog_data_dir_BP4D);
ignore = valid_labels == 9;

View File

@ -35,7 +35,7 @@ for a=1:numel(aus)
rest_aus = setdiff(all_aus, au);
% load the training and testing data for the current fold
[train_samples, train_labels, ~, valid_samples, valid_labels, vid_ids_devel, ~, PC, means, scaling, success_devel] = Prepare_HOG_AU_data_generic_intensity(train_recs, devel_recs, au, BP4D_dir_int, hog_data_dir_BP4D, pca_loc);
[train_samples, train_labels, ~, valid_samples, valid_labels, vid_ids_devel, ~, PC, means, scaling, success_devel] = Prepare_HOG_AU_data_generic_intensity(train_recs, devel_recs, au, BP4D_dir_int, hog_data_dir_BP4D);
ignore = valid_labels == 9;

View File

@ -28,7 +28,7 @@ else
end
if(exist('BP4D_dir', 'var'))
hog_data_dir = [BP4D_dir, '../processed_data/'];
hog_data_dir = 'E:\datasets\face_datasets_processed\bp4d/';
end
train_recs = {'F001', 'F003', 'F005', 'F007', 'F009', 'F011', 'F013', 'F015', 'F017', 'F019', 'F021', 'F023', 'M001', 'M003', 'M005', 'M007', 'M009', 'M011', 'M013', 'M015' 'M017'};

View File

@ -1,5 +1,5 @@
function [data_train, labels_train, data_devel, labels_devel, raw_devel, PC, means_norm, stds_norm, devel_ids, devel_success] = ...
Prepare_HOG_AU_data(train_users, devel_users, au_train, rest_aus, Bosphorus_dir, hog_data_dir)
Prepare_HOG_AU_data(train_users, devel_users, au_train, rest_aus, Bosphorus_dir, params_data_dir)
%%
addpath(genpath('../data extraction/'));
@ -10,9 +10,8 @@ addpath(genpath('../data extraction/'));
[ labels_other, ~, ~ ] = extract_Bosphorus_labels(Bosphorus_dir, train_users, rest_aus);
% Reading in the HOG data (of only relevant frames)
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(filenames, [hog_data_dir, '/hog_aligned_rigid_b']);
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files(filenames, params_data_dir);
params_data_dir = [hog_data_dir, '/model_params_b'];
[train_geom_data] = Read_geom_files(filenames, params_data_dir);
% Subsample the data to rebalance it
@ -60,7 +59,7 @@ end
[ labels_devel, valid_ids_devel, filenames_devel ] = extract_Bosphorus_labels(Bosphorus_dir, devel_users, au_train);
% Reading in the HOG data (of only relevant frames)
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(filenames_devel, [hog_data_dir, '/hog_aligned_rigid_b']);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files(filenames_devel, params_data_dir);
devel_success = valid_ids_devel_hog;
devel_ids = vid_ids_devel_string;

View File

@ -1,5 +1,5 @@
function [data_train, labels_train, data_devel, labels_devel, raw_devel, PC, means_norm, stds_norm, devel_ids, devel_success] = ...
Prepare_HOG_AU_data_dynamic(train_users, devel_users, au_train, rest_aus, Bosphorus_dir, hog_data_dir)
Prepare_HOG_AU_data_dynamic(train_users, devel_users, au_train, rest_aus, Bosphorus_dir, params_data_dir)
%%
addpath(genpath('../data extraction/'));
@ -10,9 +10,8 @@ addpath(genpath('../data extraction/'));
[ labels_other, ~, ~ ] = extract_Bosphorus_labels(Bosphorus_dir, train_users, rest_aus);
% Reading in the HOG data (of only relevant frames)
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files_dynamic(filenames, [hog_data_dir, '/hog_aligned_rigid_b']);
[train_appearance_data, valid_ids_train_hog, vid_ids_train_string] = Read_HOG_files_dynamic(filenames, params_data_dir);
params_data_dir = [hog_data_dir, '/model_params_b'];
[train_geom_data] = Read_geom_files_dynamic(filenames, params_data_dir);
if(numel(train_users) > 0)
@ -59,7 +58,7 @@ end
[ labels_devel, valid_ids_devel, devel_files ] = extract_Bosphorus_labels(Bosphorus_dir, devel_users, au_train);
% Reading in the HOG data (of only relevant frames)
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files_dynamic(devel_files, [hog_data_dir, '/hog_aligned_rigid_b']);
[devel_appearance_data, valid_ids_devel_hog, vid_ids_devel_string] = Read_HOG_files_dynamic(devel_files, params_data_dir);
devel_success = valid_ids_devel_hog;
devel_ids = vid_ids_devel_string;

View File

@ -6,14 +6,25 @@ function [geom_data, valid_ids] = Read_geom_files(users, model_param_data_dir)
load('../../pca_generation/pdm_68_aligned_wild.mat');
for i=1:numel(users)
geom_file = [model_param_data_dir, '/' users{i} '.txt'];
geom_file = [model_param_data_dir, '/' users{i} '.csv'];
if(i == 1)
tab = readtable(geom_file);
column_names = tab.Properties.VariableNames;
valid_ind = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'confidence'));
shape_inds = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'p_'));
end
res = dlmread(geom_file, ',', 1, 0);
valid = res(:, 4);
res = res(:, 11:end);
% Check the confidence of detection
valid = res(:, valid_ind) > 0.7;
res = res(:, shape_inds);
% Do not consider global parameters
res = res(:, 7:end);
actual_locs = res * V';
res = cat(2, actual_locs, res);

View File

@ -9,17 +9,25 @@ function [geom_data, valid_ids] = Read_geom_files_dynamic(users, model_param_dat
for i=1:numel(users)
geom_file = [model_param_data_dir, '/' users{i} '.txt'];
geom_file = [model_param_data_dir, '/' users{i} '.csv'];
user_files = cat(1, user_files, str2num(users{i}(3:5)));
if(i == 1)
tab = readtable(geom_file);
column_names = tab.Properties.VariableNames;
valid_ind = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'confidence'));
shape_inds = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'p_'));
end
m_file = [model_param_data_dir, '/', users{i}, '.mat'];
res = dlmread(geom_file, ',', 1, 0);
valid = res(:, 4);
res = res(:, 11:end);
res = dlmread(geom_file, ',', 1, 0);
valid = res(:, valid_ind) > 0.7;
res = res(:, shape_inds);
% Do not consider global parameters
res = res(:, 7:end);
actual_locs = res * V';
res = cat(2, actual_locs, res);

View File

@ -51,9 +51,9 @@ for a=1:numel(aus)
svs = bsxfun(@times, PC, 1./scaling') * w;
name = sprintf('models/AU_%d_dyn_intensity.dat', au);
name = sprintf('models/AU_%d_static_intensity.dat', au);
write_lin_dyn_svr(name, means, svs, b);
write_lin_dyn_svr(name, means, svs, b, 0);
name = sprintf('results_Bosphorus_devel/AU_%d_dyn_intensity.mat', au);

View File

@ -1,48 +1,93 @@
clear;
face_processed_dir = 'E:\datasets\face_datasets_processed';
%% CK+, FERA2011 and UNBC datasets
hog_dir = 'D:\Datasets/face_datasets/hog_aligned_rigid/';
hog_files = dir([hog_dir, '*.hog']);
%% CK+
hog_dir = [face_processed_dir, '/ck+/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data, valid_inds, vid_ids_train] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data = appearance_data(valid_inds,:);
vid_ids_train = vid_ids_train(valid_inds,:);
%% Bosphorus
hog_dir = [face_processed_dir, '/bosph/'];
hog_files = dir([hog_dir '*.hog']);
% Remove non-frontal
frontal = true(size(hog_files));
for i = 1:numel(frontal)
if(~isempty(strfind(hog_files(i).name, 'YR')) || ~isempty(strfind(hog_files(i).name, 'PR'))|| ~isempty(strfind(hog_files(i).name, 'CR')))
frontal(i) = false;
end
end
hog_files = hog_files(frontal);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% FERA2011
hog_dir = [face_processed_dir, '/fera2011/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% UNBC
hog_dir = [face_processed_dir, '/unbc/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% DISFA
hog_dir = 'D:\Datasets\DISFA\hog_aligned_rigid/';
hog_files = dir([hog_dir, '*.hog']);
hog_dir = [face_processed_dir, '/disfa/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_disfa, valid_inds, vid_ids_train_disfa] = Read_HOG_files_small(hog_files, hog_dir, 100);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_disfa = appearance_data_disfa(valid_inds,:);
vid_ids_train_disfa = vid_ids_train_disfa(valid_inds,:);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_disfa);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_disfa);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% BP4D
hog_dir = 'D:\Datasets\FERA_2015\bp4d\processed_data/train/';
hog_files = dir([hog_dir, '*.hog']);
%% BP4D train
hog_dir = [face_processed_dir, '/bp4d/train/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
[appearance_data_bp, valid_inds, vid_ids_train_bp] = Read_HOG_files_small(hog_files, hog_dir, 50);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data_bp = appearance_data_bp(valid_inds,:);
vid_ids_train_bp = vid_ids_train_bp(valid_inds,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
appearance_data = cat(1,appearance_data, appearance_data_bp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_bp);
%% SEMAINE train
hog_dir = [face_processed_dir, '/semaine/train/'];
hog_files = dir([hog_dir '*.hog']);
%% SEMAINE
hog_dir = 'D:\Datasets\FERA_2015\semaine\processed_data\train\';
hog_files = dir([hog_dir, '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
[appearance_data_semaine, valid_inds, vid_ids_train_semaine] = Read_HOG_files_small(hog_files, hog_dir, 300);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data_semaine = appearance_data_semaine(valid_inds,:);
vid_ids_train_semaine = vid_ids_train_semaine(valid_inds,:);
appearance_data = cat(1,appearance_data, appearance_data_semaine);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_semaine);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%%
means_norm = mean(appearance_data);

View File

@ -1,60 +1,93 @@
clear;
face_processed_dir = 'E:\datasets\face_datasets_processed';
%% CK+, FERA2011, and UNBC datasets
hog_dir = 'D:\Datasets/face_datasets/hog_aligned_rigid/';
hog_files = dir([hog_dir, '*.hog']);
%% CK+
hog_dir = [face_processed_dir, '/ck+/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data, valid_inds, vid_ids_train] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data = appearance_data(valid_inds,:);
vid_ids_train = vid_ids_train(valid_inds,:);
%% Bosphorus dataset
hog_dir = 'D:\Datasets/face_datasets/hog_aligned_rigid_b/';
hog_files = dir([hog_dir, '*.hog']);
%% Bosphorus
hog_dir = [face_processed_dir, '/bosph/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_bosph, valid_inds, vid_ids_train_bosph] = Read_HOG_files_small(hog_files, hog_dir);
% Remove non-frontal
frontal = true(size(hog_files));
for i = 1:numel(frontal)
if(~isempty(strfind(hog_files(i).name, 'YR')) || ~isempty(strfind(hog_files(i).name, 'PR'))|| ~isempty(strfind(hog_files(i).name, 'CR')))
frontal(i) = false;
end
end
hog_files = hog_files(frontal);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% FERA2011
hog_dir = [face_processed_dir, '/fera2011/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% UNBC
hog_dir = [face_processed_dir, '/unbc/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
appearance_data_bosph = appearance_data_bosph(valid_inds,:);
vid_ids_train_bosph = vid_ids_train_bosph(valid_inds,:);
appearance_data = cat(1,appearance_data, appearance_data_bosph);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_bosph);
%% DISFA
hog_dir = 'D:\Datasets\DISFA\hog_aligned_rigid/';
hog_files = dir([hog_dir, '*.hog']);
hog_dir = [face_processed_dir, '/disfa/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_disfa, valid_inds, vid_ids_train_disfa] = Read_HOG_files_small(hog_files, hog_dir, 100);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
appearance_data_disfa = appearance_data_disfa(valid_inds,:);
vid_ids_train_disfa = vid_ids_train_disfa(valid_inds,:);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data = cat(1,appearance_data, appearance_data_disfa);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_disfa);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%% BP4D
hog_dir = 'D:\Datasets\FERA_2015\bp4d\processed_data/train/';
hog_files = dir([hog_dir, '*.hog']);
%% BP4D train
hog_dir = [face_processed_dir, '/bp4d/train/'];
hog_files = dir([hog_dir '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
[appearance_data_bp, valid_inds, vid_ids_train_bp] = Read_HOG_files_small(hog_files, hog_dir, 50);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data_bp = appearance_data_bp(valid_inds,:);
vid_ids_train_bp = vid_ids_train_bp(valid_inds,:);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
appearance_data = cat(1,appearance_data, appearance_data_bp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_bp);
%% SEMAINE train
hog_dir = [face_processed_dir, '/semaine/train/'];
hog_files = dir([hog_dir '*.hog']);
%% SEMAINE
hog_dir = 'D:\Datasets\FERA_2015\semaine\processed_data\train\';
hog_files = dir([hog_dir, '*.hog']);
[appearance_data_tmp, valid_inds_tmp, vid_ids_train_tmp] = Read_HOG_files_small(hog_files, hog_dir);
[appearance_data_semaine, valid_inds, vid_ids_train_semaine] = Read_HOG_files_small(hog_files, hog_dir, 300);
appearance_data_tmp = appearance_data_tmp(valid_inds_tmp,:);
vid_ids_train_tmp = vid_ids_train_tmp(valid_inds_tmp,:);
appearance_data_semaine = appearance_data_semaine(valid_inds,:);
vid_ids_train_semaine = vid_ids_train_semaine(valid_inds,:);
appearance_data = cat(1,appearance_data, appearance_data_semaine);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_semaine);
appearance_data = cat(1,appearance_data, appearance_data_tmp);
vid_ids_train = cat(1,vid_ids_train, vid_ids_train_tmp);
%%
means_norm = mean(appearance_data);