Membangun Generative Adversarial Network (GAN)

Septiono Raka Wahyu Sasongko

Sosial Media


0 orang menyukai ini
Suka

Summary

Description

Dalam proyek ini, saya membangun sebuah Generative Adversarial Network (GAN) untuk menghasilkan gambar tulisan tangan menggunakan dataset MNIST. GAN adalah model deep learning yang terdiri dari dua jaringan neural: Generator yang mencoba menghasilkan gambar palsu yang realistis, dan Discriminator yang bertugas membedakan gambar asli dan palsu. Proyek ini bertujuan untuk memahami arsitektur GAN dan mengembangkan teknik untuk menstabilkan pelatihan GAN.

Langkah 1: Mengimpor dan Menyiapkan Data

Pertama, saya mengimpor dataset MNIST yang berisi gambar tulisan tangan angka dari 0 hingga 9. Dataset ini diambil dari TensorFlow dan dinormalisasi agar setiap nilai piksel berada dalam rentang [0, 1].

  • Penjelasan: Dataset MNIST dimuat dan dinormalisasi agar piksel gambar berada dalam rentang [0, 1], yang membuat proses pelatihan lebih stabil. Saya juga menampilkan gambar contoh untuk memastikan data sudah diproses dengan benar.

Langkah 2: Membangun Generator

Generator adalah bagian dari GAN yang menerima input berupa noise (vektor acak) dan mencoba menghasilkan gambar yang mirip dengan gambar dari dataset MNIST.

  • Penjelasan: Di sini saya membuat generator dengan Dense layer untuk memproses vektor noise yang memiliki dimensi sebesar 100. Fungsi aktivasi LeakyReLU dan BatchNormalization membantu mempercepat pelatihan dan menghindari masalah gradien yang menghilang.

Langkah 3: Membangun Discriminator

Discriminator adalah jaringan neural yang bertugas untuk membedakan apakah gambar yang diberikan adalah gambar asli dari dataset atau gambar palsu yang dihasilkan oleh generator.

  • Penjelasan: Discriminator menerima gambar dengan bentuk (28, 28, 1) dan memprosesnya melalui beberapa lapisan Dense dan LeakyReLU untuk menghasilkan output yang menunjukkan apakah gambar tersebut asli (label 1) atau palsu (label 0).

Langkah 4: Menggabungkan Generator dan Discriminator

Setelah membangun generator dan discriminator, kedua model ini digabungkan dalam model GAN. Pada saat melatih GAN, kita hanya melatih generator untuk menghasilkan gambar yang dapat menipu discriminator.

 

  • Penjelasan: Pada bagian ini, saya membuat model GAN yang menggabungkan generator dan discriminator. Selama pelatihan GAN, saya "membekukan" discriminator sehingga hanya generator yang diperbarui melalui pelatihan.

Langkah 5: Latihan GAN

Pada bagian ini, saya melatih GAN. Proses pelatihan melibatkan dua langkah:

  1. Melatih discriminator untuk membedakan gambar asli dan palsu.
  2. Melatih generator untuk menghasilkan gambar yang dapat menipu discriminator.

  • Penjelasan: Dalam proses pelatihan, saya menggunakan batch data untuk melatih discriminator dengan gambar asli dan palsu. Setelah itu, saya melatih generator agar dapat menghasilkan gambar yang semakin realistis. Gambar yang dihasilkan disimpan setiap 100 epoch untuk memantau kemajuan.

Langkah 6: Stabilisasi GAN

Selama pelatihan GAN, masalah seperti mode collapse dapat terjadi, di mana generator hanya menghasilkan gambar yang sama berulang-ulang. Untuk menstabilkan pelatihan GAN, beberapa teknik dapat diterapkan seperti label smoothing atau Wasserstein GAN (WGAN).

Pada proyek ini, saya mengimplementasikan teknik dasar stabilisasi, namun jika ingin mengembangkan lebih lanjut, WGAN dapat digunakan dengan mengganti fungsi loss dan menambahkan penalti gradien.

Hasil

Setelah pelatihan, generator dapat menghasilkan gambar tulisan tangan angka yang realistis. Hasil ini dapat ditampilkan dalam bentuk gambar yang dihasilkan oleh model setelah setiap beberapa epoch.

Kesimpulan

Proyek ini berhasil menunjukkan kemampuan GAN dalam menghasilkan gambar yang realistis dari data MNIST. Selain itu, teknik-teknik yang digunakan untuk menstabilkan pelatihan seperti label smoothing dan penambahan batch normalization terbukti efektif dalam mencegah masalah yang sering muncul dalam pelatihan GAN. Dalam pengembangan lebih lanjut, penerapan WGAN atau Progressive GAN dapat meningkatkan kualitas gambar yang dihasilkan dan menstabilkan pelatihan lebih jauh.

Informasi Course Terkait
  Kategori: Algoritma dan Pemrograman
  Course: Komunikasi Interpersonal dalam Bisnis