public CHnMMVerificationExperiment(string setName, int nTraining, bool session2, Configuration[] configs) { this.dataSourceName = setName; this.nTraining = nTraining; this.configs = configs; this.session2 = session2; var allSets = DataSets.getVerificationDataSet(setName, nTraining, session2); this.trainingSet = allSets.First(); this.genuineSet = allSets.Skip(1).First(); this.forgerySet = allSets.Skip(2).First(); }
public VerificationExperiment(IVerificationSystem verifier /*, IVerificationSubsetCreator subsetCreator, ITraceDataProcessor traceProcessor*/, string setName) { gestureSetName = setName; this.verifier = verifier; //this.subsetCreator = subsetCreator; //this.traceProcessor = traceProcessor; var allSets = DataSets.getVerificationDataSet(gestureSetName); trainingSet = allSets.First(); genuineSet = allSets.Skip(1).First(); forgerySet = allSets.Skip(2).First(); }
public GestureDataSet processAllGestures(GestureDataSet data) { return(data.ToDictionary( e => e.Key, e => e.Value.Select(t => { if (t is Stroke) { var s = t as Stroke; return (BaseTrajectory)(new Stroke(samplePoints(s.TrajectoryPoints), s.FingerID)); } else { throw new NotImplementedException("This subclass of BaseTrajectory is currently not implemented here"); } }))); }
public DollarExperiment(string setName, bool crossValidate, int nTrainingOrSubsets) { this.dataSourceName = setName; this.nTrainingOrSubsets = nTrainingOrSubsets; this.crossValidate = crossValidate; ISubsetCreator subsetCreator = crossValidate ? new CrossvalidationSubsetCreator(nTrainingOrSubsets) : (ISubsetCreator) new SimpleSplitSubsetCreator(nTrainingOrSubsets); GestureDataSet allGestures = DataSets.getTrajectoryDataSet(setName); subsetCreator.createSubsets(allGestures); trainingSubSets = subsetCreator.getTrainingSubsets(); testSubSets = subsetCreator.getTestSubsets(); }
public RecognitionExperiment(IRecognitionSystem recognizer, ISubsetCreator subsetCreator, ITraceDataProcessor traceProcessor, string setName) { gestureSetName = setName; this.recognizer = recognizer; this.subsetCreator = subsetCreator; this.traceProcessor = traceProcessor; GestureDataSet allGestures = DataSets.getTrajectoryDataSet(setName); if (traceProcessor != null) { allGestures = traceProcessor.processAllGestures(allGestures); } subsetCreator.createSubsets(allGestures); trainingSubSets = subsetCreator.getTrainingSubsets(); testSubSets = subsetCreator.getTestSubsets(); }
public void createSubsets(GestureDataSet allGestureTraces) { trainingSubsets = new GestureDataSet[nSubsets]; testSubsets = new GestureDataSet[nSubsets]; var subsetSize = allGestureTraces.Values.First().Count() / nSubsets; for (int curSubset = 0; curSubset < nSubsets; curSubset++) { trainingSubsets[curSubset] = allGestureTraces.ToDictionary( e => e.Key, e => (IEnumerable <BaseTrajectory>)e.Value.Where((_, index) => (index / subsetSize) != curSubset).ToArray() ); testSubsets[curSubset] = allGestureTraces.ToDictionary( e => e.Key, e => (IEnumerable <BaseTrajectory>)e.Value.Where((_, index) => (index / subsetSize) == curSubset).ToArray() ); } }
public CHnMMRecognitionExperiment(string setName, bool crossValidate, int nTrainingOrSubsets, IEnumerable <Configuration> configs, ITraceDataProcessor traceProcessor = null) { this.dataSourceName = setName; this.nTrainingOrSubsets = nTrainingOrSubsets; this.crossValidate = crossValidate; this.configs = configs; ISubsetCreator subsetCreator = crossValidate ? new CrossvalidationSubsetCreator(nTrainingOrSubsets) : (ISubsetCreator) new SimpleSplitSubsetCreator(nTrainingOrSubsets); GestureDataSet allGestures = DataSets.getTrajectoryDataSet(setName); if (traceProcessor != null) { allGestures = traceProcessor.processAllGestures(allGestures); } subsetCreator.createSubsets(allGestures); trainingSubSets = subsetCreator.getTrainingSubsets(); testSubSets = subsetCreator.getTestSubsets(); }
private VerificationResults.BasicResult DoVerification(GestureDataSet trainingSet, GestureDataSet genuineSet, GestureDataSet forgerySet) { Stopwatch swTrain = new Stopwatch(); //train recognition system verifier.clearGestures(); swTrain.Restart(); foreach (var e in trainingSet) { verifier.trainGesture(e.Key, e.Value); } swTrain.Stop(); int nFalseAccepts = 0; int nFalseRejects = 0; int nGenuineAttempts = 0; //test genuine foreach (var e in genuineSet) { foreach (var trace in e.Value) { var userVerified = verifier.verifyGesture(e.Key, trace); if (!userVerified) { nFalseRejects++; } nGenuineAttempts++; } } int nForgeryAttempts = 0; //test forgeries foreach (var e in forgerySet) { foreach (var trace in e.Value) { var userVerified = verifier.verifyGesture(e.Key, trace); if (userVerified) { nFalseAccepts++; } nForgeryAttempts++; } } double FAR = (double)nFalseAccepts / nForgeryAttempts; double FRR = (double)nFalseRejects / nGenuineAttempts; return(new VerificationResults.BasicResult(FAR, FRR)); }
public void createSubsets(GestureDataSet allGestureTraces) { trainingSet = allGestureTraces.ToDictionary(e => e.Key, e => e.Value.Take(nTraining)); testSet = allGestureTraces.ToDictionary(e => e.Key, e => e.Value.Skip(nTraining)); }