annotate event_detection/eventDetectionMetrics_frameBased.m @ 10:507300d2ed66 tip

merge
author Dan Stowell <dan.stowell@elec.qmul.ac.uk>
date Thu, 10 Oct 2013 09:18:47 +0100
parents 2c9915c861d8
children
rev   line source
emmanouil@0 1 function [results] = eventDetectionMetrics_frameBased(outputFile,GTFile)
emmanouil@0 2
emmanouil@0 3 % Frame-based evaluation for event detection task
emmanouil@0 4 % outputFile: the output of the event detection system
emmanouil@0 5 % GTFile: the ground truth list of events
emmanouil@0 6
emmanouil@0 7 % Load event list from output and ground-truth
emmanouil@0 8 [onset,offset,classNames] = loadEventsList(outputFile);
emmanouil@0 9 [onsetGT,offsetGT,classNamesGT] = loadEventsList(GTFile);
emmanouil@0 10
emmanouil@0 11
emmanouil@0 12 % Convert event list into frame-based representation (10msec resolution)
emmanouil@0 13 [eventRoll] = convertEventListToEventRoll(onset,offset,classNames);
emmanouil@0 14 [eventRollGT] = convertEventListToEventRoll(onsetGT,offsetGT,classNamesGT);
emmanouil@0 15
emmanouil@0 16
emmanouil@0 17 % Fix durations of eventRolls
emmanouil@0 18 if (size(eventRollGT,1) > size(eventRoll,1)) eventRoll = [eventRoll; zeros(size(eventRollGT,1)-size(eventRoll,1),16)]; end;
emmanouil@0 19 if (size(eventRoll,1) > size(eventRollGT,1)) eventRollGT = [eventRollGT; zeros(size(eventRoll,1)-size(eventRollGT,1),16)]; end;
emmanouil@0 20
emmanouil@0 21
emmanouil@0 22 % Compute frame-based metrics
emmanouil@0 23 Nref = sum(sum(eventRollGT));
emmanouil@0 24 Ntot = sum(sum(eventRoll));
emmanouil@0 25 Ntp = sum(sum(eventRoll+eventRollGT > 1));
emmanouil@0 26 Nfp = sum(sum(eventRoll-eventRollGT > 0));
emmanouil@0 27 Nfn = sum(sum(eventRollGT-eventRoll > 0));
emmanouil@0 28 Nsubs = min(Nfp,Nfn);
emmanouil@0 29
emmanouil@0 30
emmanouil@0 31 results.Rec = Ntp/(Nref+eps);
emmanouil@0 32 results.Pre = Ntp/(Ntot+eps);
emmanouil@0 33 results.F = 2*((results.Pre*results.Rec)/(results.Pre+results.Rec+eps));
emmanouil@0 34 results.AEER = (Nfn+Nfp+Nsubs)/(Nref+eps);