Vai al contenuto
AI Segmentation
GeoAI
Guida

Segmentazione semantica e per istanze nelle immagini aeree

Pubblicato il Aggiornato il

Impronte degli edifici di Shivajinagar, a Bangalore, ogni edificio è un poligono a sé su una fitta griglia di strade.
Foto: planemad, CC BY-SA 4.0, Wikimedia Commons.

La segmentazione semantica assegna una classe a ogni pixel di un'immagine: questo pixel è edificio, quello è strada, il prossimo è albero. La segmentazione per istanze fa un passo in più e separa tra loro gli oggetti di una stessa classe: questo pixel è l'edificio numero 12, quello è l'edificio numero 13.

La differenza in una riga

La semantica risponde a "quanto". Le istanze rispondono a "quanti, e quale". La panottica, il terzo termine, risponde a entrambe sulla stessa mappa.

Ecco la stessa immagine etichettata in due modi. La segmentazione semantica colora tutti gli edifici con lo stesso colore. Quella per istanze dà a ciascuno il proprio contorno e il proprio numero.

Tre pannelli con gli stessi sette edifici: nella semantica sono tutti verdi e due case a contatto si fondono in un'unica forma, nelle istanze ogni edificio ha un colore diverso e un numero da 1 a 7, nella panottica gli stessi edifici numerati poggiano su una classe di sfondo grigia.
Due case a contatto: una sola forma nella semantica, gli oggetti 1 e 2 nelle istanze e nella panottica.
SemanticaPer istanzePanottica
OutputUna classe per pixelUna maschera per oggettoUna classe per pixel, più un ID oggetto sulle cose numerabili
Due case a contattoUna mascheraDue oggettiDue oggetti
Cosa conta come oggettoNiente: una classe è una superficieOgni tetto, chioma, piscina o autoOgni cosa numerabile; le superfici restano superfici
Si può contareNoSìSì, per le classi numerabili
Uso tipico in GISCopertura del suolo, quota di chioma, superficie impermeabile, cambiamentiInventari di edifici, alberi, piscine e pannelliMappe complete della scena, particelle agricole
Modelli tipiciU-Net, DeepLabMask R-CNN, la famiglia Segment AnythingDue teste, oppure un solo modello addestrato su etichette panottiche
Verso il vettoriale in QGISPoligonizzazione, poi puliziaGià un poligono per oggettoPoligonizza le classi, conserva gli ID degli oggetti
La stessa strada con case a schiera a Lens mostrata due volte: a sinistra tutti gli edifici sotto un'unica maschera verde, a destra ogni casa come poligono colorato a sé.
Lens, le stesse case a schiera due volte. A sinistra, semantica: una sola maschera. A destra, per istanze: un poligono per casa. Edifici: OpenStreetMap contributors, ODbL. Ortofoto: IGN, BD ORTHO, licenza aperta.

Cosa ti danno sulla mappa

Un modello semantico ti dà superfici da misurare, un modello per istanze ti dà oggetti da contare.

Semantica è una mappa di copertura del suolo con i bordi netti: una maschera degli edifici, una delle strade, una della vegetazione. Va bene per statistiche di area, superficie impermeabile, copertura arborea, cambiamenti tra due date. Non va bene per tutto ciò che richiede un conteggio.

Per istanze è un inventario. Ogni tetto, chioma o piscina arriva come poligono a sé, con la sua riga nella tabella attributi. Puoi contare, misurare ciascun oggetto, associare a ciascuno un'altezza. Il prezzo è che il modello deve decidere dove finisce un oggetto, cosa difficile su una schiera di case, e gli errori si vedono: due case fuse in una, una chioma spezzata in tre.

Da dove vengono i nomi. Sono entrambi termini di computer vision. Nel 2014 Long, Shelhamer e Darrell hanno mostrato che una rete addestrata “end-to-end, pixels-to-pixels” poteva fare segmentazione semantica. Nel 2017 Mask R-CNN ha aggiunto a un rilevatore di oggetti “un ramo per predire la maschera di un oggetto”, cioè la segmentazione per istanze. Nel 2023 Segment Anything è stato addestrato su “oltre 1 miliardo di maschere su 11 milioni di immagini con licenza e rispettose della privacy”, ed è la famiglia su cui girano oggi gli strumenti per istanze di QGIS.

Segmentazione panottica, il terzo termine

La segmentazione panottica assegna una classe a ogni pixel, come la semantica, e dà anche a ogni oggetto numerabile un proprio ID, come quella per istanze. Kirillov e colleghi hanno dato un nome al compito nel 2018 e lo hanno definito come quello che “unifica i compiti tipicamente distinti della segmentazione semantica (assegnare un'etichetta di classe a ogni pixel) e della segmentazione per istanze (rilevare e segmentare ogni istanza di oggetto)”.

L'articolo divide le classi in due tipi. Le cose (things) sono numerabili: edifici, auto, alberi. Lo sfondo (stuff) è amorfo: erba, acqua, superficie stradale. Una mappa panottica conta le cose e misura lo sfondo, in un unico layer senza vuoti né sovrapposizioni. Lo stesso articolo ha proposto un unico punteggio per entrambi, la qualità panottica (PQ), “per tutte le classi (sfondo e cose)”.

Dove la usa il GIS. Il caso più chiaro sono i campi agricoli. PASTIS, un benchmark francese, contiene 124.422 particelle agricole su 2.433 serie temporali Sentinel-2 a 10 m per pixel, per circa 4.000 km² di Francia. Ogni pixel porta sia un tipo di coltura sia un indice di particella. Un modello semantico dice "grano qui". Uno panottico dice "grano, particella 57", così puoi contare i campi e misurarli uno per uno. L'articolo che lo accompagna definisce la segmentazione panottica delle particelle a livello di pixel un compito con “importanti implicazioni economiche e ambientali”.

In pratica, un team GIS raramente ha bisogno di un modello panottico. Usa uno strumento per istanze per le cose, uno semantico per lo sfondo e sovrapponi i due layer in QGIS. Ottieni la stessa mappa in due passaggi.

Cosa conta una maschera semantica: tre tasselli francesi, misurati

Se poligonizzi una maschera semantica degli edifici conti blocchi, non edifici: su 1 km² del centro di Lens, la mappa di copertura del suolo AI dell'IGN, prodotta da foto aeree a 20 cm, dà 269 blob di edifici dove il registro nazionale degli edifici ne conta 3.006. Lo abbiamo misurato il 23 settembre 2026 su tre tasselli di 1 km², ciascuno confrontato con gli edifici BD TOPO dell'IGN.

Su un tassello di 1 km²Lens, centro cittàLiévin, case dei minatoriParigi 11°
Edifici in BD TOPO (20 m² o più)3.0069521.759
Blob nella maschera AI a 20 cm (IGN CoSIA)26955895
Edifici trovati che condividono il blob97,5%63%99,5%
Mediana di edifici in quel blob30231
Blob nella copertura del suolo a 10 m (ESA WorldCover)1291
Area, maschera AI / impronte / “costruito” a 10 m40,5 / 36,3 / 87,2 ha14,4 / 12,3 / 46,3 ha58,4 / 54,7 / 96,3 ha

Una maschera più fine non risolve il conteggio. La maschera trova dal 96 al 97% degli edifici di ogni tassello, ma una casa a schiera o un condominio condividono i muri, quindi nessun pixel di sfondo separa mai due case, né a 20 cm né a 2 cm. A Lens e a Parigi un edificio trovato dalla maschera sta, in mediana, in un blob di circa 30.

Tre pannelli della stessa finestra di 420 per 300 m nel centro di Lens: gli edifici BD TOPO ciascuno del proprio colore, la maschera degli edifici CoSIA quasi interamente in blob di dieci o più edifici e la classe costruito di WorldCover come un unico blob compatto.
Centro di Lens. A sinistra, gli edifici BD TOPO. Al centro e a destra, le maschere degli edifici poligonizzate, ogni blob colorato in base agli edifici che contiene. IGN BD TOPO e CoSIA 2021-2023, ESA WorldCover 2021, misurato il 23 settembre 2026.

Liévin mostra dove una maschera semantica conta bene. Le case isolate escono come un blob ciascuna, e 344 dei 926 edifici trovati lì hanno un blob tutto per sé. Le case bifamiliari e le schiere del vecchio quartiere minerario escono come un blob ciascuna, ed è per questo che l'edificio mediano sta in un blob di due.

Tre pannelli di una finestra a Liévin: le case isolate come singoli blob verdi, le case bifamiliari e le schiere in blob arancioni e rossi, e la copertura del suolo a 10 m che fonde l'intero quartiere.
Liévin, Cité Pasteur. Le case isolate si contano bene, le coppie e le schiere no. Stesse fonti e stessa data.

Per l'area la maschera semantica è vicina. La maschera AI risulta dal 7 al 17% sopra la somma delle impronte, com'è prevedibile: vede i tetti, che sporgono oltre i muri tracciati da BD TOPO, e i piccoli annessi. La classe “costruito” a 10 m vale da 1,8 a 3,8 volte l'area delle impronte, perché un pixel di 10 m che contiene un tetto, un cortile e un marciapiede viene etichettato come costruito. Misura il tessuto urbano, non gli edifici.

Anche gli alberi si fondono

Sul tassello di Parigi, 1.296 dei 1.583 alberi censiti dal Comune cadono nella chioma della maschera AI (entro 2 m dal tronco), e l'89% di essi condivide un blob di chioma con un altro albero censito. Il viale alberato lungo boulevard Richard-Lenoir è un unico blob che contiene 254 alberi censiti. Contare le chiome da una maschera di copertura arborea funziona per gli alberi isolati e fallisce lungo una strada alberata.

Come l'abbiamo misurato

I tasselli sono quadrati di 1 km in Lambert 93 centrati su Lens (50,432 N, 2,832 E), sulla Cité Pasteur a Liévin (50,433 N, 2,762 E) e su boulevard Richard-Lenoir (48,860 N, 2,370 E). Un blob è un gruppo di pixel di maschera a contatto di 20 m² o più, cioè quello che produce Poligonizzazione di QGIS con le impostazioni predefinite, e un edificio conta come trovato quando metà della sua impronta sta sotto la maschera. CoSIA è pubblicata solo come mappa con stile, quindi l'abbiamo letta a circa 0,4 m e riportato ogni colore alla sua classe. I pochi pixel di bordo persi così spezzano i blob, quindi le quote qui sopra sono, semmai, per difetto. Le foto alla base di CoSIA sono precedenti al registro con cui le abbiamo confrontate. BD TOPO a volte disegna una casa bifamiliare come un solo edificio. L'inventario di Parigi esclude gli alberi privati. Tre tasselli sono tre luoghi, non un dato nazionale.

Dalla maschera ai poligoni in QGIS

Una maschera semantica richiede tre o quattro passaggi di elaborazione per diventare poligoni utilizzabili, mentre uno strumento per istanze ti consegna direttamente i poligoni. Ecco i due percorsi con gli strumenti di QGIS che li eseguono.

Da una maschera semantica

  1. Elimina il rumore. Esegui Raster > Analisi > Filtro (Sieve). “Rimuove i poligoni raster più piccoli di una soglia indicata (in pixel)” e li riempie con il valore del vicino più grande, secondo il manuale di QGIS. La soglia predefinita è 10 pixel. A 20 cm, 10 pixel sono solo 0,4 m², quindi alzala in base all'oggetto più piccolo che ti interessa.
  2. Poligonizza. Esegui Raster > Conversione > Poligonizzazione (da raster a vettore). “Crea poligoni vettoriali per tutte le regioni connesse di pixel raster che condividono lo stesso valore”, con il valore in un campo chiamato DN per impostazione predefinita, secondo il manuale. Lascia disattivata l'opzione Usa 8-connectedness. Se è attiva, due pixel che si toccano solo in un angolo si uniscono, quindi due edifici che si incontrano in un solo angolo diventano un unico poligono.
  3. Conserva la classe. Anche i pixel di sfondo formano poligoni. Seleziona "DN" = 1 (o il valore della tua classe) e salva la selezione come nuovo layer.
  4. Decidi cosa significa un elemento. Per la superficie di una classe, esegui Vettore > Strumenti di geoprocessing > Dissolvi senza campo: ottieni un unico elemento multiparte e un solo valore di area. Per i blob, seleziona Mantieni separati gli elementi disgiunti (QGIS 3.32 o successivo), oppure esegui Da multi parte a parti singole dagli Strumenti di Processing, e ogni blob diventa una riga.
  5. Pulisci i bordi. I bordi dei pixel escono a scalini. La guida da raster a vettore tratta semplificazione, smussatura e filtro per area.

Dopo il passaggio 4 hai un poligono per blob, non per oggetto. La tabella di Lens qui sopra mostra cosa significa questa differenza: 269 blob per 3.006 edifici.

È anche così che si costruiscono i grandi dataset di impronte. Le impronte globali degli edifici di Microsoft nascono in due fasi: la “segmentazione semantica”, che riconosce i pixel di edificio con reti neurali profonde, poi la “poligonizzazione”, che converte quei pixel in poligoni. Un pixel conta come edificio quando la sua probabilità supera 0,5. È nel passaggio dei poligoni che avviene la separazione in edifici, un lavoro in più che un modello semantico lascia a te.

Da uno strumento per istanze

  1. Esegui lo strumento su una zona. Ogni oggetto arriva come poligono a sé, una riga nella tabella attributi.
  2. Controlla le multiparte. Alcuni strumenti restituiscono un oggetto in più pezzi. Da multi parte a parti singole li separa, poi controlla quelli separati prima di contare.
  3. Misura ogni oggetto. Aggiungi un campo con $area nel calcolatore di campi e scarta le schegge sotto il più piccolo oggetto reale.
  4. Associa ciò che sai. Ogni poligono può ricevere un'altezza, un indirizzo o un ID di registro con un join spaziale, cosa che la superficie di una classe non permette.

Con AI Segmentation i passaggi da 1 a 3 si riducono a uno: scrivi "building" o "swimming pool", scegli una zona e ogni oggetto trovato torna come poligono a sé in un nuovo layer. Con AI Agent, il percorso semantico qui sopra parte da una sola frase in un pannello di chat dentro QGIS: descrivi il layer che vuoi, e l'agente esegue gli stessi strumenti di QGIS, Filtro, Poligonizzazione e Dissolvi, poi controlla la mappa prima di risponderti.

Quale producono gli strumenti di QGIS

La maggior parte dei plugin QGIS basati su modelli di copertura del suolo è semantica, mentre gli strumenti basati su Segment Anything lavorano per istanze.

  • Semantici: Deepness e la maggior parte dei modelli del suo zoo, il Semi-Automatic Classification Plugin, il modello di copertura del suolo di Mapflow.
  • Per istanze: la famiglia Segment Anything, quindi Geo-SAM, samgeo e i plugin SAM per QGIS. Un oggetto per clic.
  • AI Segmentation, il plugin che sviluppiamo in TerraLab per QGIS, lavora per istanze. Indichi l'oggetto, un edificio, un albero, una piscina, oppure ne disegni un esempio, e ottieni un poligono per ogni oggetto trovato nella zona. La guida alle impronte degli edifici mostra il risultato su un isolato denso. Dove gli edifici sono già mappati, il downloader gratuito di impronte ti dà quei poligoni per istanze in GeoJSON senza eseguire nulla.

Domande frequenti

Le risposte brevi qui sotto coprono ciò che le persone cercano accanto a questi due termini.

Qual è la differenza tra segmentazione semantica, per istanze e panottica?

La segmentazione semantica assegna una classe a ogni pixel. La segmentazione per istanze separa ogni oggetto di una classe in una maschera propria. La segmentazione panottica fa entrambe le cose insieme: ogni pixel riceve una classe, e ogni oggetto numerabile, come un edificio o un'auto, riceve anche un proprio ID.

Quale devo usare per un progetto GIS?

Usa la semantica quando la risposta è un'area o una quota: copertura arborea, superficie impermeabile, terreno allagato. Usa le istanze quando la risposta è un conteggio o un attributo per oggetto: edifici, alberi, piscine, pannelli solari. Se ti servono entrambe, esegui una di ciascuna e sovrapponi i layer.

Il rilevamento di oggetti è la stessa cosa della segmentazione per istanze?

No. Il rilevamento di oggetti restituisce un rettangolo attorno a ogni oggetto. La segmentazione per istanze ne restituisce il contorno, pixel per pixel. Per una mappa quasi sempre ti serve il contorno.

Posso trasformare una maschera semantica in istanze?

A volte. Poligonizza la maschera, poi dividi i poligoni dove si restringono. Funziona su cose separate come le chiome di un frutteto. Fallisce su una schiera di case, dove non c'è nessun restringimento in cui tagliare.

La risoluzione delle immagini cambia la risposta?

Sì, ma meno di quanto si pensi. A 10 m una casa è uno o due pixel e non c'è nulla da separare, quindi la copertura del suolo da satellite è semantica per necessità. A 20 cm una casa è fatta di migliaia di pixel e la segmentazione per istanze diventa possibile, ma una maschera semantica a 20 cm fonde comunque ogni casa che condivide un muro: nel centro di Lens il 97,5% degli edifici che trova condivide un blob.

Perché la mia maschera poligonizzata dà un unico poligono per un intero isolato?

Perché le case di quell'isolato condividono i muri, quindi nella maschera nessun pixel di sfondo le separa. La poligonizzazione unisce in un poligono tutti i pixel connessi dello stesso valore. Solo un modello per istanze, che disegna ogni oggetto per conto suo, le separa.

Segment Anything fa segmentazione per istanze?

Sì, per quanto riguarda l'output: restituisce una maschera per ogni oggetto che indichi, quindi due tetti a contatto tornano come due maschere. Il modello originale però non assegna alcuna etichetta di classe. Separa gli oggetti senza dargli un nome, e gli strumenti QGIS costruiti su di esso prendono la classe dal tuo clic o dal tuo prompt.

Segmentazione semantica e per istanze rientrano nella più ampia categoria della GeoAI. Cosa significa GeoAI spiega il termine di cui queste due sono esempi. La mappatura della copertura arborea mostra entrambi i lati sugli alberi: copertura da una maschera, oppure un poligono per ogni chioma. L'hub QGIS AI raccoglie ciò che l'AI può e non può fare dentro QGIS.