ultralytics 8.3.132__py3-none-any.whl → 8.3.133__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.
- tests/test_cuda.py +16 -10
- ultralytics/__init__.py +1 -1
- ultralytics/data/dataset.py +4 -2
- ultralytics/engine/exporter.py +10 -2
- ultralytics/engine/model.py +1 -1
- ultralytics/utils/__init__.py +2 -1
- ultralytics/utils/checks.py +16 -11
- ultralytics/utils/loss.py +1 -1
- ultralytics/utils/metrics.py +1 -1
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/METADATA +1 -1
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/RECORD +15 -15
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.132.dist-info → ultralytics-8.3.133.dist-info}/top_level.txt +0 -0
tests/test_cuda.py
CHANGED
@@ -9,7 +9,7 @@ import torch
|
|
9
9
|
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
|
10
10
|
from ultralytics import YOLO
|
11
11
|
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
|
12
|
-
from ultralytics.utils import ASSETS, WEIGHTS_DIR
|
12
|
+
from ultralytics.utils import ASSETS, IS_JETSON, WEIGHTS_DIR
|
13
13
|
from ultralytics.utils.autodevice import GPUInfo
|
14
14
|
from ultralytics.utils.checks import check_amp
|
15
15
|
from ultralytics.utils.torch_utils import TORCH_1_13
|
@@ -17,11 +17,14 @@ from ultralytics.utils.torch_utils import TORCH_1_13
|
|
17
17
|
# Try to find idle devices if CUDA is available
|
18
18
|
DEVICES = []
|
19
19
|
if CUDA_IS_AVAILABLE:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
if IS_JETSON:
|
21
|
+
DEVICES = [0] # NVIDIA Jetson only has one GPU and does not fully support pynvml library
|
22
|
+
else:
|
23
|
+
gpu_info = GPUInfo()
|
24
|
+
gpu_info.print_status()
|
25
|
+
idle_gpus = gpu_info.select_idle_gpu(count=2, min_memory_mb=2048)
|
26
|
+
if idle_gpus:
|
27
|
+
DEVICES = idle_gpus
|
25
28
|
|
26
29
|
|
27
30
|
def test_checks():
|
@@ -38,6 +41,7 @@ def test_amp():
|
|
38
41
|
|
39
42
|
|
40
43
|
@pytest.mark.slow
|
44
|
+
# @pytest.mark.skipif(IS_JETSON, reason="Temporary disable ONNX for Jetson")
|
41
45
|
@pytest.mark.skipif(not DEVICES, reason="No CUDA devices available")
|
42
46
|
@pytest.mark.parametrize(
|
43
47
|
"task, dynamic, int8, half, batch, simplify, nms",
|
@@ -49,7 +53,7 @@ def test_amp():
|
|
49
53
|
if not (
|
50
54
|
(int8 and half)
|
51
55
|
or (task == "classify" and nms)
|
52
|
-
or (task == "obb" and nms and not TORCH_1_13)
|
56
|
+
or (task == "obb" and nms and (not TORCH_1_13 or IS_JETSON)) # obb nms fails on NVIDIA Jetson
|
53
57
|
or (simplify and dynamic) # onnxslim is slow when dynamic=True
|
54
58
|
)
|
55
59
|
],
|
@@ -110,9 +114,11 @@ def test_train():
|
|
110
114
|
|
111
115
|
device = tuple(DEVICES) if len(DEVICES) > 1 else DEVICES[0]
|
112
116
|
results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device) # requires imgsz>=64
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
# NVIDIA Jetson only has one GPU and therefore skipping checks
|
118
|
+
if not IS_JETSON:
|
119
|
+
visible = eval(os.environ["CUDA_VISIBLE_DEVICES"])
|
120
|
+
assert visible == device, f"Passed GPUs '{device}', but used GPUs '{visible}'"
|
121
|
+
assert results is (None if len(DEVICES) > 1 else not None) # DDP returns None, single-GPU returns metrics
|
116
122
|
|
117
123
|
|
118
124
|
@pytest.mark.slow
|
ultralytics/__init__.py
CHANGED
ultralytics/data/dataset.py
CHANGED
@@ -184,7 +184,9 @@ class YOLODataset(BaseDataset):
|
|
184
184
|
[cache.pop(k) for k in ("hash", "version", "msgs")] # remove items
|
185
185
|
labels = cache["labels"]
|
186
186
|
if not labels:
|
187
|
-
|
187
|
+
raise RuntimeError(
|
188
|
+
f"No valid images found in {cache_path}. Images with incorrectly formatted labels are ignored. {HELP_URL}"
|
189
|
+
)
|
188
190
|
self.im_files = [lb["im_file"] for lb in labels] # update im_files
|
189
191
|
|
190
192
|
# Check if the dataset is all boxes or all segments
|
@@ -199,7 +201,7 @@ class YOLODataset(BaseDataset):
|
|
199
201
|
for lb in labels:
|
200
202
|
lb["segments"] = []
|
201
203
|
if len_cls == 0:
|
202
|
-
LOGGER.warning(f"
|
204
|
+
LOGGER.warning(f"Labels are missing or empty in {cache_path}, training may not work correctly. {HELP_URL}")
|
203
205
|
return labels
|
204
206
|
|
205
207
|
def build_transforms(self, hyp=None):
|
ultralytics/engine/exporter.py
CHANGED
@@ -89,6 +89,7 @@ from ultralytics.utils import (
|
|
89
89
|
MACOS_VERSION,
|
90
90
|
RKNN_CHIPS,
|
91
91
|
ROOT,
|
92
|
+
SETTINGS,
|
92
93
|
WINDOWS,
|
93
94
|
YAML,
|
94
95
|
callbacks,
|
@@ -106,7 +107,7 @@ from ultralytics.utils.downloads import attempt_download_asset, get_github_asset
|
|
106
107
|
from ultralytics.utils.export import export_engine, export_onnx
|
107
108
|
from ultralytics.utils.files import file_size, spaces_in_path
|
108
109
|
from ultralytics.utils.ops import Profile, nms_rotated
|
109
|
-
from ultralytics.utils.torch_utils import TORCH_1_13, get_latest_opset, select_device
|
110
|
+
from ultralytics.utils.torch_utils import TORCH_1_13, get_cpu_info, get_latest_opset, select_device
|
110
111
|
|
111
112
|
|
112
113
|
def export_formats():
|
@@ -344,7 +345,6 @@ class Exporter:
|
|
344
345
|
"See https://docs.ultralytics.com/models/yolo-world for details."
|
345
346
|
)
|
346
347
|
model.clip_model = None # openvino int8 export error: https://github.com/ultralytics/ultralytics/pull/18445
|
347
|
-
|
348
348
|
if self.args.int8 and not self.args.data:
|
349
349
|
self.args.data = DEFAULT_CFG.data or TASK2DATA[getattr(model, "task", "detect")] # assign default data
|
350
350
|
LOGGER.warning(
|
@@ -352,6 +352,14 @@ class Exporter:
|
|
352
352
|
)
|
353
353
|
if tfjs and (ARM64 and LINUX):
|
354
354
|
raise SystemError("TF.js exports are not currently supported on ARM64 Linux")
|
355
|
+
# Recommend OpenVINO if export and Intel CPU
|
356
|
+
if SETTINGS.get("openvino_msg"):
|
357
|
+
if "intel" in get_cpu_info().lower():
|
358
|
+
LOGGER.info(
|
359
|
+
"💡 ProTip: Export to OpenVINO format for best performance on Intel CPUs."
|
360
|
+
" Learn more at https://docs.ultralytics.com/integrations/openvino/"
|
361
|
+
)
|
362
|
+
SETTINGS["openvino_msg"] = False
|
355
363
|
|
356
364
|
# Input
|
357
365
|
im = torch.zeros(self.args.batch, model.yaml.get("channels", 3), *self.imgsz).to(self.device)
|
ultralytics/engine/model.py
CHANGED
@@ -529,7 +529,7 @@ class Model(torch.nn.Module):
|
|
529
529
|
- For SAM-type models, 'prompts' can be passed as a keyword argument.
|
530
530
|
"""
|
531
531
|
if source is None:
|
532
|
-
source = ASSETS
|
532
|
+
source = "https://ultralytics.com/images/boats.jpg" if self.task == "obb" else ASSETS
|
533
533
|
LOGGER.warning(f"'source' is missing. Using 'source={source}'.")
|
534
534
|
|
535
535
|
is_cli = (ARGV[0].endswith("yolo") or ARGV[0].endswith("ultralytics")) and any(
|
ultralytics/utils/__init__.py
CHANGED
@@ -1312,7 +1312,8 @@ class SettingsManager(JSONDict):
|
|
1312
1312
|
"raytune": True, # Ray Tune integration
|
1313
1313
|
"tensorboard": False, # TensorBoard logging
|
1314
1314
|
"wandb": False, # Weights & Biases logging
|
1315
|
-
"vscode_msg": True, # VSCode
|
1315
|
+
"vscode_msg": True, # VSCode message
|
1316
|
+
"openvino_msg": True, # OpenVINO export on Intel CPU message
|
1316
1317
|
}
|
1317
1318
|
|
1318
1319
|
self.help_msg = (
|
ultralytics/utils/checks.py
CHANGED
@@ -24,6 +24,7 @@ from ultralytics.utils import (
|
|
24
24
|
AUTOINSTALL,
|
25
25
|
IS_COLAB,
|
26
26
|
IS_GIT_DIR,
|
27
|
+
IS_JETSON,
|
27
28
|
IS_KAGGLE,
|
28
29
|
IS_PIP_PACKAGE,
|
29
30
|
LINUX,
|
@@ -820,19 +821,23 @@ def cuda_device_count() -> int:
|
|
820
821
|
Returns:
|
821
822
|
(int): The number of NVIDIA GPUs available.
|
822
823
|
"""
|
823
|
-
|
824
|
-
#
|
825
|
-
|
826
|
-
|
827
|
-
|
824
|
+
if IS_JETSON:
|
825
|
+
# NVIDIA Jetson does not fully support nvidia-smi and therefore use PyTorch instead
|
826
|
+
return torch.cuda.device_count()
|
827
|
+
else:
|
828
|
+
try:
|
829
|
+
# Run the nvidia-smi command and capture its output
|
830
|
+
output = subprocess.check_output(
|
831
|
+
["nvidia-smi", "--query-gpu=count", "--format=csv,noheader,nounits"], encoding="utf-8"
|
832
|
+
)
|
828
833
|
|
829
|
-
|
830
|
-
|
834
|
+
# Take the first line and strip any leading/trailing white space
|
835
|
+
first_line = output.strip().split("\n")[0]
|
831
836
|
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
837
|
+
return int(first_line)
|
838
|
+
except (subprocess.CalledProcessError, FileNotFoundError, ValueError):
|
839
|
+
# If the command fails, nvidia-smi is not found, or output is not an integer, assume no GPUs are available
|
840
|
+
return 0
|
836
841
|
|
837
842
|
|
838
843
|
def cuda_is_available() -> bool:
|
ultralytics/utils/loss.py
CHANGED
@@ -674,7 +674,7 @@ class v8OBBLoss(v8DetectionLoss):
|
|
674
674
|
raise TypeError(
|
675
675
|
"ERROR ❌ OBB dataset incorrectly formatted or not a OBB dataset.\n"
|
676
676
|
"This error can occur when incorrectly training a 'OBB' model on a 'detect' dataset, "
|
677
|
-
"i.e. 'yolo train model=yolo11n-obb.pt data=
|
677
|
+
"i.e. 'yolo train model=yolo11n-obb.pt data=coco8.yaml'.\nVerify your dataset is a "
|
678
678
|
"correctly formatted 'OBB' dataset using 'data=dota8.yaml' "
|
679
679
|
"as an example.\nSee https://docs.ultralytics.com/datasets/obb/ for help."
|
680
680
|
) from e
|
ultralytics/utils/metrics.py
CHANGED
@@ -788,7 +788,7 @@ class Metric(SimpleClass):
|
|
788
788
|
def fitness(self):
|
789
789
|
"""Return model fitness as a weighted combination of metrics."""
|
790
790
|
w = [0.0, 0.0, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
|
791
|
-
return (np.array(self.mean_results()) * w).sum()
|
791
|
+
return (np.nan_to_num(np.array(self.mean_results())) * w).sum()
|
792
792
|
|
793
793
|
def update(self, results):
|
794
794
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.133
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
tests/__init__.py,sha256=xnMhv3O_DF1YrW4zk__ZywQzAaoTDjPKPoiI1Ktss1w,670
|
2
2
|
tests/conftest.py,sha256=rsIAipRKfrVNoTaJ1LdpYue8AbcJ_fr3d3WIlM_6uXY,2982
|
3
3
|
tests/test_cli.py,sha256=PtMFl5Lp_6ygBbYDJ1ndofz2k7ZYupMPEAiZw6aZVm8,5450
|
4
|
-
tests/test_cuda.py,sha256=
|
4
|
+
tests/test_cuda.py,sha256=eKwaqLxWTRRYNROnkH24Ch-HmxTRKQLSIxbMYFYq_p0,8123
|
5
5
|
tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
|
6
6
|
tests/test_exports.py,sha256=UeeBloqYYGZNh520R3CR80XBxA9XFrNmbK9An6V6C4w,9838
|
7
7
|
tests/test_integrations.py,sha256=dQteeRsRVuT_p5-T88-7jqT65Zm9iAXkyKg-KQ1_TQ8,6341
|
8
8
|
tests/test_python.py,sha256=m3tV3atrc3DvXZ5S-_C1ief_pDo4KlLgudjc7rq26l0,25492
|
9
9
|
tests/test_solutions.py,sha256=IFlqyOUCvGbLe_YZqWmNCe_afg4as0p-SfAv3j7VURI,6205
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=5KJcFLzyXLEENlwDYrbaJSUI5eiIL_K54mrNQvfpFhE,730
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
13
13
|
ultralytics/cfg/__init__.py,sha256=We3ti0mvUQrGRmUPcufDGboW0YAO3nSRYuoWxGagk3M,39462
|
@@ -108,7 +108,7 @@ ultralytics/data/augment.py,sha256=7Md80H36S0X5RiSqCcwynSgGcRwMqnI4YbSw-rkYnlk,1
|
|
108
108
|
ultralytics/data/base.py,sha256=bsASjxdkvojkFjas-JfFNSpBjo0GRAbYKDh64Y2hCH4,19015
|
109
109
|
ultralytics/data/build.py,sha256=0nW3fjx-DceRIKJX786zP3cMAekUXHkuTGr5eVr9rSU,9769
|
110
110
|
ultralytics/data/converter.py,sha256=znXH2XTdo0Q4NDHMny1ydVBvrxKn2kbbwI-X5bn1MlQ,26890
|
111
|
-
ultralytics/data/dataset.py,sha256=
|
111
|
+
ultralytics/data/dataset.py,sha256=uc5OMkaQtWQHBd_KST_WXO6FEoeF4xUhKDDJBKkQ354,34916
|
112
112
|
ultralytics/data/loaders.py,sha256=q1dlJ9hyLnf-gorutgFZLndP8ZNJDCmCcZzJZRDDLDw,28868
|
113
113
|
ultralytics/data/split.py,sha256=6UFXcbVrzYVAPmFbl4FeZFJOkdbN3jQFepJxi_pD-I0,4748
|
114
114
|
ultralytics/data/split_dota.py,sha256=ihG56YfNFZJDq1r7Zcgk8fKzde3gn21W0f67ub6nT68,11879
|
@@ -118,8 +118,8 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
|
|
118
118
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
119
119
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
120
120
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
121
|
-
ultralytics/engine/exporter.py,sha256=
|
122
|
-
ultralytics/engine/model.py,sha256=
|
121
|
+
ultralytics/engine/exporter.py,sha256=QI84hCFHFAbBX2evpPBxtcCLUjJEyEv40ASjqq64du4,70782
|
122
|
+
ultralytics/engine/model.py,sha256=fWhPNWUQzjjWfTEXzTaqSSearV4THRkEa_fl4dDvzWw,52930
|
123
123
|
ultralytics/engine/predictor.py,sha256=AwKpOGY2G-thNNiRw4Kf_MBLamq5tbRhXLNSMRArqFo,21803
|
124
124
|
ultralytics/engine/results.py,sha256=-JPBn_YMyZv6HhdlyhjRIZCcMf41LTyWID7JrEP64rc,79632
|
125
125
|
ultralytics/engine/trainer.py,sha256=c_iGyt6bwIf4aRUeVcVEuOKG9ZpixJsZUbI2eMqQXto,38951
|
@@ -233,19 +233,19 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
|
|
233
233
|
ultralytics/trackers/utils/gmc.py,sha256=dz3I5LbIv7h1__Xg7rGHecQFE32VFTe54tUnxb8F0Z8,14466
|
234
234
|
ultralytics/trackers/utils/kalman_filter.py,sha256=A0CqOnnaKH6kr0XwuHzyHmIU6aJAjJYxF9jVlNBKZHo,21326
|
235
235
|
ultralytics/trackers/utils/matching.py,sha256=7eIufSdeN7cXuFMjvcfvz0Ldq84m4YKZl5IGxBR8IIo,7169
|
236
|
-
ultralytics/utils/__init__.py,sha256=
|
236
|
+
ultralytics/utils/__init__.py,sha256=vac0M-Hx55QXl6Vod3QPjnLBlt87Hwxu1784RXPmeQA,52879
|
237
237
|
ultralytics/utils/autobatch.py,sha256=kg05q2qKg74y_Uq2vvr01i3KhLfpVR7sT0IXBt3_kyI,4921
|
238
238
|
ultralytics/utils/autodevice.py,sha256=OKZfTbswg6SlsYGCGMqROkA-451CXGG47oeyC5Q1kFM,7232
|
239
239
|
ultralytics/utils/benchmarks.py,sha256=lDNNnLeLUzmqKrqrqlCOiau-q7A-gcLooZP2dbxCu-U,30214
|
240
|
-
ultralytics/utils/checks.py,sha256=
|
240
|
+
ultralytics/utils/checks.py,sha256=1wUunWTC9574gi7WWbyDrr_rCrqFJYxTcOCPXQQBhW4,33091
|
241
241
|
ultralytics/utils/dist.py,sha256=aytW0JEkcA5ZTZucV92ot7Bn-apiej8aLk3QNWicjAc,4103
|
242
242
|
ultralytics/utils/downloads.py,sha256=Rn8xDwn2bzgBqiYz3Xn0rm3MWjk4T-QUd2Ajlu1EpQ4,22312
|
243
243
|
ultralytics/utils/errors.py,sha256=vY9h2evFSrHnZdHJVVrmm8Zzw4qVDLyo9DeYW5g0dFk,1573
|
244
244
|
ultralytics/utils/export.py,sha256=XInnl9AQeik7EuR1492nzDvgDqaV43FlnM5CLamrgd4,8814
|
245
245
|
ultralytics/utils/files.py,sha256=0K4O1cgqRiXaDw7EQK13TqA5SME_RrvfDVQSPetNr5w,8042
|
246
246
|
ultralytics/utils/instance.py,sha256=UOEsXR9V-bXNRk6BTonASBEgeMqvzzAk4S7VdXZJUAM,18090
|
247
|
-
ultralytics/utils/loss.py,sha256=
|
248
|
-
ultralytics/utils/metrics.py,sha256=
|
247
|
+
ultralytics/utils/loss.py,sha256=Woc_rj7ptCyezHdylEygXMeSEgivYu_B9jJHD4UwxWE,37607
|
248
|
+
ultralytics/utils/metrics.py,sha256=pWNq-66VqkMjj05Gqkm8ddoElDK72q_U9cl8y-aEN6k,53963
|
249
249
|
ultralytics/utils/ops.py,sha256=YFwPrKlPcgEmgAWqnJVR0Ccx5NQgp5e3P-YYHwVSP0k,34779
|
250
250
|
ultralytics/utils/patches.py,sha256=_dhIU_eDklQE-aWIjpyjPHl_wOwZoGuIUQnXgdSwk_A,5020
|
251
251
|
ultralytics/utils/plotting.py,sha256=m9Hsbt6U073jAiztX6clpd9KzznW62oHxCWlBcm0T-s,46920
|
@@ -264,9 +264,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=yYUgEgSv6L39sSev6vjwhAWU3DlPDsbSDV
|
|
264
264
|
ultralytics/utils/callbacks/raytune.py,sha256=A8amUGpux7dYES-L1iSeMoMXBySGWCD1aUqT7vcG-pU,1284
|
265
265
|
ultralytics/utils/callbacks/tensorboard.py,sha256=jgYnym3cUQFAgN1GzTyO7l3jINtfAh8zhrllDvnLuVQ,5339
|
266
266
|
ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
|
267
|
-
ultralytics-8.3.
|
268
|
-
ultralytics-8.3.
|
269
|
-
ultralytics-8.3.
|
270
|
-
ultralytics-8.3.
|
271
|
-
ultralytics-8.3.
|
272
|
-
ultralytics-8.3.
|
267
|
+
ultralytics-8.3.133.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
268
|
+
ultralytics-8.3.133.dist-info/METADATA,sha256=po51EqOXoP7a9l8ZhORSK5BE5RJ3iPeUvxPUqILhT5s,37223
|
269
|
+
ultralytics-8.3.133.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
270
|
+
ultralytics-8.3.133.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
271
|
+
ultralytics-8.3.133.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
272
|
+
ultralytics-8.3.133.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|