Curate, Annotate, and Manage Your Data in LightlyStudio.
The embedding plot shows how images relate to each other, with a preview on hover. A lasso selection filters the grid to one cluster. A search for "coffee" finds a match, and the annotation editor opens to label it.
⚡ Works smoothly with 2M+ images, embeddings included, on a single MacBook (M1, 16GB RAM).
🚀 Try it in 60 seconds
LightlyStudio runs on your computer and opens in your browser. The following command downloads an example dataset with images, annotations, and evaluation results — no account needed.
pip install lightly-studio
lightly-studio quickstart
- Local only: your images and datasets never leave your machine.
- Your own images: one Python call indexes them, then start the server. See the Image Dataset guide.
- Your own videos: see the Video Dataset guide.
- No install: open the quickstart in Colab
- A guided walkthrough: read the Tutorials below. Curate a Traffic CCTV Dataset for YOLO Training goes from raw images to a trained model.
- Runs on Python 3.9 to 3.14 on Windows, Linux, and macOS. Use Python 3.10 for plugin compatibility, for example SAM autolabeling.
Workflows
Example workflows
LightlyStudio is a browser app that runs on your own computer. Load your data into the local database with a Python script, then start the server and explore it in your browser.
Index a COCO dataset
Create a file named example_coco.py:
import lightly_studio as ls
# Download the example dataset (will be skipped if it already exists)
dataset_path = ls.utils.download_example_dataset(download_dir="dataset_examples")
dataset = ls.ImageDataset.load_or_create()
dataset.add_samples_from_coco(
annotations_json=f"{dataset_path}/coco_subset_128_images/instances_train2017.json",
images_path=f"{dataset_path}/coco_subset_128_images/images",
)
# Start the UI server on localhost:8001.
# Pass `host` and `port` parameters to customize it.
# Reopen the app later with `lightly-studio gui` instead of re-running this script.
ls.start_gui()
Run python example_coco.py and open the printed URL to inspect images with their annotations.
To import COCO segmentation masks instead of object detections, pass
annotation_type=ls.AnnotationType.SEGMENTATION_MASK to add_samples_from_coco().
Index a folder of images
Create a file named example_image.py:
import lightly_studio as ls
# Download the example dataset (will be skipped if it already exists)
dataset_path = ls.utils.download_example_dataset(download_dir="dataset_examples")
# Index the images, create embeddings, and store everything in the local database.
dataset = ls.ImageDataset.load_or_create()
dataset.add_images_from_path(
path=f"{dataset_path}/coco_subset_128_images/images",
)
# Start the UI server on localhost:8001.
# Pass `host` and `port` parameters to customize it.
ls.start_gui()
Run python example_image.py and open the printed URL in your browser.
Other starting points: YOLO datasets, video folders, custom annotations, model evaluation, notebooks, and more in the docs.
📚 Tutorials
Step-by-step guides covering complete workflows — from raw, unlabeled data to a trained and evaluated model:
- Curate a Traffic CCTV Dataset for YOLO Training: Explore embeddings, remove near-duplicates, auto-label with a detection plugin, and review annotations before training.
- Evaluate YOLO26 on Your Dataset with LightlyStudio: Compare predictions against ground truth, use the confusion matrix and embeddings to find failure patterns, and export issues for relabeling.
A selection of features
Set up a dataset
- Image datasets — index folders, COCO, and YOLO data
- Video datasets — index videos and work with frames
- [Cloud storage](https://docs.lightly.ai/studio/e
