Quantify computer vision performance in human terms
Switch branches/tags
Nothing to show
Clone or download
xanderchf and fyu [WIP] React 2D labeling interface (#598)
* working layout

* fix render

* fix dependencies

* eslint

* fix eslint

* fix flow types

* add version query
Latest commit 89c31ec Nov 5, 2018


Build Status Language grade: JavaScript Language grade: Python

Scalabel (pronounced "scalable") is a versatile and scalable tool that supports various kinds of annotations needed for training computer vision models, especially for driving environment. BDD100K is labeled with this tool.

scalabel interface


Try It Yourself

More installation and usage details can be find in our documentation. It also includes Windows setup.

  1. Check out the code

    git clone git@github.com:ucbdrive/scalabel.git
    cd scalabel
  2. Compile the code

    There are two alternative ways to get the compiled code

    1. Usage docker (recommended if you only need to run the code)

      Download from dockerhub

      docker pull scalabel/www

      or build the docker image yourself

      docker build . -t scalabel/www
    2. Compile the code yourself (recommended if you want to customize the source code)

      Install golang, nodejs and npm.

      Compile Go server code

      go get github.com/aws/aws-sdk-go github.com/mitchellh/mapstructure \ 
          gopkg.in/yaml.v2 github.com/satori/go.uuid
      go build -i -o ./bin/scalabel ./server/http

      Transpile or build Javascript code

      npm install
      node_modules/.bin/npx webpack --config webpack.config.js --mode=production

      Note If you are debugging the code, it is helpful to build the javascript code in development mode, in which you can trace the javascript source code in your browser debugger.

      node_modules/.bin/npx webpack --config webpack.config.js --mode=development
  3. Prepare data directory

    mkdir data
    cp app/config/default_config.yml data/config.yml
  4. Launch the server

    If using docker,

    docker run -it -v `pwd`/data:/opt/scalabel/data -p 8686:8686 scalabel/www \
        /opt/scalabel/bin/scalabel --config /opt/scalabel/data/config.yml


    ./bin/scalabel --config ./data/config.yml

    Then, the server can be accessed at http://localhost:8686. You can now check out example usage to create your first annotation project.

  5. Get labels

    The collected labels can be directly downloaded from the project dashboard. The data can be follow bdd data format. After installing the requirements and setting up the paths of the bdd data toolkit, you can visualize the labels by

    python3 -m bdd_data.show_labels.py -l <your_downloaded_label_path.json>


Create annotation projects

The entry point of creating an project is http://localhost:8686/create. The page looks like

Project Name is an arbitrary string. You can create multiple projects, but they cannot have duplicated names. You can choose Item Type and Label Type from the dropdown menus. An automatic page title will be provided based on the label settings. A project consists of multiple tasks. Task Size is the number of items (image or point cloud) in each task.

Item List is the list of images or point clouds to label. The format is either json or yaml with a list of frame objects in the bdd data format. The only required field for the item list is url. See examples/image_list.yml for an example of image list.

Category and Attributes are the list of tags giving to each label. Typical settings are shown in examples/categories.yml and examples/bbox_attributes.yml. We also support multi-level categories such as two and three levels. Scalabel also supports image tagging.

If you want to create an annotation project to label 2d bounding boxes, the setup will looks like

More Usage Info

Please go to documentation for detailed annotation instructions and advanced usages.