public TaskLoadGalleryDatabase(string path)
 {
     DoWork             += (s, e) => e.Result = FaceFeaturesDB.CreateFromDump(path);
     RunWorkerCompleted += (s, e) => {
         OnLoadCompleted.Invoke(this, e.Result as FaceFeaturesDB);
     };
 }
Exemplo n.º 2
0
        private void SaveFeaturesExtracted(FaceFeaturesDB db, string csvGalleryPath)
        {
            var dbName           = string.Format("GalleryFeatures-{0}.csv", DateTimeOffset.Now.ToUnixTimeMilliseconds());
            var folderCsvGallery = Path.GetDirectoryName(Path.GetFullPath(csvGalleryPath));
            var path             = Path.Combine(folderCsvGallery, dbName);

            db.Dump(path);
            progressLabel.Text = string.Format("Saved on {0}", path);
        }
        static void Main()
        {
            var photos   = PhotoMetadataCsv.FromCSV(GALLERY_CSV).ToList();
            var sketches = PhotoMetadataCsv.FromCSV(SKETCHS_CSV).ToList();

            var extractor = TestUtils.GetPhotoSketchFeatureExtractor(Params.GetReferenceShape());
            // extract or load from dumped db
            //var db = ExtractFeaturesDB(extractor, true);
            var db   = FaceFeaturesDB.CreateFromDump(DUMPED_DB);
            var cbir = new PhotoSketchCBIR(extractor)
            {
                Database = db
            };

            TestSingleComponents(cbir, sketches);
            TestDifferentFusion(cbir, sketches);
            TestBestCBR(cbir, sketches);
        }
        public static FaceFeaturesDB ExtractFeaturesDB(PhotoSketchFeatureExtractor extractor, List <PhotoMetadata> photos, bool savedb = true)
        {
            var dbName = string.Format("features-{0}.csv", DateTimeOffset.Now.ToUnixTimeMilliseconds());
            var db     = new FaceFeaturesDB();

            Parallel.ForEach(photos, photo =>
            {
                try {
                    var feature = extractor.ExtractFaceFeatures(photo.AbsolutePath);
                    db.AddPhotoFeatures(photo, feature);
                } catch (ArgumentException) { }
            });

            if (savedb)
            {
                db.Dump(dbName);
                Console.WriteLine("Features db saved on: {0}", dbName);
            }

            return(db);
        }
        public TaskExtractGalleryFeatures(PhotoSketchFeatureExtractor extractor, string galleryPath)
        {
            WorkerReportsProgress = true;
            DoWork += (s, e) =>
            {
                var db              = new FaceFeaturesDB();
                var photos          = PhotoMetadataCsv.FromCSV(galleryPath).ToList();
                var totalPhotos     = photos.Count;
                var currentProgress = 0;

                Parallel.ForEach(photos, photo =>
                {
                    try {
                        var feature = extractor.ExtractFaceFeatures(photo.AbsolutePath);
                        db.AddPhotoFeatures(photo, feature);
                    } catch (ArgumentException) { }

                    Interlocked.Increment(ref currentProgress);
                    ReportProgress((int)(currentProgress / (float)totalPhotos * 100));
                });

                e.Result = db;
            };
        }
Exemplo n.º 6
0
 public PhotoSketchCBIR(PhotoSketchFeatureExtractor featureExtractor)
 {
     this.featureExtractor = featureExtractor;
     SearchFusionStrategy  = new WeightedSum(1, 1, 1, 1, 1, 1);
     Database = new FaceFeaturesDB();
 }