Working on experiments with the new interface, almost there.

This commit is contained in:
Tadas Baltrusaitis 2017-12-10 10:55:34 +00:00
parent 1f3d4e941d
commit f071e61fc7
4 changed files with 47 additions and 39 deletions

View file

@ -141,7 +141,6 @@ RecorderOpenFace::RecorderOpenFace(const std::string in_filename, RecorderOpenFa
// Create the required individual recorders, CSV, HOG, aligned, video
csv_filename = (path(record_root) / path(filename).concat(".csv")).string();
metadata_file << "Output csv:" << csv_filename << endl;
// Consruct HOG recorder here
if(params.outputHOG())
@ -239,6 +238,9 @@ void RecorderOpenFace::WriteObservation()
csv_recorder.Open(csv_filename, params.isSequence(), params.output2DLandmarks(), params.output3DLandmarks(), params.outputPDMParams(), params.outputPose(),
params.outputAUs(), params.outputGaze(), num_face_landmarks, num_model_modes, num_eye_landmarks, au_names_class, au_names_reg);
metadata_file << "Output csv:" << csv_filename << endl;
}
this->csv_recorder.WriteLine(observation_count, timestamp, landmark_detection_success,

View file

@ -22,19 +22,19 @@ output = 'out_DISFA/';
%%
% Do it in parrallel for speed (replace the parfor with for if no parallel
% toolbox is available)
% parfor v = 1:numel(videos)
%
% vid_file = [DISFA_dir, videos(v).name];
%
% command = sprintf('%s -f "%s" -out_dir "%s" -aus ', executable, vid_file, output);
%
% if(isunix)
% unix(command, '-echo');
% else
% dos(command);
% end
%
% end
parfor v = 1:numel(videos)
vid_file = [DISFA_dir, videos(v).name];
command = sprintf('%s -f "%s" -out_dir "%s" -aus ', executable, vid_file, output);
if(isunix)
unix(command, '-echo');
else
dos(command);
end
end
%% Now evaluate the predictions

View file

@ -43,7 +43,7 @@ cd('../');
%% Gaze
cd('Gaze Experiments');
extract_mpii_gaze_test
assert(mean_error < 9.6)
assert(mean_error < 9.7)
assert(median_error < 9.0)
cd('../');

View file

@ -29,22 +29,21 @@ else
executable = '"../../x64/Release/FaceLandmarkImg.exe"';
end
command = sprintf('%s -fx 1028 -fy 1028 -gaze ', executable);
command = sprintf('%s -fx 1028 -fy 1028 ', executable);
p_dirs = dir([database_root, 'p*']);
parfor p=1:numel(p_dirs)
tic
input_loc = ['-fdir "', [database_root, p_dirs(p).name], '" '];
out_img_loc = ['-oidir "', [output, p_dirs(p).name], '" '];
out_p_loc = ['-opdir "', [output, p_dirs(p).name], '" '];
command_c = cat(2, command, input_loc, out_img_loc, out_p_loc);
input_loc = ['-gaze -fdir "', [database_root, p_dirs(p).name], '" '];
out_img_loc = ['-out_dir "', [output, p_dirs(p).name], '" '];
command_c = cat(2, command, input_loc, out_img_loc);
if(isunix)
unix(command_c, '-echo');
else
dos(command_c);
end;
end
end
%%
@ -65,29 +64,36 @@ for p=1:numel(p_dirs)
for i=1:size(filenames, 1)
fname = sprintf('%s/%s/%d_%d_%d_%d_%d_%d_%d_det_0.pose', output, p_dirs(p).name,...
fname = sprintf('%s/%s/%d_%d_%d_%d_%d_%d_%d.csv', output, p_dirs(p).name,...
filenames(i,1), filenames(i,2), filenames(i,3), filenames(i,4),...
filenames(i,5), filenames(i,6), filenames(i,7));
try
A = dlmread(fname, ' ', 'A79..F79');
valid = true;
catch
A = zeros(1,6);
A(1,3) = -1;
A(1,6) = -1;
valid = false;
if(p==1 && i==1)
% First read in the column names
tab = readtable(fname);
column_names = tab.Properties.VariableNames;
gaze_0_ids = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'gaze_0_'));
gaze_1_ids = cellfun(@(x) ~isempty(x) && x==1, strfind(column_names, 'gaze_1_'));
end
head_rot = headpose(i,1:3);
if(exist(fname, 'file'))
all_params = dlmread(fname, ',', 1, 0);
else
all_params = [];
end
predictions_r(curr,:) = A(1:3);
predictions_l(curr,:) = A(4:6);
if(~valid)
% If there was a face detected
if(size(all_params,1)>0)
predictions_r(curr,:) = all_params(1,gaze_0_ids);
predictions_l(curr,:) = all_params(1,gaze_1_ids);
else
predictions_r(curr,:) = [0,0,-1];
predictions_l(curr,:) = [0,0,-1];
end
head_rot = headpose(i,1:3);
gt_r(curr,:) = data.right.gaze(i,:)';
gt_r(curr,:) = gt_r(curr,:) / norm(gt_r(curr,:));
gt_l(curr,:) = data.left.gaze(i,:)';