Classification d'images avec Potato
Configurez la classification d'images dans Potato en affichant les images avec instance_display et en recueillant les étiquettes avec des schémas radio et multiselect, contrôles qualité compris.
Tôt ou tard, la plupart des projets de vision par ordinateur ont besoin d'un grand nombre d'images étiquetées, et quelqu'un doit faire cet étiquetage. Que vous triiez des photos de produits, filtriez du contenu ou classiez des images médicales, Potato prend en charge l'interface pour que vous puissiez vous concentrer sur les étiquettes. Ce tutoriel couvre les configurations courantes : classification mono-étiquette et multi-étiquettes, structures de catégories imbriquées, et les contrôles de qualité qui gardent les tâches sur images fiables.
Afficher l'image, puis poser la question
Dans Potato, classer et dessiner sont deux tâches différentes, et les confondre est l'erreur classique du débutant. instance_display affiche l'image à l'écran. annotation_schemes pose la question. Le type image_annotation sert à dessiner des boîtes et des masques sur une image, donc une tâche de classification ne l'utilise pas du tout.
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 associe les six étiquettes aux touches 1 à 6. Sur une tâche qui se résume à un coup d'œil et un clic, le clavier fait l'essentiel du débit.
L'interface affiche l'image avec les étiquettes de catégorie en dessous :
L'interface d'annotation d'images affichant une image de produit avec des étiquettes de classification et des raccourcis clavier
Format des données
Créez data/products.json :
{"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"}Les images peuvent être des chemins locaux sous le répertoire de la tâche ou des URL absolues. text_key désigne le champ qui contient le chemin, c'est-à-dire le champ que Potato transmet à l'affichage.
Classification multi-étiquettes
Lorsqu'une image appartient à plusieurs catégories à la fois, utilisez 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 angleCatégories imbriquées
Potato n'a pas de type d'étiquette imbriquée pour les boutons radio, donc une taxonomie à deux niveaux correspond à deux schémas. Chaque schéma a besoin de ses propres labels, et une liste de sous-catégories doit couvrir tous les parents :
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
- DecorSi la seconde liste devient longue, hierarchical_multiselect la regroupe en un seul widget au lieu de deux schémas.
Contrôles de qualité en plus de la classification
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 frameLes consignes propres à chaque étiquette vont dans tooltip, qui est la clé que lisent les étiquettes. Si vous les écrivez sous forme de description: sur une étiquette, le texte n'apparaît nulle part où l'annotateur peut le voir.
Exemple complet
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: jsonlConseils pour l'annotation d'images
La couleur et la luminosité varient d'un écran à l'autre. Pour tout ce qui en dépend, assurez-vous que les annotateurs travaillent sur des écrans raisonnablement calibrés. Mettez des images d'exemple dans vos consignes plutôt que de décrire les catégories avec des mots ; une image tranche plus de désaccords qu'un paragraphe. Précisez par écrit quoi faire des images ambiguës, car il y aura des images ambiguës. Et de temps en temps, faites étiqueter le même lot par toute l'équipe et comparez les résultats, pour repérer la dérive tôt.
Pour les détails d'implémentation, consultez la documentation sur l'annotation d'images.
Prochaines étapes
- Apprenez l'annotation par boîtes englobantes pour la détection d'objets
- Configurez l'annotation par polygones pour la segmentation
- Découvrez l'annotation vidéo pour les tâches temporelles
Voir la documentation complète sur l'annotation d'images sur Annotation d'images.