private void обработатьПланшетПреобученнойСетьюToolStripMenuItem_Click(object sender, EventArgs e) { BoxerDLL.BoxCut2D cutter = new BoxerDLL.BoxCut2D(7, 10, 0.143f, 0.1f); if (openImageDialog.ShowDialog() == DialogResult.OK) { Bitmap map = new Bitmap(openImageDialog.FileName); RectangleF[] rects = cutter.Rects1D(map.Width, map.Height); Color[] colors = new Color[rects.Length]; Color plus = Color.FromArgb(100, Color.Red); Color minus = Color.FromArgb(100, Color.Green); var maps = cutter.Enumerator(ref map); int j = 0; //List<double[,,]> rgbs = new List<double[,,]>(); do { double[,,] output = pretrain.ProcessAutoEncoder(ImageDataConverter.GetRGBArray(new Bitmap(maps.Current, NetworkData.image_size))); GC.Collect(); colors[j] = output[0, 0, 0] > output[0, 0, 1] ? plus : minus; j++; } while (maps.MoveNext()); var bitmap = DrawColoredRects(map, rects, colors); ImageShow img_show = new ImageShow(bitmap); img_show.Show(); } }
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { vis = new NeuralNetwork.NetworkVisualizer(NetworkData.network, ImageDataConverter.GetRGBArray(new Bitmap(new Bitmap(openFileDialog1.FileName), NetworkData.image_size))); pictureBox2.Image = new Bitmap(new Bitmap(openFileDialog1.FileName), NetworkData.image_size); } }
void Translate() { Bitmap map = new Bitmap(planes[index]); RectangleF[] rects = cutter.Rects1D(map.Width, map.Height); Color[] colors = new Color[rects.Length]; Color plus = Color.FromArgb(100, Color.Red); Color minus = Color.FromArgb(100, Color.Green); var maps = cutter.Enumerator(ref map); int j = 0; //List<double[,,]> rgbs = new List<double[,,]>(); do { double[,,] output = NetworkData.network.GetOutput(ImageDataConverter.GetRGBArray(new Bitmap(maps.Current, NetworkData.image_size))); GC.Collect(); colors[j] = output[0, 0, 0] > output[0, 0, 1] ? plus : minus; j++; } while (maps.MoveNext()); var bitmap = DrawColoredRects(map, rects, colors); pictureBox1.Image = bitmap; }
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { Bitmap map = new Bitmap(openFileDialog1.FileName); BoxerDLL.BoxCut2D cutter = new BoxCut2D(7, 10, 0.143f, 0.1f); List <Bitmap> maps = cutter.Cut(map); List <double[, , ]> rgbs = new List <double[, , ]>(); for (int i = 0; i < maps.Count; i++) { maps[i] = new Bitmap(maps[i], new System.Drawing.Size(24, 12)); rgbs.Add(ImageDataConverter.GetRGBArray(maps[i])); } RectangleF[] rects = cutter.Rects1D(map.Width, map.Height); BitmapCatEnumerator enums = new BitmapCatEnumerator("Sorted", new System.Drawing.Size(24, 12)); BitmapCatEnumerator val = new BitmapCatEnumerator("Val", new System.Drawing.Size(24, 12)); Network network = new Network(); network.AddLayer(new Dropout(new Relu(), 0.05)); network.AddLayer(new Conv2D(new Relu(), 7, 7, 32)); network.AddLayer(new MaxPool2D(new Relu(), 2, 2)); network.AddLayer(new Dropout(new Relu(), 0.05)); network.AddLayer(new Conv2D(new Relu(), 3, 3, 64)); network.AddLayer(new MaxPool2D(new Relu(), 2, 2)); network.AddLayer(new Dropout(new Relu(), 0.05)); network.AddLayer(new FullyConnLayar(new Sigmoid(), new NeuralNetwork.Size(1, 1, 256))); network.AddLayer(new FullyConnLayar(new Sigmoid(), new NeuralNetwork.Size(1, 1, 2))); network.Compile(new NeuralNetwork.Size(3, 12, 24), true); network.Normalization(); pictureBox1.Image = map; MomentumParallel sgd = new MomentumParallel(network, 0.9, 1e-4); int last = 0; for (int i = 0; i < 1000; i++) { var errors = sgd.TrainBatchPercent(enums, 32, 1); if (errors.Last().Value > 90 || i - last > 20) { last = i; Color[] colors = new Color[rects.Length]; Color plus = Color.FromArgb(100, Color.Red); Color minus = Color.FromArgb(100, Color.Green); for (int j = 0; j < maps.Count; j++) { double[,,] output = network.GetOutput(rgbs[j]); colors[j] = output[0, 0, 0] > output[0, 0, 1] ? plus : minus; } pictureBox1.Image = DrawColoredRects(map, rects, colors); var validation = network.GetError(val); label2.Text = "Validation\nError: " + validation.Key + "\nPercent: " + validation.Value; } label1.Text = i + "\nError: " + errors.Last().Key + "\nPercent: " + errors.Last().Value; Update(); } } }