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

drizzef/label-studio

Repository files navigation

GitHub Build Status codecov GitHub release Gitter

Label Studio

Label Studio is an open-source, configurable data annotation tool. Its purpose is to enable you to label different types of data using the most convenient interface with a standardized output format.

Label Studio

Quick "I want to Label Guides:"

Coming Soon:

  • Image line and points (screenshot)
  • Image polygons (screenshot)
  • Time series (screenshot)
  • Video (screenshot)

Table of Contents

Introduction

Label Studio consists of two parts. The backend is a simple flask server that is used to load the data and save the results. The frontend is a React + mobx-state-tree app that is backend agnostic and can be used separately, for example if you want to embed labeling into your applications.

Run Locally

In order to launch the server locally, launch

cd backend
bash start.sh

To run it locally we include the compiled version of the frontend part and an example implementation of the backend.

Follow this guide for advanced usage & custom configuration

Run with Docker

docker run -p 8200:8200 -t -i heartexlabs/label-studio -c config.json -l ../examples/chatbot_analysis/config.xml -i ../examples/chatbot_analysis/tasks.json -o output

Extend & Embed

To extend the functionality or embed the labeling inside your app, you need to be able to compile it from source.

This guide explains how to do that

Features

  • Extensive UI configuration options
  • Multiple datatypes supported: images, text, audios
  • Hotkeys & History
  • Converting to formats accepted by popular machine learning apps (check here for supported GitHub repositories)

Using Label Studio

Config Language

Editor configuration is based on XML-like tags. Internally tags are represented by a react view and mobx-state-tree model. Each config should start with a <View></View> tag. Here is an example of a simple text classification config:

<View>
  <Text name="text"></Text>
  <Choices name="choice" toName="text">
    <Choice value="relevant"></Choice>
    <Choice value="non relevant"></Choice>
  </Choices>
</View>

Note that we use tag names to connect tags between each other. Therefore tags that are used for labeling should include a name attribute. And every tag has its own set of parameters. Find more info in the related guide:

Tags Documentation

Creating your own tags is the suggested way to extend the app and tailor it to your specific needs.

Format

Input

Input should be JSON formatted. All the files that you want to label are expected to be hosted somewhere and provided as an URL to the JSON. The example backend server can process other formats, but it converts any format into JSON.

Output

The output is JSON. Overall structure is the following:

{
  "completions": [{
    "result": {
      "id": "yrSY-dipPI",
      "from_name": "sentiment",
      "to_name": "my_text",
      "type": "choices",
      "value": {
        "choices": ["Neutral"]
      }
    }
  }],
  "data": { "here are your task fields": "" }
}

Completion is an object with five mandatory fields:

  • id unique id of the labeled region
  • from_name name of the tag that was used to label region
  • to_name name of the tag that provided the region to be labeled
  • type type of the labeling/tag
  • value tag specific value that includes the labeling result details

Want to use labeled data in your machine learning project, but get stuck to writing your parser? No worry, we are already supporting multiple format converters, already adopted by popular machine learning libraries. Check it out!

Contributing

License

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

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 66.2%
  • Python 21.2%
  • HTML 8.0%
  • CSS 3.7%
  • Other 0.9%