-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Validation API core #8348
Validation API core #8348
Conversation
cvat-ui/src/components/create-task-page/create-task-content.tsx
Outdated
Show resolved
Hide resolved
cvat-ui/src/components/create-task-page/create-task-content.tsx
Outdated
Show resolved
Hide resolved
cvat-ui/src/components/create-task-page/create-task-content.tsx
Outdated
Show resolved
Hide resolved
cvat-ui/src/components/quality-control/task-quality/allocation-table.tsx
Show resolved
Hide resolved
) | ||
path = models.CharField(max_length=1024, default='') | ||
|
||
class ValidationLayout(models.Model): |
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.
What is the reason to bind ValidationParams and ValidationLayout to Data instead of Task model?
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.
May you explain the name ValidationLayout
? I feel is something like ValidationPool
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.
Layout:
the plan or design or arrangement of something laid out
In general terms, a layout is a structured arrangement of items within certain limits, or a plan for such arrangement. Specifically, layout may refer to: Page layout, the arrangement of visual elements on a page.
It's used to describe validation frames in tasks, both for simple GT and for Honeypots. That's why it doesn't have pool
in the name.
What is the reason to bind ValidationParams and ValidationLayout to Data instead of Task model?
This is made to be the same as storing deleted_frames
in the Data
model. Basically, it describes task 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.
Layout sounds like some set of elements and their relation to each other.
But in our case is just couple of sets. Pool would sound good to describe and it is applicable in general for both GT job and Honeypot job.
Hovewer if you do not want to use the word Pool -> it is okay, up to you.
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.
This is made to be the same as storing deleted_frames in the Data model.
I can't really understand the explanation. Hovewer in the future this design may be a problem if we want to use the same Data object to create multiple tasks (this is not a fact that we will do this, but anyway).
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.
Never mind, considering existing database layout feature like: import raw data, select them and create tasks based on them already not implementable without new database classes.
elif db_segment.type == "specific_frames": | ||
frame_set = set(frame_range).intersection(db_segment.frames or []) | ||
else: | ||
raise ValueError(f"Unknown segment type: {db_segment.type}") |
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 am not sure that raising uncaught exception is good in migration file
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.
On our prod we only have specific_frames
defined, so, it will not be a problem
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.
The reason is to fail the migration, if the DB contains invalid entries. We don't know why they are there and what to do with them.
can't create a task with honeypot job and context images:
|
Should be fixed now. |
Quality Gate passedIssues Measures |
Motivation and context
Depends on #8272
Depends on #8321
random_per_job
, which guarantees each annotation job gets the specified GT overlap, making each annotation job validatableServer API changes:
validation_mode
field, reflecting the current validation configuration (immutable)validation_params
field, which allow to enable GT / GT_POOL validation for a task on its creationTasks with Honeypots
This validation mode affects task creation, so can only be used in task creation. It cannot be disabled or changed after the task is created. When honeypots are configured, each job in the task gets several extra validation frames.
The pool of available frames and the number of validation frames per job are specified by the user at task creation.
Limitations:
random
frame ordering.job_frame_mapping
andoverlap
cannot be used in such tasks.Honeypot frames and GT annotations are accessible via the GT job, as in the case with regular GT jobs. However, unlike regular tasks with GT jobs, task annotation import affects the GT job as well in tasks with honeypots. Task annotation export contains only GT annotations on validation frames (so, only the GT copy of validation frames is included).
How has this been tested?
Checklist
develop
branch(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)
License
Feel free to contact the maintainers if that's a concern.
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores