protected void m_btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                WebTestingDataSet.PersonRow person;

                if (m_labelId.Text == "-1")
                {
                    return;
                }
                else
                {
                    person = DatasetUtility.GetPerson(MiscUtility.ParseInt32(m_labelId.Text, -1));

                    if (person == null)
                    {
                        throw new InvalidOperationException("Invalid id.");
                    }
                }

                person.Delete();

                DatasetUtility.Save(person);

                ReturnToList();
            }
            catch (Exception ex)
            {
                AddMessage(ex);
            }
        }
Пример #2
0
        // Loop
        private async void Loop()
        {
            for (; ;)
            {
                //if(requestImageDraw) {
                requestImageDraw = false;

                float[] noise;
                if (FixNoiseCheckBox.IsChecked.Value)
                {
                    noise = constantNoise;
                }
                else
                {
                    noise = DatasetUtility.GetNoiseArray(ImageData.NoiseCount);
                }

                WriteableBitmap bitmap = brain.PredictImage(noise.Concat(new float[] {
                    NumberEditor_input0.Value,
                    NumberEditor_input1.Value,
                    NumberEditor_input2.Value,
                }).ToArray());
                GeneratedImageView.Source = bitmap;

                GeneratedImageView.InvalidateVisual();

                //Console.WriteLine("Image updated");
                //}

                await Task.Delay(Mathf.Clamp(NumberEditor_refreshRate.IntValue, 10, 100000));
            }
        }
        protected void m_btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                WebTestingDataSet.PersonRow person;

                WebTestingDataSet ds = null;

                if (m_labelId.Text == "-1")
                {
                    // create new
                    ds     = new WebTestingDataSet();
                    person = ds.Person.NewPersonRow();
                }
                else
                {
                    person = DatasetUtility.GetPerson(MiscUtility.ParseInt32(m_labelId.Text, -1));

                    if (person == null)
                    {
                        throw new InvalidOperationException("Invalid id.");
                    }
                }

                person.EmailAddress = m_textEmailAddress.Text;
                person.FirstName    = m_textFirstName.Text;
                person.LastName     = m_textLastName.Text;
                person.PhoneNumber  = m_textPhone.Text;

                if (m_chkIsActive.Checked == true)
                {
                    person.Status = "ACTIVE";
                }
                else
                {
                    person.Status = "INACTIVE";
                }

                if (m_labelId.Text == "-1")
                {
                    ds.Person.AddPersonRow(person);
                }

                DatasetUtility.Save(person);

                m_labelId.Text = person.Id.ToString();
            }
            catch (Exception ex)
            {
                AddMessage(ex);
            }
        }
Пример #4
0
        // Event - Window
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            constantNoise = DatasetUtility.GetNoiseArray(ImageData.NoiseCount);

            brain = new PantheonBrain("ImageDrawer");
            brain.CreateModels();

            brain.TrainImageData(1000000);

            // RegisterEvents
            NumberEditor_input0.ValueChanged += OnInputChanged;
            NumberEditor_input1.ValueChanged += OnInputChanged;
            NumberEditor_input2.ValueChanged += OnInputChanged;

            // Start loop
            Loop();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack == false)
            {
                int id = -1;

                id = MiscUtility.ParseInt32(Request["id"], -1);

                if (id == -1)
                {
                    m_labelId.Text          = id.ToString();
                    m_textEmailAddress.Text = "";
                    m_textFirstName.Text    = "";
                    m_textLastName.Text     = "";
                    m_textPhone.Text        = "";
                    m_chkIsActive.Checked   = true;
                }
                else
                {
                    WebTestingDataSet.PersonRow person = DatasetUtility.GetPerson(id);

                    m_labelId.Text          = person.Id.ToString();
                    m_textEmailAddress.Text = person.EmailAddress;
                    m_textFirstName.Text    = person.FirstName;
                    m_textLastName.Text     = person.LastName;
                    m_textPhone.Text        = person.PhoneNumber;

                    if (person.Status == "ACTIVE")
                    {
                        m_chkIsActive.Checked = true;
                    }
                    else
                    {
                        m_chkIsActive.Checked = false;
                    }
                }
            }
        }
Пример #6
0
        public static ImageData[] GetSampleDatas()
        {
            List <ImageData> datasetList = new List <ImageData>();

            string[] imageFilenames = Directory.GetFiles(DataImageDir, "*.png");

            //int i = 0;
            //foreach (string imageFile in imageFilenames) {
            //	ImageData imageData = ImageData.FromFile(imageFile, new float[] { (float)i / (imageFilenames.Length - 1) });

            //	datasetList.Add(imageData);
            //	++i;
            //}

            // Stick
            // 1. 앉음 - 서있음
            // 2. 왼쪽 - 오른쪽
            // 3. 주먹 - 손으로 V
            //AddWithNoise("01.png", new float[] { 1f, 0f, 0f });
            //AddWithNoise("02.png", new float[] { 1f, 1f, 0f });
            //AddWithNoise("03.png", new float[] { 1f, 0f, 1f });
            //AddWithNoise("04.png", new float[] { 1f, 1f, 1f });
            //AddWithNoise("05.png", new float[] { 0f, 0f, 0f });
            //AddWithNoise("06.png", new float[] { 0f, 1f, 0f });
            //AddWithNoise("07.png", new float[] { 0f, 0f, 1f });
            //AddWithNoise("08.png", new float[] { 0f, 1f, 1f });
            //AddWithNoise("09.png", new float[] { 0.5f, 0.5f, 0.5f });
            //AddWithNoise("10.png", new float[] { 0.5f, 0f, 0.5f });
            //AddWithNoise("11.png", new float[] { 0.5f, 1f, 0.5f });

            // Character
            // 1. 여캐 - 남캐
            // 2. 모자안씀 - 모자씀
            // 3. 단발 - 포니테일 - 장발
            AddWithNoise("00.png", new float[] { 0f, 1f, 0.5f });
            AddWithNoise("01.png", new float[] { 0f, 0f, 1f });
            AddWithNoise("02.png", new float[] { 0f, 0f, 0f });
            AddWithNoise("03.png", new float[] { 0f, 1f, 0f });
            AddWithNoise("04.png", new float[] { 0f, 0f, 1f });
            AddWithNoise("05.png", new float[] { 0f, 0f, 0.5f });
            AddWithNoise("06.png", new float[] { 0f, 0f, 0.5f });
            AddWithNoise("07.png", new float[] { 0f, 0f, 1f });
            AddWithNoise("08.png", new float[] { 0f, 1f, 0f });
            AddWithNoise("09.png", new float[] { 0f, 1f, 0f });
            AddWithNoise("10.png", new float[] { 0f, 1f, 1f });
            AddWithNoise("11.png", new float[] { 1f, 1f, 0f });
            AddWithNoise("12.png", new float[] { 1f, 1f, 0f });
            AddWithNoise("13.png", new float[] { 1f, 1f, 0f });
            AddWithNoise("14.png", new float[] { 1f, 0f, 0f });
            AddWithNoise("15.png", new float[] { 1f, 0f, 1f });
            AddWithNoise("16.png", new float[] { 1f, 0f, 1f });
            AddWithNoise("17.png", new float[] { 1f, 1f, 1f });

            return(datasetList.ToArray());

            void AddWithNoise(string filename, float[] input)
            {
                for (int i = 0; i < 3; ++i)
                {
                    datasetList.Add(FromFile(filename, DatasetUtility.GetNoiseArray(NoiseCount).Concat(input).ToArray(), input));
                }
            }
        }
Пример #7
0
        public async void TrainImageData(int epochs, int GanBatchSize = 1, int localEpochs = 1)
        {
            // Make Discriminator dataset
            ImageData[] sampleDatas = ImageData.GetSampleDatas();

            for (int epochI = 0; epochI < epochs; ++epochI)
            {
                await Task.Delay(50);

                if (MainWindow.Instance.PauseTrainCheckBox.IsChecked.Value)
                {
                    continue;
                }

                Console.WriteLine($"Epoch {epochI} / {epochs}.");

                if (epochI % 10 == 0)
                {
                    WriteableBitmap checkpointBitmap = PredictImage(MainWindow.Instance.constantNoise.Concat(new float[] {
                        0f, 0f, 0f,
                    }).ToArray());

                    try {
                        string filename = $"PredictImage/Predict_{epochI}.png";
                        Directory.CreateDirectory(Path.GetDirectoryName(filename));
                        using (FileStream stream = new FileStream(filename, FileMode.Create)) {
                            PngBitmapEncoder encoder = new PngBitmapEncoder();
                            encoder.Frames.Add(BitmapFrame.Create(checkpointBitmap));
                            encoder.Save(stream);
                        }
                    } catch (Exception ex) {
                        Console.WriteLine($"Failed to save predict bitmap. {ex}");
                    }
                }

                // Add real data
                List <float[]> inputList  = new List <float[]>();
                List <float[]> outputList = new List <float[]>();
                for (int i = 0; i < sampleDatas.Length; ++i)
                {
                    ImageData sampleData = sampleDatas[i];

                    inputList.Add(sampleData.output.Concat(sampleData.manualInput).ToArray());
                    outputList.Add(new float[] { 1f });
                }

                // Add fake data
                for (int i = 0; i < 20; ++i)
                {
                    float[] fakePixels = PredictPixels(DatasetUtility.GetNoiseArray(ImageData.TotalInputShape), false);

                    inputList.Add(fakePixels);
                    outputList.Add(new float[] { 0f });
                }

                float[,] inputs  = inputList.GetMultiDim();
                float[,] outputs = outputList.GetMultiDim();

                // Train Discriminator
                discriminatorModel.SetTrainable(true);
                discriminatorModel.Fit(inputs, outputs, batch_size: inputs.GetLength(0), epochs: localEpochs, verbose: 1);


                // Make GAN dataset
                inputList.Clear();
                outputList.Clear();

                for (int batchI = 0; batchI < GanBatchSize; ++batchI)
                {
                    inputList.Add(DatasetUtility.GetNoiseArray(ImageData.TotalInputShape));
                    outputList.Add(new float[] { 1f });
                }
                inputs  = inputList.GetMultiDim();
                outputs = outputList.GetMultiDim();

                // Train GAN
                discriminatorModel.SetTrainable(false);
                ganModel.Fit(inputs, outputs, batch_size: inputs.GetLength(0), epochs: localEpochs, verbose: 1);

                //SaveModel();
            }

            Console.WriteLine($"Complete Train.");

            //float[] predicts = model.Predict(x).GetData<float>();

            //Stopwatch watch = new Stopwatch();
            //watch.Start();
            //for (int i = 0; i < 1; ++i) {
            //	predicts = model.Predict(x, verbose: 0).GetData<float>();

            //	//Debug.WriteLine($"Result: ({string.Join(",", predicts)})");
            //}
            //watch.Stop();

            //MainWindow.Instance.Dispatcher.BeginInvoke(new Action(() => {
            //	MainWindow.Instance.DebugTextBox.Text = watch.GetElapsedMilliseconds().ToString();
            //}));
        }