private void DoCompletion(object sender, DoWorkEventArgs e) { ShapeModelInference inference = new ShapeModelInference(); inference.SetBeliefs(this.shapeModel); inference.MaskCompletionIterationCount = 300; inference.IterationsBetweenCallbacks = 5; inference.MaskCompletionProgress += OnMaskCompletionProgressChange; Mask completedMask = inference.CompleteMasks(new[] { this.maskToComplete }, new[] { (bool[,])e.Argument })[0]; e.Result = GetCertainCompletedMask(completedMask); }
private static void Main() { Rand.Restart(666); //AngleScaleTest(); //return; const int shapePartCount = 8; const int traitCount = 5; const double observationNoiseProb = 0.01; const int trainingSetSize = 30; const int imageRepeatCount = 1; const string modelNamePrefx = "horses"; //const string trainTestImagePath = "../../../Data/Caltech101/AnnotationsConverted/Motorbikes_16"; //const string trainTestImagePath = "../../../Data/horses/scale_invariance"; const string trainTestImagePath = "../../../Data/horses/clean"; bool[][,] trainingLabels = ImageHelpers.LoadImagesAsSameSizeMasks(trainTestImagePath, trainingSetSize, trainingSetSize, 0); trainingLabels = RepeatImages(trainingLabels, imageRepeatCount); // Save training set for (int i = 0; i < trainingLabels.Length; ++i) { ImageHelpers.ArrayToBitmap(trainingLabels[i], b => b ? Color.Red : Color.Green).Save(string.Format("training_labels_{0}.png", i)); } ShapeModelInference inference = new ShapeModelInference(); inference.TrainingIterationCount = 10000; inference.IterationsBetweenCallbacks = 1; inference.SetPriorBeliefs(trainingLabels[0].GetLength(0), trainingLabels[0].GetLength(1), traitCount, shapePartCount, observationNoiseProb); inference.ShapeModelLearningProgress += OnShapeModelLearningProgress; ShapeModel model = inference.LearnModel(trainingLabels).Item1; model.Save(string.Format("./{0}_{1}_traits_{2}_images_{3}_parts.bin", modelNamePrefx, traitCount, trainingSetSize, shapePartCount)); }
private void DoFitting(object sender, DoWorkEventArgs e) { ShapeModelInference inference = new ShapeModelInference(); inference.SetBeliefs(this.shapeModel); inference.TrainingIterationCount = 1000; inference.IterationsBetweenCallbacks = 5; inference.ShapeModelLearningProgress += OnShapeFittingProgressChange; e.Result = inference.LearnModel(new[] { this.maskToComplete }, false); }