Dimitrios@0
|
1 function [results] = eventDetectionMetrics_frameBased(outputFile,GTFile)
|
Dimitrios@0
|
2
|
Dimitrios@0
|
3 % Load event list from output and ground-truth
|
Dimitrios@0
|
4 [onset,offset,classNames] = loadEventsList(outputFile);
|
Dimitrios@0
|
5 [onsetGT,offsetGT,classNamesGT] = loadEventsList(GTFile);
|
Dimitrios@0
|
6
|
Dimitrios@0
|
7
|
Dimitrios@0
|
8 % Convert event list into frame-based representation (10msec resolution)
|
Dimitrios@0
|
9 [eventRoll] = convertEventListToEventRoll(onset,offset,classNames);
|
Dimitrios@0
|
10 [eventRollGT] = convertEventListToEventRoll(onsetGT,offsetGT,classNamesGT);
|
Dimitrios@0
|
11
|
Dimitrios@0
|
12
|
Dimitrios@0
|
13 % Fix durations of eventRolls
|
Dimitrios@0
|
14 if (size(eventRollGT,1) > size(eventRoll,1)) eventRoll = [eventRoll; zeros(size(eventRollGT,1)-size(eventRoll,1),16)]; end;
|
Dimitrios@0
|
15 if (size(eventRoll,1) > size(eventRollGT,1)) eventRollGT = [eventRollGT; zeros(size(eventRoll,1)-size(eventRollGT,1),16)]; end;
|
Dimitrios@0
|
16
|
Dimitrios@0
|
17
|
Dimitrios@0
|
18 % Compute frame-based metrics
|
Dimitrios@0
|
19 Nref = sum(sum(eventRollGT));
|
Dimitrios@0
|
20 Ntot = sum(sum(eventRoll));
|
Dimitrios@0
|
21 Ntp = sum(sum(eventRoll+eventRollGT > 1));
|
Dimitrios@0
|
22 Nfp = sum(sum(eventRoll-eventRollGT > 0));
|
Dimitrios@0
|
23 Nfn = sum(sum(eventRollGT-eventRoll > 0));
|
Dimitrios@0
|
24 Nsubs = min(Nfp,Nfn);
|
Dimitrios@0
|
25
|
Dimitrios@0
|
26
|
Dimitrios@0
|
27 results.Rec = Ntp/(Nref+eps);
|
Dimitrios@0
|
28 results.Pre = Ntp/(Ntot+eps);
|
Dimitrios@0
|
29 results.F = 2*((results.Pre*results.Rec)/(results.Pre+results.Rec+eps));
|
Dimitrios@0
|
30 results.AEER = (Nfn+Nfp+Nsubs)/(Nref+eps); |