La technique de l’Inpainting avec Stable Diffusion ouvre des horizons innovants pour la réparation et modification d'images. Cette méthode s'appuie sur le contexte des segments intacts d’une ilmage pour reconstruire les parties altérées ou incomplètes. Ainsi, elle simplifie non seulement l'élimination des défauts mais encourage même une créativité sans borne dans la personnalisation des images qui peuvent être aisement modifiées.
Voyons ensemble comment utiliser l’inpainting pour améliorer ou modifier des images avec Stable Diffusion XL et l’interface de Fooocus.
Ce tutoriel considère que vous connaissez déjà Fooocus et son utilisation de base - Si ce n’est pas le cas, commencez par lire notre Guide Fooocus pour découvrir, installer et prendre en main cette interface Stable Diffusion simple mais puissante.
Activer l’inpainting dans Fooocus
Fooocus intègre l’inpainting parmi ses fonctionnalités Image Input qui s’affichent lorsque vous cochez la case du même nom en bas de l’écran, sous le champs de Prompt. Pour y accéder, il faut donc cochez cette case puis ouvrir l’onglet Inpaint or Outpaint :
Lorsque l’onglet Inpaint or Outpaint est actif, le bouton principal Generate ne génère plus simplement une image à partir du prompt mais effectue la génération à partir de l’image téléchargée et des options définie. Notez que le prompt principal est toujours pris en compte pour cette génération en plus des paramètres spécifiques à l’inpaiting.
Utiliser l’inpainting dans Fooocus
Utilisations standards
Fooocus propose trois méthode d’inpainting qui execute des génération légèrement différentes, optimisées pour diffèrent cas d’usage. Nous allons étudier leur fonctionnement à l’aide de 3 exemples que nous décrirons pas à pas pour vous permettre de bien comprendre comment utiliser l’inpainting avec Fooocus.
Compléter une image
Pour étudier le fonctionnement de l’inpainting par défaut de Fooocus (Inpaint or outpaint (default)), nous allons prendre cette photo déchirée pour la restaurer et la compléter.
Voici les étapes à suivre pour compléter notre image avec l’inpainting :
- Déposez l’image dans le cadre.
- Définissez le masque d’inpainting à l’aide de l’outil de dessin. - Fooocus va générer du contenu pour tout la partie sur laquelle vous ajouter le calque blanc. Il faut donc couvrir la déchirure et toute la partie vide de l’image (le petit 🖊️ en haut à droite permet de changer l’épaisseur du trait)
- Rédigez un prompt qui correspond à l’image que vous voulez obtenir.
- Cliquez sur le bouton Generate.
En quelque secondes, Fooocus va générer deux générer des images qui complètent notre photo de départ. Si le résultat ne vous satisfait pas, cliquez à nouveau sur generate après avoir éventuellement affiné votre prompt.
Nous allons maintenant agrandir un peu l’image sur la droite en utilisant l’outpainting que Fooocus propose en complément de l’inpaiting.
Déposez l’image obtenue avec l’inpainting dans le cadre et ne dessinez aucune selection. Sélectionnez ensuite Right (droite) dans Outpaint Direction puis cliquez sur Generate.
Cette fois, Fooocus va automatiquement ajouter une zone sur la droite de l’image et y effectuer une nouvelle génération :
Améliorer les détails
Notre photo est redevenue plus complète, mais en y regardant, je trouve que le visage et la main ne sont pas très nets et pourraient être améliorer. C’est justement ce que permet la seconde fonctionnalité d’inpainting de Fooocus : Corriger et améliorer les détails d’une image.
Voici comment faire :
- Déposez l’image dans le cadre
- Dessinez un masque qui couvre le visage à améliorer.
- Choisissez Improve Detail comme Method.
- Indiquez un prompt complémentaire qui correspond à la zone à améliorer (Fooocus vous en propose automatiquement juste en dessous).
- Laissez le prompt principal vide ou reprenez y le prompt global de l’image.
- Cliquez sur Generate.
Fooocus va effectuer l’inpainting en utilisant un génération optimisée pour l’amélioration de détails. Cette méthode a l’avantage de générer le visage dans une plus haute résolution avant de le redimensionner pour le replacer dans l’image d’origine - ce qui permet une génération plus détaillées et qualitative.
Prenez le meilleur résultat et recommencer l’opération en masquant cette fois la main et en modifiant le prompt de correction avec quelque chose comme “Detailed hand”. Répétez encore une fois l’opération pour la seconde main.
Ajouter un élément
L’inpainting ne permet pas seulement de reprendre des éléments de l’image mais également de la modifier complètement pour ajouter des détails et des éléments supplémentaire. Voyons par exemple comment nous pouvons ajouter un chat au côté de notre égyptienne.
- Déposez l’image dans le cadre
- Dessinez un masque à l’endroit où vous souhaitez ajouter le chat
- Sélectionnez Modify Content dans Method.
- Ajouter un prompt complémentaire décrivant l’élément à ajouter.
- Laissez le prompt principal vide ou reprenez y le prompt global de l’image.
- Cliquez sur Generate.
Vous pouvez bien sûr répéter l’opération autant de fois que nécessaire pour ajouter autant d’élément et de détail que vous le souhaitez dans votre image.
Utilisation avancée
Derrière l’interface simple et accessible d’inpainting avec Fooocus et se 3 modes d’utilisation se cache différentes configurations optimisées qui donnent d’excellent résultat sans paramétrage complexe. C’est l’une des forces de Fooocus de rendre accessible ces outils en prenant soins de leur configuration pour les utilisateurs.
Mais les utilisateurs expérimentés ou curieux d’en apprendre plus sur le fonctionnement de Stable Diffusion ne sont pas pour autant oublié. L’interface permet en effet d’accéder aux options de configuration de l’inpainting.
Voici la marche à suivre pour accéder à ces paramètres et les utiliser :
- Cochez la case Advanced en sous le champs de Prompt à droite de la case Input Image.
- Ouvrez ensuite l’onglet Advanced en haut à droite.
- Cochez la case Developer Debug Mode pour afficher les options de configurations.
- Ouvrez enfin l’onglet Inpainting où se trouvent toutes celles qui nous intéressent et que nous allons maintenant passez en revue.
Les paramètres avancé d’inpainting
Debug Inpaint Preprocessing
Cette option est principalement utile pour le déboggage mais permet également de mieux comprendre le fonctionne de l’inpainting dans Fooocus. Elle sert en effet à obtenir les image correspondant au pre-processing qui intervient avant la génération.
Reprenons notre exemple d’amélioration du visage en cochant cette option pour voir ce que ce la donne.
Lorsque nous cliquons sur Generate avec cette option activée, Fooocus va nous retourner les 3 images qu’ils génèrent pour pouvoir effectuer l’inpainting : L’image recardée sur laquelle il va travailler, le masque d’inpaiting et l’image “debruitée”.
Voici ces 3 images pour notre inpainting en mode Improve details. Notez que dans ce mode, le débruitage est faible et que l’image débruitée n’est donc pas vraiment différente de l’image recadrée.
Disable initial latent in inpaint
Cette option determine si l’inpainting va prendre en compte ou non le contenu en dehors du masque lors de la génération.
Si cette option est cochée, le contenu en dehors du masque est ignoré et Stable Diffusion va donc tenter de générer l’ensemble du prompt. Alors que si elle est décochée, l’IA prendra en compte ce qui est déjà dans l’image (mais en dehors du masque) lorsqu’elle redessinnera celle-ci.
Inpaint Engine
Ce sélecteur vous permet de choisir quelle version du modèle et de la logique d’inpainting fooocus vous souhaitez utiliser. A priori, le mieux est d’utiliser celui par défaut qui est le plus récent (le 2.6 à l’heure d’écrire ces lignes)
Inpaint Denoising Strength
Ce paramètre détermine à quel point le contenu d’origine de l’image va influencer celui de l’image générée. En effet, plus cette force de débruitage est élevée, plus la génération va s’écarter de l’image d’origine.
Concrètement, c’est comme si, à 0, Stable Diffusion partait de l’image d’origine pour sa génération alors qu’à 1 il utilise plutot une version complètement floutée.
Inpaint Respective Field
Ce paramètre détermine la taille de l’image qui va être générée pour l’inpaiting. A 0, elle est à peine plus grande que le masque. à 1 elle couvre l’ensemble de l’image d’origine.
Mask Erode or Dilate
Cette valeur influence la manière dont les contours du masque tel que dessiné seront modifiées. Une valeur négative réduit la taille du masque, une valeur positive l’augmente.
Enable Mask Upload
En cochant cette case, Fooocus ajoute un cadre vous permtant de télécharger votre masque plutôt que de le dessiner sur l’image.
Dans cette image, le blanc représente la zone d’inpaiting, le noir ce qui ne sera pas modifié. Idéalement, votre image de masque doit avoir les mêmes dimensions que votre image d’origine.
Invert Mask
Cette option permet d’inverser l’effet du masque. C’est alors ce qui est en dehors du masque qui est modifié par l’inpaiting.
Paramètres des différents modes
Pour mieux comprendre les effets et interêts de ces différents paramètres, voyons comment les 3 modes d’inpainting de Fooocus les utilisent en changeant leurs valeurs.
Inpaint or Outpaint
Ce mode laisse le Disable initial latent in inpaint décoché et définis une Inpaint Denoising Strength de 1 de manière à prendre en compte le contenu de l’image d’origine hors masque pour la génération tout en floutant complètement la zone masquée et en ignorant donc pratiquement son contenu.
Avec un Inpaint Respective Field à 0,618, le mode de base étend également la zone régénérée assez loin au delà du masque pour conserver une bonne cohérence entre le nouveau contenu et l’image d’origine.
Improve Details
Ce mode conserve également Disable initial latent in inpaint décoché mais diminue l’Inpaint Denoising Strength à 0,5. Avec ce réglage, l’image d’origine hors masque est non seulement prise en compte mais la génération se fait au départ d’une version légèrement floutée de la zone masquée. En conséquence, la structure de l’image d’origine est mieux respectée. Cela permet par exemple de mieux respecter la position de la main ou l’orientation du visage dont on essaye d’améliorer les détails.
Inpaint Respective Field est également mis à 0 de manière à travailler avec une image limitée aux dimensions du masque. Cela permet de travailler en haute définition même si la zone modifiée dans l’image est de petite taille. C’est particulièrement utiles pour les visages que Stable Diffusion gère bien mieux en plan rapproché qu’en petit dans une image.
Modify Content
Ici, on conserve le même Inpaint Respective Field à 0 qu’avec le mode précèdent.
Par contre, Inpaint Denoising Strength est passé au maximum (1) et l’option Disable initial latent in inpaint est cochée. Cela signifie que le contenu de l’image est ignorée dans l’évaluation du prompt et que la zone masquée est complètement floutée.
Stable Diffusion va donc chercher à créer une nouvelle image dans la zone modifiée en y reprenant tout ce qui est dans le prompt complémentaire, sans vraiment tenir compte de l’image d’origine et des pixels existant dans la zone masquée.
Inpainting et Image Prompt
L’Image Prompt de Fooocus permet d’utiliser une image à la place ou en complément du prompt textuel pour guider la génération. C’est une fonctionnalité similaire aux célèbres IP-Adapter et ControlNet qui permettent de générer des images qui reprennent le style, la composition ou les visages d’une image d’origine.
→ Apprenez comment utiliser l’Image Prompt de Fooocus
En apparence, Fooocus ne permet pas de combiner Image Prompt et Inpaiting. Ce sont deux onglets différents dans l’Input Image et quand l’un est actif, l’autre ne l’est forcément pas.
Mais cela n’est vrai qu’en apparence. Il existe en effet une solution cachée, qui permet de combiner l’Image Prompt avec l’Inpaiting.
Pour l’activer, vous devez ouvrir le panneau Advanced de droite (en cochant la case à coté de celle pour l’Input Image) puis ouvrir l’onglet Adavanced, cliquer sur Developper Debug Mode et enfin y ouvrir ‘onglet Control. Là, vous trouverez une option Mixing Image Prompt and Inpaint que vous n’avez plus qu’à cocher.
Une fois ceci fait, vous pouvez définir à la fois une ou plusieurs images source en Image Prompt ET une image d’origine sur laquelle effectuer un inpainting. C’est la solution parfaire pour effectuer des manipulations comme le faceswap (remplacement de visage) ou la retouche du fond d’une image pour en changer le style tout en conservant le personnage intact.
A vous de jouer !
Voilà, nous avons parcouru ensemble le fonctionnement de l’inapiting dans Fooocus, explorant les fondations, les techniques et les astuces qui pour enrichir et transformer les images avec Stable Diffusion.
Ce tutoriel veut aussi vous inviter à la découverte personnelle dans l'univers de la retouche et de la création d'images avec Stable Diffusion XL et Fooocus. Chaque exemple, chaque clic sur "Generate", ouvre une porte vers de nouvelles possibilités, stimulant l’imagination et élargissant notre compréhension de ce que la technologie peut apporter à notre expression créative.
Je vous encourage donc à ne pas vous arrêter ici. L'expérimentation est la clé pour débloquer tout le potentiel de l'Inpainting. Chaque image, chaque prompt, est une opportunité d'innover, d'apprendre et, surtout, de vous surprendre. Embarquez dans cette aventure créative avec Fooocus, explorez au-delà des frontières connues, et découvrez ce que vos talents, combinés à la puissance de l'IA, peuvent réellement accomplir.
Souvenez vous que derrière chaque fonctionnalité, chaque paramètre, se cache non seulement une chance d'améliorer une image mais aussi de repenser ce que signifie créer.
C’est à vous de jouer maintenant. N’hésitez pas à partager vos experiences et créations sur 𝕏 en me taguant (@StableTom) - je serai ravi de découvrir vos oeuvres.
Ecrit par