public TaskLoadGalleryDatabase(string path) { DoWork += (s, e) => e.Result = FaceFeaturesDB.CreateFromDump(path); RunWorkerCompleted += (s, e) => { OnLoadCompleted.Invoke(this, e.Result as FaceFeaturesDB); }; }
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; }; }
public PhotoSketchCBIR(PhotoSketchFeatureExtractor featureExtractor) { this.featureExtractor = featureExtractor; SearchFusionStrategy = new WeightedSum(1, 1, 1, 1, 1, 1); Database = new FaceFeaturesDB(); }