private void RecognizeAndLoadPicture(Matrix recognizable) { Debug.WriteLine(recognizable.ToPrettyString()); Bitmap[] sampleImages = bitmapFilePaths .Select(path => new Bitmap(path)) .ToArray(); Vector inputVector = recognizable.ToVectorByRows(); int iterations = 0; bool okay = false; Perceptron perceptron = null; while (!okay) { perceptron = new Perceptron( pixelsCount: inputVector.Length, sampleAmmount: sampleImages.Length ); perceptron.Teach(sampleImages, ref iterations); Debug.WriteLine("iterations: {0}", iterations); if (iterations > 10) { okay = true; } } Vector result = perceptron.Recognize(inputVector); labelIterations.Text = iterations.ToString(); Debug.WriteLine("Similarity:"); Enumerable.Range(0, sampleImages.Length) .ToList() .ForEach(i => Debug.WriteLine("{0} -> {1}", i, result[i])); labelFirst.Text = (result[0] * 100).ToString("0.00") + "%"; labelSecond.Text = (result[1] * 100).ToString("0.00") + "%"; labelThird.Text = (result[2] * 100).ToString("0.00") + "%"; progressBar1.Value = (int)(result[0] * 100); progressBar2.Value = (int)(result[1] * 100); progressBar3.Value = (int)(result[2] * 100); int resultIndex = result.ToList().IndexOf(result.Max()) + 1; labelRecognized.Text = resultIndex.ToString(); Debug.WriteLine("resultIndex: {0}", resultIndex); }
private void RecognizeAndLoadPicture(Matrix recognizable) { Debug.WriteLine(recognizable.ToPrettyString()); Vector[] sampleVectors = bitmapFilePaths .Select(path => new Bitmap(path)) .Select(bitmap => bitmap.ToMatrix().ToVectorByColumns()) .ToArray(); Matrix weights = Recognizer.GenerateWeightsMatrix(sampleVectors); Vector inputVector = recognizable.ToVectorByColumns(); Matrix recognized = Recognizer.RecognizeAsynchronously(weights, inputVector); Bitmap recognizedScaled = BitmapParser.Scale(recognized, times: DrawField.CellSize); picRecognized.Image = recognizedScaled; }