Image Labeling Tool
This web app allows you to label images, draw bounding boxes, shapes, collect information in forms with dropdowns, checkboxes and inputs.
The labeling UI provides a lot of features for drawing polygon shapes, editing them with assisted tracing with auto-tracing based on edges or an external ML model.
Use it when you need to segment and label multiple images, either yourself or by a group. This tool makes it easy to gather and later export the data in a format compatible with LabelMe. You can use this tool as an alternative to self-hosted tools like LabelMe, js-segment-annotator, etc or hosted services like LabelBox.
Demo of the labeling interface with all data served statically (no persistence, reverts on refresh).
Screenshots
Bounding box labeling:
Segmentation with polygons:
Automatic tracing:
Assisted segmentation with Tensor Flow Serving:
Project configuration and custom labeling UI:
Development
Install npm packages for client, server and the top-level folder:
cd server && yarn install && cd ..
cd client && yarn install && cd ..
The server will run migrations on the first run if the database file doesn't exist already.
Run in the development mode:
Build For Production
Build the client app:
Now you can run the server app in prod mode serving the client build:
Config
The following environment variables can be tweaked:
PORT- the part the app is served on (dev, prod)API_PORT- to differentiate the port for the API to run on (should be only used in dev)UPLOADS_PATH- absolute path where the app stores uploaded images, defaults to server's folder 'uploads'DATABASE_FILE_PATH- absolute path of the file where the app stores the SQLite data. Defaults todatabase.sqlitein the server folderADMIN_PASSWORD- sets a simple password on all non-labeler actions (stored in a hased form).
Run in Docker
The default Dockerfile points to /uploads and /db/db.sqlite for persisted data, make sure to prepare those in advance to be mounted over. Here is an example mounting a local host directory:
mkdir ~/containersmnt/db/
mkdir ~/containersmnt/uploads/
Now build the container:
Run attaching the mounts:
Access the site at localhost:5000.
Run with docker-compose
- Checkout the
docker-compose.ymlfor detailed configuration. - Need to set & export environment variable CURRENT_UID before running.
CURRENT_UID=$(id -u):$(id -g) docker-compose up -d --build
# if it only needs to run,
CURRENT_UID=$(id -u):$(id -g) docker-compose up -d
Project Support and Development
This project has been developed as part of my internship at the NCSOFT Vision AI Lab in the beginning of 2019.