forked from sergeyk/selective_search_ijcv_with_python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BoxAverageBestOverlap.m
49 lines (43 loc) · 1.41 KB
/
BoxAverageBestOverlap.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
function [abo mabo boScores avgNumBoxes] = BoxAverageBestOverlap(gtBoxes, gtNrs, testBoxes)
% [abo mabo boScores avgNumBoxes] = BoxAverageBestOverlap(gtBoxes, gtNrs, testBoxes)
%
% Calculate Average Best Overlap scores
%
% gtBoxes: Cell array of ground truth boxes per class (see
% GetAllObjectBoxes)
% gtNrs: Cell array with image nrs corresponding to ground truth.
% testBoxes: Cell array of testboxes per image.
%
% abo: Average Best Overlap per class (Pascal Overlap criterion)
% mabo: Mean Average Best Overlap (mean(abo))
% boScores: Best Overlap Score per GT box.
% avgNumBoxes: Average number of boxes per image
%
% Jasper Uijlings - 2013
% Check nr of gt elements
nClasses = length(gtBoxes);
boScores = cell(1, nClasses);
for cI = 1:nClasses
boScores{cI} = zeros(size(gtBoxes{cI}, 1),1);
end
% indices per class
classIdx = ones(1, nClasses);
for cI = 1:length(gtBoxes)
for i = 1:size(gtBoxes{cI}, 1)
boScores{cI}(classIdx(cI)) = ...
BoxBestOverlap(gtBoxes{cI}(i,:), testBoxes{gtNrs{cI}(i)});
classIdx(cI) = classIdx(cI) + 1;
end
end
% Calculation abo and mabo measures
abo = zeros(nClasses, 1);
for cI = 1:nClasses
abo(cI) = mean(boScores{cI});
end
mabo = mean(abo);
% Calculation avgNumBoxes
numBoxes = zeros(length(testBoxes), 1);
for i=1:length(testBoxes)
numBoxes(i) = size(testBoxes{i}, 1);
end
avgNumBoxes = mean(numBoxes);