Arxiv | Bibtex
Kami mengembangkan pendekatan baru untuk inpaining gambar yang melakukan pekerjaan yang lebih baik dalam mereproduksi daerah yang diisi menunjukkan detail halus yang terinspirasi oleh pemahaman kami tentang bagaimana seniman bekerja: baris pertama, warna selanjutnya . Kami mengusulkan model edgeconnect model dua tahap yang terdiri dari generator tepi yang diikuti oleh jaringan penyelesaian gambar. Generator Edge berhalusinasi tepi dari wilayah yang hilang (baik reguler maupun tidak teratur) dari gambar, dan jaringan penyelesaian gambar mengisi di wilayah yang hilang menggunakan tepi berhalusinasi sebagai apriori. Deskripsi terperinci tentang sistem dapat ditemukan di makalah kami.

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txtKami menggunakan dataset Places2, Celeba dan Paris Street-View. Untuk melatih model pada dataset lengkap, unduh dataset dari situs web resmi.
Setelah mengunduh, jalankan scripts/flist.py untuk menghasilkan daftar file kereta, tes dan validasi. Misalnya, untuk menghasilkan daftar file set pelatihan di dataset Places2 Run:
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flistModel kami dilatih pada dataset topeng tidak teratur yang disediakan oleh Liu et al .. Anda dapat mengunduh dataset topeng tidak teratur yang tersedia secara publik dari situs web mereka.
Atau, Anda dapat mengunduh Dataset Topeng Tidak Teratur Cepat oleh Karim Iskakov yang merupakan kombinasi 50 juta sapuan yang digambar oleh tangan manusia.
Harap gunakan scripts/flist.py untuk menghasilkan daftar file kereta, tes dan validasi yang dijelaskan seperti yang dijelaskan di atas.
Unduh model pra-terlatih menggunakan tautan berikut dan salin di bawah direktori ./checkpoints .
Tempat2 | Celeba | Paris-StreetView
Atau, Anda dapat menjalankan skrip berikut untuk secara otomatis mengunduh model pra-terlatih:
bash ./scripts/download_model.sh Untuk melatih model, buat file config.yaml yang mirip dengan file konfigurasi contoh dan salin di bawah direktori pos pemeriksaan Anda. Baca panduan konfigurasi untuk informasi lebih lanjut tentang konfigurasi model.
EdgeConnect dilatih dalam tiga tahap: 1) Melatih model tepi, 2) melatih model inpaint dan 3) melatih model bersama. Untuk melatih model:
python train.py --model [stage] --checkpoints [path to checkpoints] Misalnya untuk melatih model tepi pada dataset Places2 di bawah ./checkpoints/places2 direktori:
python train.py --model 1 --checkpoints ./checkpoints/places2 Konvergensi model berbeda dari dataset ke dataset. Misalnya dataset Places2 menyatu di salah satu dari dua zaman, sementara kumpulan data yang lebih kecil seperti Celeba membutuhkan hampir 40 zaman untuk bertemu. Anda dapat mengatur jumlah iterasi pelatihan dengan mengubah nilai MAX_ITERS dalam file konfigurasi.
Untuk menguji model, buat file config.yaml yang mirip dengan file konfigurasi contoh dan salin di bawah direktori pos pemeriksaan Anda. Baca panduan konfigurasi untuk informasi lebih lanjut tentang konfigurasi model.
Anda dapat menguji model pada ketiga tahap: 1) model tepi, 2) model inpaint dan 3) model gabungan. Dalam setiap kasus, Anda perlu memberikan gambar input (gambar dengan mask) dan file masker grayscale. Pastikan file mask mencakup seluruh wilayah topeng di gambar input. Untuk menguji model:
python test.py
--model [stage]
--checkpoints [path to checkpoints]
--input [path to input directory or file]
--mask [path to masks directory or mask file]
--output [path to the output directory] Kami memberikan beberapa contoh tes di bawah direktori ./examples . Silakan unduh model pra-terlatih dan jalankan:
python test.py
--checkpoints ./checkpoints/places2
--input ./examples/places2/images
--mask ./examples/places2/masks
--output ./checkpoints/results Script ini akan menghantam semua gambar di ./examples/places2/images menggunakan topeng yang sesuai di ./examples/places2/mask direktori dan menyimpan hasilnya di direktori ./checkpoints/results . Secara default test.py skrip dijalankan pada tahap 3 ( --model=3 ).
Untuk mengevaluasi model, Anda harus terlebih dahulu menjalankan model dalam mode uji terhadap set validasi Anda dan menyimpan hasilnya pada disk. Kami memberikan utilitas ./scripts/metrics.py untuk mengevaluasi model menggunakan PSNR, SSIM dan rata -rata kesalahan absolut:
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output] Untuk mengukur jarak awal Fréchet (skor FID) ./scripts/fid_score.py . Kami menggunakan implementasi Pytorch dari FID dari sini yang menggunakan bobot pretrained dari model awal Pytorch.
python ./scripts/fid_score.py --path [path to validation, path to model output] --gpu [GPU id to use] Secara default, kami menggunakan detektor tepi yang cerdik untuk mengekstrak informasi tepi dari gambar input. Jika Anda ingin melatih model dengan deteksi tepi eksternal (deteksi tepi yang bersarang secara holistik misalnya), Anda perlu menghasilkan peta tepi untuk seluruh set pelatihan/tes sebagai pra-pemrosesan dan daftar file yang sesuai menggunakan scripts/flist.py seperti yang dijelaskan di atas. Pastikan nama file dan struktur direktori cocok dengan set pelatihan/tes Anda. Anda dapat beralih ke deteksi tepi eksternal dengan menentukan EDGE=2 di file konfigurasi.
Konfigurasi model disimpan dalam file config.yaml di bawah direktori pos pemeriksaan Anda. Tabel berikut menyediakan dokumentasi untuk semua opsi yang tersedia di file konfigurasi:
| Pilihan | Keterangan |
|---|---|
| MODE | 1: Kereta, 2: Tes, 3: Eval |
| MODEL | 1: Model Edge, 2: Model Inpaint, 3: Model Edge-Inpaint, 4: Model Gabungan |
| MASKER | 1: blok acak, 2: setengah, 3: eksternal, 4: eksternal + blok acak, 5: eksternal + blok acak + setengah |
| TEPIAN | 1: Canny, 2: Eksternal |
| Nms | 0: Tidak ada penekanan non-Max, 1: Non-Max-Supresi pada tepi eksternal |
| BENIH | benih generator nomor acak |
| GPU | Daftar ID GPU, Daftar Dipisahkan Koma misalnya [0,1] |
| Debug | 0: No Debug, 1: Mode Debugging |
| Verbose | 0: Tidak ada verbose, 1: Statistik terperinci output di konsol output |
| Pilihan | Keterangan |
|---|---|
| Train_flist | File teks yang berisi daftar file set pelatihan |
| Val_flist | File teks yang berisi daftar file set validasi |
| Test_flist | File teks yang berisi daftar file set tes |
| Train_edge_flist | File Teks yang Berisi Pelatihan Menetapkan Daftar File Tepi Eksternal (hanya dengan EDGE = 2) |
| Val_edge_flist | File teks yang berisi validasi mengatur daftar file tepi eksternal (hanya dengan edge = 2) |
| Test_edge_flist | File Teks yang Berisi Tes Set Eksternal Edges Files Daftar (hanya dengan edge = 2) |
| Train_mask_flist | File teks yang berisi daftar file masker set pelatihan (hanya dengan mask = 3, 4, 5) |
| Val_mask_flist | File teks yang berisi daftar file masker set validasi (hanya dengan mask = 3, 4, 5) |
| Test_mask_flist | File teks yang berisi daftar file masker set tes (hanya dengan mask = 3, 4, 5) |
| Pilihan | Bawaan | Keterangan |
|---|---|---|
| Lr | 0,0001 | tingkat pembelajaran |
| D2g_lr | 0.1 | Rasio Tingkat Pembelajaran Diskriminator/Generator |
| Beta1 | 0,0 | Adam Optimizer Beta1 |
| Beta2 | 0.9 | Adam Optimizer Beta2 |
| Batch_Size | 8 | Ukuran batch input |
| Input_size | 256 | Input ukuran gambar untuk pelatihan. (0 untuk ukuran asli) |
| Sigma | 2 | standar deviasi filter Gaussian yang digunakan dalam detektor tepi yang cerdik (0: acak, -1: tidak ada tepi) |
| Max_iters | 2e6 | jumlah maksimum iterasi untuk melatih model |
| Edge_threshold | 0,5 | ambang deteksi tepi (0-1) |
| L1_loss_weight | 1 | berat badan L1 |
| Fm_loss_weight | 10 | Berat penurunan fitur-pencocokan |
| Style_loss_weight | 1 | berat badan penurunan gaya |
| Content_loss_weight | 1 | berat badan penurunan perseptual |
| Inpaint_adv_loss_weight | 0,01 | berat badan penurunan semak -semak |
| Gan_loss | NSGAN | NSGAN : GAN Non-jenuh, LSGAN : Kotak terkecil GaN, engsel : engsel gan |
| Gan_pool_size | 0 | Ukuran Pool Gambar Palsu |
| Save_interval | 1000 | Berapa banyak iterasi untuk menunggu sebelum menyimpan model (0: tidak pernah) |
| Eval_interval | 0 | Berapa banyak iterasi untuk menunggu sebelum mengevaluasi model (0: tidak pernah) |
| Log_interval | 10 | Berapa banyak iterasi untuk menunggu sebelum logging pelatihan kehilangan (0: tidak pernah) |
| Sampel_interval | 1000 | Berapa banyak iterasi untuk menunggu sebelum menyimpan sampel (0: tidak pernah) |
| Sampel_size | 12 | Jumlah gambar untuk dicicipi pada setiap interval sampel |
Lisensi di bawah Atribusi Creative Commons-Nonkomersial 4.0 International.
Kecuali jika dicatat, konten ini diterbitkan di bawah lisensi CC BY-NC, yang berarti Anda dapat menyalin, membuat remix, mengubah, dan membangun konten selama Anda tidak menggunakan materi untuk tujuan komersial dan memberikan kredit yang sesuai dan memberikan tautan ke lisensi.
Jika Anda menggunakan kode ini untuk penelitian Anda, silakan mengutip makalah kami Edgeconnect: Inpaining gambar generatif dengan pembelajaran tepi permusuhan atau edgeconnect: Struktur yang dipandu gambar inpaining menggunakan prediksi tepi:
@inproceedings{nazeri2019edgeconnect,
title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},
author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
journal={arXiv preprint},
year={2019},
}
@InProceedings{Nazeri_2019_ICCV,
title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},
author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},
month = {Oct},
year = {2019}
}