cvat-ai / cvat

Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale.
https://cvat.ai
MIT License
12.44k stars 2.99k forks source link

Remove objects by a filter (e.g. unlocked, with a specific label) #954

Open Martijho opened 4 years ago

Martijho commented 4 years ago

During annotation, my workflow consists of automatic annotating, merging ID with ReID, and cleaning up (removing false positives, and filling in false negatives and merging with that previous objects ID)

Features that help with removing false positives/negatives would greatly reduce the manual labor needed to annotate video.

Removing False Positives: The degree of which this is a problem changes greatly depending on the model used and the scene in the video, but in most of my cases where this is a problem, the scenario (after automatic annotation and ReID) is a couple of good long sections with each object having the same ID and a bunch of false positives that disappear and reappear throughout the video.

There is already a "delete all annotations" feature, but if I were able to toggle something where the "locked" annotation IDs remain after the deletion (I.E: all unmarked/unlocked object IDs are deleted) that would greatly increase my productivity.

Removing False Negatives For this, some assumptions will have to be made by the user, I think, but a good place to start would be a strong tracking algorithm (deepsort for example). The idea being to assign tracking IDs for each annotation for each frame, look for all gaps where a tracking ID is missing in N frames (N being parameterized and given as an option to the user) and interpolate new annotations in this gap using the existing linear interpolation.

This tracking approach can also be used to automatic remove false positives that occur in one or two sequential frames without involvement from the user. What's left is basically a variant of hard example mining where the annotations are estimated on behalf of the user or removed if deemed to be a false positive.

There is plenty of literature covering the offline tracking problem.

nmanovic commented 4 years ago

@Martijho , thanks for the report. I think it is a good idea. It can be implemented as a remove annotations by a filter. In first case you can delete tracks with a short length. For tracking we have another feature request