Papier | Projet
Il s'agit d'une implémentation non officielle de la super-résolution de l'image via le raffinement itératif (SR3) par Pytorch .
Certains détails de mise en œuvre peuvent varier de la description du document, qui peut être différent de la structure SR3 réelle due aux détails manquants. Plus précisément, nous:
DDPM .DDPM .FilM l'a fait dans WaveGrad et l'intégre sans transformation affine. Si vous voulez juste haut de gamme
★★★ NOUVEAU: La palette de suivi-image à l'image-diffusion des modèles est maintenant disponible; Voir les détails ici ★★★
Remarque: nous définissons le budget des étapes inverses maximale sur Nvidia 1080Ti , le bruit d'image et l'écart de teinte apparaissent parfois dans des images à haute résolution, ce qui entraîne des scores faibles. Il y a beaucoup de place pour l'optimisation. Nous sommes les bienvenus à toutes les contributions pour des expériences plus étendues et des améliorations de code.
| Tâches / métriques | Ssim (+) | PSNR (+) | Fid (-) | Est (+) |
|---|---|---|---|---|
| 16 × 16 -> 128 × 128 | 0,675 | 23.26 | - | - |
| 64 × 64 -> 512 × 512 | 0,445 | 19.87 | - | - |
| 128 × 128 | - | - | ||
| 1024 × 1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtCet article est basé sur des "modèles probabilistes de diffusion de débrassement", et nous construisons à la fois les structures de réseau DDPM / SR3, qui utilisent respectivement des horaires / gamma comme modèle de modèle. Dans nos expériences, le modèle SR3 peut obtenir de meilleurs résultats visuels avec les mêmes étapes inverses et le même taux d'apprentissage. Vous pouvez sélectionner les fichiers JSON avec des noms de suffixes annotés pour former les différents modèles.
| Tâches | Plateforme (Code : Qwer) |
|---|---|
| 16 × 16 -> 128 × 128 sur FFHQ-Celebahq | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 sur FFHQ-Celebahq | Google Drive | Baidu Yun |
| Génération de visage 128 × 128 sur 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 ]Si vous n'aviez pas les données, vous pouvez les préparer en suivant les étapes:
Téléchargez l'ensemble de données et préparez-le au format LMDB ou PNG à l'aide du script.
# 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 - lEnsuite, vous devez modifier la configuration des ensembles de données par votre chemin de données et votre résolution d'image:
"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
}
},Vous pouvez également utiliser vos données d'image en suivant les étapes et nous avons quelques exemples dans le dossier de l'ensemble de données.
Au début, vous devez organiser la mise en page des images comme celle-ci, cette étape peut être terminée par data/prepare_data.py automatiquement:
# 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 - lRemarque: le script ci-dessus peut être utilisé, que vous ayez ou non les images à haute résolution à la vanille.
Ensuite, vous devez modifier la configuration de l'ensemble de données par votre chemin de données et votre résolution d'image:
"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 ] Définissez le chemin d'image comme les étapes dans Own Data , puis exécutez le script:
# run the script
python infer . py - c [ config file ]La bibliothèque prend désormais en charge le suivi des expériences, le point de contrôle du modèle et la visualisation de la prédiction du modèle avec des poids et des biais. Vous devrez installer W&B et vous connecter en utilisant votre jeton d'accès.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
La fonctionnalité de journalisation W&B est ajoutée aux fichiers sr.py , sample.py et infer.py . Vous pouvez passer -enable_wandb pour démarrer la journalisation.
-log_wandb_ckpt : passez cet argument avec -enable_wandb pour enregistrer les points de contrôle du modèle en tant qu'artefacts W&B. sr.py et sample.py sont activés avec le modèle de contrôle du modèle.-log_eval : passez cet argument avec -enable_wandb pour enregistrer le résultat d'évaluation en tant que tableaux W&B interactifs. Notez que seul sr.py est activé avec cette fonctionnalité. Si vous exécutez sample.py en mode EVAL, les images générées seront automatiquement enregistrées en tant que panneau de support d'image.-log_infer : lors de l'exécution infer.py passez cet argument avec -enable_wandb pour enregistrer les résultats d'inférence en tant que tableaux W&B interactifs.Vous pouvez en savoir plus sur l'utilisation de ces fonctionnalités ici.
Notre travail est basé sur les travaux théoriques suivants:
De plus, nous bénéficions beaucoup des projets suivants: