supervisely 6.73.444__py3-none-any.whl → 6.73.445__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- supervisely/api/entity_annotation/figure_api.py +8 -5
- supervisely/nn/inference/inference.py +3 -5
- supervisely/nn/inference/inference_request.py +13 -1
- supervisely/nn/model/prediction_session.py +8 -7
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/METADATA +1 -1
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/RECORD +10 -10
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/LICENSE +0 -0
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/WHEEL +0 -0
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.444.dist-info → supervisely-6.73.445.dist-info}/top_level.txt +0 -0
|
@@ -24,10 +24,10 @@ from requests_toolbelt import MultipartDecoder, MultipartEncoder
|
|
|
24
24
|
from tqdm import tqdm
|
|
25
25
|
|
|
26
26
|
from supervisely._utils import batched, logger, run_coroutine
|
|
27
|
+
from supervisely.annotation.label import LabelingStatus
|
|
27
28
|
from supervisely.api.module_api import ApiField, ModuleApi, RemoveableBulkModuleApi
|
|
28
29
|
from supervisely.geometry.rectangle import Rectangle
|
|
29
30
|
from supervisely.video_annotation.key_id_map import KeyIdMap
|
|
30
|
-
from supervisely.annotation.label import LabelingStatus
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class FigureInfo(NamedTuple):
|
|
@@ -595,10 +595,13 @@ class FigureApi(RemoveableBulkModuleApi):
|
|
|
595
595
|
"""
|
|
596
596
|
geometries = {}
|
|
597
597
|
for idx, part in self._download_geometries_generator(ids):
|
|
598
|
-
|
|
599
|
-
progress_cb
|
|
600
|
-
|
|
601
|
-
|
|
598
|
+
try:
|
|
599
|
+
if progress_cb is not None:
|
|
600
|
+
progress_cb(len(part.content))
|
|
601
|
+
geometry_json = json.loads(part.content)
|
|
602
|
+
geometries[idx] = geometry_json
|
|
603
|
+
except Exception as e:
|
|
604
|
+
raise RuntimeError(f"Failed to decode geometry for figure ID {idx}") from e
|
|
602
605
|
|
|
603
606
|
if len(geometries) != len(ids):
|
|
604
607
|
raise RuntimeError("Not all geometries were downloaded")
|
|
@@ -1253,7 +1253,6 @@ class Inference:
|
|
|
1253
1253
|
if self._model_meta is None:
|
|
1254
1254
|
self._set_model_meta_from_classes()
|
|
1255
1255
|
|
|
1256
|
-
|
|
1257
1256
|
def _set_model_meta_custom_model(self, model_info: dict):
|
|
1258
1257
|
model_meta = model_info.get("model_meta")
|
|
1259
1258
|
if model_meta is None:
|
|
@@ -2146,7 +2145,7 @@ class Inference:
|
|
|
2146
2145
|
video_id = get_value_for_keys(state, ["videoId", "video_id"], ignore_none=True)
|
|
2147
2146
|
if video_id is None:
|
|
2148
2147
|
raise ValueError("Video id is not provided")
|
|
2149
|
-
video_info = api.video.get_info_by_id(video_id)
|
|
2148
|
+
video_info = api.video.get_info_by_id(video_id, force_metadata_for_links=True)
|
|
2150
2149
|
start_frame_index = get_value_for_keys(
|
|
2151
2150
|
state, ["startFrameIndex", "start_frame_index", "start_frame"], ignore_none=True
|
|
2152
2151
|
)
|
|
@@ -2747,10 +2746,10 @@ class Inference:
|
|
|
2747
2746
|
context.setdefault("created_dataset", {})[src_dataset_id] = created_dataset.id
|
|
2748
2747
|
return created_dataset.id
|
|
2749
2748
|
|
|
2750
|
-
created_names = []
|
|
2751
2749
|
if context is None:
|
|
2752
2750
|
context = {}
|
|
2753
2751
|
for dataset_id, preds in ds_predictions.items():
|
|
2752
|
+
created_names = set()
|
|
2754
2753
|
if dst_project_id is not None:
|
|
2755
2754
|
# upload to the destination project
|
|
2756
2755
|
dst_dataset_id = _get_or_create_dataset(
|
|
@@ -2826,7 +2825,7 @@ class Inference:
|
|
|
2826
2825
|
with_annotations=False,
|
|
2827
2826
|
save_source_date=False,
|
|
2828
2827
|
)
|
|
2829
|
-
created_names.
|
|
2828
|
+
created_names.update([image_info.name for image_info in dst_image_infos])
|
|
2830
2829
|
api.annotation.upload_anns([image_info.id for image_info in dst_image_infos], anns)
|
|
2831
2830
|
else:
|
|
2832
2831
|
# upload to the source dataset
|
|
@@ -4440,7 +4439,6 @@ def _get_log_extra_for_inference_request(
|
|
|
4440
4439
|
"has_result": inference_request.final_result is not None,
|
|
4441
4440
|
"pending_results": inference_request.pending_num(),
|
|
4442
4441
|
"exception": inference_request.exception_json(),
|
|
4443
|
-
"result": inference_request._final_result,
|
|
4444
4442
|
"preparing_progress": progress,
|
|
4445
4443
|
}
|
|
4446
4444
|
return log_extra
|
|
@@ -47,6 +47,8 @@ class InferenceRequest:
|
|
|
47
47
|
self._final_result = None
|
|
48
48
|
self._exception = None
|
|
49
49
|
self._stopped = threading.Event()
|
|
50
|
+
self._progress_log_interval = 5.0
|
|
51
|
+
self._last_progress_report_time = 0
|
|
50
52
|
self.progress = Progress(
|
|
51
53
|
message=self._stage,
|
|
52
54
|
total_cnt=1,
|
|
@@ -135,9 +137,19 @@ class InferenceRequest:
|
|
|
135
137
|
)
|
|
136
138
|
self._updated()
|
|
137
139
|
|
|
140
|
+
def set_progress_log_interval(self, interval: float):
|
|
141
|
+
self._progress_log_interval = interval
|
|
142
|
+
|
|
138
143
|
def done(self, n=1):
|
|
139
144
|
with self._lock:
|
|
140
|
-
|
|
145
|
+
if (
|
|
146
|
+
self._progress_log_interval is None
|
|
147
|
+
or time.monotonic() - self._last_progress_report_time > self._progress_log_interval
|
|
148
|
+
) or (self.progress.current + n >= self.progress.total):
|
|
149
|
+
self.progress.iters_done_report(n)
|
|
150
|
+
self._last_progress_report_time = time.monotonic()
|
|
151
|
+
else:
|
|
152
|
+
self.progress.iters_done(n)
|
|
141
153
|
if self._stage == InferenceRequest.Stage.INFERENCE:
|
|
142
154
|
self.global_progress_current += n
|
|
143
155
|
if self.manager is not None:
|
|
@@ -523,18 +523,16 @@ class PredictionSession:
|
|
|
523
523
|
"Inference is already running. Please stop it before starting a new one."
|
|
524
524
|
)
|
|
525
525
|
resp = self._post(method, **kwargs).json()
|
|
526
|
-
|
|
527
526
|
self.inference_request_uuid = resp["inference_request_uuid"]
|
|
528
|
-
|
|
529
|
-
logger.info(
|
|
530
|
-
"Inference has started:",
|
|
531
|
-
extra={"inference_request_uuid": resp.get("inference_request_uuid")},
|
|
532
|
-
)
|
|
533
527
|
try:
|
|
534
528
|
resp, has_started = self._wait_for_inference_start(tqdm=self.tqdm)
|
|
535
529
|
except:
|
|
536
530
|
self.stop()
|
|
537
531
|
raise
|
|
532
|
+
logger.info(
|
|
533
|
+
"Inference has started:",
|
|
534
|
+
extra={"inference_request_uuid": resp.get("inference_request_uuid")},
|
|
535
|
+
)
|
|
538
536
|
frame_iterator = self.Iterator(resp["progress"]["total"], self, tqdm=self.tqdm)
|
|
539
537
|
return frame_iterator
|
|
540
538
|
|
|
@@ -647,8 +645,11 @@ class PredictionSession:
|
|
|
647
645
|
encoder = MultipartEncoder(fields)
|
|
648
646
|
if self.tqdm is not None:
|
|
649
647
|
|
|
648
|
+
bytes_read = 0
|
|
650
649
|
def _callback(monitor):
|
|
651
|
-
|
|
650
|
+
nonlocal bytes_read
|
|
651
|
+
self.tqdm.update(monitor.bytes_read - bytes_read)
|
|
652
|
+
bytes_read = monitor.bytes_read
|
|
652
653
|
|
|
653
654
|
video_size = get_file_size(video_path)
|
|
654
655
|
self._update_progress(self.tqdm, "Uploading video", 0, video_size, is_size=True)
|
|
@@ -52,7 +52,7 @@ supervisely/api/video_annotation_tool_api.py,sha256=3A9-U8WJzrTShP_n9T8U01M9FzGY
|
|
|
52
52
|
supervisely/api/workspace_api.py,sha256=24O9uR5eIA2JdD0eQLi9LGaaHISdb2gUqnxJtx7bTew,9222
|
|
53
53
|
supervisely/api/entity_annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
54
|
supervisely/api/entity_annotation/entity_annotation_api.py,sha256=R7irdsYmUecsibuUFbcPRiS6tV3GnCHi9NfWeuoN7_0,3085
|
|
55
|
-
supervisely/api/entity_annotation/figure_api.py,sha256=
|
|
55
|
+
supervisely/api/entity_annotation/figure_api.py,sha256=c0XH5Gq0I0wze8UxAohiQROy6XksFwLry1gLyEItcfE,38812
|
|
56
56
|
supervisely/api/entity_annotation/object_api.py,sha256=gbcNvN_KY6G80Me8fHKQgryc2Co7VU_kfFd1GYILZ4E,8875
|
|
57
57
|
supervisely/api/entity_annotation/tag_api.py,sha256=IapvSZmakjdOn0yvqP2tQRY8gkZg0bcvIZBwWRcafrg,18996
|
|
58
58
|
supervisely/api/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -904,8 +904,8 @@ supervisely/nn/benchmark/visualization/widgets/table/__init__.py,sha256=47DEQpj8
|
|
|
904
904
|
supervisely/nn/benchmark/visualization/widgets/table/table.py,sha256=atmDnF1Af6qLQBUjLhK18RMDKAYlxnsuVHMSEa5a-e8,4319
|
|
905
905
|
supervisely/nn/inference/__init__.py,sha256=QFukX2ip-U7263aEPCF_UCFwj6EujbMnsgrXp5Bbt8I,1623
|
|
906
906
|
supervisely/nn/inference/cache.py,sha256=rfmb1teJ9lNDfisUSh6bwDCVkPZocn8GMvDgLQktnbo,35023
|
|
907
|
-
supervisely/nn/inference/inference.py,sha256=
|
|
908
|
-
supervisely/nn/inference/inference_request.py,sha256=
|
|
907
|
+
supervisely/nn/inference/inference.py,sha256=Zc6DomIJxM301QsYAqrtCT0FyXvCOmxlLEJ-TIxnKHg,207110
|
|
908
|
+
supervisely/nn/inference/inference_request.py,sha256=1Tq-OV7bYtr0bKDqvBXh72wpR5Misgk-iQn5waCxtqo,14830
|
|
909
909
|
supervisely/nn/inference/session.py,sha256=XUqJ_CqHk3ZJYkWxdnErN_6afCpIBU76nq6Ek7DiOQI,35792
|
|
910
910
|
supervisely/nn/inference/uploader.py,sha256=Dn5MfMRq7tclEWpP0B9fJjTiQPBpwumfXxC8-lOYgnM,5659
|
|
911
911
|
supervisely/nn/inference/video_inference.py,sha256=8Bshjr6rDyLay5Za8IB8Dr6FURMO2R_v7aELasO8pR4,5746
|
|
@@ -993,7 +993,7 @@ supervisely/nn/legacy/training/eval_planner.py,sha256=zN9b0_CX7sWGdC8e6riTvD-NOU
|
|
|
993
993
|
supervisely/nn/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
994
994
|
supervisely/nn/model/model_api.py,sha256=tSstGGdzm3cHc81P7IoM447sMVesUYJpspzMqUY70pg,10322
|
|
995
995
|
supervisely/nn/model/prediction.py,sha256=gt4c80LkcBFd5-a2iHpShPDTRO81MKHSWiBp47Gb1z0,11983
|
|
996
|
-
supervisely/nn/model/prediction_session.py,sha256=
|
|
996
|
+
supervisely/nn/model/prediction_session.py,sha256=0Vs614dqG21U27OhplvzxGvHds-5CWFvj5icaOnwz3g,27837
|
|
997
997
|
supervisely/nn/tracker/__init__.py,sha256=1Pv1zLedcZaTk1BS3ezscQbVizq7vQABlNbLhEhHkOI,326
|
|
998
998
|
supervisely/nn/tracker/base_tracker.py,sha256=2d23JlHizOqVye324YT20EE8RP52uwoQUkPYvPXJTdw,1668
|
|
999
999
|
supervisely/nn/tracker/botsort_tracker.py,sha256=F2OaoeK1EAlBKAY95Fd9ZooZIlOZBh4YThhzmKNyP6w,10224
|
|
@@ -1127,9 +1127,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
1127
1127
|
supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
|
|
1128
1128
|
supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
|
|
1129
1129
|
supervisely_lib/__init__.py,sha256=yRwzEQmVwSd6lUQoAUdBngKEOlnoQ6hA9ZcoZGJRNC4,331
|
|
1130
|
-
supervisely-6.73.
|
|
1131
|
-
supervisely-6.73.
|
|
1132
|
-
supervisely-6.73.
|
|
1133
|
-
supervisely-6.73.
|
|
1134
|
-
supervisely-6.73.
|
|
1135
|
-
supervisely-6.73.
|
|
1130
|
+
supervisely-6.73.445.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1131
|
+
supervisely-6.73.445.dist-info/METADATA,sha256=okbQprEc_0SUdjAP1h_TRp8DvyVWlTOJgvhMF06O_H8,35480
|
|
1132
|
+
supervisely-6.73.445.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1133
|
+
supervisely-6.73.445.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1134
|
+
supervisely-6.73.445.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1135
|
+
supervisely-6.73.445.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|