Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel "
AttnGAN: Teks Halus ke Generasi Gambar dengan Attentional Generative Adversarial Networks " oleh Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.
Dalam publikasi ini, saya ingin berbicara tentang eksperimen saya dengan arsitektur AttnGAN untuk menghasilkan gambar dari deskripsi teks. Arsitektur ini sudah disebutkan di Habré setelah rilis artikel asli pada awal 2018, dan saya tertarik pada pertanyaan - seberapa sulitkah untuk melatih model seperti itu sendiri?
Deskripsi Arsitektur
Bagi mereka yang tidak terbiasa dengan AttnGAN dan GAN klasik, saya akan menjelaskan esensi secara singkat. GAN klasik terdiri dari setidaknya 2 jaringan saraf - generator dan diskriminator. Tugas generator adalah menghasilkan beberapa data (gambar, teks, audio, video, dll.) Yang "mirip" dengan data nyata dari dataset. Tugas pembeda adalah untuk mengevaluasi data yang dihasilkan, upaya untuk membandingkannya dengan yang asli dan menolaknya. Hasil yang ditolak dari pekerjaan generator mendorongnya untuk menghasilkan hasil terbaik untuk "menipu" pembeda, yang, pada gilirannya, sedang belajar untuk mengenali lebih baik palsu.
Ada banyak sekali modifikasi GAN, dan penulis AttnGAN mendekati pertanyaan tentang arsitektur dengan cukup antusias. Model ini terdiri dari 9 jaringan saraf yang disesuaikan untuk interaksi. Itu terlihat seperti ini:

Pengkode teks dan gambar (pengode teks / gambar) mengubah deskripsi teks asli dan gambar nyata menjadi semacam representasi internal. Secara karakteristik, dalam hal ini, teks dianggap sebagai urutan kata-kata individual, presentasi yang diproses bersama dengan representasi gambar, yang memungkinkan Anda untuk membandingkan kata-kata individual dengan bagian-bagian individual gambar. Dengan cara ini, mekanisme perhatian yang disebut oleh penulis artikel DAMSM diimplementasikan.
Fca - membuat representasi ringkas dari keseluruhan adegan dalam gambar, berdasarkan seluruh deskripsi teks. Nilai C pada output disatukan dengan vektor dari distribusi normal Z, yang menentukan variabilitas adegan. Informasi ini adalah dasar untuk pengoperasian generator.
Generator adalah jaringan terbesar yang terdiri dari tiga level. Setiap level menghasilkan gambar dengan resolusi yang meningkat, dari 64 * 64 hingga 256 * 256 piksel, dan hasil kerja di setiap level disesuaikan menggunakan jaringan perhatian Fattn, yang membawa informasi tentang lokasi yang benar dari masing-masing objek dalam adegan. Selain itu, hasil di setiap tingkat diperiksa oleh tiga diskriminator yang bekerja secara terpisah yang mengevaluasi realisme gambar dan konsistensinya dengan gagasan umum adegan tersebut.
Pelatihan
Untuk menguji arsitektur, saya menggunakan dataset CUB standar dengan foto dan deskripsi tekstual burung.
Seluruh model dilatih dalam dua tahap. Tahap pertama adalah pra-pelatihan jaringan DAMSM, yang terdiri dari teks dan penyandi gambar. Selama tahap ini, seperti dijelaskan di atas, "peta perhatian" dibuat yang terlihat seperti ini:

Seperti yang dapat dilihat dari gambar, DAMSM berhasil menangkap dengan sangat akurat hubungan antara kata-kata individual dari deskripsi teks dan elemen gambar, sangat mudah bagi model untuk mengenali warna. Saya harus mengatakan bahwa sistem tidak memiliki informasi tambahan tentang apa itu "merah", "kuning" atau "sayap", "paruh". Hanya ada satu set teks dan gambar.
Pelatihan DAMSM berlangsung tanpa masalah, waktu pelatihan pada dataset ini adalah 150-200 era, yang sesuai dengan beberapa jam pada GPU daya tinggi.
Tahap kedua dan utama adalah melatih generator menggunakan model DAMSM.
Generator di setiap level menghasilkan gambar dengan resolusi lebih tinggi - terlihat seperti ini:

Pelatihan generator membutuhkan waktu lebih lama dan tidak selalu stabil, waktu pelatihan yang disarankan pada dataset ini adalah 300-600 zaman, yang sesuai dengan sekitar 4-8 hari pada GPU berdaya tinggi.
Masalah utama dalam melatih generator, menurut saya, adalah kurangnya metrik yang cukup baik yang akan memungkinkan kami untuk mengevaluasi kualitas pelatihan dengan cara yang lebih formal. Saya mempelajari beberapa implementasi skor Inception, yang, secara teori, diposisikan sebagai metrik universal untuk tugas-tugas semacam itu - tetapi bagi saya itu tampaknya tidak cukup meyakinkan. Jika Anda memutuskan untuk melatih generator seperti itu, Anda harus terus memantau perkembangan pelatihan secara visual, sesuai dengan hasil antara. Namun, aturan ini berlaku untuk tugas semacam itu, kontrol visual selalu diperlukan.
Hasil
Sekarang bagian yang menyenangkan. Menggunakan model yang terlatih, kami akan mencoba menghasilkan gambar, kami akan mulai dengan kalimat sederhana:

Mari kita coba deskripsi yang lebih kompleks:

Semua deskripsi teks ditemukan, saya sengaja tidak menggunakan frasa dari dataset untuk pengujian. Tentu saja, tidak semua gambar ini diperoleh pada percobaan pertama. Modelnya salah, penulis sendiri membicarakan hal ini. Ketika teks deskripsi dan elemen yang ditampilkan meningkat, semakin sulit untuk mempertahankan realisme dari keseluruhan adegan. Namun, jika Anda ingin menggunakan sesuatu yang serupa dalam produksi, katakanlah, buat gambar objek tertentu untuk seorang desainer, Anda dapat melatih dan menyesuaikan sistem dengan kebutuhan Anda, yang bisa sangat ketat.
Untuk setiap deskripsi teks, Anda dapat menghasilkan banyak opsi gambar (termasuk yang tidak realistis), sehingga selalu ada banyak pilihan.
Rincian teknis
Dalam karya ini, saya menggunakan GPU berdaya rendah untuk pembuatan prototipe dan server Google Cloud dengan Tesla K80 yang diinstal selama fase pelatihan.
Kode sumber diambil dari repositori penulis artikel dan menjalani refactoring serius. Sistem ini diuji dalam Python 3.6 dengan Pytorch 0.4.1
Terima kasih atas perhatian anda!
Artikel asli: AttnGAN: Fine-Grained Text to Image Generation dengan Attentional Generative Adversarial Networks , 2018 - Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.