Upscaling IA gratuit dans ComfyUI avec Ultimate SD Upscale et SD 1.5, même avec 4 Go de VRAM

Agrandissez photos et rendus 4× (ou 16× en chaînant) en local et gratuitement : Ultimate SD Upscale avec un checkpoint SD 1.5 et un modèle d'upscale d'OpenModelDB, en tuiles de 512 px pour tourner sur un GPU de 4 Go.

Anton Tenitsky13 octobre 20269 min de lectureVersion vidéo plus bas

Ce guide a été traduit de l'anglais par IA et peut contenir des erreurs. Lire l'original.

Une théière en porcelaine blanche en forme de crâne, agrandie 16 fois en 8K avec Ultimate SD Upscale

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

  1. Ajoutez Ultimate SD Upscale. Il a beaucoup de paramètres ; j’y reviens plus bas.
  2. Ajoutez Load Checkpoint avec un modèle SD 1.5 (j’utilise epiCPhotoGasm) et connectez son modèle et son VAE.
  3. 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.
  4. Ajoutez Load Upscale Model et connectez-le.
  5. 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.
Le node Ultimate SD Upscale avec des entrées pour image, model, positive, negative, VAE et upscale model, et la valeur upscale_by en cours de réglage sur 4
Ultimate SD Upscale : image, checkpoint, prompts vides, VAE et un modèle d'upscale.

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
La page de 4x-FaceUpSharpDAT sur OpenModelDB avec un exemple de comparaison de visage et les détails de la licence
OpenModelDB montre des exemples, la licence et des modèles similaires pour chaque upscaler.

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.
Réglages d'Ultimate SD Upscale : sampler dpmpp_2m_sde_gpu, scheduler karras, denoise 0.25, mode Linear, largeur et hauteur de tuile 512, mask blur 8
Les réglages que j'utilise : denoise 0,25 et tuiles de 512 px pour SD 1.5.

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.

La console de ComfyUI montrant une taille de canevas de 2048 par 2048, une taille de tuile de 512, 16 tuiles dans une grille 4 par 4, puis un canevas de 6400 par 4800 avec 130 tuiles
La console montre la taille du canevas, la grille de tuiles et les secondes par tuile.

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.

Un selfie séparé par le curseur de l'image comparer, montrant l'original de 512 pixels et l'agrandissement 4x côte à côte
Avant et après, séparés par le comparateur. Les lunettes et le mur sculpté tiennent de près.

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.

Un gros plan extrême de la barbe et des lèvres agrandies
FaceUpDAT en zoom extrême : une peau lisse, une barbe plus soyeuse que dans la réalité.

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

  1. Sélectionnez le node Ultimate SD Upscale, Ctrl+C, puis Ctrl+Maj+V pour le coller avec toutes ses connexions.
  2. Connectez la sortie d’image du premier node à l’entrée d’image du second.
  3. Connectez la sortie du second node à Save Image et à l’image_a du comparateur (l’original reste sur image_b).
  4. 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.

Deux nodes Ultimate SD Upscale chaînés l'un après l'autre, alimentant Save Image et un Image Comparer montrant une théière en forme de crâne
Deux nodes d'upscale à la suite : de 512 px à la 8K en une exécution.

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.

Une théière en porcelaine blanche en forme de crâne, agrandie de 512 pixels à la 8K
De 512 px à la 8K avec UltraSharp, chaîné deux fois.

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.

Un gros plan extrême du bouchon doré d'un flacon de parfum aux nervures diagonales, séparé par le curseur du comparateur
Un rendu 3D-Coat : les bords de voxels rugueux sortent lisses.

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.

Un design de robot blindé sombre aux lignes de panneaux lisses après l'upscaling
FaceUpDAT a lissé les bords crénelés qu'UltraSharp avait accentués.

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.

Une photo de corail sous-marin séparée par le comparateur, avec le côté agrandi plein de textures striées et étalées
Un échec : des coraux sur lesquels les modèles n'étaient pas entraînés.

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.

Anton Tenitsky est artiste 3D avec plus de 15 ans d'expérience en infographie, qui a travaillé avec Nickelodeon, Gameloft, Marvel Rivals et de nombreux autres clients. En savoir plus sur moi

Guides associés