Skip to content
Tutorials5 min read

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.

Potato Team

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 quandoUsa i bounding box quando
Servono contorni precisiBasta una localizzazione approssimativa
Le forme degli oggetti sono irregolariGli oggetti sono più o meno rettangolari
Addestri modelli di segmentazioneAddestri modelli di rilevamento
Gli oggetti si sovrappongonoGli oggetti non si sovrappongono
Serve maggiore accuratezzaLa priorità è la velocità

Impostazione di base dei poligoni

yaml
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

  1. Scegli un'etichetta dalla barra degli strumenti
  2. Clicca per posare i vertici attorno all'oggetto
  3. Fai doppio clic o premi Invio per chiudere il poligono
  4. Trascina i vertici per sistemarli
  5. 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:

  1. Aggiungi più vertici sui bordi curvi, così la forma viene accurata
  2. Ingrandisci prima di ricalcare i punti più delicati
  3. Percorri il perimetro in ordine invece di saltare da una parte all'altra
  4. Passa poi in modalità modifica per aggiustare i vertici

Impostazione per la segmentazione semantica

Per segmentare l'immagine intera:

yaml
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:

yaml
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

yaml
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:

json
{
  "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

  1. Ingrandisci ad almeno 2x quando ricalchi contorni ricchi di dettaglio.
  2. Impara le scorciatoie da tastiera. Sono molto più rapide che andare ogni volta sulla barra degli strumenti.
  3. Traccia prima un contorno grossolano, poi torna indietro e rifiniscilo.
  4. Usa il minor numero di vertici che ancora rende la forma. Di più non vuol dire meglio.
  5. Fai delle pause. Il lavoro sui poligoni dettagliati stanca in fretta.

Prossimi passi

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.