public void RunTest() { float[] trainFeaturesData = { 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7 }; var trainFeatures = new Mat(6, 4, MatType.CV_32F, trainFeaturesData); int[] trainLabelsData = { 2, 3, 4, 5, 6, 7 }; var trainLabels = new Mat(1, 6, MatType.CV_32S, trainLabelsData); var kNearest = KNearest.Create(); kNearest.Train(trainFeatures, SampleTypes.RowSample, trainLabels); float[] testFeatureData = { 3, 3, 3, 3 }; var testFeature = new Mat(1, 4, MatType.CV_32F, testFeatureData); const int k = 1; var results = new Mat(); var neighborResponses = new Mat(); var dists = new Mat(); var detectedClass = (int)kNearest.FindNearest(testFeature, k, results, neighborResponses, dists); Assert.Equal(3, detectedClass); }
public void SaveLoadTest() { float[] trainFeaturesData = { 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7 }; var trainFeatures = new Mat(6, 4, MatType.CV_32F, trainFeaturesData); int[] trainLabelsData = { 2, 3, 4, 5, 6, 7 }; var trainLabels = new Mat(1, 6, MatType.CV_32S, trainLabelsData); const string fileName = "knearest.yml"; if (File.Exists(fileName)) { File.Delete(fileName); } using (var model = KNearest.Create()) { model.Train(trainFeatures, SampleTypes.RowSample, trainLabels); model.Save(fileName); } Assert.True(File.Exists(fileName)); string content = File.ReadAllText(fileName); //Console.WriteLine(content); // Assert.DoesNotThrow using (var model2 = KNearest.Load(fileName)) { GC.KeepAlive(model2); } using (var model2 = KNearest.LoadFromString(content)) { GC.KeepAlive(model2); } }
public static void RunKNearest() { float[] trainFeaturesData = { 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7 }; var trainFeatures = new Mat(6, 4, MatType.CV_32F, trainFeaturesData); int[] trainLabelsData = { 2, 3, 4, 5, 6, 7 }; var trainLabels = new Mat(1, 6, MatType.CV_32F, trainLabelsData); var kNearest = KNearest.Create(); kNearest.Train(trainFeatures, SampleTypes.RowSample, trainLabels); float[] testFeatureData = { 3, 3, 3, 3 }; var testFeature = new Mat(1, 4, MatType.CV_32F, testFeatureData); const int k = 1; var results = new Mat(); var neighborResponses = new Mat(); var dists = new Mat(); var detectedClass = (int)kNearest.FindNearest(testFeature, k, results, neighborResponses, dists); /* * K=1 * [3] * [0] * * K=4: * [3, 2, 4, 5] * [0, 4, 4, 16] */ Console.WriteLine("results: {0},{1}", results.Get <int>(0, 0), results.Get <int>(0, 1)); Console.WriteLine("DetectedClass: {0}", detectedClass); Console.WriteLine("neighborResponses: {0}", neighborResponses); Console.WriteLine("dists: {0}", dists); }
public KNearest TrainData(IList <ImageInfo> trainingImages) { var samples = new Mat(); foreach (var trainingImage in trainingImages) { samples.PushBack(trainingImage.Image); } var labels = trainingImages.Select(x => x.ImageGroupId).ToArray(); var responses = new Mat(labels.Length, 1, MatType.CV_32SC1, labels); var tmp = responses.Reshape(1, 1); //make continuous var responseFloat = new Mat(); tmp.ConvertTo(responseFloat, MatType.CV_32FC1); // Convert to float var kNearest = KNearest.Create(); kNearest.Train(samples, SampleTypes.RowSample, responseFloat); // Train with sample and responses return(kNearest); }