Skip to content

Label Studio is a multi-type data labeling and annotation tool with standardized output format

License

Notifications You must be signed in to change notification settings

wxthon/label-studio

Repository files navigation

Label Studio · GitHub Build Status codecov GitHub release · ☀️

WebsiteDocsTwitterJoin Slack Community


NEW Release 0.6.0: Nested & Per-Region Labeling, Filtering & Cueing the active labels, read the release notes.

Label Studio is a swiss army knife of data labeling and annotation tools ✌️

Try it now in a running app and check out the introductory post.

Its purpose is to help you label different types of data using a simple interface with a standardized output format. You're dealing with the custom dataset and thinking about creating your tool? Don't - using Label Studio, you can save time and create a custom tool and interface in minutes.


Label Studio

Summary

Quick Start

# Requires >=Python3.5
pip install label-studio

# Initialize the project in labeling_project path
label-studio init labeling_project

# Start the server at http://localhost:8080
label-studio start labeling_project

Install on Windows

For running on Windows, the following wheel packages are needed to be manually downloaded from Gohlke builds, by ensuring the right python version:

Install Label Studio:

# Upgrade pip 
pip install -U pip

# Assuming you are running Win64 with Python 3.8, install packages downloaded form Gohlke:
pip install lxml‑4.5.0‑cp38‑cp38‑win_amd64.whl

# Install label studio
pip install label-studio

Local development

Running the latest Label Studio version locally without installing package from pip could be done by:

# Install all package dependencies
pip install -e .
# Start the server at http://localhost:8080
python label-studio/server.py start labeling_project --init

Run docker

You can also start serving at http://localhost:8080 by using docker:

docker run --rm -p 8080:8080 -v `pwd`/my_project:/label-studio/my_project --name label-studio heartexlabs/label-studio:latest label-studio start my_project --init

By default, it starts blank project in ./my_project directory.

Note: if ./my_project folder exists, an exception will be thrown. Please delete this folder or use --force option.

You can override the default startup command by appending:

docker run -p 8080:8080 -v `pwd`/my_project:/label-studio/my_project --name label-studio heartexlabs/label-studio:latest label-studio start my_project --init --force --template image_mixedlabel

If you want to build a local image, run:

docker build -t heartexlabs/label-studio:latest .

Using docker-compose

You can also start serving at http://localhost:8080 using docker-compose.

First time to run the app

INIT_COMMAND='--init' docker-compose up -d

Run the app with existing project data

docker-compose up -d

Run the app reseting project data

INIT_COMMAND='--init --force' docker-compose up -d

Or you can just use .env file instead of INIT_COMMAND='...' adding this line:

INIT_COMMAND=--init --force

One Click Deploy

Features 🌟

  • Simple: Crafted with minimal UI design. A simple design is the best design.
  • Configurable: Using high-level jsx tags config, you can fully customize the visual interface for your data. It feels like building a custom labeling tool for your specific needs. And it's fast to do.
  • Collaborative Annotations: Label the same task by two or more people and compare the results.
  • Multiple Data Types: Label Images, Audios, Texts, HTMLs, Pairwise types with different labeling scenarios that you define yourself.
  • Import Formats: JSON, CSV, TSV, RAR and ZIP archives
  • Mobile-Friendly: Works on devices of different sizes.
  • Embeddable: It's an NPM package too. You can include it in your projects.
  • Machine Learning: Integration support for machine learning. Visualize and compare predictions from different models. Use the best ones for pre-labeling.
  • Stylable: Configure the visual appearance to match your company brand, distribute the labeling tasks as a part of your product.

Use Cases

The list of supported use cases for data annotation. Please contribute your own configs and feel free to extend the base types to support more scenarios. Note that it's not an extensive list and has only major scenarios.

Task Description
Image
Classification Put images into categories
Object Detection Detect objects in an image using a bounding box or polygons
Semantic Segmentation Detect for each pixel the object category it belongs to
Pose Estimation Mark positions of a person’s joints
Text
Classification Put texts into categories
Summarization Create a summary that represents the most relevant information within the original content
HTML Tagging Annotate things like resumes, research, legal papers and excel sheet converted to HTML
Audio
Classification Put audios into categories
Speaker Diarisation partitioning an input audio stream into homogeneous segments according to the speaker identity
Emotion Recognition Tag and identifying emotion from the audio
Transcription Write down verbal communication in text
Video
Classification Put videos into categories
Comparison
Pairwise Comparing entities in pairs to judge which of each entity is preferred
Ranking Sort items in the list according to some property

Machine Learning Integration

You can easily connect your favorite machine learning framework with Label Studio by using Heartex SDK.

That gives you the opportunities to use:

  • Pre-labeling: Use model predictions for pre-labeling
  • Online Learning: Simultaneously update (retrain) your model while new annotations are coming
  • Active Learning: Perform labeling in active learning mode
  • Prediction Service: Instantly create running production-ready prediction service

There is a quick example tutorial on how to do that with simple image classification:

  1. Clone pyheartex, and start serving example image classifier ML backend at http://localhost:9090

    git clone https://github.com/heartexlabs/pyheartex.git
    cd pyheartex/examples/docker
    docker-compose up -d
  2. Run Label Studio project specifying ML backend URLs:

    label-studio start imgcls --init --template image_classification \
    --ml-backend-url http://localhost:9090 --ml-backend-name my_model

Once you're satisfied with pre-labeling results, you can immediately send prediction requests via REST API:

curl -X POST -H 'Content-Type: application/json' -d '{"image_url": "https://go.heartex.net/static/samples/sample.jpg"}' http://localhost:8080/predict

Feel free to play around any other models & frameworks apart from image classifiers! (see instructions here)

Label Studio for Teams, Startups, and Enterprises 🏢

Label Studio for Teams is our enterprise edition (cloud & on-prem), that includes a data manager, high-quality baseline models, active learning, collaborators support, and more. Please visit the website to learn more.

Ecosystem

Project Description
label-studio Server part, distributed as a pip package
label-studio-frontend Frontend part, written in JavaScript and React, can be embedded into your application
label-studio-converter Encode labels into the format of your favorite machine learning library
label-studio-transformers Transformers library connected and configured for use with label studio

License

This software is licensed under the Apache 2.0 LICENSE © Heartex. 2020

About

Label Studio is a multi-type data labeling and annotation tool with standardized output format

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 55.7%
  • Python 28.8%
  • HTML 11.4%
  • CSS 3.3%
  • Other 0.8%