@@ -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