Polygon-Annotation für Segmentierungsaufgaben
So konfigurierst du die Polygon-Werkzeuge in Potato für die Bildsegmentierung, mit Hinweisen zu komplexen Formen, überlappenden Regionen, mehreren Klassen und Export nach COCO.
Mit Polygonen zeichnest du Objektgrenzen Pixel für Pixel nach, und genau das brauchen semantische und Instanzsegmentierung. Dieser Leitfaden geht die Konfiguration durch, dann die Zeichentechnik und schließlich die Fälle, in denen die Formen unübersichtlich werden.
Polygone oder Bounding Boxes
| Polygone, wenn | Bounding Boxes, wenn |
|---|---|
| Genaue Grenzen nötig sind | Grobe Lokalisierung reicht |
| Objekte unregelmäßig geformt sind | Objekte ungefähr rechteckig sind |
| Segmentierungsmodelle trainiert werden | Detektionsmodelle trainiert werden |
| Objekte sich überlappen | Objekte sich nicht überlappen |
| Höhere Genauigkeit gefragt ist | Tempo im Vordergrund steht |
Grundeinrichtung für Polygone
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"Polygone zeichnen
Der grundlegende Ablauf
- Ein Label in der Werkzeugleiste auswählen
- Per Klick Stützpunkte rund um das Objekt setzen
- Mit Doppelklick oder Enter das Polygon schließen
- Stützpunkte durch Ziehen nachjustieren
- Auf eine Kante klicken, um einen Punkt zu ergänzen
Tastenkürzel
Potato bringt Tastenkürzel für die Polygonbearbeitung mit:
- Enter: das aktuelle Polygon schließen
- Escape: Zeichnen abbrechen oder Auswahl aufheben
- Entf: ausgewählten Stützpunkt oder ausgewähltes Polygon löschen
- +/-: hinein- und herauszoomen
- Leertaste + Ziehen: das Bild verschieben
Wenn es kompliziert wird
Überlappende Objekte
Überlappen sich Objekte, zeichnen Annotierende einfach mehrere Polygone übereinander. Potato speichert jedes einzeln, sodass du Annotationen auf Instanzebene bekommst, auch wo Objekte sich gegenseitig verdecken.
Schwierige Grenzen
Bei Objekten mit sperrigen, geschwungenen Rändern:
- Setz auf gekrümmten Kanten mehr Stützpunkte, damit die Form genau wird
- Zoom hinein, bevor du die kniffligen Stellen nachzeichnest
- Arbeite dich der Reihe nach am Umriss entlang, statt hin und her zu springen
- Wechsel danach in den Bearbeitungsmodus und rück die Stützpunkte zurecht
Einrichtung für semantische Segmentierung
Für die Segmentierung des gesamten Bildes:
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"Einrichtung für Instanzsegmentierung
Für einzelne Objektinstanzen:
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"Jedes Polygon wird als eigene Annotation gespeichert, sodass du einzelne Instanzen innerhalb einer Objektklasse auseinanderhalten kannst.
Vollständiges Konfigurationsbeispiel
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"Ausgabeformat
Polygon-Annotationen landen mit den Koordinaten jedes Stützpunkts in der Ausgabe:
{
"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]]
}
]
}
}Hinweise zu sauberen Polygonen
- Zoom auf mindestens 2x, wenn du feine Grenzen nachzeichnest.
- Lern die Tastenkürzel. Sie sind deutlich schneller, als jedes Mal zur Werkzeugleiste zu greifen.
- Leg zuerst einen groben Umriss an und verfeinere ihn danach.
- Nimm so wenige Stützpunkte, wie die Form es zulässt. Mehr ist nicht besser.
- Mach Pausen. Detaillierte Polygonarbeit zehrt schnell.
Nächste Schritte
- Kombinier das mit Bounding Boxes für gemischte Arbeitsabläufe
- Richte Qualitätskontrolle für die Segmentierung ein
- Lies zur Videosegmentierung für zeitliche Daten
Was der Annotationstyp für Bilder sonst noch kann (Polygon, bbox und die übrigen Zeichenwerkzeuge), steht in der Quelldokumentation.
Die vollständige Polygon-Dokumentation steht unter Bildannotation.