Aller au contenu
Retour au blog
AI Segmentation
QGIS
Tutoriel

Comment détecter automatiquement les emprises de bâtiments dans QGIS

0:00 / 0:00
Une zone, un mot, 848 bâtiments. Une exécution réelle, accélérée 3x, sans aucune coupe.

J'ai lancé une détection automatique sur une zone du centre de Paris et obtenu 635 polygones en une seule passe. Décider lesquels des 82 conserver a pris plus de temps que la détection, et c'est cette deuxième partie que presque tous les tutoriels laissent de côté.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Glisser pour comparer
One automatic pass over central Paris, on Google Satellite imagery. Every polygon gets its own colour so neighbours stay separate. Drag the handle to compare.

La version courte. Pour détecter automatiquement les emprises de bâtiments dans : installez un plugin de détection par IA depuis le gestionnaire de plugins, chargez votre imagerie, dessinez une zone, nommez l'objet, lancez l'opération. Vous obtenez un layer de polygones dans le SCR du projet. Filtrez ensuite ce résultat brut par confiance et par surface, car une grande partie de ce qui revient n'est pas un bâtiment.

Ce qu'est une emprise de bâtiment

Le contour d'un bâtiment à l'endroit où il rencontre le sol, sous forme de polygone plat. Pas le toit, pas la parcelle, pas le point d'adresse.

Ce qui compte ici, car l'imagerie verticale vous donne le toit. Sur un immeuble haussmannien de cinq étages photographié presque au nadir, le décalage est faible. Sur une tour, il ne l'est pas. Mieux vaut le savoir avant de promettre à quelqu'un un layer d'emprises.

Vérifiez d'abord les jeux de données ouverts

Pour beaucoup de projets, vous n'avez rien à détecter.

Three panels of the same dense Luanda neighbourhood on Google Satellite imagery, with building footprints in green. OpenStreetMap shows none, Microsoft covers most, Google Open Buildings covers nearly all.
The same 1 km² of Luanda, on Google Satellite imagery. OpenStreetMap maps no buildings here, Microsoft finds 3,140, Google Open Buildings 4,468. Over a dense African neighbourhood the dataset you reach for decides whether you get everything or nothing.

Chargez-en un sur votre imagerie. Ne passez à la suite que lorsque la couverture présente des trous, que le millésime est incorrect, ou que les emprises doivent correspondre à l'orthophoto précise qu'un client vous a remise.

Moins de cinquante bâtiments ? Dessinez-les.

Numérisez-les à la main. C'est gratuit, précis, et à cette échelle, je le ferais encore moi-même. Activez d'abord l'accrochage (Project -> Snapping Options, sommet et segment, édition topologique activée), sinon vous passerez l'après-midi à supprimer des lambeaux.

À partir du 60e bâtiment, vous commencez à bâcler des angles que vous n'auriez jamais bâclés au 6e, sans vous en rendre compte. Il est déjà dans le layer.

La méthode automatique

Le plugin présenté ici est AI Segmentation, que mon cofondateur et moi développons chez TerraLab, alors lisez cette section en sachant de quel outil il s'agit. Il s'installe depuis le gestionnaire de plugins comme n'importe quel autre : aucun téléchargement manuel, aucun environnement Python, aucune carte graphique dédiée, car le modèle s'exécute sur nos serveurs. Windows, macOS et Linux.

Tracez une zone, saisissez buildings, cliquez sur Detect. C'est tout le prompt, dans la langue de votre choix si vous préférez. Les résultats arrivent tuile par tuile sous la forme d'un seul layer de polygones dans le SCR du projet.

The AI Segmentation panel in QGIS with the Semi-Auto and Automatic switch
Automatic mode: pick the imagery layer, draw a zone, name the object.

Le seul réglage qui mérite d'être appris est la précision, c'est-à-dire la taille des tuiles. Les petites tuiles offrent au modèle une vue rapprochée, ce dont les petits objets ont besoin. Les grandes tuiles lui donnent du contexte, ce dont une parcelle agricole a besoin. Les tuiles sont aussi ce que vous payez : un crédit chacune. Chaque compte reçoit une allocation gratuite chaque mois, sans carte bancaire, et Pro l'augmente. La détection s'exécute sur des serveurs européens, nous n'entraînons pas de modèle sur votre imagerie, et un petit modèle local est disponible si rien ne doit quitter votre machine.

Le panneau vous guide ensuite à travers trois étapes avant que quoi que ce soit ne devienne un layer : filtrer ce qui doit être Keep, Correct ce que le modèle a manqué, puis choisir les Shapes de sortie. Le guide complet couvre les trois. La première est l'endroit où le travail se gagne, alors elle fait l'objet de la section suivante.

Le filtrage, c'est tout le travail

Le résultat brut de la détection est un ensemble de polygones candidats avec des scores de confiance. Sur une imagerie dense, la plupart sont petits et incertains. J'ai exporté cette exécution parisienne avec les deux filtres complètement ouverts, de sorte que chaque candidat soit arrivé dans le layer : 635 polygones sur 1.18 km².

1 m²101001 00010 000 m²50 m²
Every one of the 635 detections, binned by area on a log scale. Two humps: noise under 5 m², real buildings above 160 m². The 50 m² line falls in the valley between them, which is why it is not an arbitrary number. Median 3.2 m², largest 13,528 m², median confidence 0.26.

La moitié de ce qui est revenu est plus petite qu'une place de parking : ventilations, fenêtres de toit, cages d'escalier, abris de cour. Des objets bien réels sur l'imagerie, correctement délimités, mais pas ce que quiconque entend par une emprise de bâtiment.

Alors, filtrez. Déplacez les deux curseurs dans le panneau, ou faites la même chose depuis la table attributaire avec Select by Expression :

"area_m2" >= 50 AND "score" >= 0.5

Cela laisse 82 polygones sur 635, couvrant 222,338 m² sur les 263,658 m² au total. Plutôt que de me croire sur parole pour les seuils, déplacez-les vous-même. Le vert reste après votre filtre, le blanc non.

Aerial imagery of dense Parisian blocks with detected building polygons drawn over it

82 / 635polygons kept (13%)

84%of the built area (222,338 m²)

The same 635 detections the attribute table holds. Drop the confidence to zero and the courtyard sheds and skylights come back.

Regardez le second nombre pendant que vous faites glisser le premier. Éliminer 87 % des polygones coûte 16 % de la surface. Le reste est du bruit que vous auriez de toute façon supprimé à la main, un par un, en vous demandant si l'outil était vraiment bon.

Adaptez les deux au projet. Un relevé de hangars industriels peut faire passer le seuil de surface à 200 m². Pour cartographier des quartiers informels, 50 m² élimine de vraies maisons, alors descendez à 15 et appuyez-vous plutôt sur le score de confiance.

À quoi ressemble un résultat propre

Paris est un cas difficile. Le même outil sur des maisons individuelles à environ 10 km à l'ouest :

Detached and semi-detached houses in a Paris suburb, each house filled with its own colour
Detached housing, review filter on. One polygon per house, almost nothing to throw away.

85

median polygon area

Paris run: 3.2 m²

0.79

median confidence

Paris run: 0.26

251polygons

kept, out of 251 returned

Paris run: 82 out of 635

Même outil, même ville, rien à jeter. Ce qui a changé, c'est le tissu bâti, pas le modèle.

Là où ça casse : les îlots denses et continus

Close view of Haussmann blocks, each block one coloured polygon following the street edge with courtyards cut out
The outline follows the street edge precisely and cuts out the courtyards. What it does not do is split the block into individual addressed buildings.

Chaque polygone suit l'enveloppe bâtie d'un îlot entier, épouse la ligne de rue et découpe correctement les cours. C'est utile pour la surface bâtie ou les surfaces imperméables, mais incorrect si vous avez besoin d'un polygone par adresse. Aucun modèle lisant une image verticale ne peut trouver le mur mitoyen entre deux bâtiments accolés, car vu d'en haut, il n'y a rien à voir.

Je n'utiliserais donc pas la détection automatique pour un layer par adresse dans un centre-ville historique. Les données cadastrales complétées par une correction manuelle l'emportent ici.

Nettoyer la géométrie

Trois outils natifs de QGIS mettent au propre un layer d'emprises, et l'ordre compte, car Simplify déplace les sommets que vous venez de mettre à l'équerre.

  1. Simplify, tolérance de 0,5 m sur une imagerie aérienne. Réduit fortement le nombre de sommets sans déplacer la limite d'une manière que vous remarqueriez.
  2. Orthogonalize. Aligne les angles presque droits sur l'équerre. Utilisez-le sur des données ouvertes ou un travail tracé à la main, lorsque rien ne les a encore mis à l'équerre.
  3. Delete holes, uniquement si vous voulez des emprises pleines. Pas sur le résultat parisien : ces trous sont des cours et ils sont corrects.

Sur un layer détecté, l'étape 2 est presque sans effet. Je l'ai mesuré plutôt que de le supposer, en exécutant Orthogonalize sur 190 bâtiments détectés et en comparant les 1,845 angles avant et après.

87.9%

corners already within 1° of square

before running anything

87.9%

after Orthogonalize

the same 1,845 corners

1.7cm

median vertex shift

9.1 cm at the worst

Close view of detected building outlines on aerial imagery, corners meeting at right angles
The same detections, close in. The corners arrive square, so the cleanup step has nothing left to snap.

Les 12 % qui ne sont pas à l'équerre sont les terrasses accolées. Regardez le bord en gradins qui descend au milieu de l'îlot. Aucun outil d'angle ne corrige cela, car ces gradins suivent une vraie ligne de toit plutôt qu'une erreur de modélisation.

Quelle méthode utiliser

Jeux de données ouvertsNumérisation manuelleDétection automatique
CoûtGratuitGratuitFormule gratuite, puis payante
ConfigurationQuelques minutesAucuneQuelques minutes
Adapté pourZones déjà bien couvertesMoins de ~50 bâtimentsDes centaines à des milliers
Correspond à votre imagerieNonOuiOui
Cohérente pour une équipeOuiNonOui
Îlots denses et continusVariableOuiEnveloppes d'îlots uniquement
Provenance que vous pouvez indiquerJeu de données et millésimeVousVotre imagerie, avec un score de confiance

Questions que l'on me pose

Est-ce que cela fonctionne sur de l'imagerie de drone ? Mieux que sur satellite. La résolution au sol compte plus que la source : une orthophoto de 5 cm donne des limites plus nettes et une confiance plus élevée qu'une scène satellite de 30 cm.

Ai-je besoin d'un GPU ? Non. Les deux modes s'exécutent par défaut sur nos serveurs, et le petit modèle local s'exécute sur votre propre CPU, plus lentement et avec moins de précision. Si vous voulez que tout reste sur votre machine, Geo-SAM et samgeo sont gratuits et efficaces, et ils nécessitent bien une carte NVIDIA.

Combien coûte une exécution ? Un crédit par tuile en mode automatique, un crédit par objet enregistré en mode semi-automatique. Chaque compte reçoit une allocation gratuite chaque mois, et le modèle local ne coûte absolument rien.

Try it free in QGIS, no card needed