Image Annotation
Annotate images in Potato with bounding boxes, polygons, freehand drawing, and landmark points. Includes zoom, pan, multi-label classification, and AI pre-labeling.
Image Annotation
Potato's image annotation system supports multiple annotation methods for computer vision tasks including object detection, segmentation, and keypoint annotation.
Supported Tools
| Tool | Description | Use Case |
|---|---|---|
bbox | Rectangular bounding boxes | Object detection |
polygon | Multi-point polygons | Instance segmentation |
freeform | Free-hand drawing | Irregular shapes |
landmark | Point markers | Keypoint detection |
fill | Pixel-level fill tool | Segmentation masks |
eraser | Erase painted regions | Segmentation mask correction |
brush | Paint brush tool | Fine-grained segmentation |
Basic Configuration
annotation_schemes:
- name: "objects"
description: "Draw boxes around all objects"
annotation_type: "image_annotation"
tools:
- bbox
labels:
- person
- car
- bicycleConfiguration Options
| Field | Type | Default | Description |
|---|---|---|---|
name | string | Required | Unique identifier for the annotation |
description | string | Required | Instructions shown to annotators |
annotation_type | string | Required | Must be "image_annotation" |
tools | list | Required | Enabled annotation tools (bbox, polygon, freeform, landmark, fill, eraser, brush) |
labels | list | Required | Category labels for annotations |
zoom_enabled | boolean | true | Enable zoom controls |
pan_enabled | boolean | true | Enable drag navigation |
min_annotations | integer | 0 | Minimum required annotations |
max_annotations | integer | null | Maximum allowed annotations (null = unlimited) |
freeform_brush_size | integer | 5 | Brush size for freeform drawing |
freeform_simplify | float | 2.0 | Path simplification factor |
Label Configuration
Labels can be simple strings or detailed objects:
# Simple labels (auto-colored)
labels:
- person
- car
- tree
# Detailed labels with custom colors and shortcuts
labels:
- name: "person"
color: "#FF6B6B"
key_value: "1"
- name: "car"
color: "#4ECDC4"
key_value: "2"
- name: "bicycle"
color: "#45B7D1"
key_value: "3"Examples
Object Detection (Bounding Boxes)
annotation_schemes:
- name: "detection"
description: "Draw bounding boxes around all vehicles"
annotation_type: "image_annotation"
tools:
- bbox
labels:
- name: "car"
color: "#3B82F6"
key_value: "1"
- name: "truck"
color: "#10B981"
key_value: "2"
- name: "motorcycle"
color: "#F59E0B"
key_value: "3"
min_annotations: 1
zoom_enabled: trueInstance Segmentation (Polygons)
annotation_schemes:
- name: "segmentation"
description: "Draw polygons around each object"
annotation_type: "image_annotation"
tools:
- polygon
labels:
- name: "building"
color: "#8B5CF6"
- name: "road"
color: "#64748B"
- name: "vegetation"
color: "#22C55E"
zoom_enabled: true
pan_enabled: trueKeypoint Annotation (Landmarks)
annotation_schemes:
- name: "facial_landmarks"
description: "Mark facial keypoints"
annotation_type: "image_annotation"
tools:
- landmark
labels:
- name: "left_eye"
color: "#3B82F6"
- name: "right_eye"
color: "#3B82F6"
- name: "nose"
color: "#10B981"
- name: "left_mouth"
color: "#F59E0B"
- name: "right_mouth"
color: "#F59E0B"Multiple Tools
annotation_schemes:
- name: "mixed_annotation"
description: "Use boxes for objects and polygons for regions"
annotation_type: "image_annotation"
tools:
- bbox
- polygon
labels:
- name: "object"
color: "#3B82F6"
- name: "region"
color: "#10B981"Keyboard Shortcuts
| Key | Action |
|---|---|
b | Activate bounding box tool |
p | Activate polygon tool |
f | Activate freeform tool |
l | Activate landmark tool |
1-9 | Select label |
Delete | Remove selected annotation |
Ctrl+Z | Undo |
Ctrl+Y | Redo |
+ / - | Zoom in/out |
Data Format
Input Data
Your data file should include image paths or URLs:
[
{
"id": "img_001",
"image_url": "https://example.com/images/photo1.jpg"
},
{
"id": "img_002",
"image_url": "/data/images/photo2.png"
}
]Configure the image field in your config:
item_properties:
id_key: id
text_key: image_urlOutput Format
Annotations include geometry data for each annotation:
{
"id": "img_001",
"annotations": {
"objects": [
{
"id": "ann_1",
"type": "bbox",
"label": "car",
"geometry": {
"x": 100,
"y": 150,
"width": 200,
"height": 100
}
},
{
"id": "ann_2",
"type": "polygon",
"label": "building",
"geometry": {
"points": [
[50, 50],
[150, 50],
[150, 200],
[50, 200]
]
}
}
]
}
}Supported Image Formats
- JPEG / JPG
- PNG
- GIF
- WebP
Segmentation Masks
New in v2.2.0
The fill, eraser, and brush tools enable pixel-level segmentation mask annotation. These tools are ideal for semantic segmentation tasks where precise region boundaries are needed.
annotation_schemes:
- name: "segmentation"
description: "Paint segmentation masks"
annotation_type: "image_annotation"
tools:
- fill
- eraser
- brush
labels:
- name: "foreground"
color: "#3B82F6"
- name: "background"
color: "#6B7280"
freeform_brush_size: 10| Key | Action |
|---|---|
i | Activate fill tool |
e | Activate eraser tool |
r | Activate brush tool |
PDF/Document Bounding Boxes
New in v2.2.0
Draw bounding boxes on PDF pages and document images. When combined with the pdf display type in instance_display, annotators can draw boxes on individual pages of PDF documents.
instance_display:
fields:
- key: pdf_url
type: pdf
annotation_schemes:
- name: "document_regions"
description: "Draw boxes around figures and tables"
annotation_type: "image_annotation"
tools:
- bbox
labels:
- name: "figure"
color: "#3B82F6"
- name: "table"
color: "#10B981"
- name: "equation"
color: "#F59E0B"Best Practices
- Use appropriate tools - Bounding boxes for quick detection, polygons for precise boundaries, fill/brush for segmentation
- Define clear labels - Use distinct, non-overlapping categories
- Set annotation limits - Use
min_annotationsto ensure completeness - Enable zoom - Essential for detailed annotations on high-resolution images
- Use keyboard shortcuts - Speeds up annotation significantly
- Provide label colors - Makes it easier to distinguish annotations visually