Proyek ini adalah jaringan permusuhan generatif konvolusional mendalam yang dapat membuat gambar berkualitas tinggi dari benih acak seperti potret, hewan, gambar, dan banyak lagi.
Modelnya adalah Generative Adversarial Network (GAN) seperti yang dijelaskan dalam makalah Generative Adversarial Nets dari Montreal University (2014)
Generator dan diskriminator keduanya merupakan jaringan saraf konvolusional yang dalam seperti dalam makalah Pembelajaran Representasi Tanpa Pengawasan dengan Jaringan Adversarial Generatif Konvolusional Dalam dari Facebook AI Research (2015) tetapi dengan beberapa perbaikan:
Saya menambahkan Equalized Learning Rate Layers dari makalah Progressive Growing of GANs for Improved Quality, Stability, and Variation oleh Nvidia (2017)
Saya menambahkan Bilinear Upsampling / Downsampling dari makalah Making Convolutional Networks Shift-Invariant Again oleh Adobe Research (2019)
Saya menerapkan Transformasi Wavelet dari makalah SWAGAN: Model Generatif Berbasis Wavelet Berbasis Gaya oleh Universitas Tel-Aviv (2021)
Saya menggunakan Arsitektur Berbasis Gaya dengan Input Konstan , Gaya yang Dipelajari dari Jaringan Pemetaan , dan Injeksi Kebisingan dari makalah A Style-Based Generator Architecture for Generative Adversarial Networks oleh Nvidia (2018)
Saya menambahkan Skip Connections dari makalah MSG-GAN: Multi-Scale Gradients for Generative Adversarial Networks oleh TomTom dan Adobe (2019)
Saya menambahkan Residual Blocks dari makalah Deep Residual Learning for Image Recognition oleh Microsoft Research (2015)
Saya menambahkan Deviasi Standar Minibatch di akhir diskriminator dari makalah Peningkatan Teknik untuk Pelatihan GAN oleh OpenAI (2016)
Saya menyimpan Non-Saturating Loss asli dari makalah Generative Adversarial Nets oleh Montreal University (2014)
Saya menambahkan Regularisasi Panjang Jalur pada generator dari makalah Menganalisis dan Meningkatkan Kualitas Gambar StyleGAN oleh Nvidia (2019)
Saya menambahkan Regularisasi Penalti Gradien pada diskriminator dari makalah Peningkatan Pelatihan Wasserstein GANs oleh Google Brain (2017)
Saya menambahkan Adaptive Discriminator Augmentation (ADA) dari makalah Training Generative Adversarial Networks with Limited Data oleh Nvidia (2020) tetapi probabilitas augmentasi tidak dilatih dan harus disetel secara manual (dan beberapa augmentasi dinonaktifkan karena implementasi PyTorch hilang)
Saya menambahkan perhitungan Fréchet Inception Distance (FID) selama pelatihan dari makalah GANs Trained by a Two-Scale Update Rule Converge to a Local Nash Equilibrium oleh University Linz (2017) menggunakan modul pytorch-fid
Saya menambahkan Proyektor seperti di makalah Menganalisis dan Meningkatkan Kualitas Gambar StyleGAN oleh Nvidia (2019)
Wajah manusia 256*256 (FID: 5.97)
Wajah binatang 256*256 (FID: 6.56)
Wajah anime 256*256 (FID: 3.74)
Lukisan wajah 256*256 (FID: 20.32)
Bobot yang dilatih pada beberapa dataset tersedia di Google Drive , Anda hanya perlu mendownload file .pt
dan memasukkannya ke dalam folder models
.
Jalankan perintah berikut untuk menginstal dependensi:
$ pip install -r requirements.txt
(Anda mungkin perlu menggunakan perintah khusus untuk PyTorch jika ingin menggunakan CUDA)
Pertama, Anda perlu mencari dan mengunduh kumpulan data gambar (kurang dari 5.000 mungkin terlalu sedikit dan tidak perlu lebih dari 150.000) . Anda dapat menemukan banyak kumpulan data di Kaggle dan yang saya gunakan di Google Drive saya .
Kemudian, di file training/settings.py
, tentukan jalur ke kumpulan data
Jika Anda tidak memiliki GPU 24GB yang mahal seperti saya, pengaturan default mungkin tidak cocok untuk Anda. Anda dapat mencoba:
Jalankan file training.ipynb
(Anda dapat menghentikan pelatihan kapan saja dan melanjutkannya nanti berkat pos pemeriksaan)
Jalankan file testing.ipynb
untuk menghasilkan gambar acak
Jalankan file testing/interpolation.ipynb
untuk menghasilkan gambar video interpolasi yang halus
Jalankan file testing/projector.ipynb
untuk memproyeksikan gambar nyata ke ruang laten
Jalankan file testing/style_mixing.ipynb
untuk menghasilkan gambar video interpolasi pencampuran gaya
Jalankan file testing/timelapse.ipynb
untuk menghasilkan gambar video timelapse pelatihan