Polydesk-logotype
Polydesk.ai — Header

Outpainting

L’outpainting est une technique de génération d’image par IA qui étend une image existante au-delà de ses bordures originales, en créant du contenu nouveau visuellement cohérent avec la scène existante, guidé par un modèle de diffusion et un prompt textuel.

Outpainting en bref
Type
Extension d’image par modèle de diffusion
Principe
Agrandir le canvas + masquer les zones vides + remplir par inpainting
Entrées
Image originale + direction(s) d’extension + prompt textuel
Scripts A1111
Poor Man’s Outpainting, Outpainting mk2
Modèles recommandés
Modèles d’inpainting dédiés (SD 1.5, SDXL, FLUX Fill)
Interfaces
AUTOMATIC1111, ComfyUI, Forge, InvokeAI, Fooocus
Paramètre clé
Denoising Strength (0.7-0.9 recommandé)

Qu’est-ce que l’outpainting ?

L’outpainting (parfois écrit « out-painting » ou appelé « image extension ») est le processus d’agrandissement d’une image au-delà de son cadre original. Là où le cadrage initial s’arrête, le modèle de diffusion « imagine » ce qui se trouve en dehors du champ et le génère de manière à ce que le résultat forme une scène cohérente et continue avec l’image d’origine.

Le terme est l’opposé conceptuel d’inpainting : l’inpainting remplit des zones manquantes à l’intérieur d’une image, l’outpainting génère du contenu à l’extérieur des bordures existantes. En pratique, l’outpainting est un cas particulier d’inpainting où le canvas est d’abord agrandi et les nouvelles zones périphériques vides constituent le « masque » que le modèle doit remplir.

L’outpainting a été popularisé par DALL·E 2 d’OpenAI en 2022, qui proposait cette fonctionnalité directement dans son interface. Stable Diffusion a rapidement suivi avec des scripts communautaires intégrés à AUTOMATIC1111, et la technique est maintenant disponible dans toutes les interfaces majeures.

Comment fonctionne l’outpainting techniquement

Le principe général

L’outpainting suit un processus en plusieurs étapes :

Premièrement, le canvas de l’image est agrandi dans la direction souhaitée (gauche, droite, haut, bas, ou une combinaison). Les nouvelles zones ajoutées sont vides (ou remplies d’une couleur de base). Deuxièmement, un masque est créé automatiquement : la zone de l’image originale est noire (à préserver), les zones ajoutées sont blanches (à remplir). Troisièmement, le processus d’inpainting est lancé sur cette image étendue avec le masque. Le modèle de diffusion analyse le contexte de l’image existante (couleurs, textures, objets, perspective) et génère du contenu cohérent pour remplir les zones vides. Le prompt guide le modèle sur le type de contenu à produire dans les zones étendues.

Dans l’espace latent

Comme pour tout processus basé sur Stable Diffusion, l’outpainting opère dans l’espace latent. L’image étendue (avec ses zones vides) est encodée par le VAE, le masque est redimensionné, et le processus de débruitage agit uniquement sur les zones masquées dans cet espace compressé. Le résultat est ensuite décodé en pixels par le VAE.

La difficulté spécifique de l’outpainting par rapport à l’inpainting classique : le modèle ne dispose que du contexte situé d’un côté de la zone à remplir (le bord de l’image originale), au lieu d’être entouré de contexte de tous les côtés. Cela rend la tâche intrinsèquement plus difficile, surtout pour les scènes complexes avec des structures qui doivent se prolonger de manière cohérente.

Le problème de l’information longue portée

Un des défis majeurs de l’outpainting est la gestion de l’information longue portée. Les scripts d’outpainting basiques ne considèrent qu’une bande étroite de pixels adjacente à la zone étendue. Pour une scène simple (ciel bleu, forêt, texture uniforme), cela suffit. Pour une scène complexe (rue urbaine avec des bâtiments en perspective, intérieur avec des meubles qui doivent s’aligner), le résultat peut manquer de cohérence globale car le modèle ne « voit » pas assez loin dans l’image originale.

C’est pourquoi les approches avancées (ControlNet avec carte de profondeur, modèles d’inpainting dédiés, ou des architectures comme MAT (Mask-Aware Transformer)) donnent de meilleurs résultats : elles intègrent l’information de l’image entière dans leur processus de génération, pas seulement une bande de bord.

Les scripts d’outpainting dans AUTOMATIC1111

AUTOMATIC1111 intègre nativement deux scripts d’outpainting dans l’onglet img2img, accessibles via le menu déroulant « Script » en bas de page.

Poor Man’s Outpainting

Le script le plus simple et le plus rapide. Il agrandit le canvas dans la direction choisie, remplit la zone ajoutée selon l’option « Masked content » sélectionnée, et lance un processus d’inpainting standard. Ses paramètres :

Paramètre Valeur recommandée Rôle
Pixels to expand 128 Nombre de pixels à ajouter dans la direction choisie
Masked content Fill Remplit la zone étendue avec la couleur moyenne du voisinage
Outpaint direction 1 direction à la fois Gauche, droite, haut, bas (ou combinaison)
Denoising Strength 0.8 Contrôle l’intensité de la génération dans la zone étendue
Bonne pratique Outpaintez une direction à la fois (d’abord la droite, puis renvoyez le résultat et outpaintez la gauche, etc.). Étendre dans toutes les directions simultanément produit souvent des artefacts car les erreurs dans une zone se propagent aux autres.

Outpainting mk2

Un script plus avancé qui produit généralement de meilleurs résultats que Poor Man’s Outpainting. Il offre un meilleur lissage des transitions entre l’image originale et la zone étendue. Les résultats sont plus cohérents, surtout pour les arrière-plans texturés et les scènes avec des gradients de couleur.

Outpainting mk2 propose des paramètres supplémentaires : un contrôle plus fin du masque de transition (fall-off exponent, color variation) qui permet d’adoucir les coutures entre l’original et l’extension. En pratique, ses réglages par défaut sont souvent suffisants pour obtenir un bon résultat.

Comparaison des deux scripts

Critère Poor Man’s Outpainting Outpainting mk2
Qualité de transition Correcte, coutures parfois visibles Supérieure, transitions plus naturelles
Facilité d’utilisation Très simple, peu de paramètres Légèrement plus complexe
Vitesse Rapide Comparable
Scènes simples Très bien Très bien
Scènes complexes Moyen (incohérences fréquentes) Meilleur (pas parfait)
Recommandation Premier essai rapide Résultats finaux

Paramètres clés pour un bon outpainting

Denoising Strength

Le denoising strength est le paramètre le plus critique en outpainting. Contrairement à l’inpainting classique où des valeurs modérées (0.4-0.6) fonctionnent bien, l’outpainting nécessite des valeurs plus élevées car les zones à remplir sont entièrement vides, sans contenu original à préserver.

Recommandation : commencez à 0.8. En dessous de 0.7, le modèle ne génère pas assez de contenu nouveau et le résultat apparaît flou ou délavé. Au-dessus de 0.9, le modèle prend trop de libertés et le résultat peut être incohérent avec l’image originale. À 1.0, la zone étendue est générée comme un txt2img pur sans aucune influence de l’image adjacente, ce qui produit presque toujours des coutures visibles.

Le prompt

Le prompt doit décrire l’image dans son ensemble, pas uniquement la zone à étendre. Le modèle utilise le prompt pour comprendre le contexte global de la scène et génère un contenu cohérent. Si votre image montre un paysage de montagne avec un lac, décrivez la scène complète : « mountain landscape with a calm lake, pine forest, blue sky with clouds, golden hour lighting ». Le modèle comprendra alors que les zones étendues doivent contenir des montagnes, de la forêt, ou du ciel selon la direction d’extension.

Si vous avez généré l’image originale avec Stable Diffusion, réutilisez exactement le même prompt. Dans AUTOMATIC1111, le bouton « Send to img2img » transfère automatiquement le prompt et les paramètres.

Choix du checkpoint

Utilisez le même checkpoint que celui qui a généré l’image originale pour garantir la cohérence de style. Si l’image n’a pas été générée par IA, choisissez un checkpoint dont le style correspond à l’image (réaliste pour une photo, anime pour une illustration).

Les modèles d’inpainting dédiés sont fortement recommandés pour l’outpainting. Ils sont spécifiquement entraînés pour remplir des zones vides de manière cohérente avec le contexte environnant, ce qui est exactement ce dont l’outpainting a besoin. Pour SD 1.5, utilisez stable-diffusion-inpainting. Pour SDXL, utilisez stable-diffusion-xl-1.0-inpainting-0.1.

Pixels to expand (taille de l’extension)

Étendez par petits incréments (128 pixels est un bon point de départ) plutôt que par grandes bandes. Étendre de 512 pixels d’un coup signifie que le modèle doit inventer une grande quantité de contenu avec peu de contexte, ce qui produit souvent des résultats incohérents ou des motifs répétitifs. Par incréments de 128 pixels, chaque itération dispose d’un contexte suffisant pour produire un résultat naturel.

Sampling Steps et Sampler

L’outpainting bénéficie de steps plus élevés que le txt2img classique pour réduire le flou et le bruit dans les zones générées. 50 à 80 steps avec un sampler DPM++ 2M Karras ou DPM++ SDE Karras donnent de bons résultats. Si l’image originale a été générée avec un sampler spécifique, utilisez le même pour maximiser la cohérence.

Guide pratique : outpainting pas à pas

Étape 1 : Préparer l’image et les paramètres

Si l’image a été générée par AUTOMATIC1111, allez dans l’onglet PNG Info, uploadez l’image, et cliquez « Send to img2img » pour récupérer automatiquement le prompt et tous les paramètres. Si c’est une image externe, uploadez-la dans l’onglet img2img et rédigez un prompt qui décrit fidèlement la scène.

Étape 2 : Sélectionner le modèle

Chargez un modèle d’inpainting dédié dans le menu déroulant des checkpoints. Si vous n’en avez pas, votre checkpoint habituel fonctionne aussi, mais les résultats seront moins bons pour les grandes extensions.

Étape 3 : Configurer le script d’outpainting

Descendez en bas de la page img2img et sélectionnez « Poor man’s outpainting » ou « Outpainting mk2 » dans le menu déroulant Script. Configurez les paramètres :

Paramètre Valeur de départ Notes
Pixels to expand 128 Petits incréments = meilleurs résultats
Direction 1 seule direction Droite ou gauche pour un format paysage
Masked content Fill Remplit avec la couleur moyenne des bords
Denoising Strength 0.8 Monter à 0.85 si trop flou, baisser à 0.75 si incohérent
Sampling Steps 50-80 Plus de steps = moins de flou aux bords
Resize mode Crop and Resize Assure que les parties hors canvas sont cropées

Étape 4 : Générer et itérer

Cliquez Generate. Évaluez le résultat. Si des coutures sont visibles ou si le contenu généré est incohérent, régénérez avec une seed différente ou ajustez le denoising. Quand le résultat est satisfaisant, cliquez l’icône « Send to img2img » sous l’image résultante pour la renvoyer en img2img avec les nouvelles dimensions.

Étape 5 : Étendre dans d’autres directions

Répétez le processus pour les autres directions. Changez la direction d’outpainting dans le script et relancez. Chaque itération ajoute une bande de 128 pixels dans la direction choisie.

Étape 6 : Nettoyer les coutures

Après avoir étendu dans toutes les directions souhaitées, il reste souvent des coutures visibles aux jonctions. Deux méthodes pour les éliminer :

Méthode 1 : Passez l’image finale en img2img avec un denoising très bas (0.15-0.25) pour harmoniser l’ensemble sans modifier la composition.

Méthode 2 : Utilisez l’inpainting pour retoucher précisément les zones de transition problématiques. Masquez les coutures visibles et laissez le modèle les fondre naturellement.

Outpainting dans ComfyUI

ComfyUI offre une approche plus flexible de l’outpainting grâce à son système de nœuds. Le workflow typique :

Un nœud « Pad Image » ou « Extend Image » agrandit le canvas. Un nœud « Create Mask » génère automatiquement le masque correspondant aux zones ajoutées. Les nœuds de pipeline d’inpainting standard (KSampler avec masque) gèrent la génération. Optionnellement, un ControlNet avec carte de profondeur améliore la cohérence spatiale.

L’avantage de ComfyUI pour l’outpainting est la possibilité de chaîner automatiquement plusieurs itérations d’extension, d’intégrer des ControlNets pour la cohérence structurelle, et de combiner l’outpainting avec d’autres traitements (upscaling, correction de couleur) dans un seul workflow.

Outpainting avec Diffusers (Python)

Pour les développeurs, Diffusers permet de construire un pipeline d’outpainting complet :

import torch from diffusers import AutoPipelineForInpainting from diffusers.utils import load_image from PIL import Image, ImageFilter # Charger le pipeline d'inpainting pipeline = AutoPipelineForInpainting.from_pretrained( "stable-diffusion-v1-5/stable-diffusion-inpainting", torch_dtype=torch.float16 ).to("cuda") # Charger l'image originale original = load_image("photo.png").resize((512, 512)) # Étendre le canvas vers la droite (128 pixels) new_width = 640 extended = Image.new("RGB", (new_width, 512), (128, 128, 128)) extended.paste(original, (0, 0)) # Créer le masque (blanc = zone à remplir) mask = Image.new("L", (new_width, 512), 0) # tout noir mask.paste(255, (512, 0, new_width, 512)) # blanc à droite # Adoucir les bords du masque mask = mask.filter(ImageFilter.GaussianBlur(radius=8)) prompt = "beautiful mountain landscape, pine forest, sunset" negative = "blurry, artifacts, seam, inconsistent" result = pipeline( prompt=prompt, negative_prompt=negative, image=extended, mask_image=mask, num_inference_steps=50, guidance_scale=8.0, strength=0.85, ).images[0] result.save("outpainted.png")

Pour des résultats de qualité supérieure avec SDXL, la documentation Diffusers recommande de combiner un ControlNet d’inpainting avec un estimateur de profondeur (ZoeDepth) pour guider la structure spatiale de la zone étendue. Cette approche en deux passes (génération initiale + refinement par inpainting SDXL) produit des résultats nettement meilleurs que le simple pipeline ci-dessus.

Techniques avancées

Outpainting + ControlNet

L’ajout d’un ControlNet avec carte de profondeur transforme la qualité de l’outpainting. Le ControlNet fournit au modèle une information structurelle sur la perspective et la profondeur de la scène, ce qui permet de générer des extensions cohérentes même pour des scènes complexes avec des bâtiments, des routes en perspective, ou des intérieurs.

Le workflow : générez une carte de profondeur de l’image originale avec un estimateur comme ZoeDepth ou Midas, étendez cette carte de profondeur dans la direction souhaitée (en extrapolant les valeurs de profondeur des bords), puis utilisez le ControlNet de profondeur en parallèle du pipeline d’inpainting. Le résultat respecte la perspective existante bien mieux qu’un outpainting simple.

Outpainting itératif pour panoramas

En répétant le processus d’outpainting dans la même direction par petits incréments, vous pouvez créer des panoramas très étendus à partir d’une seule image de départ. La clé est de ne jamais étendre de plus de 128-256 pixels par itération et de toujours utiliser le même prompt et les mêmes paramètres. Chaque itération utilise le résultat de la précédente comme point de départ, ce qui crée une chaîne de contexte continu.

Attention cependant : au bout de nombreuses itérations, un phénomène de « dérive » peut apparaître. Le style et le contenu s’éloignent progressivement de l’image originale, et des motifs répétitifs peuvent émerger. Limitez vos panoramas à 3-5 extensions par direction pour un résultat optimal.

Changement de ratio d’aspect

Un cas d’usage très pratique : convertir une image carrée en format paysage (pour un fond d’écran, une bannière, un header de site web) ou en format portrait (pour un poster, une story Instagram). Au lieu de recadrer et perdre du contenu, l’outpainting ajoute du contenu dans les zones nécessaires pour atteindre le nouveau ratio.

Par exemple, une image 1024×1024 peut être étendue en 1920×1024 pour un fond d’écran 16:9 en outpaintant 448 pixels de chaque côté. Le contenu généré complète naturellement la scène.

Outpainting avec FLUX Fill

FLUX propose FLUX Fill, un modèle spécifiquement optimisé pour l’inpainting et l’outpainting. Grâce à l’architecture supérieure de FLUX et son double text encoder (T5-XXL + CLIP), les résultats d’outpainting sont significativement meilleurs en termes de cohérence sémantique et de qualité visuelle. Si vous avez accès à un GPU suffisant (16+ Go de VRAM), FLUX Fill est le meilleur choix disponible pour l’outpainting.

Cas d’usage concrets

Création de fonds d’écran et bannières

L’outpainting est idéal pour adapter une illustration ou une photo à un format spécifique (16:9, 21:9 ultrawide) sans perdre de contenu. Le modèle génère les bords manquants de manière cohérente avec la scène centrale.

Marketing et e-commerce

Les photographes produit et les marketeurs utilisent l’outpainting pour adapter une image produit à différents formats publicitaires (carré pour Instagram, paysage pour une bannière web, vertical pour une story) à partir d’une seule prise de vue. Le modèle étend l’arrière-plan de manière réaliste sans modifier le produit central.

Concept art et worldbuilding

Les artistes numériques et game designers utilisent l’outpainting pour explorer l’univers visuel d’une scène. À partir d’une illustration initiale, ils étendent progressivement la scène pour révéler l’environnement complet, créant des vues panoramiques ou des cartes visuelles.

Restauration et extension de photos anciennes

L’outpainting peut compléter des photos anciennes dont les bords sont endommagés ou qui ont été recadrées de manière trop serrée. Le modèle imagine un contexte plausible autour du sujet existant, reconstituant une scène plus complète.

Limites et problèmes courants

Coutures visibles

Le problème le plus fréquent. Les zones de transition entre l’image originale et l’extension présentent des différences de luminosité, de contraste ou de texture. Solutions : augmentez le mask blur (8-16 pixels), utilisez un modèle d’inpainting dédié, nettoyez les coutures avec un passage img2img à faible denoising (0.15-0.25), ou utilisez l’inpainting localisé pour retoucher les zones de jonction.

Répétition de motifs

En étendant trop largement, le modèle peut générer des motifs répétitifs (arbres identiques, fenêtres clonées, textures en boucle). Étendez par petits incréments (128 pixels) et variez légèrement le prompt ou la seed entre les itérations pour introduire de la diversité.

Incohérence de perspective

Pour les scènes avec une forte perspective (rues, intérieurs, architecture), le modèle peut ne pas respecter les lignes de fuite. L’utilisation d’un ControlNet avec carte de profondeur atténue fortement ce problème. Si ce n’est pas possible, outpaintez de préférence dans la direction qui minimise le besoin de respecter la perspective (latéralement pour une vue frontale, vers le haut pour un paysage).

Dégradation itérative

Chaque itération d’outpainting introduit de légers artefacts. Après de nombreuses itérations (5+), la qualité globale de l’image se dégrade progressivement. Limitez le nombre d’extensions et effectuez un passage final d’harmonisation en img2img à faible denoising pour unifier le style.


Questions fréquentes sur l’outpainting

Quelle est la différence entre outpainting et inpainting ?

L’inpainting modifie ou remplit une zone à l’intérieur de l’image existante (supprimer un objet, corriger un visage). L’outpainting étend l’image au-delà de ses bordures en générant du contenu nouveau à l’extérieur du cadre original. Techniquement, l’outpainting est un cas particulier d’inpainting : on agrandit d’abord le canvas, puis on « inpainte » les nouvelles zones vides. Les deux techniques utilisent le même mécanisme de diffusion guidée par masque.

Faut-il un modèle spécial pour l’outpainting ?

Un modèle standard fonctionne, mais les modèles d’inpainting dédiés donnent de bien meilleurs résultats. Ces modèles ont un U-Net avec 5 canaux d’entrée supplémentaires (masque + image masquée encodée) et sont entraînés spécifiquement pour remplir des zones vides de manière cohérente. Pour SD 1.5, utilisez stable-diffusion-inpainting. Pour SDXL, utilisez stable-diffusion-xl-1.0-inpainting-0.1. Pour FLUX, utilisez FLUX Fill.

Quel denoising strength pour l’outpainting ?

Plus élevé qu’en inpainting classique. Commencez à 0.8. En dessous de 0.7, les zones étendues apparaissent floues ou délavées car le modèle ne génère pas assez de contenu nouveau. Au-dessus de 0.9, le résultat risque d’être incohérent avec l’image originale. Si des coutures sont visibles, augmentez le mask blur plutôt que de réduire le denoising. 50-80 sampling steps sont recommandés pour minimiser le bruit dans les zones générées.

Comment éviter les coutures visibles en outpainting ?

Cinq techniques complémentaires : utilisez un modèle d’inpainting dédié (plutôt qu’un checkpoint standard). Augmentez le mask blur à 8-16 pixels pour adoucir la transition. Outpaintez par petits incréments (128 pixels) plutôt que par grandes bandes. Après l’extension complète, faites une passe img2img à faible denoising (0.15-0.25) sur l’image entière pour harmoniser les transitions. Si des coutures persistent, utilisez l’inpainting ciblé pour les retoucher précisément.

Peut-on créer un panorama complet par outpainting ?

Oui, en itérant l’outpainting dans la même direction par incréments de 128-256 pixels. Chaque itération utilise le résultat précédent comme point de départ, créant une chaîne de contexte continu. Attention cependant à la dérive : après 3-5 extensions, le style et le contenu s’éloignent progressivement de l’image originale. Pour des panoramas de haute qualité, combinez l’outpainting avec un ControlNet de profondeur et limitez le nombre d’itérations. Un passage final de cohérence (img2img à denoising 0.2) aide à unifier le style sur l’ensemble du panorama.

Polydesk.ai — Footer