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

Fixed issue: object interpolated incorrectly if a frame with the object keyframe is deleted #8951

Merged
merged 15 commits into from
Jan 20, 2025

Conversation

bsekachev
Copy link
Member

@bsekachev bsekachev commented Jan 16, 2025

Motivation and context

Issue comes from the fact that we get a list of deleted frames from different sources across the application.
This patch tries to fix that behaviour.

How has this been tested?

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.

@codecov-commenter
Copy link

codecov-commenter commented Jan 17, 2025

Codecov Report

Attention: Patch coverage is 93.42105% with 5 lines in your changes missing coverage. Please review.

Project coverage is 73.84%. Comparing base (8613254) to head (0ef5857).
Report is 4 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #8951      +/-   ##
===========================================
- Coverage    73.88%   73.84%   -0.04%     
===========================================
  Files          416      417       +1     
  Lines        44421    44586     +165     
  Branches      3996     4030      +34     
===========================================
+ Hits         32820    32926     +106     
- Misses       11601    11660      +59     
Components Coverage Δ
cvat-ui 78.30% <81.68%> (-0.12%) ⬇️
cvat-server 70.06% <ø> (ø)

@bsekachev bsekachev merged commit 6fead08 into develop Jan 20, 2025
33 of 34 checks passed
@bsekachev bsekachev deleted the bs/fixed_deleted_frames branch January 21, 2025 07:33
@cvat-bot cvat-bot bot mentioned this pull request Jan 27, 2025
archibald1418 added a commit that referenced this pull request Feb 5, 2025
Regression test for 2 bugs that were fixed in #8951 and #8952 
The fix dealt with incorrect frame interpolation when deleting keyframes
Also, opening the task afterwards could crash with application error

### How has this been tested?

This consists of two test cases reflecting two different bugs +
`before()` and `beforeEach()` hooks which unifies conditions before both
cases.

#### Preparation
##### Before all tests:
- Login
- Create a zip archive with a dataset consisting of 5 frames
- Create task from archive using UI 
(NB: `headless..` commands only work with `mounted_file_share` which
being regularly cleared in Helm CI)
- Open task job and save `jobID` into a variable
- Send headless request to cvat-core's `JobsApI` to create a rectangle
track with 3 keyframes: 0, 2 and 4. After this, the rectangle moves
clockwise along the image's perimeter (topLeft -> topCenter -> topRight
-> centerRight -> bottomRight)

#### Before each test
- Restore all frames using headless `PATCH` request to send
`deleted_frames: []` to `/data/meta`. This recovers frame deletions that
were done under test. Wait for response
- Reload the page to hydrate annotations that were added previously.
Wait for `GET` to `/data/meta` which will load the created rectangle
track onto the `#cvat_canvas_background`.
- Save the job
- Go to first frame to start the test

### Case 1
This checks that the job can be opened without any crashes or error
notification messages after deleting keyframes and saving the job.
Interpolation is terminated and the tracked rectangle should not exist
in the DOM

- Flick through all frames and click 'Delete' on frames 0, 2, 4
(keyframes)
- Save, reload the job. Error should not appear.
- Object should not exist. Error notifications should not exist

### Case 2
- Go to frame 2
- Delete frame 2. Confirm that frame 3 is open and that previous frame
is frame 1
- Remember shape positions on frames 1 and 3 (=interpolated positions)
- Save the job, reload the job
- Validate that the shapes are on the same positions as before the
reload

### Checklist
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] 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))

### License

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

---------

Co-authored-by: Oleg Valiulin <[email protected]>
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.

3 participants