Annotazione con poligoni per task di segmentazione
Come configurare gli strumenti di disegno dei poligoni in Potato per la segmentazione di immagini, con consigli su forme complesse, regioni sovrapposte, poligoni multi-classe ed esportazione in formato COCO.
Con i poligoni si ricalca il contorno di un oggetto pixel per pixel, che è quello che serve alla segmentazione semantica e a quella per istanze. Questa guida attraversa la configurazione, le tecniche di disegno e cosa fare quando le forme si complicano.
Poligoni o bounding box
| Usa i poligoni quando | Usa i bounding box quando |
|---|---|
| Servono contorni precisi | Basta una localizzazione approssimativa |
| Le forme degli oggetti sono irregolari | Gli oggetti sono più o meno rettangolari |
| Addestri modelli di segmentazione | Addestri modelli di rilevamento |
| Gli oggetti si sovrappongono | Gli oggetti non si sovrappongono |
| Serve maggiore accuratezza | La priorità è la velocità |
Impostazione di base dei poligoni
annotation_task_name: "Image Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Draw polygons around each object"
labels:
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: vehicle
color: "#FF6B6B"
- name: person
color: "#4ECDC4"Disegnare i poligoni
Il flusso di base
- Scegli un'etichetta dalla barra degli strumenti
- Clicca per posare i vertici attorno all'oggetto
- Fai doppio clic o premi Invio per chiudere il poligono
- Trascina i vertici per sistemarli
- Clicca su un lato per aggiungere un punto
Scorciatoie da tastiera
Potato ha già delle scorciatoie per modificare i poligoni:
- Invio: chiude il poligono corrente
- Esc: annulla il disegno o deseleziona
- Canc: elimina il vertice o il poligono selezionato
- +/-: ingrandisce e riduce
- Spazio + trascinamento: sposta l'immagine
Quando le cose si complicano
Oggetti sovrapposti
Se gli oggetti si sovrappongono, l'annotatore disegna semplicemente più poligoni sovrapposti. Potato li conserva separati, quindi ottieni un'annotazione a livello di istanza anche dove un oggetto ne copre un altro.
Contorni difficili
Per gli oggetti dal contorno irregolare e curvo:
- Aggiungi più vertici sui bordi curvi, così la forma viene accurata
- Ingrandisci prima di ricalcare i punti più delicati
- Percorri il perimetro in ordine invece di saltare da una parte all'altra
- Passa poi in modalità modifica per aggiustare i vertici
Impostazione per la segmentazione semantica
Per segmentare l'immagine intera:
annotation_task_name: "Semantic Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: semantic_segments
description: "Segment the entire image"
labels:
- name: background
color: "#000000"
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: person
color: "#4ECDC4"
- name: vehicle
color: "#FF6B6B"Impostazione per la segmentazione per istanze
Per le singole istanze degli oggetti:
annotation_task_name: "Instance Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: instances
description: "Draw polygons around each object instance"
labels:
- name: person
color: "#4ECDC4"
- name: car
color: "#FF6B6B"
- name: dog
color: "#FFEAA7"Ogni poligono viene salvato come annotazione a sé, così puoi seguire le singole istanze all'interno di ciascuna classe di oggetti.
Esempio di configurazione completa
annotation_task_name: "Cityscapes-style Segmentation"
data_files:
- "data/urban_scenes.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Segment all objects following Cityscapes protocol"
labels:
# Flat
- name: road
color: "#804080"
- name: sidewalk
color: "#F423E8"
# Construction
- name: building
color: "#464646"
- name: wall
color: "#666666"
- name: fence
color: "#BE9999"
# Nature
- name: vegetation
color: "#6B8E23"
- name: terrain
color: "#98FB98"
# Sky
- name: sky
color: "#4682B4"
# Human
- name: person
color: "#DC143C"
- name: rider
color: "#FF0000"
# Vehicle
- name: car
color: "#00008B"
- name: truck
color: "#000046"
- name: bus
color: "#003C64"
- name: motorcycle
color: "#0000E6"
- name: bicycle
color: "#770B20"Formato di output
Le annotazioni con poligoni finiscono nell'output con le coordinate di ogni vertice:
{
"id": "img001",
"annotations": {
"segments": [
{
"label": "road",
"points": [[0, 600], [100, 580], [200, 590], [0, 600]]
},
{
"label": "car",
"points": [[450, 400], [520, 400], [520, 480], [450, 480]]
}
]
}
}Consigli per poligoni puliti
- Ingrandisci ad almeno 2x quando ricalchi contorni ricchi di dettaglio.
- Impara le scorciatoie da tastiera. Sono molto più rapide che andare ogni volta sulla barra degli strumenti.
- Traccia prima un contorno grossolano, poi torna indietro e rifiniscilo.
- Usa il minor numero di vertici che ancora rende la forma. Di più non vuol dire meglio.
- Fai delle pause. Il lavoro sui poligoni dettagliati stanca in fretta.
Prossimi passi
- Combina questo approccio con i bounding box per flussi di lavoro misti
- Imposta il controllo di qualità per la segmentazione
- Scopri la segmentazione dei video per i dati temporali
Per tutto quello che il tipo di annotazione su immagini sa fare (poligoni, bbox e gli altri strumenti di disegno), vedi la documentazione sorgente.
Vedi Annotazione di Immagini per la documentazione completa sui poligoni.