ImageMonkey / imagemonkey-core

ImageMonkey is an attempt to create a free, public open source image dataset.
https://imagemonkey.io
47 stars 10 forks source link

allow annotating whilst view-all selected #280

Open dobkeratops opened 3 years ago

dobkeratops commented 3 years ago

Imagine if 'show all' was a perment visibility toggle, rather than a temporary peek mode.

with a tweak to distinguish the current label from the rest, view-all would often be useful whilst actually annotation: i.e. it helps you see where you've been already, and helps you align one annotation with the next (eg annotating left & right halves of something etc); it's also just very satisfying to see the annotations accumulate this way.. like building wireframes.

Possible tweaks to it's rendering;

bbernhard commented 3 years ago

I also thought about that in the past.

The reason I haven't implemented it yet is because I was afraid that it's easier then to forget about changing the label on the left - especially when you are in the flow. I imagine that it's pretty hard to ensure then that the user always has the correct label on the left selected before drawing a polygon. My gut feeling is, that showing everything per default automatically leads to a different annotation workflow. Right now we have more like a "all of a kind" workflow, where you annotate all objects of a specific label and then move on to the next label. By showing all polygons at once, I think that would naturally change. (e.g to a "fill the gaps" workflow, where you are switching randomly between labels). And as soon as you are in the flow, I think it's pretty easy to forget about changing labels. My feeling is that showing only a subset of polygons at once makes it less likely that the user forgets about switching the label - and every label switch "resets your brain" again.

I am a bit worried that no matter which tweaks we implement (color coding, transparency, etc) that switching between the labels is just too tiresome (and error prone). I think the only is probably to completely change the annotation workflow and implement a different workflow (e.g: "draw + label" - i.e draw a polygon and label it afterwards)?

dobkeratops commented 3 years ago

remember that under this proposal it would be optional, e.g. only in the view-all mode - this can remain defaulted to off, many users many never even know it's there.

Drawing with the wrong label is indeed a hazard but that exists anyway (actually I end up doing this fairly often when adding labels in bulk, but the time saved by bulk labeling exceeds having to delete occasionally)

One more idea on that that might be worth considering is drawing the labels as overlays, e.g. at the polygon centroid - then the label you used is always staring you in the face

It might get in the way, but what if that was again a default-off option i.e. part of the 'show-all' mode? (truncate the label name to N chars).

A polygon centroid could be worth experimenting with generally, e.g. for properties aswell (I can imagine an alternative property editor where you see all the polys and you are able to toggle a selected property on anything), and as a way of selecting more accurately (currently polygon selection appears to use the bounding box, it can be hard to select between polygons that are nearby)

maybe you could have a few UI experiments like reachable through an advanced option toggle

final thought - perhaps color coding could make changing labels more obvious, i.e your brain picks up on a difference like colour more quickly than reading a state to one side (but you'ld have to choose the colours intelligently, probably based on the type of scene. "a street scene color-coding.." "a detailed pose-estimation person annotation color-coding" etc. Most scene/task types have an important distinction to make , e.g left-vs-right of the body, limbs vs joints, or driveable-surface vs walkable vs moving objects for street scenes). this subject is worth a seperate thread.

Again it may be worth having experiments like this in progress for exploring the dataset.. ways of getting a quick overview of everything, and showing people the range and detail of annotations we have here