2016-04-28 21:40:36 +02:00
|
|
|
clear
|
|
|
|
|
|
|
|
%%
|
|
|
|
scrsz = get(0,'ScreenSize');
|
|
|
|
figure1 = figure('Position',[20 50 3*scrsz(3)/4 0.9*scrsz(4)]);
|
|
|
|
|
|
|
|
set(figure1,'Units','Inches');
|
|
|
|
pos = get(figure1,'Position');
|
|
|
|
set(figure1,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
|
|
|
|
|
|
|
|
% Create axes
|
|
|
|
axes1 = axes('Parent',figure1,'FontSize',40,'FontName','Helvetica');
|
|
|
|
|
|
|
|
line_width = 6;
|
|
|
|
hold on;
|
|
|
|
|
|
|
|
load('results/intraface_wild_resize.mat');
|
|
|
|
labels_all = labels_all(18:end,:,:);
|
|
|
|
shapes_all = shapes_all(18:end,:,:);
|
|
|
|
|
|
|
|
intraface_wild_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
% removing faces that were not detected by intraface for fairness
|
|
|
|
detected = intraface_wild_error < 1;
|
|
|
|
|
|
|
|
load('results/results_wild_clnf.mat');
|
|
|
|
labels = experiments.labels([1:60,62:64,66:end],:,detected);
|
|
|
|
shapes = experiments.shapes([1:60,62:64,66:end],:,detected);
|
|
|
|
labels = labels(18:end,:,:);
|
|
|
|
% center the pixel
|
|
|
|
shapes = shapes(18:end,:,:) + 0.5;
|
|
|
|
|
|
|
|
clnf_error = compute_error( labels, shapes);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(clnf_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, 'r','DisplayName', 'OpenFace', 'LineWidth',line_width);
|
|
|
|
hold on;
|
|
|
|
load('results/intraface_wild_resize.mat');
|
|
|
|
labels_all = labels_all(18:end,:,detected);
|
|
|
|
% center the pixel
|
|
|
|
shapes_all = shapes_all(18:end,:,detected) + 0.5;
|
|
|
|
|
|
|
|
intraface_wild_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(intraface_wild_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '.-g','DisplayName', 'SDM (CVPR 13)', 'LineWidth',line_width);
|
|
|
|
hold on;
|
|
|
|
|
|
|
|
load('results/GNDPM_300W.mat');
|
|
|
|
% center the pixel
|
|
|
|
shapes_all = shapes_all(:,:,detected) + 1;
|
|
|
|
labels_all = labels_all(:,:,detected);
|
|
|
|
|
|
|
|
gndpm_wild_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(gndpm_wild_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '-.','DisplayName', 'GNDPM (CVPR 14)', 'LineWidth',line_width);
|
|
|
|
hold on;
|
|
|
|
|
|
|
|
|
|
|
|
load('results/zhu_wild.mat');
|
|
|
|
labels_all = labels_all(18:end,:,detected);
|
|
|
|
shapes_all = shapes_all(18:end,:,detected);
|
|
|
|
|
|
|
|
zhu_wild_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(zhu_wild_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '.-c','DisplayName', 'Tree based (CVPR 12)', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/results_wild_clm.mat');
|
|
|
|
labels = experiments.labels([1:60,62:64,66:end],:,detected);
|
|
|
|
shapes = experiments.shapes([1:60,62:64,66:end],:,detected);
|
|
|
|
labels = labels(18:end,:,:);
|
|
|
|
% center the pixel
|
|
|
|
shapes = shapes(18:end,:,:) + 0.5;
|
|
|
|
|
|
|
|
clm_error = compute_error( labels, shapes);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(clm_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '--b','DisplayName', 'CLM+', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/drmf_wild.mat');
|
|
|
|
labels_all = labels_all(18:end,:,detected);
|
|
|
|
shapes_all = shapes_all(18:end,:,detected);
|
|
|
|
|
|
|
|
drmf_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(drmf_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '-.k','DisplayName', 'DRMF (CVPR 13)', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
set(gca,'xtick',[0:0.05:0.15])
|
|
|
|
xlim([0,0.15]);
|
2017-04-14 22:55:18 +02:00
|
|
|
xlabel('IOD normalised shape error','FontName','Helvetica');
|
2016-04-28 21:40:36 +02:00
|
|
|
ylabel('Proportion of images','FontName','Helvetica');
|
|
|
|
grid on
|
|
|
|
% title('Fitting in the wild without outline','FontSize',60,'FontName','Helvetica');
|
|
|
|
|
|
|
|
leg = legend('show', 'Location', 'SouthEast');
|
|
|
|
set(leg,'FontSize',30)
|
|
|
|
|
|
|
|
print -dpdf results/in-the-wild-clnf-no-outline.pdf
|
|
|
|
|
|
|
|
%%
|
|
|
|
scrsz = get(0,'ScreenSize');
|
|
|
|
figure1 = figure('Position',[20 50 3*scrsz(3)/4 0.9*scrsz(4)]);
|
|
|
|
|
|
|
|
set(figure1,'Units','Inches');
|
|
|
|
pos = get(figure1,'Position');
|
|
|
|
set(figure1,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
|
|
|
|
|
|
|
|
% Create axes
|
|
|
|
axes1 = axes('Parent',figure1,'FontSize',40,'FontName','Helvetica');
|
|
|
|
|
|
|
|
line_width = 6;
|
|
|
|
hold on;
|
|
|
|
|
|
|
|
load('results/results_wild_clnf.mat');
|
|
|
|
labels = experiments.labels([1:60,62:64,66:end],:,:);
|
|
|
|
% center the pixel
|
|
|
|
shapes = experiments.shapes([1:60,62:64,66:end],:,:) + 0.5;
|
|
|
|
|
|
|
|
clnf_error = compute_error( labels, shapes);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(clnf_error);
|
|
|
|
hold on;
|
|
|
|
|
|
|
|
plot(error_x, error_y, 'r','DisplayName', 'OpenFace', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/zhu_wild.mat');
|
|
|
|
|
|
|
|
zhu_wild_error = compute_error(labels_all(:,:,:), shapes_all(:,:,:));
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(zhu_wild_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '.-c','DisplayName', 'Zhu et al.', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/yu_wild.mat');
|
|
|
|
|
|
|
|
yu_wild_error = compute_error(lmark_dets_all(:,:,:)-1, shapes_all(:,:,:));
|
|
|
|
yu_wild_error(isnan(yu_wild_error)) = 1;
|
|
|
|
yu_wild_error(isinf(yu_wild_error)) = 1;
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(yu_wild_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, 'xg','DisplayName', 'Yu et al.', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/results_wild_clm.mat');
|
|
|
|
experiments(1).labels = experiments(1).labels([1:60,62:64,66:end],:,:);
|
|
|
|
% center the pixel
|
|
|
|
experiments(1).shapes = experiments(1).shapes([1:60,62:64,66:end],:,:) + 0.5;
|
|
|
|
|
|
|
|
clm_error = compute_error( experiments(1).labels, experiments(1).shapes);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(clm_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '--b','DisplayName', 'CLM+', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
load('results/drmf_wild.mat');
|
|
|
|
|
|
|
|
drmf_error = compute_error(labels_all, shapes_all);
|
|
|
|
|
|
|
|
[error_x, error_y] = cummErrorCurve(drmf_error);
|
|
|
|
|
|
|
|
plot(error_x, error_y, '-.k','DisplayName', 'DRMF', 'LineWidth',line_width);
|
|
|
|
|
|
|
|
set(gca,'xtick',[0:0.05:0.15])
|
|
|
|
xlim([0,0.15]);
|
2017-04-14 22:55:18 +02:00
|
|
|
xlabel('IOD normalised shape error','FontName','Helvetica');
|
2016-04-28 21:40:36 +02:00
|
|
|
ylabel('Proportion of images','FontName','Helvetica');
|
|
|
|
grid on
|
|
|
|
%title('Fitting in the wild','FontSize',60,'FontName','Helvetica');
|
|
|
|
|
|
|
|
legend('show', 'Location', 'SouthEast');
|
|
|
|
|
|
|
|
print -dpdf results/in-the-wild-comparison.pdf
|