Semantic vs instance segmentation: verschil op luchtfoto's
Gepubliceerd op Bijgewerkt op

Semantische segmentatie geeft elke pixel van een beeld een klasse: deze pixel is gebouw, die is weg, de volgende is boom. Instancesegmentatie (instance segmentation) gaat een stap verder en scheidt de objecten van één klasse van elkaar: deze pixel is gebouw 12, die is gebouw 13.
Semantic vs instance segmentation in één regel
Semantisch beantwoordt “hoeveel oppervlakte”. Instance beantwoordt “hoeveel stuks, en welke”. Panoptisch, de derde term, beantwoordt beide op dezelfde kaart.
Hetzelfde beeld, op twee manieren gelabeld. Semantische segmentatie kleurt elk gebouw hetzelfde. Instancesegmentatie geeft elk gebouw een eigen contour en een eigen nummer.

| Semantisch | Instance | Panoptisch | |
|---|---|---|---|
| Uitvoer | Eén klasse per pixel | Eén masker per object | Eén klasse per pixel, plus een object-ID voor telbare dingen |
| Twee aaneengebouwde huizen | Eén masker | Twee objecten | Twee objecten |
| Wat als object telt | Niets: een klasse is een oppervlak | Elk dak, elke boomkroon, elk zwembad of elke auto | Elk telbaar ding; oppervlakken blijven oppervlakken |
| Kun je ermee tellen | Nee | Ja | Ja, voor de telbare klassen |
| Typisch GIS-gebruik | Bodembedekking, kroonbedekking, verharding, veranderingen | Inventarissen van gebouwen, bomen, zwembaden en panelen | Volledige scènekaarten, landbouwpercelen |
| Typische modellen | U-Net, DeepLab | Mask R-CNN, de Segment Anything-familie | Twee uitvoertakken, of één model getraind op panoptische labels |
| Naar vector in QGIS | Polygoniseren, daarna opschonen | Al één polygoon per object | De klassen polygoniseren, de object-ID's bewaren |

Wat elk type je op de kaart oplevert
Een semantisch model levert oppervlakken om te meten, een instancemodel levert objecten om te tellen.
Semantisch is een bodembedekkingskaart met scherpe randen: een gebouwmasker, een wegmasker, een vegetatiemasker. Geschikt voor oppervlaktestatistieken, verharding, kroonbedekking en veranderingen tussen twee datums. Ongeschikt voor alles wat een telling vraagt.
Instance is een inventaris. Elk dak, elke boomkroon en elk zwembad komt binnen als eigen polygoon met een eigen rij in de attributentabel. Je kunt tellen, elk object apart meten en aan elk object een hoogte koppelen. De prijs: het model moet beslissen waar het ene object eindigt, wat lastig is bij een rij aaneengebouwde huizen, en de fouten zien daar ook naar uit: twee huizen samengevoegd, één boomkroon in drieën gesplitst.
Waar de termen vandaan komen. Het zijn allebei termen uit computervisie. In 2014 lieten Long, Shelhamer en Darrell zien dat een netwerk dat “end-to-end, pixels-to-pixels” is getraind semantische segmentatie kan uitvoeren. In 2017 voegde Mask R-CNN aan een objectdetector “a branch for predicting an object mask” toe, en dat is instancesegmentatie. In 2023 werd Segment Anything getraind op “over 1 billion masks on 11M licensed and privacy respecting images” (ruim 1 miljard maskers op 11 miljoen gelicentieerde beelden), en op die familie draaien de instancetools voor QGIS nu.
Panoptische segmentatie, de derde term
Panoptische segmentatie labelt elke pixel met een klasse, zoals semantisch, en geeft daarnaast elk telbaar object een eigen ID, zoals instance. Kirillov en collega's gaven de taak in 2018 een naam en definieerden haar als een taak die “unifies the typically distinct tasks of semantic segmentation (assign a class label to each pixel) and instance segmentation (detect and segment each object instance)”, dus de gewoonlijk gescheiden taken semantische segmentatie en instancesegmentatie samenbrengt.
Het artikel deelt klassen in twee soorten in. Things zijn telbaar: gebouwen, auto's, bomen. Stuff is vormloos: gras, water, wegdek. Een panoptische kaart telt de things en meet de stuff, in één laag zonder gaten en zonder overlap. Hetzelfde artikel stelde ook één score voor beide voor, panoptic quality (PQ), “for all classes (stuff and things)”.
Waar GIS het gebruikt. Landbouwgrond is het duidelijkste voorbeeld. PASTIS, een Franse benchmark, bevat 124.422 landbouwpercelen in 2.433 Sentinel-2-tijdreeksen met 10 m per pixel, goed voor ongeveer 4.000 km² Frankrijk. Elke pixel draagt zowel een gewastype als een perceelnummer. Een semantisch model zegt daarop “tarwe hier”. Een panoptisch model zegt “tarwe, perceel 57”, zodat je velden kunt tellen en elk veld kunt meten. Het bijbehorende artikel noemt pixelnauwkeurige panoptische segmentatie van percelen een taak met “major economic and environmental implications”.
In de praktijk heeft een GIS-team zelden een panoptisch model nodig. Draai een instancetool voor de things, een semantische voor de stuff en leg de twee lagen in QGIS op elkaar. Dat geeft dezelfde kaart in twee stappen.
Wat een semantisch masker telt: drie Franse tegels, gemeten
Als je een semantisch gebouwmasker polygoniseert, tel je blokken en geen gebouwen: op 1 km² in het centrum van Lens levert de bodembedekkingskaart van het IGN op basis van AI, gemaakt uit luchtfoto's van 20 cm, 269 gebouwblobs op, terwijl het nationale gebouwenregister er 3.006 heeft. We hebben dit op 23 september 2026 gemeten op drie tegels van 1 km², elk getoetst aan de gebouwen van BD TOPO van het IGN.
| Op één tegel van 1 km² | Lens, centrum | Liévin, huizen in een mijnwerkerswijk | Parijs 11e |
|---|---|---|---|
| Gebouwen in BD TOPO (20 m² of meer) | 3.006 | 952 | 1.759 |
| Blobs in het AI-masker van 20 cm (IGN CoSIA) | 269 | 558 | 95 |
| Gevonden gebouwen die een blob delen | 97,5% | 63% | 99,5% |
| Mediaan aantal gebouwen in die blob | 30 | 2 | 31 |
| Blobs in de bodembedekking van 10 m (ESA WorldCover) | 1 | 29 | 1 |
| Oppervlakte, AI-masker / contouren / “bebouwd” van 10 m | 40,5 / 36,3 / 87,2 ha | 14,4 / 12,3 / 46,3 ha | 58,4 / 54,7 / 96,3 ha |
Een fijner masker lost het tellen niet op. Het masker vindt op elke tegel 96 tot 97% van de gebouwen, maar een rij huizen of een appartementencomplex deelt muren, dus er ligt nooit een achtergrondpixel tussen twee huizen, niet op 20 cm en niet op 2 cm. In Lens en Parijs zit een gebouw dat het masker vindt, bij de mediaan, in een blob van ongeveer 30.

Liévin laat zien waar een semantisch masker wel telt. Vrijstaande huizen komen elk als eigen blob uit, en 344 van de 926 daar gevonden gebouwen hebben een blob voor zichzelf. De twee-onder-een-kapwoningen en de rijtjes van de oude mijnwerkerswijk komen als één blob per paar of rij uit, en daarom zit het mediane gebouw in een blob van twee.

Voor oppervlakte komt het semantische masker dicht bij de werkelijkheid. Het AI-masker komt 7 tot 17% boven de som van de gebouwcontouren uit, en dat klopt met wat je verwacht: het ziet daken, die over de muren heen steken die BD TOPO natekent, en kleine bijgebouwen. De klasse “bebouwd” van 10 m is 1,8 tot 3,8 keer de oppervlakte van de contouren, omdat een pixel van 10 m met een dak, een erf en een stoep als bebouwd wordt gelabeld. Die klasse meet stedelijk weefsel, geen gebouwen.
Bomen smelten ook samen
Op de tegel in Parijs zitten 1.296 van de 1.583 bomen uit de gemeentelijke inventaris in de boomkronen van het AI-masker (binnen 2 m van de stam), en 89% van die bomen deelt een kroonblob met een andere geïnventariseerde boom. De beplante promenade langs de boulevard Richard-Lenoir is één blob met 254 geïnventariseerde bomen. Boomkronen tellen vanuit een kroonmasker werkt voor vrijstaande bomen en mislukt langs een beplante straat.
Hoe we dit hebben gemeten
De tegels zijn vierkanten van 1 km in Lambert 93, gecentreerd op Lens (50,432° N, 2,832° O), de Cité Pasteur in Liévin (50,433° N, 2,762° O) en de boulevard Richard-Lenoir (48,860° N, 2,370° O). Een blob is een groep aaneengesloten maskerpixels van 20 m² of meer, wat QGIS Polygoniseren met de standaardinstellingen maakt, en een gebouw telt als gevonden wanneer de helft van de contour onder het masker ligt. CoSIA wordt alleen als opgemaakte kaart gepubliceerd, dus we hebben het op ongeveer 0,4 m uitgelezen en elke kleur terugvertaald naar de klasse. De paar randpixels die daarbij verloren gaan splitsen blobs, dus de percentages hierboven zijn eerder te laag dan te hoog. De foto's achter CoSIA zijn ouder dan het register waarmee we ze vergeleken. BD TOPO tekent een twee-onder-een-kapwoning soms als één gebouw. De inventaris van Parijs laat particuliere bomen weg. Drie tegels zijn drie plaatsen, geen landelijk cijfer.
Van masker naar polygonen in QGIS
Een semantisch masker heeft drie of vier bewerkingsstappen nodig voordat je bruikbare polygonen hebt, een instancetool geeft je de polygonen direct. Hieronder staat elk pad met de QGIS-tools die het uitvoeren.
Vanuit een semantisch masker
- Ruis verwijderen. Voer Rasteranalyse > Sieve uit (Raster > Rasteranalyse > Sieve). Het “removes raster polygons smaller than a provided threshold size (in pixels)”, dus het verwijdert rasterpolygonen die kleiner zijn dan een drempel in pixels, en vult ze met de waarde van de grootste buur, volgens de QGIS-handleiding. De standaarddrempel is 10 pixels. Op 20 cm is 10 pixels maar 0,4 m², dus verhoog de drempel naar het kleinste object waar je om geeft.
- Polygoniseren. Voer Raster conversie > Polygoniseren (raster naar vector) uit. Het “creates vector polygons for all connected regions of pixels in the raster sharing a common pixel value”, dus het maakt vectorpolygonen van alle aaneengesloten pixelgebieden met dezelfde waarde, met die waarde standaard in een veld
DN, volgens de handleiding. Laat 8-connectedness gebruiken uit. Staat het aan, dan worden twee pixels die elkaar alleen in een hoek raken verbonden, en worden twee gebouwen die op één hoekpunt samenkomen één polygoon. - De klasse bewaren. Ook achtergrondpixels vormen polygonen. Selecteer
"DN" = 1(of je klassewaarde) en sla de selectie op als nieuwe laag. - Bepalen wat één object betekent. Voor een klasseoppervlak voer je het algoritme Samenvoegen (dissolve) uit zonder veld: je krijgt één meerdelig object en één oppervlaktecijfer. Voor blobs vink je Niet-aangrenzende objecten afzonderlijk houden aan (QGIS 3.32 of nieuwer), of je voert Meervoudige naar enkelvoudige uit in de Toolbox Processing, en elke blob wordt een eigen rij.
- De randen opschonen. Pixelranden komen als trappen uit het masker. De gids over raster naar vector behandelt vereenvoudigen, afvlakken en een oppervlaktefilter.
Na stap 4 heb je één polygoon per blob, niet per object. De tabel van Lens hierboven laat zien hoe groot dat verschil is: 269 blobs voor 3.006 gebouwen.
Zo worden ook grote datasets met gebouwcontouren gemaakt. De wereldwijde gebouwcontouren van Microsoft komen in twee fasen tot stand: “Semantic Segmentation”, waarbij diepe neurale netwerken de gebouwpixels herkennen, en daarna “Polygonization”, waarbij die pixels in polygonen worden omgezet. Een pixel telt als gebouw wanneer zijn kans boven 0,5 ligt. De polygoonstap is waar de scheiding in gebouwen plaatsvindt, en dat is extra werk dat een semantisch model aan jou overlaat.
Vanuit een instancetool
- Voer de tool uit op een zone. Elk object komt binnen als eigen polygoon, één rij in de attributentabel.
- Controleer op meerdelige objecten. Sommige tools geven een object in meerdere stukken terug. Meervoudige naar enkelvoudige splitst ze, en controleer de gesplitste objecten voordat je telt.
- Meet elk object. Voeg in de veldberekening een veld met
$areatoe en filter slivers weg die kleiner zijn dan het kleinste echte object. - Koppel wat je weet. Elke polygoon kan met een ruimtelijke koppeling een hoogte, een adres of een register-ID krijgen, wat een klasseoppervlak niet kan.
Met AI Segmentation vallen stap 1 tot 3 samen in één: typ “gebouw” of “zwembad”, kies een zone, en elk gevonden object komt als eigen polygoon in een nieuwe laag terug. Met AI Agent draait het semantische pad hierboven vanuit één zin in een chatpaneel in QGIS: je beschrijft de laag die je wilt, en AI Agent voert dezelfde QGIS-tools uit, Sieve, Polygoniseren en Samenvoegen, en controleert de kaart voordat hij antwoordt.
Welk type de QGIS-tools opleveren
De meeste QGIS-plugins die op bodembedekkingsmodellen draaien zijn semantisch, en de tools op basis van Segment Anything zijn instance.
- Semantisch: Deepness en de meeste modellen uit de modelbibliotheek ervan, de Semi-Automatic Classification Plugin, het bodembedekkingsmodel van Mapflow.
- Instance: de Segment Anything-familie, dus Geo-SAM, samgeo en de SAM-plugins voor QGIS. Eén object per klik.
- AI Segmentation, de plugin die wij bij TerraLab maken voor QGIS, is een instancetool. Je noemt het object, een gebouw, een boom, een zwembad, of tekent er één voorbeeld van, en je krijgt één polygoon per object dat in de zone is gevonden. De gids over gebouwcontouren laat zien hoe dat eruitziet op een dicht bebouwd blok. Waar de gebouwen al in kaart zijn gebracht, geeft de gratis downloader voor gebouwcontouren je die instancepolygonen als GeoJSON zonder dat je iets hoeft uit te voeren.
Veelgestelde vragen
De korte antwoorden hieronder dekken wat mensen naast deze twee termen zoeken.
Wat is het verschil tussen semantische, instance- en panoptische segmentatie?
Semantische segmentatie geeft elke pixel een klasse. Instancesegmentatie scheidt elk object van een klasse in een eigen masker. Panoptische segmentatie doet beide tegelijk: elke pixel krijgt een klasse, en elk telbaar object, zoals een gebouw of een auto, krijgt ook een eigen ID.
Welke moet ik gebruiken voor een GIS-project?
Gebruik semantisch wanneer het antwoord een oppervlakte of een aandeel is: kroonbedekking, verharding, overstroomd land. Gebruik instance wanneer het antwoord een aantal of een attribuut per object is: gebouwen, bomen, zwembaden, zonnepanelen. Heb je beide nodig, draai dan van elk één en leg de lagen op elkaar.
Is objectdetectie hetzelfde als instancesegmentatie?
Nee. Objectdetectie geeft een rechthoek om elk object. Instancesegmentatie geeft de contour, pixel voor pixel. Voor een kaart wil je bijna altijd de contour.
Kan ik een semantisch masker omzetten in instances?
Soms. Polygoniseer het masker en splits de polygonen waar ze insnoeren. Dat werkt bij gescheiden dingen zoals boomkronen in een boomgaard. Het mislukt bij een rij huizen, waar niets is om door te knippen.
Verandert de resolutie van de beelden het antwoord?
Ja, maar minder dan mensen denken. Op 10 m is een huis één of twee pixels en valt er niets te scheiden, dus bodembedekking uit satellietbeelden is uit noodzaak semantisch. Op 20 cm is een huis duizenden pixels en wordt instancesegmentatie mogelijk, maar een semantisch masker op 20 cm voegt nog steeds elk huis samen dat een muur deelt: in het centrum van Lens deelt 97,5% van de gebouwen die het vindt een blob.
Waarom geeft mijn gepolygoniseerde masker één polygoon voor een heel huizenblok?
Omdat de huizen in dat blok muren delen, dus er ligt geen achtergrondpixel tussen hen in het masker. Polygoniseren voegt elke verbonden pixel met dezelfde waarde samen tot één polygoon. Alleen een instancemodel, dat elk object apart tekent, scheidt ze.
Is Segment Anything instancesegmentatie?
Ja, wat de uitvoer betreft: het geeft één masker per object waar je naar wijst, dus twee aaneengebouwde daken komen als twee maskers terug. Het oorspronkelijke model geeft echter geen klasselabel. Het scheidt objecten zonder ze een naam te geven, en de QGIS-tools die erop gebouwd zijn halen de klasse uit je klik of je prompt.
Semantische en instancesegmentatie vallen allebei onder de bredere categorie GeoAI. Wat GeoAI betekent behandelt de term waarvan deze twee voorbeelden zijn. Boomkronen in kaart brengen laat beide kanten zien op bomen: kroonbedekking uit een masker, of één polygoon per kroon. De QGIS AI-hub verzamelt wat AI in QGIS wel en niet kan.
, is een instancetool. Je noemt het object, een gebouw, een boom, een zwembad, of tekent er één voorbeeld van, en je krijgt één polygoon per object dat in de zone is gevonden. De 

