Annotation Guide#

Multimodal 2D/3D Annotation for Detection Datasets

FiftyOne’s in-app annotation lets you create and edit labels directly in the App—including 2D bounding boxes on images and 3D cuboids on point clouds. This guide offers two tracks depending on your goals.

Choose Your Track#

Track

Level

Time

Best For

Quickstart

Beginner

15-20 min

“Does this work for me?” Try multimodal annotation immediately.

Full Loop

Intermediate

90-120 min

Build a complete curate → annotate → train → evaluate pipeline.

Note

These tracks are independent. Quickstart uses the zoo dataset directly (ephemeral), Full Loop clones to annotation_tutorial (persistent). You can do both without conflict.

Quickstart Track#

Level: Beginner | Time: 15-20 minutes

Jump straight to multimodal annotation:

If in-app annotation fits your needs, check out the Full Loop for production workflows.

Full Loop Track#

Level: Intermediate | Time: 90-120 minutes

A complete data-centric detection workflow with multimodal data. You should be comfortable with:

  • Basic Python and Jupyter notebooks

  • Train/val/test split concepts

  • What embeddings represent (conceptually)

  • Running a training loop (we use YOLOv8)

Steps:

What You’ll Learn#

Quickstart Track:

  • What grouped datasets are (synchronized multi-sensor data)

  • Switching between 2D images and 3D point clouds

  • Creating detection bounding boxes in Annotate mode

  • Exploring 3D point cloud data

Full Loop Track (adds):

  • Group-level split discipline: frozen test set, golden QA, active pool

  • Diversity-based sample selection for efficient labeling

  • 2D annotation on camera images with QA workflows

  • 3D cuboid annotation on point clouds

  • Camera projections: seeing 3D labels on 2D images

  • Failure analysis to drive the next labeling batch

  • Iterative improvement without test set contamination

When to Use In-App Annotation#

Ideal for:

  • Rapid prototyping and schema iteration

  • Model-in-the-loop correction workflows

  • QA passes and targeted refinement

  • Single annotator or small team projects

  • Multimodal data with synchronized 2D/3D views

  • Tight feedback loops between labeling and evaluation

For large-scale annotation projects, FiftyOne’s annotation API lets you orchestrate external annotation services while keeping FiftyOne as your central data hub for curation, QA, and model evaluation.

Dataset#

Both tracks use the quickstart-groups dataset—a subset of KITTI with:

  • Left/right camera images (2D)

  • Point cloud data (3D LiDAR)

  • 200 scenes with synchronized multi-sensor data

The dataset downloads automatically when you run the notebooks.

import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset("quickstart-groups")
session = fo.launch_app(dataset)

Ready to Begin?#

Click Next to start with the Quickstart track, or jump directly to Step 2: Setup Data Splits for the Full Loop.