From 23868d634a3c877d60e1dce0dbabd78269e44801 Mon Sep 17 00:00:00 2001 From: Tadas Baltrusaitis Date: Mon, 8 May 2017 13:09:29 -0400 Subject: [PATCH] More simplification and cleanup of JANUS code --- .../experiments_JANUS/Script_CECLM_general.m | 54 +++--------- .../experiments_JANUS/Script_CECLM_menpo.m | 54 +++--------- .../experiments_JANUS/Script_CLNF_general.m | 2 +- .../experiments_JANUS/results/Janus-full.pdf | Bin 7222 -> 7222 bytes .../experiments_JANUS/results/Janus-full.png | Bin 174661 -> 174661 bytes .../results/Janus-no-outline.pdf | Bin 8445 -> 8445 bytes .../results/Janus-no-outline.png | Bin 197627 -> 197627 bytes .../results/results_ceclm_general.mat | Bin 1619086 -> 1619088 bytes .../results/results_ceclm_menpo.mat | Bin 1589439 -> 1589439 bytes .../results/results_wild_clnf_general.mat | Bin 1375664 -> 1375660 bytes matlab_version/fitting/Fitting_from_bb.m | 2 +- ...h_Experts.m => Load_CECLM_Patch_Experts.m} | 4 +- matlab_version/models/Load_CECLM_general.m | 38 ++++++++ matlab_version/models/Load_CECLM_menpo.m | 38 ++++++++ .../create_cen_experts_gen.m} | 14 +-- .../create_cen_experts_menpo.m} | 83 +++++++++--------- .../create_cen_experts_sparse.m} | 6 +- matlab_version/models/cen/readme.txt | 4 + matlab_version/models/{dpn => cen}/swap.m | 0 .../models/{dpn => cen}/writeMatrixBin.m | 0 .../{dpn => cen}/write_patch_expert_bin.m | 0 21 files changed, 163 insertions(+), 136 deletions(-) rename matlab_version/models/{Load_DCLM_Patch_Experts.m => Load_CECLM_Patch_Experts.m} (87%) create mode 100644 matlab_version/models/Load_CECLM_general.m create mode 100644 matlab_version/models/Load_CECLM_menpo.m rename matlab_version/models/{dpn/create_dpn_experts_2017_02_02.m => cen/create_cen_experts_gen.m} (81%) rename matlab_version/models/{dpn/create_dpn_experts.m => cen/create_cen_experts_menpo.m} (52%) rename matlab_version/models/{dpn/create_dpn_experts_sparse.m => cen/create_cen_experts_sparse.m} (95%) create mode 100644 matlab_version/models/cen/readme.txt rename matlab_version/models/{dpn => cen}/swap.m (100%) rename matlab_version/models/{dpn => cen}/writeMatrixBin.m (100%) rename matlab_version/models/{dpn => cen}/write_patch_expert_bin.m (100%) diff --git a/matlab_version/experiments_JANUS/Script_CECLM_general.m b/matlab_version/experiments_JANUS/Script_CECLM_general.m index 8d900eb4..c41b4623 100644 --- a/matlab_version/experiments_JANUS/Script_CECLM_general.m +++ b/matlab_version/experiments_JANUS/Script_CECLM_general.m @@ -6,45 +6,16 @@ addpath(genpath('../')); root_test_data = 'D:/Datasets/janus_labeled'; [images, detections, labels] = Collect_JANUS_imgs(root_test_data); -%% loading the patch experts - -clmParams = struct; +%% loading the CE-CLM model and parameters +[patches, pdm, clmParams, early_term_params] = Load_CECLM_general(); +% Use the multi-hypothesis model, as bounding box tells nothing about +% orientation +multi_view = true; -clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; -clmParams.numPatchIters = size(clmParams.window_size,1); - -[patches] = Load_DCLM_Patch_Experts( '../models/cen/', 'cen_patches_*_general.mat', [], [], clmParams); - -%% Fitting the model to the provided image - -output_root = './fit_ceclm_general/'; - -% the default PDM to use -pdmLoc = ['../models/pdm/pdm_68_aligned_wild.mat']; - -load(pdmLoc); - -pdm = struct; -pdm.M = double(M); -pdm.E = double(E); -pdm.V = double(V); - -clmParams.regFactor = 0.9*[35, 27, 20, 20]; -clmParams.sigmaMeanShift = 1.5*[1.25, 1.375, 1.5, 1.5]; -clmParams.tikhonov_factor = [2.5, 5, 7.5, 7.5]; - -clmParams.startScale = 1; -clmParams.num_RLMS_iter = 10; -clmParams.fTol = 0.01; -clmParams.useMultiScale = true; -clmParams.use_multi_modal = 1; -clmParams.multi_modal_types = patches(1).multi_modal_types; -clmParams.numPatchIters = 4; - -% for recording purposes +%% Setup recording experiment.params = clmParams; -num_points = numel(M)/3; +num_points = numel(pdm.M)/3; shapes_all = zeros(size(labels,2),size(labels,3), size(labels,1)); labels_all = zeros(size(labels,2),size(labels,3), size(labels,1)); @@ -52,9 +23,7 @@ lhoods = zeros(numel(images),1); all_lmark_lhoods = zeros(num_points, numel(images)); all_views_used = zeros(numel(images),1); -% Use the multi-hypothesis model, as bounding box tells nothing about -% orientation -multi_view = true; +% Change if you want to visualize the outputs verbose = false; output_img = false; @@ -67,8 +36,9 @@ end if(verbose) f = figure; end -% As the orientations are not equally reliable reweigh them -load('../learn_error_mapping/cen_general_mapping.mat'); + + +%% Fitting the model to the provided images tic for i=1:numel(images) @@ -118,7 +88,7 @@ for i=1:numel(images) end toc -experiment.errors_normed = compute_error(labels_all, shapes_all - 0.5); +experiment.errors_normed = compute_error(labels_all, shapes_all - 1.0); experiment.lhoods = lhoods; experiment.shapes = shapes_all; experiment.labels = labels_all; diff --git a/matlab_version/experiments_JANUS/Script_CECLM_menpo.m b/matlab_version/experiments_JANUS/Script_CECLM_menpo.m index 7d649593..e6555ffa 100644 --- a/matlab_version/experiments_JANUS/Script_CECLM_menpo.m +++ b/matlab_version/experiments_JANUS/Script_CECLM_menpo.m @@ -6,43 +6,16 @@ addpath(genpath('../')); root_test_data = 'D:/Datasets/janus_labeled'; [images, detections, labels] = Collect_JANUS_imgs(root_test_data); -%% loading the patch experts - -clmParams = struct; +%% loading the CE-CLM model and parameters +[patches, pdm, clmParams, early_term_params] = Load_CECLM_menpo(); +% Use the multi-hypothesis model, as bounding box tells nothing about +% orientation +multi_view = true; -clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; -clmParams.numPatchIters = size(clmParams.window_size,1); - -[patches] = Load_DCLM_Patch_Experts( '../models/cen/', 'cen_patches_*_menpo.mat', [], [], clmParams); - -%% Fitting the model to the provided image - -% the default PDM to use -pdmLoc = ['../models/pdm/pdm_68_aligned_menpo.mat']; - -load(pdmLoc); - -pdm = struct; -pdm.M = double(M); -pdm.E = double(E); -pdm.V = double(V); - -clmParams.regFactor = 0.9*[35, 27, 20, 20]; -clmParams.sigmaMeanShift = 1.5*[1.25, 1.375, 1.5, 1.5]; -clmParams.tikhonov_factor = [2.5, 5, 7.5, 7.5]; - -clmParams.startScale = 1; -clmParams.num_RLMS_iter = 10; -clmParams.fTol = 0.01; -clmParams.useMultiScale = true; -clmParams.use_multi_modal = 1; -clmParams.multi_modal_types = patches(1).multi_modal_types; -clmParams.numPatchIters = 4; - -% for recording purposes +%% Setup recording experiment.params = clmParams; -num_points = numel(M)/3; +num_points = numel(pdm.M)/3; shapes_all = zeros(size(labels,2),size(labels,3), size(labels,1)); labels_all = zeros(size(labels,2),size(labels,3), size(labels,1)); @@ -50,14 +23,12 @@ lhoods = zeros(numel(images),1); all_lmark_lhoods = zeros(num_points, numel(images)); all_views_used = zeros(numel(images),1); -% Use the multi-hypothesis model, as bounding box tells nothing about -% orientation -multi_view = true; +% Change if you want to visualize the outputs verbose = false; output_img = false; if(output_img) - output_root = './ceclm_menpo_out/'; + output_root = './ceclm_gen_out/'; if(~exist(output_root, 'dir')) mkdir(output_root); end @@ -65,8 +36,9 @@ end if(verbose) f = figure; end -% As the orientations are not equally reliable reweigh them -load('../learn_error_mapping/cen_menpo_mapping.mat'); + + +%% Fitting the model to the provided images tic for i=1:numel(images) @@ -116,7 +88,7 @@ for i=1:numel(images) end toc -experiment.errors_normed = compute_error(labels_all, shapes_all - 0.5); +experiment.errors_normed = compute_error(labels_all, shapes_all - 1.0); experiment.lhoods = lhoods; experiment.shapes = shapes_all; experiment.labels = labels_all; diff --git a/matlab_version/experiments_JANUS/Script_CLNF_general.m b/matlab_version/experiments_JANUS/Script_CLNF_general.m index 965978d6..e91508ed 100644 --- a/matlab_version/experiments_JANUS/Script_CLNF_general.m +++ b/matlab_version/experiments_JANUS/Script_CLNF_general.m @@ -140,7 +140,7 @@ for i=1:numel(images) end toc -experiment.errors_normed = compute_error(labels_all, shapes_all - 0.5); +experiment.errors_normed = compute_error(labels_all, shapes_all - 1.0); experiment.lhoods = lhoods; experiment.shapes = shapes_all; experiment.labels = labels_all; diff --git a/matlab_version/experiments_JANUS/results/Janus-full.pdf b/matlab_version/experiments_JANUS/results/Janus-full.pdf index 5bd97d9d60106092a13ebfb96fb4273684bbd049..368c630bada6eaf1c880a9e189a2ca708f4418bd 100644 GIT binary patch delta 90 zcmdmHvCU#a4!eb+v4NSP>BizHX=h_Ma|1&|3v)|1H%Av!GbdA5H**U!Hw#N67Z+D! QOE)_O8$wDZ3&^Me07HEijQ{`u delta 90 zcmdmHvCU#a4!fzLxq+Fn*~a21X=gVJOIHI|H&-_&b7v$3nOzEb0ar%OLG%vGcz}57h?lUXCn(!Q&R&c Q6H7Y<8$wDZUsq5A09%w79smFU delta 90 zcmezC_}6hl4!fzLxq+Fn(Z*s$1!qSmH&;hfLpNhnCpTvoCo@Mg3pZy|H%C)r6Gu}s Q6Eiyn8$wDZUsq5A0D(vs`Tzg` diff --git a/matlab_version/experiments_JANUS/results/Janus-no-outline.png b/matlab_version/experiments_JANUS/results/Janus-no-outline.png index a8d18827e25b50b6c7ace5e0d1946a74f61cad08..e0a0a10e8af445c9e4c75ae97cd626c707ceea02 100644 GIT binary patch delta 57 zcmey}&hxvSXM!UKhaelL-Y?m=k9vbxV&{a NW9xFJt;?B1m;olG6QckC delta 57 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 delta 15060 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 diff --git a/matlab_version/experiments_JANUS/results/results_ceclm_menpo.mat b/matlab_version/experiments_JANUS/results/results_ceclm_menpo.mat index 04251fc6b4562aac2499d6a193a0b4970804497f..766fcce63ef0ee88d0ce76350a608b411b75c91e 100644 GIT binary patch delta 15025 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 delta 15000 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 Z{SW_@#eX#Yz=;3= diff --git a/matlab_version/experiments_JANUS/results/results_wild_clnf_general.mat b/matlab_version/experiments_JANUS/results/results_wild_clnf_general.mat index 619bca540315b4246cd298c9ae336ab32345fa0a..f0541f2f110605bb306559be214e044c469cc184 100644 GIT binary patch delta 15114 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∈FpMVvNt_28?Zq2wC(vyR0|ejZ5&&_ZGy^x?_cux zjYNzkr*mPLB%MyZjdS74=QH;ekEi^)oRz(tIzAPuqpXClDkQ4kOL(1p|G)yn=(uy9 zM}x|ybWB=kaQt=^pSDABS9~T$0E5yDxFu`9%UYVT6V#x;k=lq@7>f5V3(})yN|dR5 zY%$Rd)0M#jLO`&YyY_4=iP$tND1E$witiG0 z|494J@Z$IVOC9$b`@>VX$O`?-&Ns&AsH3pATe1{Iuooe26w@kEbf8xcFur2?S2=z& zL0>t}nCgVi`ATYtt@j@~C%@nCwNGa`1TCNG~7qzF8c!F5ZkA1*-^;%lZ4R!{Q%#L7ZhhZlNT;DlrS^+B%3}K@ZY$E!t)v*l*e1Vw;b)zS1|;V$*md*~RY26SbGvN5DkJH2-k-K<%kfhXyNqfq%H+~EP#=PpLkJ`SKxaQ)~C~Z+y8vHi`*#$zyHsh~Q$AFP zCNs9`o?!>zX=bLbg+CjufvvV5H;I@o|+QF1HyM?W61@1;l%&~qSGcKLC<&UC9gm*QNNjRsYvLk zYNrJ!zXH4uKWrUr;VYG27a(8T<8)r>n+0chV(D3c&KmhnF*&#+V6-)Hq- zaFl8O>jZZ!*2TwtTbBLToh!Hw5OQ$Y3OQf^<~c7!cCSKf;0ncazy8SrhSHx{YX~Q9 zE+SwWUo{kz^{X8oddzGZd;x;`ee$nN^% z_Pmz`_)cqY$C9)~T<0pap1bET&YvB#iCTqL0TA(~2ashy)6TY9#gh_g8L#H6&!fLM zE^eb{^~t^+G>VBiZ^;`mmi~W-P10e6v3>(+4*9(igR$k)b=;SOhK53`nc61OHYYan zwl0xmPvZpwxu*eSZbdiG`O-ou8lr)j`d4;vHlsYx(Iw>&Pi?HV@2Wu%Pb!H9v;}q% zx_NL$omv(V^?b&&KabXXmM85+B5=ayAZid7>US9O(@lrT*l>^bKezU&xe?dhI}3rg zzlOLiWNwMC*2swOo2kBQNu3b(f>_S8h?3Y7_tLmic_qB5Y4Fi=DtL^m5kL>Aqhiya+qhq-`p9bdop_0tQXGi^p zp??U=h!;jJL($LrJXf7yVd;%mpUOZBT-c_$VWc%mzoBEC*=##AN0qXwQ;;@Tm}S`{ z#QnP%9ylN{tlYEn2eZQm=`-y29oG8f4IK>r8!Kk)xS{15VfQ2&Ge pAI$$?{|EO!`2QjN5AlCU|3m&C%KuRRht`_Rg^oT5-j#Q2{U5&o*0=xw diff --git a/matlab_version/fitting/Fitting_from_bb.m b/matlab_version/fitting/Fitting_from_bb.m index 0aef371d..e8f5a7a9 100644 --- a/matlab_version/fitting/Fitting_from_bb.m +++ b/matlab_version/fitting/Fitting_from_bb.m @@ -136,7 +136,7 @@ function [ shape2D, global_params, local_params, final_lhood, landmark_lhoods, v responses = PatchResponseSVM_multi_modal( patches, patchExperts(scale).patch_experts(view,:), visibilities(view,:), patchExperts(scale).normalisationOptionsCol, clmParams, clmParams.window_size(i,:)); elseif(strcmp(patchExperts(scale).type, 'CCNF')) responses = PatchResponseCCNF( patches, patchExperts(scale).patch_experts(view,:), visibilities(view,:), patchExperts(scale), clmParams.window_size(i,:)); - elseif(strcmp(patchExperts(scale).type, 'DNN')) + elseif(strcmp(patchExperts(scale).type, 'CEN')) responses = PatchResponseDNN( patches, patchExperts(scale).patch_experts(view,:), visibilities(view,:), patchExperts(scale), clmParams.window_size(i,:)); end diff --git a/matlab_version/models/Load_DCLM_Patch_Experts.m b/matlab_version/models/Load_CECLM_Patch_Experts.m similarity index 87% rename from matlab_version/models/Load_DCLM_Patch_Experts.m rename to matlab_version/models/Load_CECLM_Patch_Experts.m index 1543f063..a62a3329 100644 --- a/matlab_version/models/Load_DCLM_Patch_Experts.m +++ b/matlab_version/models/Load_CECLM_Patch_Experts.m @@ -1,4 +1,4 @@ -function [patches] = Load_DCLM_Patch_Experts( col_patch_dir, col_patch_file, depth_patch_dir, depth_patch_file, clmParams) +function [patches] = Load_CECLM_Patch_Experts( col_patch_dir, col_patch_file) %LOAD_PATCH_EXPERTS Summary of this function goes here % Detailed explanation goes here @@ -19,7 +19,7 @@ function [patches] = Load_DCLM_Patch_Experts( col_patch_dir, col_patch_file, dep patch.modalities = patch_experts.types; patch.multi_modal_types = patch_experts.types; - patch.type = 'DNN'; + patch.type = 'CEN'; % Knowing what normalisation was performed during training is % important for fitting diff --git a/matlab_version/models/Load_CECLM_general.m b/matlab_version/models/Load_CECLM_general.m new file mode 100644 index 00000000..2605790e --- /dev/null +++ b/matlab_version/models/Load_CECLM_general.m @@ -0,0 +1,38 @@ +function [patches, pdm, clmParams, early_term_params] = Load_CECLM_general() +%LOAD_PATCH_EXPERTS Summary of this function goes here +% Detailed explanation goes here + + % Load the patch experts/local detectors + [patches] = Load_CECLM_Patch_Experts( '../models/cen/', 'cen_patches_*_general.mat'); + + % the default PDM to use + pdmLoc = ['../models/pdm/pdm_68_aligned_wild.mat']; + + load(pdmLoc); + + pdm = struct; + pdm.M = double(M); + pdm.E = double(E); + pdm.V = double(V); + + clmParams = struct; + + clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; + clmParams.numPatchIters = size(clmParams.window_size,1); + + clmParams.regFactor = 0.9*[35, 27, 20, 20]; + clmParams.sigmaMeanShift = 1.5*[1.25, 1.375, 1.5, 1.5]; + clmParams.tikhonov_factor = [2.5, 5, 7.5, 7.5]; + + clmParams.startScale = 1; + clmParams.num_RLMS_iter = 10; + clmParams.fTol = 0.01; + clmParams.useMultiScale = true; + clmParams.use_multi_modal = 1; + clmParams.multi_modal_types = patches(1).multi_modal_types; + clmParams.numPatchIters = 4; + + % As the orientations are not equally reliable reweigh them + load('../learn_error_mapping/cen_general_mapping.mat'); +end + diff --git a/matlab_version/models/Load_CECLM_menpo.m b/matlab_version/models/Load_CECLM_menpo.m new file mode 100644 index 00000000..4a96b1f7 --- /dev/null +++ b/matlab_version/models/Load_CECLM_menpo.m @@ -0,0 +1,38 @@ +function [patches, pdm, clmParams, early_term_params] = Load_CECLM_menpo() +%LOAD_PATCH_EXPERTS Summary of this function goes here +% Detailed explanation goes here + + % Load the patch experts/local detectors + [patches] = Load_CECLM_Patch_Experts( '../models/cen/', 'cen_patches_*_menpo.mat'); + + % the default PDM to use + pdmLoc = ['../models/pdm/pdm_68_aligned_menpo.mat']; + + load(pdmLoc); + + pdm = struct; + pdm.M = double(M); + pdm.E = double(E); + pdm.V = double(V); + + clmParams = struct; + + clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; + clmParams.numPatchIters = size(clmParams.window_size,1); + + clmParams.regFactor = 0.9*[35, 27, 20, 20]; + clmParams.sigmaMeanShift = 1.5*[1.25, 1.375, 1.5, 1.5]; + clmParams.tikhonov_factor = [2.5, 5, 7.5, 7.5]; + + clmParams.startScale = 1; + clmParams.num_RLMS_iter = 10; + clmParams.fTol = 0.01; + clmParams.useMultiScale = true; + clmParams.use_multi_modal = 1; + clmParams.multi_modal_types = patches(1).multi_modal_types; + clmParams.numPatchIters = 4; + + % As the orientations are not equally reliable reweigh them + load('../learn_error_mapping/cen_menpo_mapping.mat'); +end + diff --git a/matlab_version/models/dpn/create_dpn_experts_2017_02_02.m b/matlab_version/models/cen/create_cen_experts_gen.m similarity index 81% rename from matlab_version/models/dpn/create_dpn_experts_2017_02_02.m rename to matlab_version/models/cen/create_cen_experts_gen.m index bbd528df..4c6028f8 100644 --- a/matlab_version/models/dpn/create_dpn_experts_2017_02_02.m +++ b/matlab_version/models/cen/create_cen_experts_gen.m @@ -1,5 +1,5 @@ clear; -load('C:\Users\tbaltrus\Documents\OpenFace\matlab_version\models\general\ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); +load('../general/ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); mirrorInds = [1,17;2,16;3,15;4,14;5,13;6,12;7,11;8,10;18,27;19,26;20,25;21,24;22,23;... 32,36;33,35;37,46;38,45;39,44;40,43;41,48;42,47;49,55;50,54;51,53;60,56;59,57;... @@ -26,6 +26,8 @@ patch_experts.patch_experts = cell(n_views, n_landmarks); scales = {'0.25', '0.35', '0.50', '1.00'}; +root = 'D:/deep_experts/2017-02-02/rmses/'; + for s=scales for c=1:n_views @@ -38,9 +40,9 @@ for s=scales mirror = false; % Find the relevant file if(c == frontalView) - rel_file = sprintf('D:/deep_experts/2017-02-02/rmses/MultiGeneral_arch4general_%s_frontal_%d_512.mat', s{1}, i); + rel_file = sprintf([root, 'MultiGeneral_arch4general_%s_frontal_%d_512.mat'], s{1}, i); else - rel_file = sprintf('D:/deep_experts/2017-02-02/rmses/MultiGeneral_arch4general_%s_profile%d_%d_512.mat', s{1}, c-1, i); + rel_file = sprintf([root, 'MultiGeneral_arch4general_%s_profile%d_%d_512.mat'], s{1}, c-1, i); end if(exist(rel_file, 'file')) load(rel_file); @@ -53,7 +55,7 @@ for s=scales continue; end if(c == frontalView) - rel_file = sprintf('D:/deep_experts/2017-02-02/rmses/MultiGeneral_arch4general_%s_frontal_%d_512.mat', s{1}, rel_id); + rel_file = sprintf([root, 'MultiGeneral_arch4general_%s_frontal_%d_512.mat'], s{1}, rel_id); mirror = true; load(rel_file); @@ -106,6 +108,6 @@ for s=scales end end trainingScale = str2num(s{1}); - save(['dpn_patches_', s{1} '_general_v2.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); -% write_patch_expert_bin(['dpn_patches_', s{1} '_general_v2.dat'], trainingScale, centers, visiIndex, patch_experts); + save(['cen_patches_', s{1} '_general.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); +% write_patch_expert_bin(['cen_patches_', s{1} '_general.dat'], trainingScale, centers, visiIndex, patch_experts); end \ No newline at end of file diff --git a/matlab_version/models/dpn/create_dpn_experts.m b/matlab_version/models/cen/create_cen_experts_menpo.m similarity index 52% rename from matlab_version/models/dpn/create_dpn_experts.m rename to matlab_version/models/cen/create_cen_experts_menpo.m index e5031634..d5fa8e1e 100644 --- a/matlab_version/models/dpn/create_dpn_experts.m +++ b/matlab_version/models/cen/create_cen_experts_menpo.m @@ -1,5 +1,5 @@ clear; -load('C:\Users\tbaltrus\Documents\OpenFace\matlab_version\models\general\ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); +load('../general/ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); mirrorInds = [1,17;2,16;3,15;4,14;5,13;6,12;7,11;8,10;18,27;19,26;20,25;21,24;22,23;... 32,36;33,35;37,46;38,45;39,44;40,43;41,48;42,47;49,55;50,54;51,53;60,56;59,57;... @@ -26,6 +26,10 @@ patch_experts.patch_experts = cell(n_views, n_landmarks); scales = {'0.25', '0.35', '0.50', '1.00'}; +visiIndex = zeros(7, 68); + +root = 'D:/deep_experts/menpo/rmses/'; + for s=scales for c=1:n_views @@ -34,45 +38,39 @@ for s=scales for i=1:n_landmarks - if(visiIndex(c,i)) - mirror = false; - % Find the relevant file - if(c == frontalView) - rel_file = sprintf('D:/deep_experts/rmses/MultiGeneral_arch4general_%s_frontal_%d_512.mat', s{1}, i); - else - rel_file = sprintf('D:/deep_experts/rmses/MultiGeneral_arch4general_%s_profile%d_%d_512.mat', s{1}, c-1, i); - end - if(exist(rel_file, 'file')) - load(rel_file); - else - rel_id = mirrorInds(mirrorInds(:,2)==i,1); - if(isempty(rel_id)) - rel_id = mirrorInds(mirrorInds(:,1)==i,2); - end - if(~visiIndex(c, rel_id)) - break; - end - if(c == frontalView) - rel_file = sprintf('D:/deep_experts/rmses/MultiGeneral_arch4general_%s_frontal_%d_512.mat', s{1}, rel_id); - else - rel_file = sprintf('D:/deep_experts/rmses/MultiGeneral_arch4general_%s_profile%d_%d_512.mat', s{1}, c-1, rel_id); - end - mirror = true; - load(rel_file); - end - patch_experts.correlations(c, i) = correlation_2; - patch_experts.rms_errors(c, i) = rmse; - - if(~mirror) - patch_experts.patch_experts{c, i} = weights; - else - flips = fliplr(reshape([1:121]', 11, 11)); - weights_flipped = weights; - weights_flipped{1}(2:end,:) = weights{1}(flips+1,:); - patch_experts.patch_experts{c,i} = weights_flipped; - end + mirror = false; + % Find the relevant file + if(c == frontalView) + rel_file = sprintf([root, '/%s_frontal_%d_512.mat'], s{1}, i); + else + rel_file = sprintf([root, '/%s_profile%d_%d_512.mat'], s{1}, c-1, i); end + if(exist(rel_file, 'file')) + visiIndex(c,i) = 1; + load(rel_file); + else + rel_id = mirrorInds(mirrorInds(:,2)==i,1); + if(isempty(rel_id)) + rel_id = mirrorInds(mirrorInds(:,1)==i,2); + end + if(c == frontalView) + rel_file = sprintf([root, '/%s_frontal_%d_512.mat'], s{1}, rel_id); + mirror = true; + visiIndex(c,i) = 1; + load(rel_file); + end + end + patch_experts.correlations(c, i) = correlation_2; + patch_experts.rms_errors(c, i) = rmse; + if(~mirror) + patch_experts.patch_experts{c, i} = weights; + else + flips = fliplr(reshape([1:121]', 11, 11)); + weights_flipped = weights; + weights_flipped{1}(2:end,:) = weights{1}(flips+1,:); + patch_experts.patch_experts{c,i} = weights_flipped; + end end else @@ -83,6 +81,11 @@ for s=scales corr_T = swap(corr_T, mirrorInds(:,1), mirrorInds(:,2)); patch_experts.correlations(c,:) = corr_T; + vis_T = visiIndex(swap_id,:); + % Appending a mirror view instead, based on the profile view + vis_T = swap(vis_T, mirrorInds(:,1), mirrorInds(:,2)); + visiIndex(c,:) = vis_T; + rmsT = patch_experts.rms_errors(swap_id,:); rmsT = swap(rmsT, mirrorInds(:,1), mirrorInds(:,2)); patch_experts.rms_errors(c,:) = rmsT; @@ -107,6 +110,6 @@ for s=scales end end trainingScale = str2num(s{1}); - save(['dpn_patches_', s{1} '_general.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); - write_patch_expert_bin(['dpn_patches_', s{1} '_general.dat'], trainingScale, centers, visiIndex, patch_experts); + save(['cen_patches_', s{1} '_menpo.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); + write_patch_expert_bin(['cen_patches_', s{1} '_menpo.dat'], trainingScale, centers, visiIndex, patch_experts); end \ No newline at end of file diff --git a/matlab_version/models/dpn/create_dpn_experts_sparse.m b/matlab_version/models/cen/create_cen_experts_sparse.m similarity index 95% rename from matlab_version/models/dpn/create_dpn_experts_sparse.m rename to matlab_version/models/cen/create_cen_experts_sparse.m index d6da5de9..443cb446 100644 --- a/matlab_version/models/dpn/create_dpn_experts_sparse.m +++ b/matlab_version/models/cen/create_cen_experts_sparse.m @@ -1,5 +1,5 @@ clear; -load('C:\Users\tbaltrus\Documents\OpenFace\matlab_version\models\general\ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); +load('../general/ccnf_patches_0.25_general.mat', 'centers', 'visiIndex', 'normalisationOptions'); mirrorInds = [1,17;2,16;3,15;4,14;5,13;6,12;7,11;8,10;18,27;19,26;20,25;21,24;22,23;... 32,36;33,35;37,46;38,45;39,44;40,43;41,48;42,47;49,55;50,54;51,53;60,56;59,57;... @@ -135,6 +135,6 @@ for s=scales end trainingScale = str2num(s{1}); - save(['dpn_patches_', s{1} '_general_sparse.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); - write_patch_expert_bin(['dpn_patches_', s{1} '_general_sparse.dat'], trainingScale, centers, visiIndex, patch_experts); + save(['cen_patches_', s{1} '_general_sparse.mat'], 'trainingScale', 'centers', 'visiIndex', 'patch_experts', 'normalisationOptions'); + write_patch_expert_bin(['cen_patches_', s{1} '_general_sparse.dat'], trainingScale, centers, visiIndex, patch_experts); end \ No newline at end of file diff --git a/matlab_version/models/cen/readme.txt b/matlab_version/models/cen/readme.txt new file mode 100644 index 00000000..bea82d24 --- /dev/null +++ b/matlab_version/models/cen/readme.txt @@ -0,0 +1,4 @@ +Scripts for creating CEN patch experts from already trained models. + +To create one from 300W + MultiPIE - create_cen_experts_gen.m +To create one from 300W + MultiPIE + Menpo - create_cen_experts_menpo.m \ No newline at end of file diff --git a/matlab_version/models/dpn/swap.m b/matlab_version/models/cen/swap.m similarity index 100% rename from matlab_version/models/dpn/swap.m rename to matlab_version/models/cen/swap.m diff --git a/matlab_version/models/dpn/writeMatrixBin.m b/matlab_version/models/cen/writeMatrixBin.m similarity index 100% rename from matlab_version/models/dpn/writeMatrixBin.m rename to matlab_version/models/cen/writeMatrixBin.m diff --git a/matlab_version/models/dpn/write_patch_expert_bin.m b/matlab_version/models/cen/write_patch_expert_bin.m similarity index 100% rename from matlab_version/models/dpn/write_patch_expert_bin.m rename to matlab_version/models/cen/write_patch_expert_bin.m