public User TestFromFeature(Guid frsId, MatrixString matrixString) { var db = new FrcContext(); var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault(); if (frs == null) { throw new Exception("Face recognition system is not exist"); } User result; switch (frs.Type) { case "LDA": result = recognizeLDAbyFeature(frs.TypeSystemId, db, frsId, matrixString); break; default: throw new NotImplementedException(); } db.Dispose(); return(result); }
public User TestFromImage(Guid frsId, string imageByteArray, int systemEtalonCount) { var db = new FrcContext(); var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault(); if (frs == null) { throw new Exception("Face recognition system is not exist"); } User result; switch (frs.Type) { case "LDA": result = recognizeLDA(frs.TypeSystemId, db, frsId, imageByteArray, systemEtalonCount); break; default: throw new NotImplementedException(); } db.Dispose(); return(result); }
public MatrixString[] GetFrsParemeter(Guid frsId) { var db = new FrcContext(); var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault(); if (frs == null) { throw new Exception("Face recognition system is not exist"); } MatrixString[] result; switch (frs.Type) { case "LDA": result = paramLDA(frs.TypeSystemId, db, frsId); break; default: throw new NotImplementedException(); } db.Dispose(); return(result); }
public Image Get(Guid imageId) { var db = new FrcContext(); var imageEntity = db.Images.Where(x => x.ImageId == imageId).FirstOrDefault(); db.Dispose(); return(imageEntity); }
public List <DatabaseTestUser> GetList(Guid frsId) { var db = new FrcContext(); var frsList = db.DatabaseTestUsers.Where(x => x.FaceRecognitionSystemId == frsId).ToList(); db.Dispose(); return(frsList); }
public void startAddingDatabase() { var db = new FrcContext(); proccessDatabase(db); Console.ReadKey(); db.Dispose(); }
public List <FaceRecognitionSystem> GetFrsList() { var db = new FrcContext(); var frsList = db.FaceRecognitionSystems.ToList(); db.Dispose(); return(frsList); }
// Вообще лучше инкапсулировать всё что связано с LDA в отдельный модуль. public void TestFromDatabase(Guid frsId) { var db = new FrcContext(); var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault(); if (frs == null) { throw new Exception("Face recognition system is not exist"); } switch (frs.Type) { case "LDA": testLDA(frs.TypeSystemId, db, frsId); break; default: throw new NotImplementedException(); } db.Dispose(); }
// to do: продумать как можно лучше работать с массивами пользователей, // чтобы не пришлось по сто раз извлекать для каждой регистрации в БД. public void RegisterUserList(List <Guid> imageIdList, Guid frsId) { var db = new FrcContext(); var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault(); if (frs == null) { throw new Exception("Face recognition system is not exist"); } switch (frs.Type) { case "LDA": registerLDA(frs.TypeSystemId, db, imageIdList, frsId); break; default: throw new NotImplementedException(); } db.Dispose(); }
public Guid Create() { var db = new FrcContext(); var imdb = db.ImageDatabases.Where(x => x.DatabaseName == md.databaseName).FirstOrDefault(); if (imdb == null) { throw new Exception("Image database is not exist"); } totalTrainImageForUser = (int)Math.Floor( (double)imdb.TotalImageForUser * (Constants.HUNDRED_PERCENT - md.databaseTestImagesPercent) / Constants.HUNDRED_PERCENT); totalUserForTrain = (int)Math.Floor( (double)imdb.TotalUser * (Constants.HUNDRED_PERCENT - md.databaseTestUsersForOpenTaskPercent) / Constants.HUNDRED_PERCENT); if (totalTrainImageForUser == 0 || totalUserForTrain == 0) { throw new Exception("Not enaught images for user"); } // to do: обращаться ко всем элементам не очень так как для больших БД может не хватить памяти: var userListOfListsForTrain = db.Users.OrderBy(x => x.Username).Take(totalUserForTrain) .Select(x => x.Images.OrderBy(y => y.ImageName).Take(totalTrainImageForUser)).ToList(); foreach (var userImageList in userListOfListsForTrain) { List <Matrix <double> > userMatrixList = new List <Matrix <double> >(); foreach (var userImage in userImageList) { var imageMatrix = ImageHelper.ImageByteArray2pixelArray(userImage.ImageByteArray); userMatrixList.Add(DenseMatrix.OfArray(imageMatrix)); } trainImageLists.Add(userMatrixList); } Guid frsId; switch (md.trainName) { case "LDA": frsId = trainLDA(imdb, db); break; default: throw new NotImplementedException(); } // Записать все изображения пользователей, которые предназначены для тестирования БД на закрытом множестве. var userListOfListsForTest = db.Users.OrderBy(x => x.Username).Take(totalUserForTrain) .Select(x => x.Images.OrderBy(y => y.ImageName).Skip(totalTrainImageForUser)).ToList(); var testList = userListOfListsForTest.SelectMany(x => x.Select(i => new DatabaseTestUser { DatabaseTestUserId = Guid.NewGuid(), FaceRecognitionSystemId = frsId, ImageId = i.ImageId, })).ToList(); db.DatabaseTestUsers.AddRange(testList); db.SaveChanges(); db.Dispose(); // Зарегестрировать все изображения пользователей, которые учавствовали в обучении. var registrator = new FaceRecognitionRegistrator(); var imageIdList = userListOfListsForTrain.SelectMany(x => x.Select(y => y.ImageId)).ToList(); registrator.RegisterUserList(imageIdList, frsId); return(frsId); }