Annotation

Image (CV) annotation lives at /projects/{id}/annotate (annotate.html). Non-image modalities use the same URL with annotate_samples.html (text, tabular, audio, video, LLM).

Computer vision (visual)

Prerequisites

  1. At least one class on the project.

  2. At least one image (upload or import).

Project types

Type

Label tools

object_detection

Bounding boxes

instance_segmentation / semantic_segmentation

Polygons (SAM can produce polygons from point prompts)

classification

Whole-image class assignment

There is no pixel-mask brush yet — segmentation is polygon-based. Keypoints, OBB, OCR, and point cloud are not shipped.

Tools

Tool

Geometry

Typical use

Bounding box

{x, y, width, height} normalized

Object detection

Polygon

Point list normalized

Instance outlines / SAM refine

Classification

Whole-image class id

Image classification

Coordinates are normalized to the image (0–1), so labels stay valid if you resize later during version generation.

Workflow tips

  1. Select a class, then draw (or assign class for classification projects).

  2. Edit or delete existing annotations as needed.

  3. Use keyboard / UI navigation to move between images.

  4. Delete the current image from the annotator when cleaning the set.

  5. Re-run Label Assist carefully — YOLO assist clears previous source=yolo annotations on each image it processes before writing new ones. Manual annotations are kept.

  6. Optional: SAM point prompts → polygons (see SAM (interactive segmentation)); YOLO Label Assist (see Label Assist (YOLO)).

Annotation sources

Source

Meaning

manual

Drawn in the UI

yolo

Created by Label Assist

sam

Created by SAM point prompts

import

Loaded from YOLO labels on import

CV annotation API

GET    /api/images/{image_id}/annotations
POST   /api/images/{image_id}/annotations
PUT    /api/annotations/{annotation_id}
DELETE /api/annotations/{annotation_id}

Example create body:

{
  "class_id": 1,
  "annotation_type": "bbox",
  "geometry": {"x": 0.1, "y": 0.2, "width": 0.3, "height": 0.4},
  "confidence": null,
  "source": "manual"
}

annotation_type: bbox, polygon, classification (mask exists in the schema but is unused in the UI).

Upload images

UI: /projects/{id}/upload — multi-file upload.

API:

POST /api/projects/{project_id}/images
Content-Type: multipart/form-data
files: <one or more images>

Supported extensions: .jpg, .jpeg, .png, .bmp, .webp, .tif, .tiff.

Files are stored under {project_location}/images/ with UUID filenames.

Delete images

  • Single: DELETE /api/images/{image_id}

  • Bulk: select mode on the project grid → POST /api/images/bulk-delete

Non-image modalities

For text, tabular, audio, video, and LLM projects:

  1. Create the matching project type.

  2. Import CSV/JSONL (see Text and tabular modalities and Audio, video, and LLM datasets).

  3. Open Annotate — the sample UI labels spans, values, transcripts, or LLM fields.

  4. Use sample APIs under /api/projects/{id}/samples and /api/samples/{id}.

In-process training is deepest for CV (+ sklearn for text/tabular). Audio/video/LLM emphasize curate → package for external trainers.