Skip to content

Repository files navigation

LightlyStudio logo

Curate, Annotate, and Manage Your Data in LightlyStudio.

PyPI python PyPI version License Docs Open In Colab


LightlyStudio: an image grid with annotations next to an embedding plot, a cluster selection filtering the grid, and the annotation editor open on one image

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

Workflows

Image Datasets
Image Dataset
Video Dataset
Video Dataset
Annotate
Annotation
Curate
Curation
Plugins
Plugins
Model Evaluation
Model Evaluation

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:

A selection of features

Set up a dataset

Work with your data

🐍 Python Interface

Everything in LightlyStudio is scriptable: index datasets, query and edit samples, sample subsets, and export the result. See the API reference.

🤝 Contribute

We welcome contributions! Please check our issues page for current tasks and improvements, or propose new issues yourself.

💬 Contact

Website
Discord
GitHub
X
YouTube
LinkedIn

About

LightlyStudio - The Unified Data Platform for Multimodal ML

Topics

Resources

Contributing

Stars

877 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages