• Stars
    star
    343
  • Rank 122,668 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web application for image labeling and segmentation

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.

Labeling Demo

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:

yarn install
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:

env PORT=3000 API_PORT=3001 yarn start

Build For Production

Build the client app:

cd client && yarn run build && cd ..

Now you can run the server app in prod mode serving the client build:

env PORT=80 NODE_ENV=production node server/src/index.js

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 to database.sqlite in the server folder
  • ADMIN_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/
mkdir ~/containersmnt/db/
mkdir ~/containersmnt/uploads/

Now build the container:

docker build -t imslavko/image-labeling-tool .

Run attaching the mounts:

docker run -p 5000:3000 -u $(id -u):$(id -g) -v ~/containersmnt/uploads:/uploads -v ~/containersmnt/db:/db -d imslavko/image-labeling-tool

Access the site at localhost:5000.

Run with docker-compose

  • Checkout the docker-compose.yml for detailed configuration.
  • Need to set & export environment variable CURRENT_UID before running.
# if it needs to build the docker image,
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.

More Repositories

1

meteor-rethinkdb

RethinkDB integration for Meteor
JavaScript
302
star
2

tern-meteor

Autocompletion plugin for Meteor 1.0 (extending TernJS)
JavaScript
284
star
3

tern-meteor-sublime

Meteor Framework autocompletion for Sublime
Python
246
star
4

vimrc

Meteor/Web development centric vim config
Vim Script
83
star
5

meteor-gmail

Real-time driver for GMail.
JavaScript
55
star
6

6.033-systems-engineering

notes from 6.033: watching lectures on OCW, doing assignments, reading papers, etc
44
star
7

diff.js

diff algorithm implemented in JavaScript
JavaScript
39
star
8

meteor-rethinkdb-demo

an example app
JavaScript
16
star
9

blaze-tools

lol wut
JavaScript
15
star
10

talk-player

JavaScript
13
star
11

d3-meteor-basic

an example
JavaScript
11
star
12

meteor-gmail-query-parser

GMail query syntax parser
JavaScript
11
star
13

typescript-types-script

for the lolz compiler to perform arbitrary computation in TS type system
Haskell
9
star
14

zbt-website

The new website for MIT ZBT
JavaScript
9
star
15

competitiveProgramming

Sources I generated over 4 years of competitive programming 2008-2012
C++
8
star
16

.spacemacs

My spacemacs file
Emacs Lisp
7
star
17

meteor-tracker-profiler

JavaScript
6
star
18

zbt-genealogy

JavaScript
6
star
19

meteor-mobile-icons-example

This example shows how to use icons and images with the new Meteor Mobile support
JavaScript
6
star
20

VKImage

Custom drawings for NSImage
Objective-C
4
star
21

emacs.d

Outdated, please refer to my spacemacs config
Emacs Lisp
4
star
22

reactive-array

Tracker-aware array implementation (WIP)
JavaScript
4
star
23

sqrt-skip-list-js

Doubly-linked list with insert/remove/random access/search optimization. NOT Skip List.
JavaScript
3
star
24

url-shortener

Url shortener for private use in small groups (teaching a class, etc).
JavaScript
3
star
25

meteor-ddp-analyzer

JavaScript
3
star
26

netflix-ko-vocab

A Chrome Extension that extends Netflix For Language Learners, showing better translations (and roots) for Korean subs
JavaScript
3
star
27

terminal-blog

Experimental meteor app
CSS
2
star
28

peliblog

Blog with Pelican
HTML
2
star
29

meteor-mongo-append-only

JavaScript
1
star
30

meteor-dashed-template-bug-repruduction

1
star
31

meteor-svg-barchart-example

JavaScript
1
star
32

topcoder

All my topcoder accepted solutions.
C++
1
star
33

malloc

One of the projects for the performance eng class, custom malloc with predictive bucket sizing, includes a visualizer in HTML/JS. We got an A for the class.
Python
1
star
34

pennapps-demo

Little application live-coded in 30 mins talk with introduction to Meteor.
CSS
1
star
35

slava.github.io

Future landing page
HTML
1
star
36

minilisp

For learning purposes. Don't laugh at me, I am learning!
C
1
star
37

org-asana

meh
JavaScript
1
star
38

desktop-email-server

JavaScript
1
star
39

klyrics

Klyrics - KPop music player with lyrics
JavaScript
1
star