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
| Aspek | GAN | Diffusion |
|---|---|---|
| Ide inti | Generator vs discriminator | Denoising bertahap |
| Stabilitas training | Rentang tidak stabil | Relatif lebih stabil |
| Kecepatan sampling | Satu pass, cepat | Banyak langkah, lebih lambat |
| Kegagalan khas | Mode collapse | Lambat jika langkah banyak |
| Pemakaian umum | Gambar wajah, augmentasi data | Text-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.
Komentar Terbaru