Exemple #1
0
        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();
        }
Exemple #2
0
        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");
         }
     })));
 }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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()
                    );
            }
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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));
        }
Exemple #9
0
 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));
 }