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); } }
// 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); } }
// 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; } } } }
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)); } } }
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(); //})); }