Kertas | Proyek
Ini adalah implementasi tidak resmi dari gambar super-resolusi melalui Iterative Refinement (SR3) oleh Pytorch .
Ada beberapa detail implementasi yang dapat bervariasi dari deskripsi kertas, yang mungkin berbeda dari struktur SR3 yang sebenarnya karena detail yang hilang. Secara khusus, kami:
DDPM .DDPM .FilM di WaveGrad , dan menanamkannya tanpa transformasi affine. Jika Anda hanya ingin mewah
★★★ Baru: Model-Model Palette-Image-to-Image-Difusion sekarang tersedia; Lihat detailnya di sini ★★★
Catatan: Kami mengatur anggaran langkah terbalik maksimum ke Nvidia 1080Ti , noise gambar dan deviasi rona kadang-kadang muncul dalam gambar resolusi tinggi, menghasilkan skor rendah. Ada banyak ruang untuk optimasi. Kami dipersilakan untuk setiap kontribusi untuk eksperimen dan peningkatan kode yang lebih luas.
| Tugas/Metrik | SSIM (+) | Psnr (+) | FID (-) | Adalah (+) |
|---|---|---|---|---|
| 16 × 16 -> 128 × 128 | 0.675 | 23.26 | - | - |
| 64 × 64 -> 512 × 512 | 0.445 | 19.87 | - | - |
| 128 × 128 | - | - | ||
| 1024 × 1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtMakalah ini didasarkan pada "Denoising Difusion Probabilistic Models", dan kami membangun kedua struktur jaringan DDPM/SR3, yang masing -masing menggunakan timesteps/gamma sebagai input penyembatan model. Dalam percobaan kami, model SR3 dapat mencapai hasil visual yang lebih baik dengan langkah -langkah terbalik yang sama dan tingkat pembelajaran. Anda dapat memilih file JSON dengan nama akhiran beranotasi untuk melatih berbagai model.
| Tugas | Platform (Kode : Qwer) |
|---|---|
| 16 × 16 -> 128 × 128 di FFHQ -Celebahq | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 di FFHQ -Celebahq | Google Drive | Baidu Yun |
| 128 × 128 Generasi Wajah di FFHQ | Google Drive | Baidu Yun |
# Download the pretrained model and edit [sr|sample]_[ddpm|sr3]_[resolution option].json about "resume_state":
"resume_state" : [ your pretrained model ' s path ]Jika Anda tidak memiliki data, Anda dapat menyiapkannya dengan langkah -langkah berikut:
Unduh dataset dan persiapkan dalam format LMDB atau PNG menggunakan skrip.
# Resize to get 16×16 LR_IMGS and 128×128 HR_IMGS, then prepare 128×128 Fake SR_IMGS by bicubic interpolation
python data / prepare_data . py - - path [ dataset root ] - - out [ output root ] - - size 16 , 128 - lMaka Anda perlu mengubah konfigurasi dataset ke jalur data dan resolusi gambar Anda:
"datasets" : {
"train" : {
"dataroot" : " dataset/ffhq_16_128 " , // [output root] in prepare.py script
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " lmdb " , //lmdb or img, path of img files
},
"val" : {
"dataroot" : " dataset/celebahq_16_128 " , // [output root] in prepare.py script
}
},Anda juga dapat menggunakan data gambar Anda dengan langkah -langkah berikut, dan kami memiliki beberapa contoh di folder dataset.
Pada awalnya, Anda harus mengatur tata letak gambar seperti ini, langkah ini dapat diselesaikan dengan data/prepare_data.py secara otomatis:
# set the high/low resolution images, bicubic interpolation images path
dataset/celebahq_16_128/
├── hr_128 # it's same with sr_16_128 directory if you don't have ground-truth images.
├── lr_16 # vinilla low resolution images
└── sr_16_128 # images ready to super resolution # super resolution from 16 to 128
python data / prepare_data . py - - path [ dataset root ] - - out celebahq - - size 16 , 128 - lCatatan: Script di atas dapat digunakan apakah Anda memiliki gambar beresolusi tinggi vanilla atau tidak.
Maka Anda perlu mengubah konfigurasi dataset ke jalur data dan resolusi gambar Anda:
"datasets" : {
"train|val" : { // train and validation part
"dataroot" : " dataset/celebahq_16_128 " ,
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " img " , //lmdb or img, path of img files
}
}, # Use sr.py and sample.py to train the super resolution task and unconditional generation task, respectively.
# Edit json files to adjust network structure and hyperparameters
python sr . py - p train - c config / sr_sr3 . json # Edit json to add pretrain model path and run the evaluation
python sr . py - p val - c config / sr_sr3 . json
# Quantitative evaluation alone using SSIM/PSNR metrics on given result root
python eval . py - p [ result root ] Atur jalur gambar seperti langkah -langkah dalam Own Data , lalu jalankan skrip:
# run the script
python infer . py - c [ config file ]Perpustakaan sekarang mendukung pelacakan eksperimen, pemeriksaan model dan visualisasi prediksi model dengan bobot dan bias. Anda perlu menginstal W&B dan login dengan menggunakan token akses Anda.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
Fungsi logging W&B ditambahkan ke file sr.py , sample.py dan infer.py . Anda dapat melewati -enable_wandb untuk mulai logging.
-log_wandb_ckpt : Lewati argumen ini bersama dengan -enable_wandb untuk menyimpan pos pemeriksaan model sebagai artefak W&B. Baik sr.py dan sample.py diaktifkan dengan model pemeriksaan model.-log_eval : Lewati argumen ini bersama dengan -enable_wandb untuk menyimpan hasil evaluasi sebagai tabel W&B interaktif. Perhatikan bahwa hanya sr.py yang diaktifkan dengan fitur ini. Jika Anda menjalankan sample.py dalam mode eval, gambar yang dihasilkan akan secara otomatis dicatat sebagai panel media gambar.-log_infer : Saat menjalankan infer.py lulus argumen ini bersama dengan -enable_wandb untuk mencatat hasil inferensi sebagai tabel W&B interaktif.Anda dapat menemukan lebih banyak tentang menggunakan fitur -fitur ini di sini.
Pekerjaan kami didasarkan pada karya teoretis berikut:
Selain itu, kami mendapat banyak manfaat dari proyek -proyek berikut: