{"id":13582928,"url":"https://github.com/Slava/label-tool","last_synced_at":"2025-04-06T18:31:42.857Z","repository":{"id":41797100,"uuid":"176204889","full_name":"Slava/label-tool","owner":"Slava","description":"Web application for image labeling and segmentation","archived":false,"fork":false,"pushed_at":"2022-12-09T16:19:39.000Z","size":10864,"stargazers_count":352,"open_issues_count":20,"forks_count":74,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-05T23:41:24.483Z","etag":null,"topics":["boundingbox","computer-vision","computer-vision-tools","data-labeling","image-annotation","image-label","image-labeling","image-labeling-tool","labelme","machine-learning","segmentation","sematic-segmentation","training-data"],"latest_commit_sha":null,"homepage":"http://slv.io/label-tool/demo/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Slava.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-18T04:33:20.000Z","updated_at":"2024-11-04T03:25:47.000Z","dependencies_parsed_at":"2023-01-25T22:31:45.844Z","dependency_job_id":null,"html_url":"https://github.com/Slava/label-tool","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slava%2Flabel-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slava%2Flabel-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slava%2Flabel-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slava%2Flabel-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Slava","download_url":"https://codeload.github.com/Slava/label-tool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247530921,"owners_count":20953872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boundingbox","computer-vision","computer-vision-tools","data-labeling","image-annotation","image-label","image-labeling","image-labeling-tool","labelme","machine-learning","segmentation","sematic-segmentation","training-data"],"created_at":"2024-08-01T15:03:08.067Z","updated_at":"2025-04-06T18:31:41.621Z","avatar_url":"https://github.com/Slava.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Image Labeling Tool\n\nThis web app allows you to label images, draw bounding boxes, shapes, collect information in forms with dropdowns, checkboxes and inputs.\n\nThe 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.\n\nUse 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](https://github.com/wkentaro/labelme). You can use this tool as an alternative to self-hosted tools like [LabelMe](https://github.com/wkentaro/labelme), [js-segment-annotator](https://github.com/kyamagu/js-segment-annotator), etc or hosted services like [LabelBox](https://www.labelbox.com/).\n\n## [Labeling Demo](http://slv.io/label-tool/demo/)\n\nDemo of the labeling interface with all data served statically (no persistence, reverts on refresh).\n\n## Screenshots\n\nBounding box labeling:\n\n![](./client/src/help/tutorial/bbox-labeling.gif)\n\nSegmentation with polygons:\n\n![](./client/src/help/tutorial/polygon-labeling.gif)\n\nAutomatic tracing:\n\n![](./client/src/help/tutorial/auto-tracing.gif)\n\nAssisted segmentation with Tensor Flow Serving:\n\n![](./client/src/help/tutorial/ml-semantic-segmentation.gif)\n\nProject configuration and custom labeling UI:\n\n![](./client/src/help/tutorial/project-page.png)\n\n## Development\n\nInstall npm packages for client, server and the top-level folder:\n\n```bash\nyarn install\ncd server \u0026\u0026 yarn install \u0026\u0026 cd ..\ncd client \u0026\u0026 yarn install \u0026\u0026 cd ..\n```\n\nThe server will run migrations on the first run if the database file doesn't exist already.\n\nRun in the development mode:\n\n```bash\nenv PORT=3000 API_PORT=3001 yarn start\n```\n\n## Build For Production\n\nBuild the client app:\n\n```bash\ncd client \u0026\u0026 yarn run build \u0026\u0026 cd ..\n```\n\nNow you can run the server app in prod mode serving the client build:\n\n```bash\nenv PORT=80 NODE_ENV=production node server/src/index.js\n```\n\n## Config\n\nThe following environment variables can be tweaked:\n\n- `PORT` - the part the app is served on (dev, prod)\n- `API_PORT` - to differentiate the port for the API to run on (should be only used in dev)\n- `UPLOADS_PATH` - absolute path where the app stores uploaded images, defaults to server's folder 'uploads'\n- `DATABASE_FILE_PATH` - absolute path of the file where the app stores the SQLite data. Defaults to `database.sqlite` in the server folder\n- `ADMIN_PASSWORD` - sets a simple password on all non-labeler actions (stored in a hased form).\n\n## Run in Docker\n\nThe 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:\n\n```bash\nmkdir ~/containersmnt/\nmkdir ~/containersmnt/db/\nmkdir ~/containersmnt/uploads/\n```\n\nNow build the container:\n\n```bash\ndocker build -t imslavko/image-labeling-tool .\n```\n\nRun attaching the mounts:\n\n```bash\ndocker run -p 5000:3000 -u $(id -u):$(id -g) -v ~/containersmnt/uploads:/uploads -v ~/containersmnt/db:/db -d imslavko/image-labeling-tool\n```\n\nAccess the site at `localhost:5000`.\n\n### Run with docker-compose\n\n- Checkout the `docker-compose.yml` for detailed configuration.\n- Need to set \u0026 export environment variable CURRENT_UID before running.\n\n```bash\n# if it needs to build the docker image,\nCURRENT_UID=$(id -u):$(id -g) docker-compose up -d --build\n\n# if it only needs to run,\nCURRENT_UID=$(id -u):$(id -g) docker-compose up -d\n```\n\n## Project Support and Development\n\nThis project has been developed as part of my internship at the [NCSOFT](http://global.ncsoft.com/global/) Vision AI Lab in the beginning of 2019.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSlava%2Flabel-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSlava%2Flabel-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSlava%2Flabel-tool/lists"}