Vous n’avez besoin ni d’une carte de 24 Go ni d’un service en ligne pour bien agrandir une image. Ultimate SD Upscale alimente le GPU avec une petite tuile à la fois, si bien qu’une carte de 4 Go de VRAM peut produire des images en 4K et en 8K en local, gratuitement et sans censure. La qualité est vraiment bonne. Ici, je construis le workflow de zéro, j’explique les réglages qui comptent, et je montre où il marche et où il échoue.
En bref
- Nodes : Ultimate SD Upscale et rgthree (pour l’image comparer).
- Modèles : un checkpoint SD 1.5 (epiCPhotoGasm) plus un modèle d’upscale d’OpenModelDB.
- Réglages : 4×, 20–30 étapes, dpmpp_2m_sde_gpu / karras, denoise 0,25, tuiles 512 × 512, CFG 6–8.
- Vitesse sur 4 Go : 512 → 2048 px en 73 secondes ; 1600 → 6400 px en environ 11 minutes.
- Plus grand : chaînez deux nodes pour 16×.
Nouveau sur ComfyUI ? Voir les bases de ComfyUI et installer le ComfyUI Manager.
La voie rapide : charger le workflow
Le workflow terminé est gratuit sur mon Patreon. Vous pouvez aussi glisser dans ComfyUI l’une de ses images de sortie : le workflow est stocké dans les métadonnées de l’image. Installez les nodes manquants depuis le Manager et redémarrez.
Le workflow mémorise des noms de modèles, pas les fichiers. Si vous n’avez pas le même modèle d’upscale ou le même checkpoint dans vos dossiers, le champ affiche « undefined » ; choisissez le vôtre. Envoyez votre image dans Load Image et appuyez sur Queue.
Construire de zéro
1. Installer les nodes
Dans Manager → Custom Nodes Manager, installez Ultimate SD Upscale et les nodes ComfyUI de rgthree (il contient le node de comparaison que j’utilise beaucoup). Redémarrez.
2. Le node principal et ses entrées
- Ajoutez Ultimate SD Upscale. Il a beaucoup de paramètres ; j’y reviens plus bas.
- Ajoutez Load Checkpoint avec un modèle SD 1.5 (j’utilise epiCPhotoGasm) et connectez son modèle et son VAE.
- Ajoutez deux nodes CLIP Text Encode pour les entrées positive et négative, et laissez-les vides. Cliquez sur le point gris de chacun pour les replier, puisqu’il n’y a rien à voir.
- Ajoutez Load Upscale Model et connectez-le.
- Ajoutez Load Image avec l’image à agrandir, un Save Image pour la sortie et un Image Comparer de rgthree : la sortie agrandie dans image_a, l’original dans image_b.
3. Récupérer des modèles d’upscale sur OpenModelDB
OpenModelDB est un excellent endroit pour trouver des modèles d’upscale. Certains sont meilleurs pour les visages, d’autres pour les objets, l’anime ou les styles de dessin animé. Chaque page montre des exemples avant/après, des modèles similaires et la licence, vérifiez-la donc si vous prévoyez un usage commercial. Les fichiers sont petits : des mégaoctets, pas des gigaoctets.
Ceux que j’utilise :
| Modèle | Ce pour quoi il est bon |
|---|---|
| 4x-UltraSharp | Détails nets ; mon choix par défaut |
| 4x-FaceUpSharpDAT | Visages, plus net |
| 4x-FaceUpDAT | Visages, plus doux et lisse |
| 4x-Nomos2-hq-drct-l | Architecture ; je l’utilise pour les rochers |
Placez les fichiers dans ComfyUI/models/upscale_models/, puis Edit → Refresh Node Definitions pour qu’ils apparaissent dans la liste.
Des fils plus nets : dans Settings (en bas à gauche) → LiteGraph, changez le mode de rendu des liens de spline en straight ou linéaire.
Les réglages qui comptent
- upscale_by : 4. Le node va jusqu’à 4× l’original. Vous pouvez chaîner des nodes pour 16×, 32× et au-delà.
- Steps : 20–30. 40–50 donne une qualité légèrement meilleure mais prend bien plus longtemps ; il y a un point de rendements décroissants.
- Sampler : dpmpp_2m_sde_gpu, meilleur pour les images réalistes, avec le scheduler karras. Cela vaut la peine d’expérimenter.
- Denoise : 0,25. C’est très important. À 1,0, il fait une image entièrement nouvelle. À 0,2–0,25, il conserve l’essentiel de l’image et ajoute un peu de détail ; on a l’impression que 90 % restent et que 10 % changent. Je monte parfois à 0,35, à peu près le maximum avant que l’image ne commence à changer.
- Largeur et hauteur de tuile : 512. SD 1.5 a été entraîné sur des images de 512 × 512, il fonctionne donc mieux sur des tuiles de 512. Le node découpe même une image énorme en nombreuses tuiles et traite chacune séparément, c’est pourquoi il tourne sur une carte peu puissante ; il met simplement plus de temps. De nombreuses autres méthodes d’upscaling plantent tout simplement quand la VRAM manque.
- CFG : 6–8. Plus bas signifie plus de variation ; très bas donne du bruit. Très haut crée des artefacts comme une netteté excessive. 8 convient.
Avec un checkpoint SDXL, la tuile serait de 1024 × 1024. Je l’ai essayé : qualité légèrement supérieure, mais bien plus lent. SD 1.5 à 512 tourne bien plus vite pour une qualité très proche.
Tester sur une photo que vous connaissez bien
Commencez par une image que vous connaissez vraiment bien. J’ai utilisé un selfie d’Angkor Wat, au Cambodge, avec des motifs à l’arrière-plan et un logo sur ma chemise, et je l’ai réduit exprès à 512 × 512 pour voir comment il se rétablirait.
La fenêtre de commande affiche la taille du canevas, le nombre de tuiles et la progression. 512 → 2048 à 4×, c’est 16 tuiles. En 4K ou 8K, le nombre grimpe vite : 64, 128, 300, 400 tuiles.
Sur mon portable de 4 Go, cela a pris 73 secondes. En faisant glisser le curseur du comparateur : le logo reste net et inchangé, les sculptures du plafond du temple sont conservées, et les lunettes ressemblent exactement à ce qu’elles sont dans la vraie vie. Il m’a ajouté un bouton sur le nez dont je ne me souviens pas.
Passer à 4x-FaceUpDAT a donné un aspect plus flatteur et plus doux. Il a davantage débruité la peau et fait un excellent travail sur les lunettes et les yeux, peut-être meilleur qu’UltraSharp. Mais ma barbe est devenue bien plus soyeuse qu’elle ne l’est vraiment, et en gros plan extrême, les murs du fond ont pris des traits ressemblant à des cheveux.
Aller plus loin, et quand cela cesse d’aider
Pour une image en 8K, le plus simple est de recharger la sortie 2K dans Load Image et de relancer.
J’ai pris une photo de 400 × 300 de Donald Trump de l’Encyclopaedia Britannica. La première passe a donné environ 1600 px de large. La seconde passe, 1600 × 1200 → 6400 × 4800, a demandé 130 tuiles à environ 4–5 secondes chacune et a pris 683 secondes. Des ordinateurs plus rapides peuvent faire une seconde par tuile ou moins. Le node affiche la tuile courante, vous pouvez donc voir le temps restant et aller prendre un café.
Le résultat était beaucoup plus lisse, et pas forcément en bien. En zoom ultra, il paraissait meilleur, mais en plan moyen je ne crois pas qu’il se soit beaucoup amélioré ; la peau a perdu en qualité à cause du débruitage supplémentaire. Pour une seconde passe, il peut être judicieux de changer de modèle, par exemple UltraSharp pour éviter que le visage soit trop lissé.
Comparer l’original et le résultat final
Le comparateur ne se met à jour que quand le graphe tourne, donc pour comparer le minuscule original et le résultat 6K sans réagrandir : sélectionnez les nodes d’upscale et appuyez sur Ctrl+B pour les contourner, ajoutez deux nodes Load Image (l’image finale et l’original), connectez-les au comparateur et mettez en file. Cela tourne en quelques secondes.
16× : chaîner deux nodes d’upscale
- Sélectionnez le node Ultimate SD Upscale, Ctrl+C, puis Ctrl+Maj+V pour le coller avec toutes ses connexions.
- Connectez la sortie d’image du premier node à l’entrée d’image du second.
- Connectez la sortie du second node à Save Image et à l’image_a du comparateur (l’original reste sur image_b).
- Les deux nodes partagent le checkpoint, les prompts vides et le modèle d’upscale. Pour des modèles d’upscale différents par passe, copiez aussi le node Load Upscale Model.
Vous pouvez saisir du texte dans les prompts et cela influence le résultat, mais cela n’a pas bien fonctionné pour moi, je les laisse donc vides.
Sur le portable, cela peut prendre 30 minutes. Ce n’est pas une tâche triviale pour un ordinateur à faible VRAM ; beaucoup d’upscalers que j’ai étudiés n’en étaient pas capables du tout, et d’autres ajoutent trop de bruit.
Résultats : où il brille et où il échoue
Ma théière-crâne, du guide de fusion image vers image, est passée de 512 px à la 8K avec UltraSharp, avec un niveau de détail ultra élevé même en zoom ultra. Je l’imprimerais et l’accrocherais au mur.
Je me suis lancé dans l’upscaling IA à l’origine pour mon propre travail. Sur un flacon de parfum que j’ai conçu dans 3D-Coat, les coupes de voxels laissent des bords rugueux ; passer de 1500 à environ 3000 px les a magnifiquement lissés.
Sur un design de robot, UltraSharp a accentué les bords de polygones crénelés issus de 3D-Coat. 4x-FaceUpDAT a donné des lignes bien plus lisses, celles que je voulais. Quelques minuscules détails du visage ont été écrasés et modifiés, un coût mineur pour un excellent agrandissement rapide d’un rendu final.
Là où cela a échoué : une photo GoPro de coraux sous-marins, de 2500 px de large, portée à 10–12K. Le modèle n’avait clairement pas été beaucoup entraîné sur les coraux. Recadrer un morceau de 300 px pour lui laisser plus de place à inventer des détails n’a pas aidé non plus. Pour les images sous-marines, il me faudrait un modèle d’upscale complètement différent.
Sur un vieux rendu de rochers dont j’avais perdu le fichier de scène, le résultat intermédiaire de 2000–3000 px était vraiment beau. À 8–10K, il est devenu trop lisse et trop débruité ; encore bien meilleur que le minuscule original, mais pas un rendu qui m’a plu.
Si vous connaissez d’autres techniques d’upscaling qui fonctionnent mieux, laissez un commentaire sur la vidéo. Ce n’est que mon workflow.
Voir la version vidéo (22:11)
Tout ce qui précède est aussi dans la vidéo, si vous préférez suivre à l’écran. La vidéo est en anglais.
Questions fréquentes
Puis-je agrandir des images avec seulement 4 Go de VRAM ?
Oui. Ultimate SD Upscale découpe l'image en tuiles de 512 × 512 et les traite une à une. Sur un portable de 4 Go, une image de 512 px est passée à 2048 px en 73 secondes ; une sortie de 6400 × 4800 a demandé 130 tuiles à environ 4–5 secondes chacune.
Quel denoise utiliser pour l'upscaling ?
0,25 conserve l'essentiel de l'image et ajoute un peu de détail. 0,35 est à peu près le maximum avant que l'image ne commence à changer. À 1,0, vous obtenez une image entièrement nouvelle.
Quel est le meilleur modèle d'upscale ?
Cela dépend de l'image. 4x-UltraSharp garde les détails nets ; 4x-FaceUpDAT est plus doux et lisse, bon pour les visages et pour masquer les bords crénelés ; Nomos2 convient à l'architecture et aux rochers. Aucun n'a bien fonctionné sur une photo de corail sous-marin.
Comment agrandir de plus de 4× ?
Repassez la sortie dans le node, ou chaînez deux nodes Ultimate SD Upscale pour 16×. Attendez-vous à des temps de rendu très longs, et surveillez le lissage excessif à partir de 8K.
