AI-Segmenter un paysage en couleurs avec ComfyUI

Oct 22, 2026 · @Laurent LESCOP

Ce que l’on obtient

En quatre étapes, ComfyUI transforme une photo de paysage en carte en couleurs : ciel, eau, ripisylve, boisements, herbe, sable, bâti, infrastructures, avec la surface occupée par chaque classe. Tout tourne en local, en moins de 6 secondes par image sur une carte graphique grand public (RTX 3080, 10 Go).

Photo d'un plan d'eau et sa carte en couleurs

En haut, la photo d’origine ; en bas, la carte produite par le workflow, avec sa légende et la surface de chaque classe.

La technique s’appelle la segmentation sémantique : chaque pixel de l’image reçoit une classe. Elle sert à lire un site à partir d’une photo, comparer des points de vue, mesurer la part du végétal ou préparer un fond de plan coloré.

Ce tutoriel s’adresse à celles et ceux qui ont déjà lancé ComfyUI une fois. Aucune ligne de code n’est à écrire : il suffit de copier des fichiers et de charger un workflow.

Ce qu’il faut

ÉlémentVersion testéeRemarque
Windows + carte NVIDIARTX 3080, 10 GoSans carte graphique, ça marche aussi, mais environ 50 fois plus lentement
ComfyUI portable0.42.4Livré avec son propre Python et ComfyUI-Manager
Pack de nodes ComfyUI-LexToolsdernière versionContient les nodes de segmentation SegFormer
Modèle nvidia/segformer-b5-finetuned-ade-640-640—339 Mo, entraîné sur ADE20K (150 classes)
Pack ComfyUI-Paysagefourni avec ce tutorielDeux nodes : affinage herbe / sable / ripisylve et carte en couleurs

Dans la suite, H:ComfyUI_windows_portable désigne le dossier de ComfyUI : remplacez-le par le vôtre.

Fichiers fournis avec ce tutoriel (pack ComfyUI-Paysage, fichiers LexTools corrigés, workflows paysage et architecture) : télécharger l’archive.

Étape 1 : installer LexTools et le modèle ADE20K

LexTools fournit les nodes de segmentation ; le modèle NVIDIA, lui, sait reconnaître 150 classes (mur, bâtiment, ciel, arbre, herbe, eau, route…).

  1. Installer LexTools. Dans ComfyUI, ouvrez Manager → Custom Nodes Manager, cherchez « LexTools » et installez-le. À défaut, clonez le dépôt dans ComfyUIcustom_nodes.
  2. Télécharger le modèle avec le Python de ComfyUI, depuis une invite de commandes :

H:ComfyUI_windows_portablepython_embededpython.exe -c « from huggingface_hub import snapshot_download; snapshot_download(‘nvidia/segformer-b5-finetuned-ade-640-640′, local_dir=r’H:ComfyUI_windows_portablemodelssegformersegformer-b5-ade-640’, allow_patterns=[‘config.json’,’preprocessor_config.json’,’pytorch_model.bin’]) »

  1. Vérifier l’emplacement. Le modèle doit être dans modelssegformer à la racine du dossier portable, et non dans ComfyUImodels. LexTools cherche ses modèles à partir du dossier où ComfyUI est lancé. Il apparaîtra dans les nodes sous le nom local:segformer-b5-ade-640.

Piège à éviter : la liste de LexTools propose un modèle ehsanhallo/segformer-b0-scene-parse-150. Il lui manque un fichier de configuration, et LexTools le remplace alors sans prévenir par un modèle qui segmente les vêtements. Si la liste des classes affiche « Upper-clothes » ou « Dress », c’est ce qui s’est passé.

Étape 2 : deux corrections de LexTools

Tel quel, LexTools ne se charge pas avec les versions récentes de ComfyUI, et il calcule sur le processeur. Deux corrections règlent ces problèmes.

Correction 1, indispensable : le chargement. Au démarrage, la console affiche IMPORT FAILED pour LexTools, avec cannot import name ‘ViTFeatureExtractor’. Cette classe a été retirée de la bibliothèque transformers (version 5). Dans custom_nodesComfyUI-LexToolsnodesImageCaptioningNode.py, remplacez les trois occurrences de ViTFeatureExtractor par ViTImageProcessor, son successeur direct. Redémarrez ComfyUI : l’erreur disparaît.

Correction 2, recommandée : le calcul sur la carte graphique. LexTools ne déplace jamais le modèle sur le GPU : chaque masque prend environ 11 secondes. Le fichier nodesSegformerNode.py corrigé, fourni avec ce tutoriel, envoie le modèle et les calculs sur la carte graphique. Chaque masque passe alors à 0,2 seconde, pour un résultat identique.

Ces modifications seront écrasées si vous mettez LexTools à jour depuis le Manager : gardez-en une copie.

Étape 3 : ajouter le pack ComfyUI-Paysage

ADE20K reconnaît bien le ciel, l’eau, les arbres et le bâti, mais il range sable, graviers et herbe rase dans une seule classe, « earth » (terre). Le pack ComfyUI-Paysage ajoute deux nodes pour aller plus loin. Copiez le dossier ComfyUI-Paysage dans ComfyUIcustom_nodes, puis redémarrez ComfyUI.

Segmentation ADE20K seule d'une rivière

ADE20K seul : le ciel, l’eau, les arbres et le bâti sont justes, mais tout le sol, sable comme herbe, finit en beige.

Paysage : herbe / sable / ripisylve affine trois classes :

  • Herbe ou sable : dans la zone de sol nu, chaque pixel est classé selon son indice de verdure (la part de vert dans sa couleur). Le seuil se calcule automatiquement pour chaque image.
  • Ripisylve : ce sont les arbres situés à proximité de l’eau. Les autres restent des boisements.
Herbe, sable et ripisylve séparés

Après affinage : herbe en vert clair, sable en beige, ripisylve en vert foncé, autres boisements en vert gris.

Paysage : carte en couleurs réassemble jusqu’à 12 masques en une seule image, à pleine résolution. Chaque classe reçoit la couleur de votre choix, avec des contours et une légende indiquant sa surface. Le node produit deux images : une carte en aplats et une superposition sur la photo.

Étape 4 : charger le workflow et lancer

Le workflow segmentation_paysage_ade20k_lextools.json relie tout : analyse, masques, affinage et carte.

  1. Glissez le fichier .json dans la fenêtre de ComfyUI. Vous pouvez aussi le copier dans ComfyUIuserdefaultworkflows : il apparaît alors dans le panneau Workflows (touche W).
  2. Dans le node Load Image, choisissez votre photo.
  3. Cliquez sur Run. Comptez environ 5 secondes, un peu plus la première fois, le temps de charger le modèle.

Le workflow est organisé en trois groupes, de gauche à droite :

GroupeCe qu’il faitFichiers dans ComfyUIoutputpaysage
Masques par classe (bleu)Un masque noir et blanc par grande classe ADE20Kciel, eau, boisements, sol_nu, bati…
Affinage (vert)Sépare herbe et sable, repère la ripisylvefin_herbe, fin_sable, fin_ripisylve, fin_autres_arbres
Carte en couleurs (brun)Assemble le tout avec une légendecarte, superposition

Le masque non_classe sert de contrôle : il montre en blanc ce qu’aucune classe ne couvre. S’il est noir, toute l’image a été classée.

Superposition des couleurs sur la photo

La sortie « superposition » : les couleurs posées en transparence sur la photo, plus facile à vérifier que la carte en aplats.

Personnaliser

Les couleurs se choisissent dans le champ legende du node carte en couleurs. Il contient une ligne par masque, dans l’ordre des entrées masque_1, masque_2, etc. :

ciel = #9CC8F0
eau = #1F5FD1
ripisylve = #0B5D2A

Le texte avant le = est le nom affiché dans la légende. La couleur s’écrit #RRGGBB, #RGB ou 120,180,255. Une ligne sans couleur reçoit une couleur automatique.

Les classes se modifient dans le champ segments_to_merge_str de chaque node Masque : ce sont des numéros ADE20K séparés par des virgules. Le node Analyse liste les classes trouvées dans votre image avec leur numéro.

NuméroClasse NuméroClasse
1bâtiment 21eau
2ciel 29champ
4arbre 34rocher
6route 46sable
9herbe 52chemin
13terre 60rivière
16montagne 61pont
17plante 68colline

Les réglages du node d’affinage :

RéglageDéfautQuand le changer
seuil_verdureautoPassez en « manuel » si le séparateur herbe / sable se trompe
seuil_manuel0,10À monter si du sable passe en herbe, à baisser si l’herbe sèche passe en sable
proximite_eau0,06Distance à l’eau, en fraction de la hauteur d’image, pour qu’un boisement soit une ripisylve
largeur_ripisylve0,15Largeur maximale de la ripisylve ; à baisser si elle dessine un trop grand arc autour de l’eau

Limites et pistes

La carte est une lecture automatique, à vérifier à l’œil avant de s’en servir comme mesure.

  • ADE20K vient surtout de scènes urbaines et intérieures. Il confond parfois un coteau herbeux avec des arbres, et il ne distingue pas une haie, une vigne ou une culture.
  • L’indice de verdure ne regarde que la couleur. Une herbe jaunie par l’été passe en sable ; des algues vertes peuvent passer en herbe.
  • La ripisylve est une règle de distance, pas une reconnaissance. Elle dessine parfois des arcs réguliers, à corriger avec largeur_ripisylve.
  • Les vues aériennes et les orthophotos demandent d’autres modèles, entraînés sur des images satellites.

Et la segmentation par texte ? J’ai testé Florence-2 couplé à SAM 2, qui détourent ce qu’on leur décrit en anglais (« sand », « grass »). C’est efficace pour des objets nets, comme un arbre isolé, un bateau ou un pont. En revanche, pour des surfaces mêlées, l’herbe et le sable ont donné le même masque. Pour ce cas précis, la combinaison ADE20K + indice de verdure reste la plus fiable, et elle est aussi bien plus rapide.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.