-
Notifications
You must be signed in to change notification settings - Fork 0
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
Control label and tag creation #124
Comments
I think we want to disable the ability for even Project Managers to create new labels on the fly w/ the Category Selector (as is currently the case for everyone), because (a) even managers can mistype things & add bad labels and (b) we want to provide some level of color-control. I also think that we should always give all labelers the option to label something as "unknown". The main outstanding question here is whether we want to include a hierarchy. Pros: hierarchical labels might be useful for data analysis and rolling up child labels into parent labels for classifier training purposes. Cons: not sure how helpful it is beyond that? Adds another level of cognitive load / decision making on the labeler? Might be a bit annoying to implement? |
Also worth thinking through implications for ML-generated labels: it would be a bit of an ask of Project Managers to anticipate all the classes/labels their future models might generate and create them ahead of time (and structure them hierarchically if we're doing that). So do labels produced by ML models automatically get shoehorned into projects' "available labels" ? |
I'm leaning towards keeping labels flat (non-hierarchical) for now. It would add too much complexity with not enough obvious benefit. |
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
youtube videos on how TrapTagger does this: https://www.youtube.com/watch?v=gw7mCAH7ThU |
@oliverroick had a good question - should project managers be able to delete labels, and if so, what should happen (do we go through all images in the DB and remove those labels?). Similarly, do we want to allow project managers to rename labels and kick off a label renaming process across all images in the DB? |
Updated requirementsI've refined my thoughts on the requirements for this feature after thinking through image-level tags a bit more. The requirements are as follows: 1. Create a UI so that Project Managers can create object-level "Labels"Object-level labels, as described here, are the labels that users (and ML models) can apply to objects in images. Their schema will remain the same, but we'll need to create a new collection or some representation of them in the DB (perhaps something like
I like Github's UX for creating, editing, and deleting new labels - that's essentially what I think we should be shooting for. Some observations about that would be nice to steal:
const randomColor = `# ${Math.floor(Math.random()*16777215).toString(16)}`; Or if for whatever reason we wanted to generate RGB this is exactly what Github does: // Interestingly this function and all of Github's label-related JS can be found if you go
// to the "sources" panel of DevTools while on Github.com and drill down to
// github.githubassets.com/assets/app/assets/modules/github/issues/labels.ts
function randomRGBColor(): RGB {
return [
Math.floor(Math.random() * (255 - 0) + 0),
Math.floor(Math.random() * (255 - 0) + 0),
Math.floor(Math.random() * (255 - 0) + 0),
]
}
I imagine we'll also need a few un-editable, default Labels, including "unknown" and "empty", so we may need some kind of 2. Create a UI so that Project Managers can create image-level "Tags"This can live in the same modal as the label creation UI, but Tags would require the following:
3. Allow Project Mangers to edit and delete both Tags and LabelsEditing seems straightforward if we have a single place in the DB where we store the properties and we only reference the tags by immutable Ids, but deleting seems like a bit of a chore to implement on the backend. If it seems too complex we could punt on deleting labels for now. 4. Update how we currently
|
After discussion with Nick, we decided to run with option 6.b above for dealing with labels generated by ML models, but also make color a required property on all ML Model categories so we have some default color to start with when we add ML-model-generated labels to projects' "Label Lists". |
Documenting some additional decision making around whether or not we should support "deleting", "disabling", and/or "merging" labelsUse casesUse cases for I could think of for “deleting” labels (including all occurrences of their use on images) include:
Use cases for “disabling” labels (preventing their use going forward, but not removing them from images and still allowing users to filter on them):
Use cases for “merging”:
Implementation concerns
Decisions
|
Done! |
"Controlled labels" - limit the labels you can apply so users/volunteers can't apply random labels (for public facing UI of app). Label creation UX similar to github's. Consider also implementing label hierarchy/priority levels ("skunk" > "animal"). Use Radix-color scales as color options.
The text was updated successfully, but these errors were encountered: