Exemplo n.º 1
0
        public double PredictPersonConfidenceFirst(Mat mat, int personId)
        {
            if (!_hasTrainedModel)
            {
                EnsureTrained();
            }
            var faceEmb = detectionModule.GetFaceEmbedding(mat);

            if (faceEmb == null)
            {
                return(0);
            }
            var recognitionPersonModule   = new FaceRecognitionModule();
            var personalModelFileFilePath = String.Format("PersonalModels//First//{0}.trained", personId);

            if (File.Exists(personalModelFileFilePath))
            {
                Console.WriteLine("[INFO] Second Model exists, loading");
                recognitionPersonModule.Load(personalModelFileFilePath);
            }
            else
            {
                Console.WriteLine("[INFO] Model doesn't exist, started training");
                Train();
            }
            var prediction = recognitionPersonModule.Predict(faceEmb);

            return(prediction.Distance);
        }
Exemplo n.º 2
0
        public void EnsureTrained()
        {
            if (File.Exists(trainedModel))
            {
                Console.WriteLine("[INFO] Model exists, loading");
                recognitionModule = new FaceRecognitionModule(); // prevent crashes during repeatable load
                recognitionModule.Load(trainedModel);
            }
            else
            {
                Console.WriteLine("[INFO] Model doesn't exist, started training");
                Train();
            }

            if (File.Exists(trainedSecondModel))
            {
                Console.WriteLine("[INFO] Second Model exists, loading");
                recognitionModuleSecond.Load(trainedSecondModel);
            }
            else
            {
                Console.WriteLine("[INFO] Model doesn't exist, started training");
                Train();
            }
            _hasTrainedModel = true;
        }
Exemplo n.º 3
0
 public Surveillance(IVideoGrab videoGrab, ITrainDataDAL trainDataDAL, double confidence = 0.5)
 {
     this.videoGrab          = videoGrab;
     this.trainDataDAL       = trainDataDAL;
     this.confidence         = confidence;
     faceEyeDetector         = new FaceEyeDetector("Models\\haarcascade_frontalface_default.xml", "Models\\haarcascade_eye.xml");
     recognitionModule       = new FaceRecognitionModule();
     recognitionModuleSecond = new FaceRecognitionModule();
     detectionModule         = new DetectionModule(faceEmbeddingsModel, faceEmbeddingsSecondModel, confidence);
     door     = new DoorManager();
     labelMap = new LabelMap(trainDataDAL.GetLabelMap());
     videoGrab.ImageGrabbed += OnImageGrabbed;
     PersonDetected         += OnPersonDetected;
 }
Exemplo n.º 4
0
        private static void RunOptions(FaceRecognitionParams facePars)
        {
            var images          = GetImages(facePars.DataSet).ToList();
            var detectionModule = new DetectionModule(facePars);

            var faces = detectionModule
                        .GetFaces(images)
                        .Select(f => (GetPersonName(f.Item1), f.Item2))
                        .ToList();
            var labelMap     = new LabelMap(faces.Select(f => f.Item1).Distinct());
            var labeledFaces = faces.Select(f => (labelMap.Map[f.Item1], f.Item2));

            var testImages        = GetImages(facePars.TestSet).ToList();
            var recognitionModule = new FaceRecognitionModule();

            recognitionModule.Train(labeledFaces.ToList(), facePars.Embeddings);

            foreach (var(name, bytes) in testImages)
            {
                var testImg    = detectionModule.ProcessImage(bytes);
                var prediction = recognitionModule.Predict(testImg);
                Console.WriteLine($"Img name : {name} Prediction: {labelMap.ReverseMap[prediction.Label]}, Dist : {prediction.Distance}");
            }
        }