forked from yindaz/DeepCompletionRelease
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevalDepth.m
138 lines (108 loc) · 6.16 KB
/
evalDepth.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
function [ metric, example_error ] = evalDepth( result_folder, dataset, suffix )
%EVALDEPTH Evaluate completed depth
switch dataset
case 'scannet'
list = '../torch/data_list/scannet_test_list_small.txt';
load('scannettestdata.mat');
testdata = scannettestdata;
fp = fopen(list);
tmp = textscan(fp, '%s');
test_data_name = tmp{1};
fclose(fp);
sid = cell(length(test_data_name),1);
vidc = cell(length(test_data_name),1);
vidd = cell(length(test_data_name),1);
for a = 1:length(test_data_name)
tmp = regexp(test_data_name{a}, '/', 'split');
sid{a} = tmp{1};
vidc{a} = tmp{3};
vidd{a} = strrep(vidc{a}, '_suffix', '');
end
rs_list = cell(length(test_data_name),1);
for a = 1:length(test_data_name)
rs_list{a} = sprintf('%s/%s_%s_%s.png', result_folder, sid{a}, vidc{a}, suffix);
end
example_error = repmat(struct('error',[]), length(test_data_name), 1);
for a = 1:length(test_data_name)
fprintf('%d/%d\n', a, length(test_data_name));
result = imread(rs_list{a});
result = double(result)/4000;
raw = testdata(a).raw;
gdt = testdata(a).gdt;
diff = abs(result-gdt);
valid1 = gdt>0;
valid2 = gdt>0 & raw>0;
valid3 = gdt>0 & raw==0;
example_error(a).sqr = diff(valid1(:)).^2;
example_error(a).rel = diff(valid1(:))./gdt(valid1(:));
example_error(a).dt = max(result(valid1(:))./gdt(valid1(:)), gdt(valid1(:))./result(valid1(:)));
example_error(a).sqr_raw = diff(valid2(:)).^2;
example_error(a).rel_raw = diff(valid2(:))./gdt(valid2(:));
example_error(a).dt_raw = max(result(valid2(:))./gdt(valid2(:)), gdt(valid2(:))./result(valid2(:)));
example_error(a).sqr_ukn = diff(valid3(:)).^2;
example_error(a).rel_ukn = diff(valid3(:))./gdt(valid3(:));
example_error(a).dt_ukn = max(result(valid3(:))./gdt(valid3(:)), gdt(valid3(:))./result(valid3(:)));
end
metric.rel = median(vertcat(example_error.rel));
metric.rmse = sqrt(median(vertcat(example_error.sqr)));
dt = vertcat(example_error.dt);
metric.dt = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
metric.rel_raw = median(vertcat(example_error.rel_raw));
metric.rmse_raw = sqrt(median(vertcat(example_error.sqr_raw)));
dt = vertcat(example_error.dt_raw);
metric.dt_raw = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
metric.rel_ukn = median(vertcat(example_error.rel_ukn));
metric.rmse_ukn = sqrt(median(vertcat(example_error.sqr_ukn)));
dt = vertcat(example_error.dt_ukn);
metric.dt_ukn = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
case 'mp_render'
load('matterporttestdata.mat');
list = '../torch/data_list/mp_test_list_horizontal.txt';
fp = fopen(list);
tmp = textscan(fp, '%s');
temp_list = tmp{1};
fclose(fp);
rs_list = cell(length(temp_list),1);
for a = 1:length(temp_list)
seg = regexp(temp_list{a}, '/', 'split');
rs_list{a} = sprintf('%s/%s_%s_%s.png', result_folder, seg{end-2}, strrep(seg{end}(1:end-4), '_i', '_d'), suffix);
end
example_error = repmat(struct('error',[]), length(temp_list), 1);
for a = 1:length(temp_list)
fprintf('%d/%d\n', a, length(temp_list));
result = imread(rs_list{a});
result = double(result)/4000;
raw = testdata(a).raw;
gdt = testdata(a).gdt;
diff = abs(result-gdt);
valid1 = gdt>0;
valid2 = gdt>0 & raw>0;
valid3 = gdt>0 & raw==0;
example_error(a).sqr = diff(valid1(:)).^2;
example_error(a).rel = diff(valid1(:))./gdt(valid1(:));
example_error(a).dt = max(result(valid1(:))./gdt(valid1(:)), gdt(valid1(:))./result(valid1(:)));
example_error(a).sqr_raw = diff(valid2(:)).^2;
example_error(a).rel_raw = diff(valid2(:))./gdt(valid2(:));
example_error(a).dt_raw = max(result(valid2(:))./gdt(valid2(:)), gdt(valid2(:))./result(valid2(:)));
example_error(a).sqr_ukn = diff(valid3(:)).^2;
example_error(a).rel_ukn = diff(valid3(:))./gdt(valid3(:));
example_error(a).dt_ukn = max(result(valid3(:))./gdt(valid3(:)), gdt(valid3(:))./result(valid3(:)));
example_error(a).rel_ukn_med = median(example_error(a).rel_ukn);
example_error(a).rmse_ukn_med = sqrt(median(example_error(a).sqr_ukn));
end
metric.rel = median(vertcat(example_error.rel));
metric.rmse = sqrt(median(vertcat(example_error.sqr)));
dt = vertcat(example_error.dt);
metric.dt = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
metric.rel_raw = median(vertcat(example_error.rel_raw));
metric.rmse_raw = sqrt(median(vertcat(example_error.sqr_raw)));
dt = vertcat(example_error.dt_raw);
metric.dt_raw = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
metric.rel_ukn = median(vertcat(example_error.rel_ukn));
metric.rmse_ukn = sqrt(median(vertcat(example_error.sqr_ukn)));
dt = vertcat(example_error.dt_ukn);
metric.dt_ukn = [sum(dt<1.05)/length(dt) sum(dt<1.10)/length(dt) sum(dt<1.25)/length(dt) sum(dt<1.5625)/length(dt) sum(dt<1.9531)/length(dt)];
otherwise
fprintf('Unknown Dataset!\n')
end
end