Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update #5

Open
wants to merge 193 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
6f9f28b
Case insensitive extensions match (#70)
pwspania Jan 23, 2019
1a2da49
Default creator/owner to 'system' (#71)
matt-deboer Jan 24, 2019
3f3bf2e
Fixed processing message
jsbroks Jan 25, 2019
ef2ab23
Git mount inside docker image
jsbroks Jan 26, 2019
b7e29ca
Remove hashed password, closes #73
jsbroks Jan 26, 2019
c9265d2
Fix create annotation selection
jsbroks Jan 26, 2019
4b4c5cb
Dockerhub image independent of repo
jsbroks Jan 26, 2019
c4a7585
Switched prod and dev docker-compose files
jsbroks Jan 26, 2019
12675e7
Update Dockerfile
jsbroks Jan 26, 2019
45efaad
HTML Formatting (#77)
jsbroks Jan 27, 2019
14eb329
Fixed inverted hotkeys
jsbroks Jan 27, 2019
681b3f6
Select tool update (#87, #81)
jsbroks Jan 29, 2019
460129b
PaperJS coordinate correction (#89)
jsbroks Jan 29, 2019
f051252
Fixed image loading
jsbroks Jan 30, 2019
75b2f19
Added image frame text
jsbroks Jan 30, 2019
16832d2
Fixed size order
jsbroks Jan 30, 2019
cc72a8e
Show filename on hover (#90)
jsbroks Jan 31, 2019
6a1cdce
Ignore segments with only 2 points (#96)
matt-deboer Jan 31, 2019
05061ae
Add category & annotation id to tooltips (#97)
matt-deboer Feb 1, 2019
45053a7
Create sidebar for images view
jsbroks Feb 1, 2019
83ae08b
COCO importer for imports in background with progress updates (#91)
matt-deboer Feb 3, 2019
6a4c4fd
Realtime support with Sockets-io (#102)
jsbroks Feb 9, 2019
ac894e0
Production stable tag
jsbroks Feb 9, 2019
761fe33
Hover over annotation highlights paperjs object, closes #107
jsbroks Feb 9, 2019
e0a3f2f
Filtering options, closes #7
jsbroks Feb 9, 2019
f479768
Created category model, closes #76
jsbroks Feb 9, 2019
1ddb96a
Support for user preferences
jsbroks Feb 10, 2019
861414e
Socket notification delay
jsbroks Feb 10, 2019
57a9266
Task scroll from url query
jsbroks Feb 13, 2019
f423c81
Fixed linit
jsbroks Feb 13, 2019
fa1ea6a
Button tasks progress bars
jsbroks Feb 14, 2019
06c8c8d
Full delete removes image from disk
jsbroks Feb 14, 2019
04298bf
Image lazy loading, closes #117
jsbroks Feb 16, 2019
6532752
Select last editor tool on new annotation, closes #85
jsbroks Feb 16, 2019
391c558
Remove vue test
jsbroks Feb 16, 2019
dd86769
Fixed importing annotations and categories not found (#121)
skletz Feb 20, 2019
de62586
Update README.md
jsbroks Feb 22, 2019
c290422
Added INTVO as a backer :star2:
jsbroks Feb 22, 2019
9cfb516
Fixed import COCO dataset categories id
jsbroks Feb 22, 2019
91f2e9c
Keypoints (#122)
jsbroks Feb 23, 2019
4846de2
Update README.md
jsbroks Feb 23, 2019
aee0dbd
FIxed importing of coco formatted keypoints
jsbroks Feb 23, 2019
af33a53
Fixed coco dataset export
jsbroks Feb 23, 2019
7615015
Double click annotations to open settings modal, closes #100
jsbroks Feb 24, 2019
798b5f9
Changed key point default visibility
jsbroks Feb 24, 2019
5880d64
COCO import bug fixes
jsbroks Feb 24, 2019
ed19e82
Fixed importing coco bugs
jsbroks Feb 24, 2019
74d1ad7
Scaling keypoints
jsbroks Feb 24, 2019
d2e1821
Keypoint hover text
jsbroks Feb 24, 2019
84bee45
Fixed keypoint hover bug
jsbroks Feb 24, 2019
7a239e2
Changed default delete to backspace
jsbroks Feb 24, 2019
93f7b27
Fixed user permissions, closes #125
jsbroks Feb 26, 2019
d7ac63e
Fixed dataset share permission
jsbroks Feb 26, 2019
997a5f1
Fixed dataset delete error
jsbroks Feb 26, 2019
b0c9359
Text Correction (#128)
trinath503 Feb 28, 2019
5f12784
Fixed missing annotations, closes #127
jsbroks Mar 1, 2019
910d511
Updated image coco export
jsbroks Mar 1, 2019
b573272
Removed users permission to edit categories, closes #129
jsbroks Mar 5, 2019
568d2ff
Remove users ability to delete category
jsbroks Mar 5, 2019
f49042a
Fixed auth disabled unable to delete
jsbroks Mar 7, 2019
69ee0f8
COCO import fix for missing thumbnails (#131)
matt-deboer Mar 9, 2019
3cc0589
fixed typo (#133)
Mar 10, 2019
437d3e7
Fixed typos (#134)
Mar 11, 2019
bbfd6db
Update README.md
jsbroks Mar 12, 2019
458214c
Update Dockerfile (#141)
jsbroks Mar 13, 2019
1b8e1a7
Circular annotations with MaskRCNN (#137)
jsbroks Mar 15, 2019
38755fb
Change layer for copying client
jsbroks Mar 15, 2019
a41807d
Increased gunicorn timeout
jsbroks Mar 15, 2019
f482059
Cleaned up maskrcnn implementation
jsbroks Mar 16, 2019
f164b6c
DEXTR tool (#147)
jsbroks Mar 17, 2019
225e205
Updated features list
jsbroks Mar 17, 2019
f7b62ee
Fixed DEXTR apply annotation to wrong layer
jsbroks Mar 17, 2019
f236817
Delete routes.py
jsbroks Mar 18, 2019
efd0571
Thumbnail caching (#149)
AdanMora Mar 19, 2019
2d391b7
Ignore models
jsbroks Mar 19, 2019
d0c8787
Remove thumbnail test cases
jsbroks Mar 20, 2019
91d5e6e
Removed strokes for performance
jsbroks Mar 20, 2019
b35d4f1
Merge remote-tracking branch 'origin/master'
jsbroks Mar 20, 2019
66c7ce6
Hide .thumbnails directory, closes #155
jsbroks Mar 20, 2019
bec7368
Thumbnail not loading if empty, closes #154
jsbroks Mar 20, 2019
7624bdb
Typo fix (#157)
Mar 21, 2019
18c4b5a
No categories text (#160)
Mar 21, 2019
5029a67
Removed loading icon, closes #98
jsbroks Mar 21, 2019
ccf42e9
Removed paperjs grouping class (#151)
jsbroks Mar 22, 2019
ea10251
Fixed keypoints colors
jsbroks Mar 22, 2019
856a66a
Fix transparency, closes #161
jsbroks Mar 22, 2019
cceb7c7
Added image time tracking
jsbroks Mar 22, 2019
0dfeffe
User event logging
jsbroks Mar 22, 2019
98248ab
Added more logging
jsbroks Mar 23, 2019
48bd4d8
Created export COCO task
jsbroks Mar 24, 2019
0dd1ba8
Fixed scanning hidden directories
jsbroks Mar 24, 2019
933a63b
Fixed logging synax
jsbroks Mar 24, 2019
f12fb33
Update category names - issue #123 (#162)
skletz Mar 24, 2019
a8523eb
Fixed lint errors
jsbroks Mar 25, 2019
f28059b
In canvas annotator indicator, closes # 145
jsbroks Mar 25, 2019
4954c8b
Fixed user disconnect socket
jsbroks Mar 25, 2019
857f306
Fixed importing without segmentation
jsbroks Mar 27, 2019
6dfa621
Fixed keypoints scale on init
jsbroks Mar 27, 2019
779d113
Fixed keypoints color, scaling and selection
jsbroks Mar 27, 2019
181caec
Fixed annotating event
jsbroks Mar 27, 2019
43f7e21
Loading images from large datasets #152
jsbroks Mar 27, 2019
b83fd1d
Update README.md
jsbroks Mar 29, 2019
b5274e3
Fixed missing comma (#174)
satyajithj Apr 1, 2019
341aeba
Refactoring and adding events to backend (#173)
jsbroks Apr 4, 2019
e2fe385
Removed events from annotator post
jsbroks Apr 4, 2019
1df3eb9
Created environment docker image
jsbroks Apr 5, 2019
583f051
Added network
jsbroks Apr 5, 2019
919c8a0
Added os import
jsbroks Apr 5, 2019
d9e2632
Update datasets.py (#178)
AdanMora Apr 5, 2019
d3d05ed
Organized imports
jsbroks Apr 5, 2019
3d7d530
Typo (#179)
Apr 5, 2019
a85deb9
Remove unused imports
jsbroks Apr 5, 2019
5d8f99a
Added dataset tabs
jsbroks Apr 6, 2019
d7ef371
Fixed config import
jsbroks Apr 6, 2019
759ad88
Added basic stats
jsbroks Apr 7, 2019
968bdf7
Added time statistics
jsbroks Apr 7, 2019
a777ceb
Exports only COCO properties
jsbroks Apr 7, 2019
3911716
Created export model
jsbroks Apr 8, 2019
da1a97e
Corrected user model
jsbroks Apr 12, 2019
d205435
Export download
jsbroks Apr 13, 2019
95e5267
Export category selection
jsbroks Apr 13, 2019
55a5acc
Set annotations metadata to datasets
jsbroks Apr 13, 2019
8dd4ed5
Fix typo in dataset API (#192)
flo-dhalluin Apr 16, 2019
e5488ca
Dataset folder permissions (#189, #165)
trinath503 Apr 16, 2019
cf9f400
Delete __init__.pyc
jsbroks Apr 17, 2019
17eca04
Fixed default metadata not throwing error
jsbroks Apr 17, 2019
3d29d9b
Delete __init__.pyc
jsbroks Apr 17, 2019
7043ca5
Adding ordering option image view
jsbroks Apr 17, 2019
952a3d7
Simplified datasets folder creation, #193
jsbroks Apr 17, 2019
87bf407
Typo (#194)
Apr 21, 2019
a0b6869
Increase image performance for image query
jsbroks Apr 21, 2019
6f14d65
Reset metadata endpoint
jsbroks Apr 21, 2019
3e20ebf
Added reset metadata button
jsbroks Apr 21, 2019
6691180
Fixed image endpoint
jsbroks Apr 21, 2019
8f33617
Added json import (#195)
jsbroks Apr 22, 2019
8cca865
Centered icons
jsbroks Apr 26, 2019
538ed1a
Fixed annotation metadata copy
jsbroks Apr 29, 2019
d757cc5
Fixed Mask-RCNN model logging and NUM_CLASSES (#201)
luxedo Apr 30, 2019
303c2e8
Create CONTRIBUTING.md
jsbroks Apr 30, 2019
3921f54
Removed ports
jsbroks May 6, 2019
d7b9011
Exclude events when copying (#207)
matt-deboer May 7, 2019
162fb5b
Update README.md
jsbroks May 7, 2019
35c59b3
Update README.md
jsbroks May 7, 2019
22ec86d
Fixed categories help link (closes #159)
jsbroks Jun 11, 2019
15328a2
Move annotation to a different category (#229)
ohadco Jul 23, 2019
16ab496
Bounding Box tool for rectangular segmentation (#226)
mubashirhanif Aug 19, 2019
70bd9b4
Reduced moingodb version (closes #238)
jsbroks Aug 22, 2019
08da660
Reduced mongodb version
jsbroks Aug 22, 2019
0e0c1be
Reduced mongodb version
jsbroks Aug 22, 2019
5fa6dcf
Reduced mongodb version
jsbroks Aug 22, 2019
e26ce4e
Deletes annotations via eraser tool (#250)
rbavery Sep 18, 2019
1fd91f4
Fixed typos (#260)
hoonkai Oct 4, 2019
c80fa6e
Uppercase image patterns (#263)
skywalkerisnull Oct 6, 2019
f627a4b
Added dataset specific category counts to dataset stats (#270)
taalbrecht Oct 15, 2019
9d87dbc
Encode filename to allow special charcters (#275)
mubashirhanif Oct 16, 2019
a4db2b2
Fixes isbbox flag not working properly (#276)
mubashirhanif Oct 17, 2019
8f80957
Improve the loading speed for image cards (#279)
taalbrecht Nov 5, 2019
79b00b3
Updated ability to support .tif and .tiff images (#282)
kunalmunjal Nov 11, 2019
fc5ab4c
Zooming images on the mobile device (#290)
QingfengLee Nov 18, 2019
aa78c42
Keypoints improvements (#287)
matt-deboer Jan 8, 2020
ac217c5
added drag to pan functionality on SelectTool; important for annotati…
gaoag Jan 8, 2020
394d97c
Dataset display annotation category filter (#295)
taalbrecht Jan 8, 2020
3636297
Keypoints followup 1 (#317)
matt-deboer Jan 21, 2020
d0000de
Update README.md
jsbroks Jan 29, 2020
1bd9acc
User share replace fix (#327)
taalbrecht Jan 29, 2020
43f2d0c
gpu support (#326)
42Max42 Feb 3, 2020
e192e9b
fix for #319 (#333)
matt-deboer Feb 16, 2020
a76722b
Prevent incorrect projection (#334)
MuhsinFatih Feb 19, 2020
18b3279
Allow truncated images (#336)
Quintulius Feb 20, 2020
0ab2c84
Remove annotated check
jsbroks Feb 25, 2020
d21586c
Fixed reading booleans from environment (#346)
rvorias Mar 11, 2020
c709296
Update annotator.py (#352)
ettzzz Mar 23, 2020
82cc940
Spread Operator (inexplicably) failing on keypoint edges (#355)
danab Apr 2, 2020
2ef0336
Updated backers
jsbroks Apr 23, 2020
419d3e6
Optimize BrushTool (#364)
dlkorea Apr 27, 2020
fd067bb
Async thumbnails generation (#372)
DenysIsaiev May 18, 2020
8be7142
Add directory support to file watcher (#375)
linuslofgren May 18, 2020
72eb094
Make celery urls configurable (#378)
ms32035 May 22, 2020
2c7b11b
Fixed exports not working
jsbroks May 22, 2020
b5d8394
Update README.md
jsbroks Jul 29, 2020
fb2ff72
Annotate bbox (#407)
ababino Aug 25, 2020
ad6664d
Update README.md
jsbroks Sep 17, 2020
0bee7db
Delete-Button for annotations (#431)
marcosterland Nov 2, 2020
0ae8502
add basic auth (#447)
d-wei-of-sensyn Jan 29, 2021
c35dba2
enable image upload (#448)
d-wei-of-sensyn Jan 29, 2021
dd1d508
PolygonTool autosave (#467)
geminixiang Jun 11, 2021
7c9992c
Refactor shortcut modal layout (Image settings) (#496)
felixdollack Aug 30, 2021
08bab7f
Improve UI experience (#520)
felixdollack Feb 1, 2022
2ed7355
Fix Datasets Page never display Done status (#525)
geminixiang Feb 1, 2022
11a4838
Optimize Annotator API Query (#535)
geminixiang Feb 1, 2022
351fbff
Added an Annotations per User section to the stats section. (#538)
Shadercloud Feb 1, 2022
9cce5d2
enable exporting un-annotated img (#449)
d-wei-of-sensyn Feb 1, 2022
766818f
API: support sending original image file without JPEG compression (#560)
d1ff Oct 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
datasets/*
datasets/*
models/*
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ __pycache__
dist/*
!dist/.gitkeep

docs/.vuepress/dist/*
docs/.vuepress/dist/*
models/*.h5
26 changes: 12 additions & 14 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,19 @@ matrix:
- TESTING=true
- LOGIN_DISABLED=true
before_script:
- pip install -r backend/requirements.txt
- pip install pycocotools
- docker run -d -p 27017:27017 mongo
- docker ps -a
script: pytest

- language: node_js
node_js:
- 8
- node
cache: npm
before_install:
- npm install -g npm@latest
- cd client
install:
- npm i
script: npm test


# - language: node_js
# node_js:
# - 8
# - node
# cache: npm
# before_install:
# - npm install -g npm@latest
# - cd client
# install:
# - npm i
# script: npm test
146 changes: 146 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Contributing to HTML5 Boilerplate

Love [COCO Annotator](/jsbroks/coco-annotator) and want to get involved?
Thanks! We're actively looking for folks interested in helping out and there
are plenty of ways you can help!

Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.

Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.


## Using the issue tracker

The [issue tracker](/jsbroks/coco-annotator/issues) is
the preferred channel for [bug reports](#bugs), [features requests](#features)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:

* Please **do not** use the issue tracker for personal support requests (use
[Stack Overflow](https://stackoverflow.com/questions/tagged/coco-annotator)).

* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.

<a name="bugs"></a>
## Bug reports

A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful - thank you!

Guidelines for bug reports:

1. **Use the GitHub issue search** &mdash; check if the issue has already been
reported.

2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest `master` or development branch in the repository.

3. **Isolate the problem** &mdash; ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.

A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? What would you expect to be the outcome? All these
details will help people to fix any potential bugs.

Example:

> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).


<a name="features"></a>
## Feature requests

Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible.


<a name="pull-requests"></a>
## Pull requests

Good pull requests - patches, improvements, new features - are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.

**Please ask first** before embarking on any significant pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.

Please adhere to the coding conventions used throughout a project (indentation,
accurate comments, etc.) and any other requirements (such as test coverage).

Adhering to the following process is the best way to get your work
included in the project:

1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your
fork, and configure the remotes:

```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/html5-boilerplate.git
# Navigate to the newly cloned directory
cd html5-boilerplate
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/h5bp/html5-boilerplate.git
```

2. If you cloned a while ago, get the latest changes from upstream:

```bash
git checkout master
git pull upstream master
```

3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:

```bash
git checkout -b <topic-branch-name>
```

4. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Git's
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
feature to tidy up your commits before making them public.

5. Locally merge (or rebase) the upstream development branch into your topic branch:

```bash
git pull [--rebase] upstream master
```

6. Push your topic branch up to your fork:

```bash
git push origin <topic-branch-name>
```

7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description.

**IMPORTANT**: By submitting a patch, you agree to allow the project
owners to license your work under the terms of the [MIT License](LICENSE.txt).
30 changes: 30 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM node:10 as build-stage

WORKDIR /workspace/
COPY ./client /workspace/client

RUN npm install -g @vue/[email protected]
RUN npm install -g @vue/[email protected]

COPY ./client/package* /workspace/

RUN npm install
ENV NODE_PATH=/workspace/node_modules

WORKDIR /workspace/client
RUN npm run build

FROM jsbroks/coco-annotator:python-env

WORKDIR /workspace/
COPY ./backend/ /workspace/
COPY ./.git /workspace/.git
RUN python set_path.py

COPY --from=build-stage /workspace/client/dist /workspace/dist

ENV FLASK_ENV=production
ENV DEBUG=false

EXPOSE 5000
CMD gunicorn -c webserver/gunicorn_config.py webserver:app --no-sendfile --timeout 180
135 changes: 104 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,67 +3,140 @@
<p align="center">
<a href="#features">Features</a> •
<a href="https://github.com/jsbroks/coco-annotator/wiki">Wiki</a> •
<a href="https://github.com/jsbroks/coco-annotator/wiki/Getting-Started">Getting Stated</a> •
<a href="https://github.com/jsbroks/coco-annotator/wiki/Getting-Started">Getting Started</a> •
<a href="https://github.com/jsbroks/coco-annotator/issues">Issues</a> •
<a href="#license">License</a>
</p>


---

<p align="center">
<a href="/jsbroks/coco-annotator/stargazers">
<img src="https://img.shields.io/github/stars/jsbroks/coco-annotator.svg">
</a>
<a href="/jsbroks/coco-annotator/issues">
<img src="https://img.shields.io/github/issues/jsbroks/coco-annotator.svg">
</a>
<a href="https://tldrlegal.com/license/mit-license">
<img src="https://img.shields.io/github/license/mashape/apistatus.svg">
</a>
<a href="https://lgtm.com/projects/g/jsbroks/coco-annotator/context:javascript">
<img src="https://img.shields.io/lgtm/grade/javascript/g/jsbroks/coco-annotator.svg?label=code%20quality">
</a>
<a href="https://annotator.justinbrooks.ca/">
<img src="https://img.shields.io/badge/demo-online-green.svg">
</a>
<a href="https://travis-ci.org/jsbroks/coco-annotator">
<img src="https://travis-ci.org/jsbroks/coco-annotator.svg?branch=master">
</a>
<a href="https://hub.docker.com/r/jsbroks/coco-annotator">
<img src="https://img.shields.io/docker/pulls/jsbroks/coco-annotator.svg">
</a>
</p>

COCO Annotator is a web-based image annotation tool designed for versatility and efficiently label images to create training data for image localization and object detection. It provides many distinct features including the ability to label an image segment (or part of a segment), track object instances, labeling objects with disconnected visible parts, efficiently storing and export annotations in the well-known [COCO format](http://cocodataset.org/#format-data). The annotation process is delivered through an intuitive and customizable interface and provides many tools for creating accurate datasets.

[![GitHub Stars](https://img.shields.io/github/stars/jsbroks/coco-annotator.svg)](https://github.com/jsbroks/coco-annotator/stargazers)
[![GitHub Issues](https://img.shields.io/github/issues/jsbroks/coco-annotator.svg)](https://github.com/jsbroks/coco-annotator/issues)
![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)
[![Code Quality](https://img.shields.io/lgtm/grade/javascript/g/jsbroks/coco-annotator.svg?label=code%20quality)](https://lgtm.com/projects/g/jsbroks/coco-annotator/context:javascript)
[![Demo](https://img.shields.io/badge/demo-online-green.svg)](https://annotator.justinbrooks.ca/)
[![Build Status](https://travis-ci.org/jsbroks/coco-annotator.svg?branch=master)](https://travis-ci.org/jsbroks/coco-annotator)
[![Docker Pulls](https://img.shields.io/docker/pulls/jsbroks/coco-annotator.svg)](https://hub.docker.com/r/jsbroks/coco-annotator)

COCO Annotator is a web-based image annotation tool designed for versatility and efficiently label images to create training data for image localization and object detection. It provides many distinct features including the ability to label an image segment (or part of a segment), track object instances, labeling objects with disconnected visible parts, efficiently storing and export annotations in the well-know [COCO format](http://cocodataset.org/#format-data). The annotation process is delivered though an intuitive and customizable interface and provides many tools for creating accurate datasets.
<br />

<p align="center">Join our growing <a href="https://discord.gg/4zP5Qkj">discord community</a> of ML practitioner</p>
<p align="center">
<a href="https://discord.gg/4zP5Qkj">
<img src="https://discord.com/assets/e4923594e694a21542a489471ecffa50.svg" width="120">
</a>
</p>

<br />

<p align="center"><a href="http://www.youtube.com/watch?feature=player_embedded&v=OMJRcjnMMok" target="_blank"><img src="https://img.youtube.com/vi/OMJRcjnMMok/maxresdefault.jpg"
alt="Image annotations using COCO Annotator" width="600" /></a></p>
<p align="center"><i>Checkout the video for a basic guide on installing and using COCO Annotator.</i></p>

<br />

<p align="center"><img width="600" src="https://i.imgur.com/m4RmjCp.gif"></p>
<p align="center"><i>Note: This video is from v0.1.0 and many new features have been added.</i></p>


<br>

<p align="center">If you enjoy my work please consider supporting me</p>
<p align="center">
<a href="https://www.patreon.com/jsbroks">
<img src="https://c5.patreon.com/external/logo/[email protected]" width="120">
</a>
</p>
<br>

# Features

Several annotation tools are currently available, with most applications as a desktop installation. Once installed, users can manually define regions in an image and creating a textual description. Generally, objects can be marked by a bounding box, either directly, through a masking tool, or by marking points to define the containing area. _COCO Annotator_ allows users to annotate images using free-form curves or polygons and provides many additional features were other annotations tool fall short.

- Directly export to COCO format
- Segmentation of objects
- Useful API endpoints to analyze data
- Import datasets already annotated in COCO format
- Annotated disconnected objects as a single instance
- Labeling image segments with any number of labels simultaneously
- Allow custom metadata for each instance or object
- Magic wand/select tool
- Generate datasets using google images
- User authenication system
- Directly export to COCO format
- Segmentation of objects
- Ability to add key points
- Useful API endpoints to analyze data
- Import datasets already annotated in COCO format
- Annotate disconnect objects as a single instance
- Labeling image segments with any number of labels simultaneously
- Allow custom metadata for each instance or object
- Advanced selection tools such as, [DEXTR](https://github.com/jsbroks/dextr-keras), [MaskRCNN](https://github.com/matterport/Mask_RCNN) and Magic Wand
- Annotate images with semi-trained models
- Generate datasets using google images
- User authentication system

For examples and more information check out the [wiki](https://github.com/jsbroks/coco-annotator/wiki).

# Demo

| Login Information |
| ----------------- |
| __Username:__ admin |
| __Password:__ password |
| Login Information |
| ---------------------- |
| **Username:** admin |
| **Password:** password |

https://annotator.justinbrooks.ca/

# Backers

<p align="center"><a href="http://robotics.uoguelph.ca/"><img src="http://robotics.uoguelph.ca/images/banner.jpg"></p></a>
<p align="center">Backed by the <a href="http://robotics.uoguelph.ca/">The Robotics Institute @ Guelph</a> (<a href="https://github.com/uoguelph-ri">GitHub</a>)</p>
If you enjoy the development of coco-annotator or are looking for an enterprise annotation tool, consider checking out DataTorch.

<p align="center">
<a href="https://datatorch.io">
<img src="https://i.imgur.com/sOQ1s5F.png" width="250" />
</a>
<p align="center">
https://datatorch.io · <a href="mailto:[email protected]">[email protected]</a> · <i>Next generation of coco-annotator</i>
</p>
</p>

# Built With

Thanks to all these wonderful libaries/frameworks:
- [Flask](http://flask.pocoo.org/) - Python web microframework
- [Vue](https://vuejs.org/) - Frontend javascript framework
- [Axios](https://github.com/axios/axios) - Promise based HTTP client
- [PaperJS](http://paperjs.org/) - Canvas editor library
- [Bootstrap](https://getbootstrap.com/) - Frontend component library

### Backend

- [Flask](http://flask.pocoo.org/) - Python web microframework
- [MongoDB](https://www.mongodb.com/) - Cross-platform document-oriented database
- [MongoEngine](http://mongoengine.org/) - Python object data mapper for MongoDB

### Frontend

- [Vue](https://vuejs.org/) - JavaScript framework for building user interfaces
- [Axios](https://github.com/axios/axios) - Promise based HTTP client
- [PaperJS](http://paperjs.org/) - HTML canvas vector graphics library
- [Bootstrap](https://getbootstrap.com/) - Frontend component library

# License

[MIT](https://tldrlegal.com/license/mit-license)

# Citation

```
@MISC{cocoannotator,
author = {Justin Brooks},
title = {{COCO Annotator}},
howpublished = "\url{https://github.com/jsbroks/coco-annotator/}",
year = {2019},
}
```
Loading