AI-For-Beginners/translations/ms/lessons/4-ComputerVision/10-GANs
localizeflow[bot] f2a27efc74 chore(i18n): sync translations with latest source changes (chunk 1/1, 205 changes) 2026-01-30 02:22:28 +00:00
..
GANPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
GANTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 205 changes) 2026-01-30 02:22:28 +00:00
StyleTransfer.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
StyleTransfer_Keras.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00

README.md

Generative Adversarial Networks

Dalam bahagian sebelumnya, kita telah mempelajari tentang model generatif: model yang boleh menghasilkan imej baru yang serupa dengan imej dalam dataset latihan. VAE adalah contoh yang baik bagi model generatif.

Pre-lecture quiz

Namun, jika kita cuba menghasilkan sesuatu yang benar-benar bermakna, seperti lukisan dengan resolusi yang wajar, menggunakan VAE, kita akan dapati bahawa latihan tidak mencapai hasil yang baik. Untuk kes penggunaan ini, kita perlu mempelajari satu lagi seni bina yang khusus untuk model generatif - Generative Adversarial Networks, atau GANs.

Idea utama GAN adalah mempunyai dua rangkaian neural yang dilatih saling bersaing:

Imej oleh Dmitry Soshnikov

Sedikit perbendaharaan kata:

  • Generator adalah rangkaian yang mengambil vektor rawak dan menghasilkan imej sebagai hasilnya.
  • Discriminator adalah rangkaian yang mengambil imej dan menentukan sama ada ia adalah imej sebenar (daripada dataset latihan) atau imej yang dihasilkan oleh generator. Ia pada dasarnya adalah pengklasifikasi imej.

Discriminator

Seni bina discriminator tidak berbeza daripada rangkaian pengklasifikasi imej biasa. Dalam kes paling mudah, ia boleh menjadi pengklasifikasi fully-connected, tetapi kemungkinan besar ia akan menjadi rangkaian konvolusi.

GAN yang berdasarkan rangkaian konvolusi dipanggil DCGAN

Discriminator CNN terdiri daripada lapisan berikut: beberapa konvolusi+pooling (dengan saiz spatial yang semakin berkurang) dan satu atau lebih lapisan fully-connected untuk mendapatkan "vektor ciri", pengklasifikasi binari akhir.

'Pooling' dalam konteks ini adalah teknik yang mengurangkan saiz imej. "Lapisan pooling mengurangkan dimensi data dengan menggabungkan output kluster neuron pada satu lapisan ke dalam satu neuron pada lapisan seterusnya." - sumber

Generator

Generator sedikit lebih rumit. Anda boleh menganggapnya sebagai discriminator yang terbalik. Bermula dari vektor laten (menggantikan vektor ciri), ia mempunyai lapisan fully-connected untuk menukarkannya kepada saiz/bentuk yang diperlukan, diikuti oleh dekonvolusi+upscaling. Ini serupa dengan bahagian decoder dalam autoencoder.

Oleh kerana lapisan konvolusi dilaksanakan sebagai penapis linear yang melintasi imej, dekonvolusi pada dasarnya serupa dengan konvolusi dan boleh dilaksanakan menggunakan logik lapisan yang sama.

Imej oleh Dmitry Soshnikov

Melatih GAN

GAN dipanggil adversarial kerana terdapat persaingan berterusan antara generator dan discriminator. Semasa persaingan ini, kedua-dua generator dan discriminator bertambah baik, dan rangkaian belajar menghasilkan imej yang semakin baik.

Latihan berlaku dalam dua peringkat:

  • Melatih discriminator. Tugas ini agak mudah: kita menghasilkan satu batch imej menggunakan generator, melabelkannya sebagai 0, yang bermaksud imej palsu, dan mengambil satu batch imej daripada dataset input (dengan label 1, imej sebenar). Kita memperoleh discriminator loss, dan melakukan backprop.
  • Melatih generator. Ini sedikit lebih rumit kerana kita tidak tahu output yang dijangka untuk generator secara langsung. Kita mengambil keseluruhan rangkaian GAN yang terdiri daripada generator diikuti oleh discriminator, memberinya vektor rawak, dan mengharapkan hasilnya adalah 1 (bersamaan dengan imej sebenar). Kita kemudian membekukan parameter discriminator (kita tidak mahu ia dilatih pada langkah ini), dan melakukan backprop.

Semasa proses ini, kedua-dua generator dan discriminator loss tidak turun dengan ketara. Dalam situasi ideal, mereka sepatutnya berayun, menunjukkan kedua-dua rangkaian meningkatkan prestasi mereka.

✍️ Latihan: GANs

Masalah dengan Latihan GAN

GAN diketahui sukar untuk dilatih. Berikut adalah beberapa masalah:

  • Mode Collapse. Istilah ini merujuk kepada generator yang belajar menghasilkan satu imej berjaya yang menipu discriminator, tetapi tidak pelbagai imej yang berbeza.
  • Sensitiviti terhadap hiperparameter. Selalunya anda akan dapati bahawa GAN tidak mencapai hasil sama sekali, dan kemudian tiba-tiba penurunan kadar pembelajaran membawa kepada hasil.
  • Menjaga keseimbangan antara generator dan discriminator. Dalam banyak kes, discriminator loss boleh turun ke sifar dengan cepat, yang menyebabkan generator tidak dapat dilatih lebih lanjut. Untuk mengatasi ini, kita boleh cuba menetapkan kadar pembelajaran yang berbeza untuk generator dan discriminator, atau melangkau latihan discriminator jika loss sudah terlalu rendah.
  • Latihan untuk resolusi tinggi. Masalah ini mencerminkan masalah yang sama dengan autoencoder, yang berlaku kerana pembinaan semula terlalu banyak lapisan rangkaian konvolusi membawa kepada artifak. Masalah ini biasanya diselesaikan dengan progressive growing, di mana beberapa lapisan pertama dilatih pada imej resolusi rendah, dan kemudian lapisan "dibuka" atau ditambah. Penyelesaian lain adalah menambah sambungan tambahan antara lapisan dan melatih beberapa resolusi sekaligus - lihat kertas Multi-Scale Gradient GANs untuk butiran.

Style Transfer

GAN adalah cara yang hebat untuk menghasilkan imej artistik. Teknik menarik lain adalah style transfer, yang mengambil satu imej kandungan dan melukis semula dalam gaya yang berbeza, menggunakan penapis daripada imej gaya.

Cara ia berfungsi adalah seperti berikut:

  • Kita bermula dengan imej noise rawak (atau dengan imej kandungan, tetapi untuk pemahaman lebih mudah, kita bermula dengan noise rawak).
  • Matlamat kita adalah menghasilkan imej yang dekat dengan imej kandungan dan imej gaya. Ini ditentukan oleh dua fungsi loss:
    • Content loss dikira berdasarkan ciri yang diekstrak oleh CNN pada beberapa lapisan daripada imej semasa dan imej kandungan.
    • Style loss dikira antara imej semasa dan imej gaya dengan cara yang bijak menggunakan matriks Gram (butiran lanjut dalam notebook contoh).
  • Untuk menjadikan imej lebih licin dan menghilangkan noise, kita juga memperkenalkan Variation loss, yang mengira jarak purata antara piksel yang berdekatan.
  • Gelung pengoptimuman utama menyesuaikan imej semasa menggunakan gradient descent (atau algoritma pengoptimuman lain) untuk meminimumkan jumlah loss, yang merupakan jumlah berwajaran semua loss.

✍️ Contoh: Style Transfer

Post-lecture quiz

Kesimpulan

Dalam pelajaran ini, anda telah mempelajari tentang GAN dan cara melatihnya. Anda juga telah mempelajari cabaran khas yang dihadapi oleh jenis rangkaian neural ini, serta beberapa strategi untuk mengatasinya.

🚀 Cabaran

Jalankan notebook Style Transfer menggunakan imej anda sendiri.

Kajian & Pembelajaran Kendiri

Sebagai rujukan, baca lebih lanjut tentang GAN dalam sumber berikut:

Tugasan

Kaji semula salah satu daripada dua notebook yang berkaitan dengan pelajaran ini dan latih semula GAN menggunakan imej anda sendiri. Apa yang boleh anda hasilkan?