A number of small fixes, renamings and corrections.
This commit is contained in:
parent
35f1967176
commit
51ae195124
14 changed files with 61 additions and 54 deletions
|
@ -66,5 +66,5 @@ script:
|
|||
- make -j2
|
||||
- ../build/bin/FaceLandmarkImg -fdir "../videos/" -ofdir "./demo_img/" -oidir "./demo_img/" -wild -q
|
||||
- ../build/bin/FaceLandmarkVidMulti -f ../videos/multi_face.avi -ov multi_face.avi -q
|
||||
- ../build/bin/FeatureExtraction -rigid -verbose -f "../videos/1815_01_008_tony_blair.avi" -ov blair.avi -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_test.avi -hogalign hog_test.dat -q
|
||||
- ../build/bin/FeatureExtraction -f "../videos/1815_01_008_tony_blair.avi" -ov blair.avi -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_test.avi -hogalign hog_test.dat -q
|
||||
- ../build/bin/FaceLandmarkVid -f "../videos/1815_01_008_tony_blair.avi" -f "../videos/0188_03_021_al_pacino.avi" -f "../videos/0217_03_006_alanis_morissette.avi" -f "../videos/0244_03_004_anderson_cooper.avi" -q
|
|
@ -23,5 +23,5 @@ test_script:
|
|||
- cmd: dir
|
||||
- cmd: if exist "../videos" (FaceLandmarkImg.exe -fdir "../videos/" -ofdir "./demo_img/" -oidir "./demo_img/" -wild -q) else (FaceLandmarkImg.exe -fdir "../../videos/" -ofdir "./demo_img/" -oidir "./demo_img/" -wild -q)
|
||||
- cmd: if exist "../videos" (FaceLandmarkVidMulti.exe -f ../videos/multi_face.avi -ov multi_face.avi -q) else (FaceLandmarkVidMulti.exe -f ../../videos/multi_face.avi -ov multi_face.avi -q)
|
||||
- cmd: if exist "../videos" (FeatureExtraction.exe -rigid -f "../videos/1815_01_008_tony_blair.avi" -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_track.avi -hogalign hog_test.dat -q) else (FeatureExtraction.exe -rigid -f "../../videos/1815_01_008_tony_blair.avi" -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_track.avi -hogalign hog_test.dat -q)
|
||||
- cmd: if exist "../videos" (FeatureExtraction.exe -f "../videos/1815_01_008_tony_blair.avi" -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_track.avi -hogalign hog_test.dat -q) else (FeatureExtraction.exe -f "../../videos/1815_01_008_tony_blair.avi" -of "output_features/1815_01_008_tony_blair.txt" -simalign output_features/aligned -ov feat_track.avi -hogalign hog_test.dat -q)
|
||||
- cmd: if exist "../videos" (FaceLandmarkVid.exe -f "../videos/1815_01_008_tony_blair.avi" -ov track.avi -q) else (FaceLandmarkVid.exe -f "../../videos/1815_01_008_tony_blair.avi" -ov track.avi -q)
|
||||
|
|
|
@ -153,9 +153,8 @@ void create_directory(string output_path)
|
|||
}
|
||||
|
||||
void get_output_feature_params(vector<string> &output_similarity_aligned, vector<string> &output_hog_aligned_files, double &similarity_scale,
|
||||
int &similarity_size, bool &grayscale, bool &rigid, bool& verbose, bool& dynamic,
|
||||
bool &output_2D_landmarks, bool &output_3D_landmarks, bool &output_model_params, bool &output_pose, bool &output_AUs, bool &output_gaze,
|
||||
vector<string> &arguments);
|
||||
int &similarity_size, bool &grayscale, bool& verbose, bool& dynamic, bool &output_2D_landmarks, bool &output_3D_landmarks,
|
||||
bool &output_model_params, bool &output_pose, bool &output_AUs, bool &output_gaze, vector<string> &arguments);
|
||||
|
||||
void get_image_input_output_params_feats(vector<vector<string> > &input_image_files, bool& as_video, vector<string> &arguments);
|
||||
|
||||
|
@ -305,7 +304,6 @@ int main (int argc, char **argv)
|
|||
int sim_size = 112;
|
||||
bool grayscale = false;
|
||||
bool video_output = false;
|
||||
bool rigid = false;
|
||||
bool dynamic = true; // Indicates if a dynamic AU model should be used (dynamic is useful if the video is long enough to include neutral expressions)
|
||||
int num_hog_rows;
|
||||
int num_hog_cols;
|
||||
|
@ -319,7 +317,7 @@ int main (int argc, char **argv)
|
|||
bool output_AUs = true;
|
||||
bool output_gaze = true;
|
||||
|
||||
get_output_feature_params(output_similarity_align, output_hog_align_files, sim_scale, sim_size, grayscale, rigid, verbose, dynamic,
|
||||
get_output_feature_params(output_similarity_align, output_hog_align_files, sim_scale, sim_size, grayscale, verbose, dynamic,
|
||||
output_2D_landmarks, output_3D_landmarks, output_model_params, output_pose, output_AUs, output_gaze, arguments);
|
||||
|
||||
// Used for image masking
|
||||
|
@ -1022,7 +1020,7 @@ void outputAllFeatures(std::ofstream* output_file, bool output_2D_landmarks, boo
|
|||
|
||||
|
||||
void get_output_feature_params(vector<string> &output_similarity_aligned, vector<string> &output_hog_aligned_files, double &similarity_scale,
|
||||
int &similarity_size, bool &grayscale, bool &rigid, bool& verbose, bool& dynamic,
|
||||
int &similarity_size, bool &grayscale, bool& verbose, bool& dynamic,
|
||||
bool &output_2D_landmarks, bool &output_3D_landmarks, bool &output_model_params, bool &output_pose, bool &output_AUs, bool &output_gaze,
|
||||
vector<string> &arguments)
|
||||
{
|
||||
|
@ -1036,7 +1034,6 @@ void get_output_feature_params(vector<string> &output_similarity_aligned, vector
|
|||
valid[i] = true;
|
||||
}
|
||||
|
||||
string input_root = "";
|
||||
string output_root = "";
|
||||
|
||||
// By default the model is dynamic
|
||||
|
@ -1047,15 +1044,9 @@ void get_output_feature_params(vector<string> &output_similarity_aligned, vector
|
|||
{
|
||||
if (arguments[i].compare("-root") == 0)
|
||||
{
|
||||
input_root = arguments[i + 1];
|
||||
output_root = arguments[i + 1];
|
||||
i++;
|
||||
}
|
||||
if (arguments[i].compare("-inroot") == 0)
|
||||
{
|
||||
input_root = arguments[i + 1];
|
||||
i++;
|
||||
}
|
||||
if (arguments[i].compare("-outroot") == 0)
|
||||
{
|
||||
output_root = arguments[i + 1];
|
||||
|
@ -1085,10 +1076,6 @@ void get_output_feature_params(vector<string> &output_similarity_aligned, vector
|
|||
{
|
||||
verbose = true;
|
||||
}
|
||||
else if (arguments[i].compare("-rigid") == 0)
|
||||
{
|
||||
rigid = true;
|
||||
}
|
||||
else if (arguments[i].compare("-au_static") == 0)
|
||||
{
|
||||
dynamic = false;
|
||||
|
|
|
@ -76,8 +76,8 @@ namespace LandmarkDetector
|
|||
//=============================================================================================
|
||||
// Helper functions for parsing the inputs
|
||||
//=============================================================================================
|
||||
void get_video_input_output_params(vector<string> &input_video_file, vector<string> &depth_dir,
|
||||
vector<string> &output_files, vector<string> &output_video_files, bool& world_coordinates_pose, vector<string> &arguments);
|
||||
void get_video_input_output_params(vector<string> &input_video_file, vector<string> &depth_dir, vector<string> &output_files,
|
||||
vector<string> &output_video_files, bool& world_coordinates_pose, vector<string> &arguments);
|
||||
|
||||
void get_camera_params(int &device, float &fx, float &fy, float &cx, float &cy, vector<string> &arguments);
|
||||
|
||||
|
|
|
@ -115,8 +115,8 @@ void create_directories(string output_path)
|
|||
}
|
||||
|
||||
// Extracting the following command line arguments -f, -fd, -op, -of, -ov (and possible ordered repetitions)
|
||||
void get_video_input_output_params(vector<string> &input_video_files, vector<string> &depth_dirs,
|
||||
vector<string> &output_files, vector<string> &output_video_files, bool& world_coordinates_pose, vector<string> &arguments)
|
||||
void get_video_input_output_params(vector<string> &input_video_files, vector<string> &depth_dirs, vector<string> &output_files,
|
||||
vector<string> &output_video_files, bool& world_coordinates_pose, vector<string> &arguments)
|
||||
{
|
||||
bool* valid = new bool[arguments.size()];
|
||||
|
||||
|
@ -128,46 +128,58 @@ void get_video_input_output_params(vector<string> &input_video_files, vector<str
|
|||
// By default use rotation with respect to camera (not world coordinates)
|
||||
world_coordinates_pose = false;
|
||||
|
||||
string root = "";
|
||||
string input_root = "";
|
||||
string output_root = "";
|
||||
|
||||
// First check if there is a root argument (so that videos and outputs could be defined more easilly)
|
||||
for(size_t i = 0; i < arguments.size(); ++i)
|
||||
{
|
||||
if (arguments[i].compare("-root") == 0)
|
||||
{
|
||||
root = arguments[i + 1];
|
||||
// Do not discard root as it might be used in other later steps
|
||||
if (arguments[i].compare("-root") == 0)
|
||||
{
|
||||
input_root = arguments[i + 1];
|
||||
output_root = arguments[i + 1];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if (arguments[i].compare("-inroot") == 0)
|
||||
{
|
||||
input_root = arguments[i + 1];
|
||||
i++;
|
||||
}
|
||||
if (arguments[i].compare("-outroot") == 0)
|
||||
{
|
||||
output_root = arguments[i + 1];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < arguments.size(); ++i)
|
||||
{
|
||||
if (arguments[i].compare("-f") == 0)
|
||||
{
|
||||
input_video_files.push_back(root + arguments[i + 1]);
|
||||
input_video_files.push_back(input_root + arguments[i + 1]);
|
||||
valid[i] = false;
|
||||
valid[i+1] = false;
|
||||
i++;
|
||||
}
|
||||
else if (arguments[i].compare("-fd") == 0)
|
||||
{
|
||||
depth_dirs.push_back(root + arguments[i + 1]);
|
||||
depth_dirs.push_back(input_root + arguments[i + 1]);
|
||||
valid[i] = false;
|
||||
valid[i+1] = false;
|
||||
i++;
|
||||
}
|
||||
else if (arguments[i].compare("-of") == 0)
|
||||
{
|
||||
output_files.push_back(root + arguments[i + 1]);
|
||||
create_directory_from_file(root + arguments[i + 1]);
|
||||
output_files.push_back(output_root + arguments[i + 1]);
|
||||
create_directory_from_file(output_root + arguments[i + 1]);
|
||||
valid[i] = false;
|
||||
valid[i+1] = false;
|
||||
i++;
|
||||
}
|
||||
else if (arguments[i].compare("-ov") == 0)
|
||||
{
|
||||
output_video_files.push_back(root + arguments[i + 1]);
|
||||
create_directory_from_file(root + arguments[i + 1]);
|
||||
output_video_files.push_back(output_root + arguments[i + 1]);
|
||||
create_directory_from_file(output_root + arguments[i + 1]);
|
||||
valid[i] = false;
|
||||
valid[i+1] = false;
|
||||
i++;
|
||||
|
|
|
@ -20,7 +20,7 @@ parfor f1=1:numel(devel_recs)
|
|||
|
||||
f1_dir = devel_recs{f1};
|
||||
|
||||
command = [executable, ' -fx 800 -fy 800 -rigid -q -no2Dfp -no3Dfp -noMparams -noPose -noGaze '];
|
||||
command = [executable, ' -fx 800 -fy 800 -q -no2Dfp -no3Dfp -noMparams -noPose -noGaze '];
|
||||
|
||||
curr_vid = [SEMAINE_dir, f1_dir, '/', vid_file.name];
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
clm_exe = '"../../x64/Release/FeatureExtraction.exe"';
|
||||
executable = '"../../x64/Release/FeatureExtraction.exe"';
|
||||
|
||||
output = './output_features_seq/';
|
||||
|
||||
|
@ -10,8 +10,7 @@ in_dirs = {'../../image_sequence'};
|
|||
% some parameters
|
||||
verbose = true;
|
||||
|
||||
command = clm_exe;
|
||||
command = cat(2, command, ' -rigid ');
|
||||
command = executable;
|
||||
|
||||
% Remove for a speedup
|
||||
command = cat(2, command, ' -verbose ');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
clm_exe = '"../../x64/Release/FeatureExtraction.exe"';
|
||||
executable = '"../../x64/Release/FeatureExtraction.exe"';
|
||||
|
||||
output = './output_features_vid/';
|
||||
|
||||
|
@ -10,8 +10,7 @@ in_files = dir('../../videos/1815_01_008_tony_blair.avi');
|
|||
% some parameters
|
||||
verbose = true;
|
||||
|
||||
command = clm_exe;
|
||||
command = cat(2, command, ' -rigid ');
|
||||
command = executable;
|
||||
|
||||
% Remove for a speedup
|
||||
command = cat(2, command, ' -verbose ');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
clear
|
||||
|
||||
clm_exe = '"../../x64/Release/FaceLandmarkImg.exe"';
|
||||
executable = '"../../x64/Release/FaceLandmarkImg.exe"';
|
||||
|
||||
in_dir = '../../videos/';
|
||||
out_dir = './demo_img/';
|
||||
|
@ -22,7 +22,7 @@ model = 'model/main_clnf_general.txt';
|
|||
% Trained on in-the-wild
|
||||
%model = 'model/main_clnf_wild.txt';
|
||||
|
||||
command = clm_exe;
|
||||
command = executable;
|
||||
|
||||
command = cat(2, command, [' -fdir "' in_dir '"']);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
clm_exe = '"../../x64/Release/FaceLandmarkVidMulti.exe"';
|
||||
executable = '"../../x64/Release/FaceLandmarkVidMulti.exe"';
|
||||
|
||||
output = './demo_vid/';
|
||||
|
||||
|
@ -20,7 +20,7 @@ model = 'model/main_clnf_general.txt';
|
|||
% Trained on in-the-wild
|
||||
%model = 'model/main_clnf_wild.txt';
|
||||
|
||||
command = clm_exe;
|
||||
command = executable;
|
||||
command = cat(2, command, [' -mloc "', model, '"']);
|
||||
% add all videos to single argument list (so as not to load the model anew
|
||||
% for every video)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
clm_exe = '"../../x64/Release/FaceLandmarkVid.exe"';
|
||||
executable = '"../../x64/Release/FaceLandmarkVid.exe"';
|
||||
|
||||
output = './demo_vid/';
|
||||
|
||||
|
@ -21,7 +21,7 @@ model = 'model/main_clnf_general.txt';
|
|||
% Trained on in-the-wild
|
||||
%model = 'model/main_clnf_wild.txt';
|
||||
|
||||
command = clm_exe;
|
||||
command = executable;
|
||||
command = cat(2, command, [' -mloc "', model, '"']);
|
||||
% add all videos to single argument list (so as not to load the model anew
|
||||
% for every video)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function [meanError, all_rot_preds, all_rot_gts, all_errors, rels_all] = calcBUerror(resDir, gtDir)
|
||||
function [meanError, all_rot_preds, all_rot_gts, all_errors, rels_all, seq_ids] = calcBUerror(resDir, gtDir)
|
||||
|
||||
seqNames = {'jam1','jam2','jam3','jam4','jam5','jam6','jam7','jam8','jam9', ...
|
||||
'jim1','jim2','jim3','jim4','jim5','jim6','jim7','jim8','jim9', ...
|
||||
|
@ -12,6 +12,8 @@ rot = cell(1,numel(seqNames));
|
|||
rotg = cell(1,numel(seqNames));
|
||||
rels_all = [];
|
||||
|
||||
seq_ids = {};
|
||||
|
||||
for i = 1:numel(seqNames)
|
||||
|
||||
[frame t, rels, sc tx ty tz rx ry rz] = textread([resDir seqNames{i} '.txt'], '%f, %f, %f, %f, %f, %f, %f, %f, %f, %f', 'headerlines', 1);
|
||||
|
@ -54,7 +56,7 @@ for i = 1:numel(seqNames)
|
|||
|
||||
rotMeanErr(i,:) = mean(abs((rot{i}(:,:)-rotg{i}(:,:))));
|
||||
rotRMS(i,:) = sqrt(mean(((rot{i}(:,:)-rotg{i}(:,:))).^2));
|
||||
|
||||
seq_ids = cat(1, seq_ids, repmat(seqNames(i), size(rot{i},1), 1));
|
||||
end
|
||||
allRot = cell2mat(rot');
|
||||
allRotg = cell2mat(rotg');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_all] = calcBiwiError(resDir, gtDir)
|
||||
function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_all, seq_ids] = calcBiwiError(resDir, gtDir)
|
||||
|
||||
seqNames = {'01','02','03','04','05','06','07','08','09', ...
|
||||
'10', '11','12','13','14','15','16','17','18','19', ...
|
||||
|
@ -10,7 +10,8 @@ rot = cell(1,numel(seqNames));
|
|||
rotg = cell(1,numel(seqNames));
|
||||
rels_all = [];
|
||||
|
||||
tic;
|
||||
seq_ids = {};
|
||||
|
||||
for i=1:numel(seqNames)
|
||||
|
||||
posesGround = load ([gtDir '/' seqNames{i} '/groundTruthPose.txt']);
|
||||
|
@ -49,6 +50,9 @@ for i=1:numel(seqNames)
|
|||
|
||||
rotMeanErr(i,:) = mean(abs((rot{i}(:,:)-rotg{i}(:,:))));
|
||||
rotRMS(i,:) = sqrt(mean(((rot{i}(:,:)-rotg{i}(:,:))).^2));
|
||||
|
||||
seq_ids = cat(1, seq_ids, repmat(seqNames(i), size(rot{i},1), 1));
|
||||
|
||||
end
|
||||
%%
|
||||
meanErrors = rotMeanErr;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_all] = calcIctError(resDir, gtDir)
|
||||
function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_all, seq_ids] = calcIctError(resDir, gtDir)
|
||||
%CALCICTERROR Summary of this function goes here
|
||||
% Detailed explanation goes here
|
||||
|
||||
|
@ -13,6 +13,8 @@ function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_al
|
|||
|
||||
rels_all = [];
|
||||
|
||||
seq_ids = {};
|
||||
|
||||
for i = 1:numel(sequences)
|
||||
|
||||
[~, name,~] = fileparts(sequences(i).name);
|
||||
|
@ -53,7 +55,9 @@ function [meanError, all_rot_preds, all_rot_gts, meanErrors, all_errors, rels_al
|
|||
% Now compute the errors
|
||||
rotMeanErr(i,:) = mean(abs((rot{i}(:,:)-rotg{i}(:,:))));
|
||||
rotRMS(i,:) = sqrt(mean(((rot{i}(:,:)-rotg{i}(:,:))).^2));
|
||||
|
||||
|
||||
seq_ids = cat(1, seq_ids, repmat({[name 'ict']}, size(rot{i},1), 1));
|
||||
|
||||
end
|
||||
allRot = cell2mat(rot');
|
||||
allRotg = cell2mat(rotg');
|
||||
|
|
Loading…
Reference in a new issue