Clasificación de imágenes con Potato
Configura la clasificación de imágenes en Potato mostrando las imágenes con instance_display y recogiendo etiquetas con esquemas radio y multiselect, con controles de calidad incluidos.
Tarde o temprano, la mayoría de los proyectos de visión por computadora necesitan un montón de imágenes etiquetadas, y alguien tiene que etiquetarlas. Tanto si clasificas fotos de productos como si filtras contenido o categorizas imágenes médicas, Potato se encarga de la interfaz para que puedas concentrarte en las etiquetas. Este tutorial cubre las configuraciones habituales: clasificación de etiqueta única y multietiqueta, estructuras de categorías anidadas y los controles de calidad que mantienen fiables las tareas con imágenes.
Mostrar la imagen y después hacer la pregunta
En Potato, clasificar y dibujar son trabajos distintos, y confundirlos es el primer error habitual. instance_display pone la imagen en pantalla. annotation_schemes hace la pregunta. El tipo image_annotation sirve para dibujar cajas y máscaras sobre una imagen, así que una tarea de clasificación no lo usa en absoluto.
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 asigna a las seis etiquetas las teclas del 1 al 6. En una tarea que consiste en un vistazo y un clic, el teclado aporta la mayor parte del ritmo de trabajo.
La interfaz muestra la imagen con las etiquetas de categoría debajo:
La interfaz de anotación de imágenes con una imagen de producto, etiquetas de clasificación y atajos de teclado
Formato de datos
Crea 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"}Las imágenes pueden ser rutas locales dentro del directorio de la tarea o URL absolutas. text_key apunta al campo que contiene la ruta, que es el campo que Potato entrega a la visualización.
Clasificación multietiqueta
Cuando una imagen pertenece a varias categorías a la vez, usa 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 angleCategorías anidadas
Potato no tiene un tipo de etiqueta anidada para botones de opción, así que una taxonomía de dos niveles son dos esquemas. Cada esquema necesita sus propias labels, y la lista de subcategorías tiene que cubrir todas las categorías principales:
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
- DecorCuando la segunda lista se haría larga, hierarchical_multiselect la reúne en un solo widget en lugar de dos esquemas.
Controles de calidad junto a la clasificación
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 frameLa orientación de cada etiqueta va en tooltip, que es la clave que leen las etiquetas. Si la escribes como description: en una etiqueta, el texto no aparece en ningún sitio donde el anotador pueda verlo.
Ejemplo completo
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: jsonlConsejos para la anotación de imágenes
El color y el brillo varían entre monitores, así que, en cualquier tarea en la que eso importe, asegúrate de que los anotadores trabajen con pantallas razonablemente calibradas. Incluye imágenes de ejemplo en tus guías en lugar de describir las categorías con palabras; una imagen zanja más discusiones que un párrafo. Deja por escrito qué hacer con las imágenes ambiguas, porque las habrá. Y de vez en cuando, haz que el equipo etiquete el mismo lote y compara los resultados, para detectar pronto cualquier deriva.
Para los detalles de implementación, consulta la documentación de anotación de imágenes.
Próximos pasos
- Aprende la anotación con cajas delimitadoras para la detección de objetos
- Configura la anotación de polígonos para la segmentación
- Explora la anotación de video para tareas temporales
Consulta la documentación completa de anotación de imágenes en Anotación de imágenes.