annotate eventDetectionMetrics_eventBased.m @ 1:3ea8ed09af0f tip

additional clarifications
author Dimitrios Giannoulis
date Wed, 13 Mar 2013 11:57:24 +0000
parents 22b10c5b72e8
children
rev   line source
Dimitrios@0 1 function [results] = eventDetectionMetrics_eventBased(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 % Total number of detected and reference events
Dimitrios@0 9 Ntot = length(onset);
Dimitrios@0 10 Nref = length(onsetGT);
Dimitrios@0 11
Dimitrios@0 12
Dimitrios@0 13 % Number of correctly transcribed events, onset within a +/-100 ms range
Dimitrios@0 14 Ncorr = 0;
Dimitrios@0 15 NcorrOff = 0;
Dimitrios@0 16 for j=1:length(onsetGT)
Dimitrios@0 17 for i=1:length(onset)
Dimitrios@0 18
Dimitrios@0 19 if( strcmp(classNames{i},classNamesGT{j}) && (abs(onsetGT(j)-onset(i))<=0.1) )
Dimitrios@0 20 Ncorr = Ncorr+1;
Dimitrios@0 21
Dimitrios@0 22 % If offset within a +/-100 ms range or within 50% of ground-truth event's duration
Dimitrios@0 23 if abs(offsetGT(j) - offset(i)) <= max(0.1, 0.5 * (offsetGT(j) - onsetGT(j)))
Dimitrios@0 24 NcorrOff = NcorrOff +1;
Dimitrios@0 25 end;
Dimitrios@0 26
Dimitrios@0 27 break; % In order to not evaluate duplicates
Dimitrios@0 28
Dimitrios@0 29 end;
Dimitrios@0 30 end;
Dimitrios@0 31
Dimitrios@0 32 end;
Dimitrios@0 33
Dimitrios@0 34
Dimitrios@0 35 % Compute onset-only event-based metrics
Dimitrios@0 36 Nfp = Ntot-Ncorr;
Dimitrios@0 37 Nfn = Nref-Ncorr;
Dimitrios@0 38 Nsubs = min(Nfp,Nfn);
Dimitrios@0 39 results.Rec = Ncorr/(Nref+eps);
Dimitrios@0 40 results.Pre = Ncorr/(Ntot+eps);
Dimitrios@0 41 results.F = 2*((results.Pre*results.Rec)/(results.Pre+results.Rec+eps));
Dimitrios@0 42 results.AEER= (Nfn+Nfp+Nsubs)/(Nref+eps);
Dimitrios@0 43
Dimitrios@0 44
Dimitrios@0 45 % Compute onset-offset event-based metrics
Dimitrios@0 46 NfpOff = Ntot-NcorrOff;
Dimitrios@0 47 NfnOff = Nref-NcorrOff;
Dimitrios@0 48 NsubsOff = min(NfpOff,NfnOff);
Dimitrios@0 49 results.RecOff = NcorrOff/(Nref+eps);
Dimitrios@0 50 results.PreOff = NcorrOff/(Ntot+eps);
Dimitrios@0 51 results.FOff = 2*((results.PreOff*results.RecOff)/(results.PreOff+results.RecOff+eps));
Dimitrios@0 52 results.AEEROff= (NfnOff+NfpOff+NsubsOff)/(Nref+eps);