Generator poster genre untuk film dan transfer gaya gambar - proyek siswa kursus "Jaringan saraf" Technosphere





Kami berbicara tentang proyek kelulusan lulusan kursus semester tentang pengembangan seluler di Technopark (Universitas Teknis Negeri Bauman Moscow) (publikasi sebelumnya: " Pengembangan Aplikasi untuk iOS ", " Pengembangan Aplikasi untuk Android "). Hari ini kami berbagi proyek menarik dari siswa semester kedua Technosphere - proyek pendidikan bersama dengan Universitas Negeri Moskow dengan program pelatihan tahunan di bidang analisis dan bekerja dengan data dalam jumlah besar. Siswa mengambil kursus dalam pembelajaran mesin, pencarian informasi, jaringan saraf, dan disiplin ilmu lainnya. Metode proyek digunakan dalam pengajaran, jadi kami merangkum hasil semester pada pertahanan proyek siswa.



Eksperimen memainkan peran penting dalam proses pendidikan. Proyek siswa tidak dapat berjalan tanpanya: orang-orang mencoba pendekatan, metode, arsitektur, alat yang berbeda. Seringkali setelah percobaan, siswa meninggalkan pilihan teknologi dan algoritma untuk memilih pendekatan baru. Ini adalah bagian besar dari pengalaman dan pembelajaran. Di bawah ini kita akan berbicara tentang tahapan-tahapan dalam pengembangan dua proyek siswa.



  • Poster film GAN / proyek embed.
  • Proyek Cyrclegan pada serial kartun.


CycleGAN dalam serial kartun



Penulis proyek ini memutuskan untuk menggunakan teknik CycleGAN untuk mentransfer gambar dari satu film animasi ke film lain. GAN (Generative adversarial network) adalah metode untuk melatih model image-to-image. Dua jaringan saraf dilatih: diskriminator dan generator, yang berada dalam hubungan permusuhan. Generator mencoba meningkatkan kesalahan klasifikasi, diskriminator mencoba menguranginya. Dan CycleGAN adalah metode pengajaran imag-to-image tanpa pengawasan.



Katakanlah ada dua domain gambar - A dan B. Dua generator dan dua diskriminator dibuat: gen_A2B, gen_B2A, disc_A, disc_B. Generator gen_A2B perlu membuat gambar yang sama dari gambar dari A, tetapi agar berada di domain B. Untuk melakukan ini, masukkan kehilangan konsistensi siklus:



l1loss(gen_b2a(gen_a2b(a)), a)


Dalam hal ini, generator akan menghasilkan gambar yang menipu diskriminator, tetapi pada saat yang sama mempertahankan konten asli.



Arsitektur solusi:



Generator:





Blok resnet memungkinkan Anda mengingat gambar aslinya. Kami juga menggunakan normalisasi instance daripada normalisasi batch, karena yang terakhir menambahkan noise dari gambar lain.



Diskriminator:





Tidak ada gambar yang siap pakai, jadi kami memilih gambar dari bingkai utama film anime berdurasi penuh: untuk A, kami menggunakan "Spirited Away" oleh Hayao Miyazaki, dan untuk B - "Your Name" oleh Makoto Shinkai. Karena CycleGAN tidak terlalu cocok untuk perubahan drastis (misalnya, bentuk), penulis mengambil kedua domain tersebut dari anime.



LSGAN pertama digunakan sebagai fungsi kerugian, dan kemudian WGAN GP, karena LSGAN membuat artefak aneh dan kehilangan warna selama pelatihan.



Untuk pelatihan, kami menggunakan model yang dilatih sebelumnya pada horse2zebra (bobot ditemukan hanya untuk generator). Ia sudah memiliki pemahaman bahwa ia perlu menyimpan konten gambar tersebut, sehingga penulis di awal-awal mendapatkan autoencoder yang baik, yang hanya perlu mengajarkan cara menipu para diskriminator.



Di awal pelatihan, kami menetapkan nilai yang besar untuk kehilangan identitas kehilangan siklus dan pemotongan gradien, tetapi ketika cukup banyak waktu berlalu, kami memutuskan untuk secara bertahap menurunkan nilai-nilai ini sehingga generator mulai mencoba menipu diskriminator lebih sedikit.



Kami juga mencoba menggunakan jaringan pra-pelatihan yang besar (VGG, RESNET, Inception) sebagai diskriminator, tetapi jaringan tersebut sangat besar dan pelatihannya sangat melambat.



Hasilnya, karya tersebut berhasil mencapai fakta bahwa gaya ditransfer mendekati aslinya, sambil mempertahankan skema warna umum (aslinya di atas, gambar yang dihasilkan di bawah):











Kode proyek: https://github.com/IlyasKharunov/Cyclegan_project



Tim proyek: Ilyas Kharunov, Oleg Verbin.



Video dengan perlindungan proyek .



Poster film GAN / embed



Proyek berikutnya menarik dari sudut pandang jalur yang telah diambil siswa. Tidak seperti proyek siswa lainnya, Dmitry mengerjakannya sendiri. Jalan ini ternyata lebih sulit daripada yang lain, tetapi hasil dan kesimpulannya menarik.



Penulis memutuskan untuk membuat jaringan yang akan menghasilkan poster untuk film dalam genre tertentu. Misalnya, memiliki poster film horor berwarna gelap, film komedi berwarna terang, dan sejenisnya.



Dari situs IMDB, penulis mengambil 41 ribu poster film dalam dua puluh genre periode 1970-2020. Belakangan ternyata gambar untuk beberapa genre terlalu sedikit, jadi Dmitry menyeimbangkan set dengan genre, dan akibatnya, 32 ribu poster tetap ada.



Kemudian siswa menerapkan neural network dengan arsitektur DCGAN untuk menghasilkan gambar tanpa genr. Dia bekerja dengan poster dalam ukuran 64x128.





Hasilnya ternyata menyeramkan:





Kemudian penulis mencoba arsitektur CVAE + DCGAN:





Dan juga VAE tanpa GAN dan GAN dengan classifier. Sampai pada kesimpulan bahwa kumpulan poster terlalu rumit untuk metode ini. Kemudian penulis menerapkan GAN bersyarat: ini sama dengan DCGAN, hanya genre yang sekarang dimasukkan ke generator dan diskriminator. Vektor laten z diambil dengan panjang 100, genre dalam format panas dengan panjang 20, menghasilkan vektor dengan panjang 120. Genre ditambahkan ke jawaban dan proses tambahan dilakukan pada satu lapisan linier.



Saya berhasil mencapai hasil sebagai berikut:





Seperti yang Anda lihat, siswa tersebut tertarik untuk mencoba pendekatan yang berbeda, dan hasilnya menarik. Auto menerima banyak pengalaman baru, sampai pada kesimpulan bahwa untuk menerapkan ide seperti itu, perlu segera mengambil jaringan saraf yang lebih kompleks, misalnya, StyleGAN.



Proses pembelajaran jaringan:





Tim proyek: Dmitry Piterkin.



Video dengan perlindungan proyek .






Segera kami akan memberi tahu Anda tentang proyek diploma paling menarik dalam pengembangan C ++ dan Go, pengembangan front-end, dan pembuatan antarmuka. Anda dapat membaca lebih lanjut tentang proyek pendidikan kami di tautan ini . Dan lebih sering pergi ke saluran Technostream , di sana secara teratur muncul video pelatihan baru tentang pemrograman, pengembangan, dan disiplin ilmu lainnya.



All Articles