Skip to content

Commit 78daf11

Browse files
committed
Merge remote-tracking branch 'upstream/mk/update_cvat_oracles' into mk/update_cvat_oracles
2 parents 2d1af93 + 2e71542 commit 78daf11

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

packages/examples/cvat/exchange-oracle/src/handlers/job_creation.py

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,18 @@ def __init__(self, manifest: TaskManifest, escrow_address: str, chain_id: int) -
151151

152152
self._oracle_data_bucket = BucketAccessInfo.parse_obj(Config.storage_config)
153153

154+
@property
155+
def _task_segment_size(self) -> int:
156+
return self.manifest.annotation.job_size
157+
158+
@property
159+
def _job_val_frames_count(self) -> int:
160+
return self.manifest.validation.val_size
161+
162+
@property
163+
def _task_chunk_size(self) -> int:
164+
return self._task_segment_size + self._job_val_frames_count
165+
154166
def __enter__(self):
155167
return self
156168

@@ -361,7 +373,7 @@ def build(self):
361373
cvat_webhook = cvat_api.create_cvat_webhook(cvat_project.id)
362374

363375
with SessionLocal.begin() as session:
364-
segment_size = manifest.annotation.job_size
376+
segment_size = self._task_segment_size
365377
total_jobs = math.ceil(len(data_to_be_annotated) / segment_size)
366378

367379
self.logger.info(
@@ -409,11 +421,10 @@ def build(self):
409421
cloud_storage.id,
410422
filenames=data_subset,
411423
sort_images=False,
412-
# use the same value for the chunk size as for the job size
413-
chunk_size=segment_size,
424+
chunk_size=self._task_chunk_size,
414425
validation_params={
415426
"gt_filenames": gt_filenames, # include whole GT dataset into each task
416-
"gt_frames_per_job_count": manifest.validation.val_size,
427+
"gt_frames_per_job_count": self._job_val_frames_count,
417428
},
418429
)
419430

@@ -654,10 +665,10 @@ def _validate_gt_filenames(self):
654665
)
655666
)
656667

657-
if len(gt_filenames) < self.manifest.validation.val_size:
668+
if len(gt_filenames) < self._job_val_frames_count:
658669
raise TooFewSamples(
659670
f"Too few validation samples provided ({len(gt_filenames)}), "
660-
f"at least {self.manifest.validation.val_size} required."
671+
f"at least {self._job_val_frames_count} required."
661672
)
662673

663674
def _validate_gt_annotations(self):
@@ -1461,7 +1472,7 @@ def _create_on_cvat(self):
14611472
cvat_webhook = cvat_api.create_cvat_webhook(cvat_project.id)
14621473

14631474
with SessionLocal.begin() as session:
1464-
segment_size = self.manifest.annotation.job_size
1475+
segment_size = self._task_segment_size
14651476
total_jobs = math.ceil(len(self._data_filenames_to_be_annotated) / segment_size)
14661477
self.logger.info(
14671478
"Task creation for escrow '%s': will create %s assignments",
@@ -1524,11 +1535,10 @@ def _create_on_cvat(self):
15241535
cvat_cloud_storage.id,
15251536
filenames=filenames,
15261537
sort_images=False,
1527-
# use the same value for the chunk size as for the job size
1528-
chunk_size=segment_size,
1538+
chunk_size=self._task_chunk_size,
15291539
validation_params={
15301540
"gt_filenames": gt_filenames,
1531-
"gt_frames_per_job_count": self.manifest.validation.val_size,
1541+
"gt_frames_per_job_count": self._job_val_frames_count,
15321542
},
15331543
)
15341544

@@ -1726,10 +1736,10 @@ def _validate_gt_filenames(self):
17261736
)
17271737
)
17281738

1729-
if len(gt_filenames) < self.manifest.validation.val_size:
1739+
if len(gt_filenames) < self._job_val_frames_count:
17301740
raise TooFewSamples(
17311741
f"Too few validation samples provided ({len(gt_filenames)}), "
1732-
f"at least {self.manifest.validation.val_size} required."
1742+
f"at least {self._job_val_frames_count} required."
17331743
)
17341744

17351745
def _validate_gt_annotations(self):
@@ -2262,12 +2272,16 @@ def _mangle_filenames(self):
22622272
}
22632273

22642274
@property
2265-
def _task_segment_size(self):
2275+
def _task_segment_size(self) -> int:
22662276
# Here we use a job size multiplier, because each image
22672277
# is supposed to be simple and the assignment is expected
22682278
# to take little time with the default job size.
22692279
# Then, we add a percent of job tiles for validation, keeping the requested ratio.
2270-
return self.manifest.annotation.job_size * self.job_size_mult
2280+
return super()._task_segment_size * self.job_size_mult
2281+
2282+
@property
2283+
def _job_val_frames_count(self) -> int:
2284+
return super()._job_val_frames_count * self.job_size_mult
22712285

22722286
def _prepare_task_params(self):
22732287
assert self._roi_infos is not _unset
@@ -2691,12 +2705,10 @@ def _task_params_label_key(ts):
26912705
cvat_cloud_storage.id,
26922706
filenames=point_label_filenames + gt_point_label_filenames,
26932707
sort_images=False,
2694-
# use the same value for the chunk size as for the job size
2695-
chunk_size=segment_size,
2708+
chunk_size=self._task_chunk_size,
26962709
validation_params={
26972710
"gt_filenames": gt_point_label_filenames,
2698-
"gt_frames_per_job_count": self.manifest.validation.val_size
2699-
* self.job_size_mult,
2711+
"gt_frames_per_job_count": self._job_val_frames_count,
27002712
},
27012713
)
27022714

0 commit comments

Comments
 (0)