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).

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ément | Version testée | Remarque |
|---|---|---|
| Windows + carte NVIDIA | RTX 3080, 10 Go | Sans carte graphique, ça marche aussi, mais environ 50 fois plus lentement |
| ComfyUI portable | 0.42.4 | Livré avec son propre Python et ComfyUI-Manager |
| Pack de nodes ComfyUI-LexTools | dernière version | Contient les nodes de segmentation SegFormer |
| Modèle nvidia/segformer-b5-finetuned-ade-640-640 | — | 339 Mo, entraîné sur ADE20K (150 classes) |
| Pack ComfyUI-Paysage | fourni avec ce tutoriel | Deux 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…).
- Installer LexTools. Dans ComfyUI, ouvrez Manager → Custom Nodes Manager, cherchez « LexTools » et installez-le. À défaut, clonez le dépôt dans ComfyUIcustom_nodes.
- 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’]) »
- 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.

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.

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.
- 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).
- Dans le node Load Image, choisissez votre photo.
- 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 :
| Groupe | Ce qu’il fait | Fichiers dans ComfyUIoutputpaysage |
|---|---|---|
| Masques par classe (bleu) | Un masque noir et blanc par grande classe ADE20K | ciel, eau, boisements, sol_nu, bati… |
| Affinage (vert) | Sépare herbe et sable, repère la ripisylve | fin_herbe, fin_sable, fin_ripisylve, fin_autres_arbres |
| Carte en couleurs (brun) | Assemble le tout avec une légende | carte, 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.

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éro | Classe | Numéro | Classe | |
|---|---|---|---|---|
| 1 | bâtiment | 21 | eau | |
| 2 | ciel | 29 | champ | |
| 4 | arbre | 34 | rocher | |
| 6 | route | 46 | sable | |
| 9 | herbe | 52 | chemin | |
| 13 | terre | 60 | rivière | |
| 16 | montagne | 61 | pont | |
| 17 | plante | 68 | colline |
Les réglages du node d’affinage :
| Réglage | Défaut | Quand le changer |
|---|---|---|
| seuil_verdure | auto | Passez en « manuel » si le séparateur herbe / sable se trompe |
| seuil_manuel | 0,10 | À monter si du sable passe en herbe, à baisser si l’herbe sèche passe en sable |
| proximite_eau | 0,06 | Distance à l’eau, en fraction de la hauteur d’image, pour qu’un boisement soit une ripisylve |
| largeur_ripisylve | 0,15 | Largeur 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.