Papier | Projet
Il s'agit d'une implémentation non officielle de la palette: modèles de diffusion d'image à l'image par Pytorch , et il est principalement hérité de sa version super-résolution Image-Super-Resolution-Via-iterative-Refinement. Le modèle de code provient de mon autre projet de semence: Template de pytorch distribué.
Il existe des détails de mise en œuvre avec des descriptions de papier:
Guided-Diffusion , ce qui donne un coup de pouce substantiel à la qualité de l'échantillon.DDPM à la vanille.Palette et l'intégrer avec une transformation affine.Palette . J'essaie de terminer les tâches suivantes dans l'ordre:
L'expérience de suivi est incertaine, en raison du manque de temps et de ressources GPU:
Le modèle DDPM nécessite des ressources informatiques importantes, et nous n'avons créé que quelques exemples de modèles pour valider les idées de cet article.
Résultats avec 200 époques et 930K itérations, et les 100 premiers échantillons dans le masque de centrage et le masque irrégulier.
![]() | ![]() |
|---|
Résultats avec 16 époques et 660K itérations, et les plusieurs échantillons choisis dans le masque de centrage.
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Résultats avec 8 époques et 330K itérations, et les plusieurs échantillons ont choisi de la contre-culpulation.
![]() | ![]() |
|---|
| Tâches | Ensemble de données | Ema | Fid (-) | Est (+) |
|---|---|---|---|---|
| Insistance avec un masque de centrage | Céleba-hq | FAUX | 5.7873 | 3.0705 |
| Intaini avec un masque irrégulier | Céleba-hq | FAUX | 5.4026 | 3.1221 |
pip install - r requirements . txt| Ensemble de données | Tâche | Itérations | GPUS × Jours × BS | URL |
|---|---|---|---|---|
| Céleba-hq | Déaini | 930K | 2 × 5 × 3 | Google Drive |
| Lieux2 | Déaini | 660k | 4 × 8 × 10 | Google Drive |
BS indique la taille de l'échantillon par GPU.
Nous obtenons la plupart d'entre eux de Kaggle, qui peuvent être légèrement différents de la version officielle, et vous pouvez également les télécharger à partir du site officiel.
Nous utilisons la division par défaut de ces ensembles de données pour la formation et l'évaluation. Les listes de fichiers que nous utilisons peuvent être trouvées dans Celeba-HQ, places2.
Après avoir préparé ses propres données, vous devez modifier le fichier de configuration correspondant pour pointer de vos données. Prenez ce qui suit comme exemple:
" which_dataset " : { // import designated dataset using arguments
" name " : ["data.dataset", "InpaintDataset"], // import Dataset() class
" args " :{ // arguments to initialize dataset
" data_root " : " your data path " ,
" data_len " : -1,
" mask_mode " : " hybrid "
}
}, Plus de choix concernant DatalOader et la scission de validation peuvent également être trouvés dans datasets d'une partie du fichier de configuration.
resume_state du fichier de configuration dans le répertoire du point de contrôle précédent. Prenez ce qui suit comme exemple, ce répertoire contient des états de formation et un modèle enregistré: " path " : { //set every part file path
" resume_state " : "experiments/inpainting_celebahq_220426_150122/checkpoint/100"
},load_everything de model.py , la valeur par défaut est le réseau . Suivez les paramètres du didacticiel, les optimisateurs et les modèles seront chargés à partir de 100.State et 100_Network.Pth respectivement. netG_label = self . netG . __class__ . __name__
self . load_network ( network = self . netG , network_label = netG_label , strict = False ) python run . py - p train - c config / inpainting_celebahq . json Nous testons le squelette U-Net utilisé dans SR3 et Guided Diffusion , et Guided Diffusion on a des performances plus robustes dans nos expériences actuelles. Plus de choix concernant la colonne vertébrale , la perte et la métrique peuvent être trouvés dans which_networks la partie_networks de la configuration du fichier.
python run . py - p test - c config / inpainting_celebahq . jsonCréez deux dossiers enregistrant des images de vérité au sol et exemple d'images, et leurs noms de fichiers doivent correspondre les uns aux autres.
Exécutez le script:
python eval . py - s [ ground image path ] - d [ sample image path ]Notre travail est basé sur les travaux théoriques suivants:
Et nous bénéficions beaucoup des projets suivants: