Code Monkey home page Code Monkey logo

scalabel's Introduction


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

Demos

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 [email protected]: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 nodejs and npm.

      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. --watch tells webpack to monitor the code changes and recompile automatically.

      node_modules/.bin/npx webpack --watch --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 \
        node /opt/scalabel/app/dist/js/main.js --config /opt/scalabel/app/config/default_config.yml
    

    Otherwise

    node app/dist/js/main.js --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>
    

Usage

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

After ENTER is clicked, the project will be created and two dashboards will be generated. The links to the dashboards will appear in the project creation page.

DASHBOARD is the main dashboard for annotation progress and label downloading.

You can download the annotation results in BDD format from the EXPORT RESULTS button in the toolbar on the left.

VENDOR DASHBOARD is for the annotation vendor to check the list of tasks.

The task link will lead you to each task. In our example, the task is to label 2D bounding boxes with their categories and attributes.

Semi-automatic Annotation

Because the image list is in bdd data format, it can also contain labels within each frame. For example, you can upload an image list like examples/image_list_with_auto_labels.json. The labels in this email list are generated by an object detector. The labels will be automatically loaded in the tasks and shown to the annotator for adjustment.

You can use an off-shelf object detector such as Faster RCNN. If the results generated by the detector is in COCO format, you can use our script to convert the results to BDD format.

Another use of this function is to provide further adjustment for existing labels generated by Scalabel. You can directly upload the exported results from a previous annotation project and the labels will show up again in the new tasks.

Collaborative Labeling

Use the synchronization config

cp app/config/sync_config.yml data/config.yml

Now you can open multiple sessions for the same project, and they will automatically synchronize the data.

More Usage Info

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

scalabel's People

Contributors

aimalex avatar andrewawang avatar antoinebrl avatar bart-teerba avatar bhpfelix avatar bohanzhai avatar chengruizhe avatar chrisp19 avatar chsean avatar fyu avatar gycn avatar haofengac avatar lily1128 avatar mukilloganathan avatar noahjimenez5844 avatar qube5 avatar rrrromaaaa avatar seanremy avatar tianrengao avatar umangs94 avatar xinw1012 avatar xuanyuzhou98 avatar ychen1030 avatar zehao-sean-huang avatar zyddawn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.