-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Support automatic tag annotation #3896
Support automatic tag annotation #3896
Conversation
bfd985f
to
7860d8d
Compare
CHANGELOG.md
Outdated
@@ -40,6 +40,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |||
- Add a tutorial on attaching cloud storage AWS-S3 (<https://github.com/openvinotoolkit/cvat/pull/3745>) | |||
and Azure Blob Container (<https://github.com/openvinotoolkit/cvat/pull/3778>) | |||
- The feature to remove annotations in a specified range of frames (<https://github.com/openvinotoolkit/cvat/pull/3617>) | |||
- Add "tag" return type for automatic annotation in Nuclio (<https://github.com/openvinotoolkit/cvat/pull/3896>) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@subdavis , Could you please update the changelog? After we released 1.7.0 it isn't valid anymore.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, I can do that.
if label_id is not None: | ||
if label_id is None: | ||
continue # Invalid label provided | ||
if anno["type"].lower() == "tag": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@subdavis , Could you please contribute any serverless function for classification? Thus we can test the PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the introduction of a new serverless function is appropriately within scope for #3358
I actually don't even have one I can share: the code I have that generates full-frame detections is closed source. I can provide some instructions about how to temporarily modify an existing function, but I don't really have time to write a new one. I'm not an ML developer.
The problem here seems to be one of documentation: the only way to understand the API between CVAT and Nuclio functions is to read this views.py
file, so I think documentation would be ideal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@subdavis , it will be great to hear how in your company (kitware?) you are using CVAT to annotate data.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We use CVAT occasionally at Kitware, but we're a consultancy and this PR was made for one of our customers who uses CVAT heavily in their own annotation processes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@subdavis , thanks for sharing the information.
@subdavis , please let me know if you have time to answer on my comments? |
f5ffe8b
to
1224416
Compare
1224416
to
491e3c9
Compare
Using any of the existing functions, you should be able to test by swapping import json
def init_context(context):
pass
def handler(context, event):
results = [{
'type': 'tag',
'label': 'example',
}]
return context.Response(body=json.dumps(results), headers={},
content_type='application/json', status_code=200) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Motivation and context
resolves #3358
How has this been tested?
I have a full-frame classifier nuclio lambda and needed a way to save these tags.
docker-compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d
I did see that the author of #3358 has included confidence values, which I do not believe are supported by tags. If I should support this somewhere, please LMK.
Checklist
develop
branchI have updated the documentation accordinglyI do not see any documentation about what response types are supported for nuclio functions, so I don't think there's any documentation to update. New documentation could be added about the general capabilities of this feature, but it seems out of scope for this PR.I have added tests to cover my changesI do not see tests related to this section of the code. If they exist, please LMK and I'll add coverage.I have increased versions of npm packages if it is necessary (cvat-canvas,Not applicablecvat-core, cvat-data and cvat-ui)
License
Feel free to contact the maintainers if that's a concern.
I have updated the license header for each file (see an example below)No new files added