⨠Bagian pertama⨠Bagian ketigaHalo lagi!
Seperti yang Anda lihat, liburan agak melumpuhkan timeline untuk artikel.
Saya pikir banyak selama ini berhasil, jika tidak sepenuhnya melatih model mereka, maka paling tidak bereksperimen dengan set data yang berbeda.
1. Masukkan distribusi
2. Mengunduh gambar
3. ???
4. Keuntungan!
Jika Anda tidak sesuai dengan jaringan saraf kami ini, atau Anda mulai membaca dari artikel ini, maka, seperti yang mereka katakan, tidak ada waktu untuk menjelaskan, kami mengambil kit distribusi, mengunduh gambar yang diperlukan, dan mari kita pergi!
Instruksi terperinci ada
di artikel sebelumnya dalam seri .
Pancake pertama kental
Ketika saya melatih model untuk
@ photo2comicsbot untuk pertama kalinya, tanpa basa-basi lagi, saya hanya memasukkan sekitar 1.000 halaman komik ke dalam dataset.
Ya, bersama dengan sampul, pengumuman, dan pengisi lainnya.
Di pintu masuk tampak seperti ini:

Hasilnya sesuai:



Model ini dengan sempurna menyampaikan perbedaan umum antara komik dan foto:
- Pemeringkatan warna tipikal
- Seleksi garis besar
- Memblokir
- Cloud teks
Pada prinsipnya, opsi ini mungkin cukup untuk produksi.
Tapi saya bertanya-tanya hasil apa yang bisa diperoleh pada dataset "bersih".
Ambil dua
Untuk percobaan berikutnya, saya meninggalkan halaman dengan satu blok, dan dari sisanya saya memotong bagian terbesar, yang terdiri dari satu blok, untuk menghilangkan garis pemisah vertikal dan horizontal dalam model akhir.
Jika Anda membuat perubahan pada dataset Anda, misalnya, menghapus atau menambahkan foto, jangan lupa untuk menyimpan versi sebelumnya. Anda akan memiliki tempat untuk kembali jika terjadi kesalahan.
Dataset kedua terlihat seperti ini:

Hasilnya, seperti yang mereka katakan, jelas:



Garis pemisah menghilang, tetapi dengan mereka ekspresi yang tersisa di awan dengan teks: mereka mulai bertemu jauh lebih jarang dalam dataset dan tidak lagi menjadi fitur utama.
Ruang kosong yang dulu diisi dengan teks sekarang dipenuhi dengan suara psychedelic.
Ketiga kalinya pesona
Saya memutuskan untuk menyingkirkan teks sepenuhnya, hanya menyisakan bagian-bagian komik di mana tidak. Tidak ada yang selamat: tidak ada cloud, tidak ada berita utama, atau nama seri.
Dataset setelah "genosida linguistik":

Hasil akhir:



Di satu sisi, ada lebih sedikit artefak, di sisi lain, ekspresif telah hilang. Karena dalam pelatihan GAN kualitas hasil sangat ditentukan oleh Anda dan saya, tidak ada resep tunggal untuk model yang baik.
Kecantikan ada di mata yang melihatnya, jadi jangan takut untuk bereksperimen dan memilih yang paling Anda sukai.
Untuk senjatanya!
Yah, kita sudah bicara tentang jebakan utama dan metode berurusan dengan mereka, saatnya untuk turun ke bisnis.
Buka folder tempat kami mengunduh distribusi. Biarkan saya mengingatkan Anda bahwa itu disebut
pytorch-CycleGAN-and-pix2pixKarena kami memiliki instruksi untuk boneka, kami tidak akan menyentuh kode distribusi, karena semua parameter yang diperlukan dapat ditetapkan dari baris perintah.
Dalam distribusi ini, pelatihan standar berlangsung lebih dari dua ratus era, dengan pelemahan linier dari tingkat pembelajaran setelah zaman keseratus.
Resolusi maksimum yang dapat dikuasai kartu delapan gigabyte saya adalah 400x400. Pelatihan penuh membutuhkan waktu sekitar 33 jam, jadi kami akan menggunakan hack kecil. Pertama, kita akan melatih model dalam gambar 128x128, kemudian 256x256, dan hanya pada tahap akhir kita akan menunjukkan padanya 400x400 kita yang cantik.
Tahap pertama akan berlangsung 100 era, yang kedua dan ketiga - masing-masing 50, yang akan memungkinkan kita untuk mengurangi waktu pelatihan hampir setengahnya.
Seperti yang diperlihatkan oleh praktik, hasil dengan pendekatan ini tidak lebih buruk, dan kadang-kadang lebih baik, daripada ketika berlatih segera dengan resolusi maksimal.
Mungkin cukup teori, sudah waktunya untuk melanjutkan berlatih.
Pada prompt perintah, masukkan.
Tahap satu
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 128 --load_size 180 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 4
Jangan lupa untuk mengganti kawat gigi dengan nilai Anda sendiri.
Kami akan menganalisis beberapa parameter secara lebih rinci:
--batch_size {number}
Parameter ini bertanggung jawab atas jumlah gambar yang diproses per siklus, secara positif mempengaruhi kecepatan dan secara negatif pada kerakusan model.
Pada setiap tahap, pilih kemungkinan maksimum --batch_size, yang tidak menyebabkan kesalahan karena kekurangan memori GPU.
-- dataroot {dataset root folder}
- folder dengan dataset kami. Di dalamnya harus folder trainA, trainB, testA, testB, seperti yang dijelaskan dalam artikel sebelumnya.
--name {model name}
- Nama proyek Anda. Mungkin sewenang-wenang, tapi saya sarankan untuk memasukkan arsitektur model, resolusi maksimum dan nama dataset dalam nama.
Misalnya: βresnet9_128to400_comics8β
Jadi, Anda dapat membedakan antara percobaan dengan berbagai parameter dan data.
Tahap pertama pelatihan bisa dihentikan di era keseratus.
Anda dapat mengamati kemajuan dari browser:
localhost : 8097 /
(atau tautan lain yang akan terlihat di konsol)
Tahap Dua
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 256 --load_size 290 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 2 --epoch 100 --epoch_count 0 --continue_train
Penting untuk menunjukkan era di mana kami menyelesaikan studi kami di tahap pertama.
"--Epoch 100" berarti bahwa kami akan memuat model dari pos pemeriksaan era keseratus
β--Epoch_count 0β berarti kita akan memulai pelatihan dari awal, dengan kecepatan belajar maksimum.
Pelatihan tahap kedua bisa dihentikan di era ke-50.
Tahap Tiga
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 400 --load_size 430 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 1 --epoch 50 --epoch_count 0 --continue_train
Pelatihan tahap ketiga dapat dihentikan pada era ke-50, tetapi ini adalah masalah selera. Anda dapat menyelesaikan hingga akhir, dan memilih hasil antara yang Anda suka. Penting untuk diingat bahwa hasil pada era ke-200 mungkin lebih buruk daripada pada ke-150.
Sekarang pergilah dan lihat apa yang telah Anda lakukan
Selama pelatihan, model dan hasil antara akan disimpan dalam folder
/ pytorch-CycleGAN-and-pix2pix / checkpoints / {nama model}
Untuk menguji model, cukup masukkan baris perintah:
python test.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --netG resnet_9blocks --crop_size 512 --load_size 580 --epoch {epoch name}
Anda dapat melihat hasilnya pada dataset uji untuk setiap pos pemeriksaan, cukup tentukan sebagai {epoch name}. Jika {epoch name} tidak ditentukan, pos pemeriksaan terakhir akan diambil.
Hasilnya akan disimpan dalam folder:
/pytorch-CycleGAN-and-pix2pix/results/{model name}/test_{epoch name}
Agar tidak bingung model mana pada dataset mana memberikan hasil apa,
mulai membuat buku harian kecil. Catat data dasar dan hasil pembelajaran.
Misalnya, baris perintah dan era yang telah Anda capai. Data ini cukup untuk menyimpan parameter pelatihan dan set data yang kami latih.
Lagi pula, apa perbedaan antara percobaan ilmiah dan bermain-main? Fakta bahwa semuanya didokumentasikan bersama kami!
Itu saja untuk hari ini! Pada artikel selanjutnya, kita akan belajar bagaimana mengekspor model yang sudah jadi dan menyimpannya di cloud.
Jangan takut untuk bereksperimen. Pastikan untuk mencoba beberapa set data yang berbeda, bandingkan hasilnya dan bagikan dalam komentar!
Sampai ketemu lagi!
β¨ Bagian selanjutnya