forked from pdollar/toolbox
-
Notifications
You must be signed in to change notification settings - Fork 0
/
acfTest.m
65 lines (60 loc) · 2.53 KB
/
acfTest.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
function [miss,roc,gt,dt] = acfTest( varargin )
% Test aggregate channel features object detector given ground truth.
%
% USAGE
% [miss,roc,gt,dt] = acfTest( pTest )
%
% INPUTS
% pTest - parameters (struct or name/value pairs)
% .name - ['REQ'] detector name
% .imgDir - ['REQ'] dir containing test images
% .gtDir - ['REQ'] dir containing test ground truth
% .pLoad - [] params for bbGt>bbLoad for test data (see bbGt>bbLoad)
% .thr - [.5] threshold on overlap area for comparing two bbs
% .mul - [0] if true allow multiple matches to each gt
% .reapply - [0] if true re-apply detector even if bbs already computed
% .ref - [10.^(-2:.25:0)] reference points (see bbGt>compRoc)
% .lims - [3.1e-3 1e1 .05 1] plot axis limits
% .show - [0] optional figure number for display
%
% OUTPUTS
% miss - log-average miss rate computed at reference points
% roc - [nx3] n data points along roc of form [score fp tp]
% gt - [mx5] ground truth results [x y w h match] (see bbGt>evalRes)
% dt - [nx6] detect results [x y w h score match] (see bbGt>evalRes)
%
% EXAMPLE
%
% See also acfTrain, acfDetect, acfDemoInria, bbGt
%
% Piotr's Image&Video Toolbox Version 3.22
% Copyright 2013 Piotr Dollar & Ron Appel. [pdollar-at-caltech.edu]
% Please email me if you find bugs, or have suggestions or questions!
% Licensed under the Simplified BSD License [see external/bsd.txt]
% get parameters
dfs={ 'name','REQ', 'imgDir','REQ', 'gtDir','REQ', 'pLoad',[], ...
'thr',.5,'mul',0, 'reapply',0, 'ref',10.^(-2:.25:0), ...
'lims',[3.1e-3 1e1 .05 1], 'show',0 };
[name,imgDir,gtDir,pLoad,thr,mul,reapply,ref,lims,show] = ...
getPrmDflt(varargin,dfs,1);
% run detector on directory of images
bbsNm=[name 'Dets.txt'];
if(reapply && exist(bbsNm,'file')), delete(bbsNm); end
if(reapply || ~exist(bbsNm,'file'))
detector = load([name 'Detector.mat']);
detector = detector.detector;
imgNms = bbGt('getFiles',{imgDir});
acfDetect( imgNms, detector, bbsNm );
end
% run evaluation using bbGt
[gt,dt] = bbGt('loadAll',gtDir,bbsNm,pLoad);
[gt,dt] = bbGt('evalRes',gt,dt,thr,mul);
[fp,tp,score,miss] = bbGt('compRoc',gt,dt,1,ref);
miss=exp(mean(log(max(1e-10,1-miss)))); roc=[score fp tp];
% optionally plot roc
if( ~show ), return; end
figure(show); plotRoc([fp tp],'logx',1,'logy',1,'xLbl','fppi',...
'lims',lims,'color','g','smooth',1,'fpTarget',ref);
title(sprintf('log-average miss rate = %.2f%%',miss*100));
savefig([name 'Roc'],show,'png');
end