Belajar AI #18: Generative AI — GAN, Diffusion Model, dan Text-to-Image

Dua minggu terakhir saya iseng membuka tab baru di browser dan mengetik prompt gambar ke model text-to-image. Hasilnya bikin saya senyum-senyum sendiri: gambar kucing astronot yang lumayan meyakinkan. Dari situ saya jadi penasaran, sebenarnya di balik layar bagaimana mesin bisa “menggambar”? Episode ini catatan saya membedah tiga keluarga besar generative AI untuk citra: GAN, diffusion model, dan pipeline text-to-image. Sebagai programmer, saya coba jelaskan pakai analogi yang familiar di dunia kode.

Apa Itu Generative AI?

Generative AI adalah model yang tidak sekadar mengklasifikasi atau memprediksi label, tapi membuat data baru: gambar, teks, audio. Kalau model klasifikasi itu seperti fungsi validate(input) → bool, model generatif lebih seperti fungsi generate(seed) → artifact. Ia mempelajari distribusi data latih, lalu mengambil sampel dari distribusi itu. Kuncinya bukan menghafal gambar latih, tapi menangkap “gaya” statistiknya sehingga sampel barunya terasa asli.

GAN: Dua Model yang Saling Menipu

GAN (Generative Adversarial Network) punya dua aktor: generator dan discriminator. Analogi favorit saya: generator itu developer yang mencetak uang palsu, discriminator adalah petugas bank yang memeriksa keaslian. Generator menghasilkan gambar dari vektor noise acak, discriminator menilai asli atau palsu, lalu keduanya saling mendorong untuk membaik lewat pelatihan bersaing. Konsepnya elegan, tapi siapa pun yang pernah melatih GAN tahu penderitaannya: training sering tidak stabil, mudah mode collapse (generator hanya menghasilkan variasi terbatas), dan butuh tuning hyperparameter yang teliti. Saya sendiri belum berhasil melatih GAN dari nol dengan hasil yang pantas dipamerkan — dan itu catatan jujur dari proses belajar ini.

Diffusion Model: Menghapus Noise Bertahap

Diffusion model bekerja dengan logika terbalik yang menarik. Saat pelatihan, gambar asli “dirusak” sedikit demi sedikit dengan noise selama ratusan langkah. Model dilatih untuk memprediksi noise pada tiap langkah. Saat inference, kita mulai dari murni noise acak, lalu model mengurangi noise bertahap sampai gambar koheren muncul. Analoginya seperti restore foto rusak: kalau Anda tahu pola kerusakannya, Anda bisa membaliknya. Model populer seperti Stable Diffusion adalah latent diffusion — denoising dilakukan di ruang laten yang lebih kecil sehingga jauh lebih hemat komputasi dibanding bekerja di piksel mentah. Di praktiknya, hasil diffusion saat ini umum lebih stabil dan beragam daripada GAN untuk text-to-image, dengan trade-off proses sampling yang lebih lambat karena banyak langkah.

Text-to-Image: Merakit Semua Jadi Pipeline

Model text-to-image modern biasanya menggabungkan tiga bagian: text encoder (misalnya turunan transformer bahasa) yang mengubah prompt menjadi embedding, diffusion U-Net (atau arsitektur lain) yang melakukan denoising di ruang laten, dan decoder/VAE yang mengubah hasil laten menjadi gambar utuh. Prompt engineering sederhana pun berpengaruh: subjek, gaya, pencahayaan, komposisi. Contoh minimal memakai library diffusers:

from diffusers import StableDiffusionPipeline
import torch

pipe = StableDiffusionPipeline.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-v1-5",
    torch_dtype=torch.float16,
)
pipe = pipe.to("cuda")

image = pipe(
    "a watercolor painting of a cat astronaut, soft light",
    num_inference_steps=30,
    guidance_scale=7.5,
).images[0]

image.save("kucing-astronot.png")

Catatan penting: menjalankan pipeline di atas butuh GPU dengan VRAM cukup dan persetujuan lisensi model di Hugging Face. Di laptop tanpa GPU, jangan harapkan cepat.

Perbandingan Singkat

AspekGANDiffusion
Ide intiGenerator vs discriminatorDenoising bertahap
Stabilitas trainingRentang tidak stabilRelatif lebih stabil
Kecepatan samplingSatu pass, cepatBanyak langkah, lebih lambat
Kegagalan khasMode collapseLambat jika langkah banyak
Pemakaian umumGambar wajah, augmentasi dataText-to-image, inpainting

Catatan Pribadi

  • Mulai dari memakai pretrained model dulu, jangan langsung melatih dari nol.
  • Pahami konsep latent space: banyak keajaiban text-to-image sebenarnya interpolasi di ruang laten.
  • Seed acak menentukan hasil; simpan seed kalau ingin mereproduksi gambar.
  • Diffusion lebih ramah pemula untuk eksplorasi, GAN menarik untuk memahami adversarial training.

Berikutnya saya mau coba ControlNet supaya pose karakter bisa dikontrol. Tapi itu cerita nanti — yang jelas, paham cara kerja GAN dan diffusion membuat saya membaca demo AI di Twitter/X dengan mata yang lebih kritis.

Sumber

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses