Skip to content
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

[GSoC2024] fix skeleton tracks slice between jobs #7615

Merged
merged 15 commits into from
Mar 28, 2024

Conversation

ccinv
Copy link
Contributor

@ccinv ccinv commented Mar 15, 2024

Fixes #7498

In #6968, sub tracks splitting has been fixed but not entirely, if the user wants to import tracks between more than 2 jobs it can cause malformed annotation like #7498.

In the pervious test case, https://github.com/opencv/cvat/blob/d1a300f0189744bef01d2c60135ec474c5004fbc/tests/python/rest_api/test_tasks.py#L543-L563
skeleton track is static so it did not identify any issues.

Motivation and context

Pervious interpolate method will drop the last frame. That's correct for most cases, but if slices and tracks are like this:

slice: -------------xxxxx---------
track: ---------xxxxxxxxxx-------

We have to keep the last frame of slice in the track. If not, this track won't close.

How has this been tested?

I rewrited the testcase test_can_split_skeleton_tracks_on_jobs
Now it test the split function with a longer input track and stricter interpolate reference.

Checklist

  • I submit my changes into the develop branch
  • I have created a changelog fragment
    - [ ] I have updated the documentation accordingly
  • I have added tests to cover my changes
  • I have linked related issues (see GitHub docs)
  • I have increased versions of npm packages if it is necessary
    (cvat-canvas,
    cvat-core,
    cvat-data and
    cvat-ui)

License

  • I submit my code changes under the same MIT License that covers the project.
    Feel free to contact the maintainers if that's a concern.

@ccinv ccinv requested a review from nmanovic as a code owner March 15, 2024 10:39
@zhiltsov-max
Copy link
Contributor

Hi! Thank you for contributing to the project. Could you please add a test for the updated functionality? You can find instructions here.

@ccinv ccinv requested a review from azhavoro as a code owner March 20, 2024 16:53
@ccinv
Copy link
Contributor Author

ccinv commented Mar 20, 2024

Hi! Thank you for contributing to the project. Could you please add a test for the updated functionality? You can find instructions here.

Hi, I've updated my test case and highlighted how the issue may occur.

@ccinv ccinv requested a review from zhiltsov-max March 21, 2024 02:46
@zhiltsov-max
Copy link
Contributor

Hi, any updates? Please update the server tests to pass, they can be found in this file.

@ccinv
Copy link
Contributor Author

ccinv commented Mar 23, 2024

Hi, any updates? Please update the server tests to pass, they can be found in this file.

Yes. I find that radical modifications to interpolation function can cause many tests fail, so I reverted that function and put criteria to slice function.

Now both rest api test and Demo in #7498 on my local machine work well, but unit test still fails. I am still working on it.

@ccinv
Copy link
Contributor Author

ccinv commented Mar 26, 2024

@zhiltsov-max Please take a look. I think tests have been resolved.
The main idea in the fix: the ending of skeleton tracks cannot be correctly evaluated by scoped_shapes[-1]['outside'], now directly compare the points to enclose the segment

Copy link

codecov bot commented Mar 26, 2024

Codecov Report

Merging #7615 (4574911) into develop (522d48c) will increase coverage by 0.02%.
Report is 1 commits behind head on develop.
The diff coverage is 100.00%.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #7615      +/-   ##
===========================================
+ Coverage    83.39%   83.42%   +0.02%     
===========================================
  Files          373      373              
  Lines        39744    39747       +3     
  Branches      3745     3745              
===========================================
+ Hits         33145    33157      +12     
+ Misses        6599     6590       -9     
Components Coverage Δ
cvat-ui 79.28% <ø> (+0.04%) ⬆️
cvat-server 87.24% <100.00%> (+<0.01%) ⬆️

@zhiltsov-max zhiltsov-max merged commit dcbff88 into cvat-ai:develop Mar 28, 2024
34 checks passed
@zhiltsov-max
Copy link
Contributor

Thank you for contributing into the project!

g-kartik pushed a commit to g-kartik/cvat that referenced this pull request Mar 29, 2024
Fixes cvat-ai#7498

In cvat-ai#6968, sub tracks splitting has been fixed but not entirely, if the
user wants to import tracks between more than 2 jobs it can cause
malformed annotation like cvat-ai#7498.

In the pervious test case,
https://github.com/opencv/cvat/blob/d1a300f0189744bef01d2c60135ec474c5004fbc/tests/python/rest_api/test_tasks.py#L543-L563
skeleton track is static so it did not identify any issues.

<!-- Raise an issue to propose your change
(https://github.com/opencv/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution
guide](https://opencv.github.io/cvat/docs/contributing/). -->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
Pervious interpolate method will drop the last frame. That's correct for
most cases, but if slices and tracks are like this:

slice: -------------xxxxx---------
track: ---------xxxxxxxxxx-------

We have to keep the last frame of slice in the track. If not, this track
won't close.

### How has this been tested?
I rewrited the testcase `test_can_split_skeleton_tracks_on_jobs`
Now it test the split function with a longer input track and stricter
interpolate reference.

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [x] I submit my changes into the `develop` branch
- [x] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
~~- [ ] I have updated the documentation accordingly~~
- [x] I have added tests to cover my changes
- [x] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [x] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/opencv/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/opencv/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/opencv/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/opencv/cvat/tree/develop/cvat-ui#versioning))

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/opencv/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.

---------

Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
@cvat-bot cvat-bot bot mentioned this pull request Apr 2, 2024
@zhiltsov-max
Copy link
Contributor

Related #6779

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CVAT corrupts annotations when importing
2 participants