Image Classification with Potato
Set up image classification in Potato with thumbnail previews, zoom controls, multi-label checkbox schemas, and keyboard shortcuts for high-throughput visual annotation.
Sooner or later most computer vision projects need a pile of labeled images, and someone has to do the labeling. Whether you're sorting product photos, screening content, or classifying medical scans, Potato handles the interface so you can focus on the labels. This tutorial covers the setups you'll actually use: single-label and multi-label classification, nested category structures, and the quality checks that keep image tasks honest.
Basic image classification
We'll start with a single-label task.
Configuration
annotation_task_name: "Product Image Classification"
# Image data
data_files:
- data/products.json
item_properties:
id_key: product_id
text_key: image_url
# Classification labels
annotation_schemes:
- annotation_type: image_annotation
name: category
description: "What type of product is shown?"
labels:
- Electronics
- Clothing
- Home & Garden
- Sports & Outdoors
- Books & Media
- Other
keyboard_shortcuts:
Electronics: "1"
Clothing: "2"
"Home & Garden": "3"
"Sports & Outdoors": "4"
"Books & Media": "5"
Other: "6"The image classification interface displays the image alongside category labels:
The image annotation interface showing a product image with classification labels and keyboard shortcuts
Data Format
Create 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"}Images can be local paths or URLs.
Multi-Label Classification
For images that belong to multiple categories:
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 angle
min_selections: 1
max_selections: 5Hierarchical Categories
For complex taxonomies, use nested labels:
annotation_schemes:
- annotation_type: radio
name: main_category
description: "Primary category"
labels:
- Apparel
- Electronics
- Home
- annotation_type: radio
name: subcategory
description: "Subcategory"
conditional:
depends_on: main_category
options:
Apparel:
- Tops
- Bottoms
- Footwear
- Accessories
Electronics:
- Phones
- Computers
- Audio
- Cameras
Home:
- Furniture
- Decor
- Kitchen
- BeddingImage Quality Assessment
Add quality checks alongside 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
description: "Clear, well-lit, product is visible"
- name: Needs review
description: "Minor issues but potentially usable"
- name: Rejected
description: "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 frame
conditional:
depends_on: image_quality
show_when: ["Needs review", "Rejected"]Advanced Image Settings
For advanced image display customization, configure the image_annotation type in your annotation schemes and use CSS or custom styling as needed.
Complete Example
Here's a production-ready configuration:
annotation_task_name: "E-commerce Image Classification"
data_files:
- data/images.json
item_properties:
id_key: sku
text_key: image_path
annotation_schemes:
- annotation_type: image_annotation
name: primary_category
description: "Select the main product category"
labels:
- Electronics
- Clothing & Accessories
- Home & Living
- Beauty & Personal Care
- Sports & Fitness
- Toys & Games
- Other
required: true
keyboard_shortcuts:
Electronics: "1"
"Clothing & Accessories": "2"
"Home & Living": "3"
"Beauty & Personal Care": "4"
"Sports & Fitness": "5"
"Toys & Games": "6"
Other: "7"
- annotation_type: multiselect
name: image_attributes
description: "Select all that apply"
labels:
- White background
- Lifestyle shot
- Multiple angles
- Model wearing/using
- Size reference included
- Brand visible
required: false
- annotation_type: radio
name: listing_ready
description: "Is this image ready for product listing?"
labels:
- Yes - Ready to publish
- No - Needs editing
- No - Reshoot required
required: true
annotation_guidelines:
title: "Image Classification Guidelines"
content: |
## Category Selection
Choose the most specific category that fits the product.
## Image Quality
- "Ready to publish": Clear, professional, meets standards
- "Needs editing": Good photo but needs cropping/color correction
- "Reshoot required": Fundamentally unsuitableTips for image annotation
Color and brightness vary between monitors, so for anything where that matters, make sure annotators are on reasonably calibrated displays. Put example images in your guidelines rather than describing categories in words; one picture settles more arguments than a paragraph. Write down what to do with the ambiguous images, because there will be ambiguous images. And every so often, have the team label the same batch and compare, so drift gets caught early.
For implementation details, see the image annotation documentation.
Next steps
- Learn bounding box annotation for object detection
- Set up polygon annotation for segmentation
- Explore video annotation for temporal tasks
See complete image annotation documentation at /docs/features/image-annotation.