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.
- Overview video
- 2D Bounding box
- 2D Segmentation
- 2D Bounding box tracking
- 2D Segmentation tracking
- 2D Lane marking
- 3D Bounding box
- 3D Bounding box tracking
Try It Yourself
More installation and usage details can be find in our documentation. It also includes Windows setup.
Check out the code
git clone email@example.com:ucbdrive/scalabel.git cd scalabel
Compile the code
There are two alternative ways to get the compiled code
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
Compile the code yourself (recommended if you want to customize the source code)
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
npm install node_modules/.bin/npx webpack --config webpack.config.js --mode=production
node_modules/.bin/npx webpack --config webpack.config.js --mode=development
Prepare data directory
mkdir data cp app/config/default_config.yml data/config.yml
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.
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.
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.