Bildklassifikation mit Potato
So richtest du Bildklassifikation in Potato ein: Bilder mit instance_display anzeigen, Labels mit radio- und multiselect-Schemata erfassen, Qualitätsprüfungen inklusive.
Fast jedes Computer-Vision-Projekt braucht irgendwann einen Stapel gelabelter Bilder, und jemand muss das Labeln übernehmen. Ob du Produktfotos sortierst, Inhalte prüfst oder medizinische Aufnahmen klassifizierst, Potato kümmert sich um die Oberfläche, damit du dich auf die Labels konzentrieren kannst. Dieses Tutorial behandelt die gängigen Varianten: Klassifikation mit einem Label und mit mehreren Labels, verschachtelte Kategorien und die Qualitätsprüfungen, die eine Bildaufgabe ehrlich halten.
Erst das Bild zeigen, dann die Frage stellen
Klassifizieren und Zeichnen sind in Potato zwei verschiedene Aufgaben, und sie zu verwechseln ist der typische erste Fehler. instance_display bringt das Bild auf den Bildschirm. annotation_schemes stellt die Frage. Der Typ image_annotation dient zum Zeichnen von Boxen und Masken auf einem Bild, eine Klassifikationsaufgabe verwendet ihn also überhaupt nicht.
annotation_task_name: "Product Image Classification"
task_dir: "."
data_files:
- data/products.json
item_properties:
id_key: product_id
text_key: image_url
instance_display:
fields:
- key: image_url
type: image
label: "Product image"
display_options:
max_width: 600
zoomable: true
annotation_schemes:
- annotation_type: radio
name: category
description: "What type of product is shown?"
labels:
- Electronics
- Clothing
- Home & Garden
- Sports & Outdoors
- Books & Media
- Other
sequential_key_binding: true
output_annotation_dir: annotation_output/
export_annotation_format: jsonlsequential_key_binding legt die sechs Labels auf die Tasten 1 bis 6. Bei einer Aufgabe, die aus einem Blick und einem Klick besteht, macht die Tastatur den Großteil des Durchsatzes aus.
Die Oberfläche zeigt das Bild mit den Kategorielabels darunter:
Die Oberfläche zur Bildannotation mit einem Produktfoto, Klassifikationslabels und Tastenkürzeln
Datenformat
Lege data/products.json an:
{"product_id": "P001", "image_url": "/images/products/laptop.jpg"}
{"product_id": "P002", "image_url": "/images/products/tshirt.jpg"}
{"product_id": "P003", "image_url": "/images/products/garden_tools.jpg"}
{"product_id": "P004", "image_url": "https://example.com/images/basketball.jpg"}Bilder können lokale Pfade unterhalb des Aufgabenverzeichnisses oder absolute URLs sein. text_key zeigt auf das Feld mit dem Pfad, also auf das Feld, das Potato an die Anzeige übergibt.
Klassifikation mit mehreren Labels
Wenn ein Bild zu mehreren Kategorien gleichzeitig gehört, verwende multiselect:
annotation_schemes:
- annotation_type: multiselect
name: attributes
description: "Select all attributes that apply to this image"
labels:
- Contains people
- Outdoor scene
- Indoor scene
- Contains text
- Product photo
- Lifestyle photo
- Close-up shot
- Wide angleVerschachtelte Kategorien
Potato hat keinen verschachtelten Labeltyp für Radiobuttons, daher besteht eine zweistufige Taxonomie aus zwei Schemata. Jedes Schema braucht eigene labels, und eine Liste von Unterkategorien muss alle Oberkategorien abdecken:
annotation_schemes:
- annotation_type: radio
name: main_category
description: "Primary category"
labels:
- Apparel
- Electronics
- Home
- annotation_type: radio
name: subcategory
description: "Subcategory within the primary category"
labels:
- Tops
- Bottoms
- Footwear
- Phones & Tablets
- Computers
- Audio
- Furniture
- Kitchen
- DecorWird die zweite Liste lang, fasst hierarchical_multiselect sie zu einem einzigen Widget zusammen, statt zwei Schemata zu verwenden.
Qualitätsprüfungen neben der Klassifikation
annotation_schemes:
- annotation_type: radio
name: category
description: "Product category"
labels: [Electronics, Clothing, Home, Other]
- annotation_type: radio
name: image_quality
description: "Is this image suitable for the product catalog?"
labels:
- name: Approved
tooltip: "Clear, well-lit, product is visible"
- name: Needs review
tooltip: "Minor issues but potentially usable"
- name: Rejected
tooltip: "Poor quality, wrong product, or inappropriate"
- annotation_type: multiselect
name: quality_issues
description: "If not approved, what issues are present?"
labels:
- Blurry or out of focus
- Poor lighting
- Wrong product shown
- Watermark or text overlay
- Inappropriate content
- Multiple products in frameHinweise pro Label gehören in tooltip, denn diesen Schlüssel lesen Labels. Schreibst du sie als description: an ein Label, landet der Text nirgends, wo die Annotierenden ihn sehen können.
Vollständiges Beispiel
annotation_task_name: "E-commerce Image Classification"
task_dir: "."
data_files:
- data/images.json
item_properties:
id_key: sku
text_key: image_path
instance_display:
fields:
- key: image_path
type: image
label: "Product image"
display_options:
max_width: 700
zoomable: true
annotation_schemes:
- annotation_type: radio
name: primary_category
description: "Select the main product category"
labels:
- Electronics
- Clothing & Accessories
- Home & Living
- Beauty & Personal Care
- Sports & Fitness
- Toys & Games
- Other
sequential_key_binding: true
- annotation_type: multiselect
name: image_attributes
description: "Select all that apply"
labels:
- White background
- Lifestyle shot
- Multiple angles
- Model wearing or using
- Size reference included
- Brand visible
label_requirement:
required: false
- annotation_type: radio
name: listing_ready
description: "Is this image ready for the product listing?"
labels:
- Ready to publish
- Needs editing
- Reshoot required
label_requirement:
required: true
annotation_instructions: |
## Image Classification Guidelines
### Category selection
Choose the most specific category that fits the product.
### Image quality
- Ready to publish: clear, professional, meets standards
- Needs editing: good photo that needs cropping or color correction
- Reshoot required: fundamentally unsuitable
output_annotation_dir: annotation_output/
export_annotation_format: jsonlHinweise zur Bildannotation
Farben und Helligkeit fallen von Monitor zu Monitor unterschiedlich aus. Wo das eine Rolle spielt, achte darauf, dass die Annotierenden an halbwegs kalibrierten Bildschirmen sitzen. Pack Beispielbilder in deine Richtlinien, statt Kategorien in Worten zu beschreiben; ein Bild klärt mehr Streitfälle als ein Absatz. Schreib auf, was mit den uneindeutigen Bildern passieren soll, denn uneindeutige Bilder wird es geben. Und lass das Team hin und wieder denselben Stapel labeln und vergleiche die Ergebnisse, damit du ein Abdriften früh bemerkst.
Details zur Umsetzung stehen in der Dokumentation zur Bildannotation.
Nächste Schritte
- Lerne die Annotation mit Bounding Boxes für die Objekterkennung
- Richte Polygon-Annotation für die Segmentierung ein
- Sieh dir die Videoannotation für zeitbezogene Aufgaben an
Die vollständige Dokumentation zur Bildannotation findest du unter Bildannotation.