Skip to content

[WIP] Autopropagate annotations #78

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

Closed

Conversation

matt-deboer
Copy link
Contributor

@matt-deboer matt-deboer commented Jan 28, 2019

This PR adds automated background processing which attempts to automatically match newly created or updated annotations to preceding and proceeding images by testing for similarity of the image patch covered by the annotation.

This implements the feature mentioned in #57.

The main use case for this feature is to simplify the process of annotating video sequences where many object instances may be repeated for a subset of frames while a few objects are moving in the scene. Those repeated objects are automatically detected and annotated based on the previously added annotations.

This feature is configured with the following env vars:

  • AUTOANNOTATOR_ENABLED: turn on the autoannotator; off by default
  • AUTOANNOTATOR_VERBOSE: whether to be chatty about autoannotator processing
  • AUTOANNOTATOR_MAX_WORKERS: max # workers allotted to the executor thread pool
  • AUTOANNOTATOR_QUEUE_SIZE: max size of queue which holds annotations to be propagated
  • AUTOANNOTATOR_MAX_MISMATCHED: the maximum number of subsequent images where the annotation does not match before abandoning the matching test for a given annotation
  • AUTOANNOTATOR_DIFF_THRESHOLD: the allowed difference threshold used when comparing annotation patches; if the skimage.compare_ssim score > (1.0 - threshold), the patch is considered a match

@jsbroks
Copy link
Owner

jsbroks commented Jan 28, 2019

I haven't inspected all of the code but maybe we could move some of these functions into the imantics library

@matt-deboer
Copy link
Contributor Author

Yes, that sounds reasonable; it looks like a few of the new functions may already be present there.

I'm also thinking this concept could be something more pluggable in the future, with possible user-defined callback to propose annotations.

As it stands, the code could use some optimizations; it works ok (and definitely saves me a lot of time with hand-annotating), but I doubt it's performance under a large multi-user load.

I just wanted to get the concept out there for some early feedback.

@jsbroks jsbroks added status: in progress Issue is being worked on type: feature New idea labels Jan 28, 2019
@jsbroks
Copy link
Owner

jsbroks commented Jan 28, 2019

I do plan, in the future, of adding a dedicated video annotator webpage with a scrubbing tool and maybe some tracking algorithm (open-cv js) to create annotations though the frames

@jsbroks
Copy link
Owner

jsbroks commented Jan 29, 2019

@matt-deboer Let me know when this is ready for a review

@matt-deboer matt-deboer force-pushed the autopropagate_annotations branch from c6ced44 to 85db849 Compare January 30, 2019 00:14
@matt-deboer
Copy link
Contributor Author

@jsbroks ok, will do.
still adding some polish as I use it for my own datasets...

@jsbroks jsbroks changed the title WIP: Autopropagate annotations [WIP] Autopropagate annotations Feb 22, 2019
@jsbroks
Copy link
Owner

jsbroks commented Mar 29, 2019

Closing due to conflicts/inactivity

@jsbroks jsbroks closed this Mar 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: in progress Issue is being worked on type: feature New idea
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants