ultralytics 8.3.206__py3-none-any.whl → 8.3.208__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 +1 -1
- tests/test_exports.py +1 -1
- tests/test_python.py +1 -1
- ultralytics/__init__.py +1 -1
- ultralytics/engine/exporter.py +21 -19
- ultralytics/nn/autobackend.py +1 -1
- ultralytics/nn/modules/head.py +10 -4
- ultralytics/utils/benchmarks.py +1 -1
- ultralytics/utils/checks.py +24 -11
- ultralytics/utils/downloads.py +3 -3
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/METADATA +1 -1
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/RECORD +16 -16
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.206.dist-info → ultralytics-8.3.208.dist-info}/top_level.txt +0 -0
tests/test_cuda.py
CHANGED
@@ -104,7 +104,7 @@ def test_export_engine_matrix(task, dynamic, int8, half, batch):
|
|
104
104
|
)
|
105
105
|
YOLO(file)([SOURCE] * batch, imgsz=64 if dynamic else 32, device=DEVICES[0]) # exported model inference
|
106
106
|
Path(file).unlink() # cleanup
|
107
|
-
Path(file).with_suffix(".cache").unlink() if int8 else None # cleanup INT8 cache
|
107
|
+
Path(file).with_suffix(".cache").unlink(missing_ok=True) if int8 else None # cleanup INT8 cache
|
108
108
|
|
109
109
|
|
110
110
|
@pytest.mark.skipif(not DEVICES, reason="No CUDA devices available")
|
tests/test_exports.py
CHANGED
@@ -101,7 +101,7 @@ def test_export_onnx_matrix(task, dynamic, int8, half, batch, simplify, nms):
|
|
101
101
|
[ # generate all combinations except for exclusion cases
|
102
102
|
(task, dynamic, int8, half, batch, nms)
|
103
103
|
for task, dynamic, int8, half, batch, nms in product(
|
104
|
-
TASKS, [False, True], [False], [False], [1, 2], [True, False]
|
104
|
+
TASKS, [False, True], [False], [False, True], [1, 2], [True, False]
|
105
105
|
)
|
106
106
|
if not (task == "classify" and nms)
|
107
107
|
],
|
tests/test_python.py
CHANGED
@@ -408,7 +408,7 @@ def test_utils_init():
|
|
408
408
|
def test_utils_checks():
|
409
409
|
"""Test various utility checks for filenames, git status, requirements, image sizes, and versions."""
|
410
410
|
checks.check_yolov5u_filename("yolov5n.pt")
|
411
|
-
checks.check_requirements() # check requirements.txt
|
411
|
+
checks.check_requirements("numpy") # check requirements.txt
|
412
412
|
checks.check_imgsz([600, 600], max_dim=1)
|
413
413
|
checks.check_imshow(warn=True)
|
414
414
|
checks.check_version("ultralytics", "8.0.0")
|
ultralytics/__init__.py
CHANGED
ultralytics/engine/exporter.py
CHANGED
@@ -360,8 +360,8 @@ class Exporter:
|
|
360
360
|
if self.args.half and self.args.int8:
|
361
361
|
LOGGER.warning("half=True and int8=True are mutually exclusive, setting half=False.")
|
362
362
|
self.args.half = False
|
363
|
-
if self.args.half and onnx and self.device.type == "cpu":
|
364
|
-
LOGGER.warning("half=True only compatible with GPU export, i.e. use device=0")
|
363
|
+
if self.args.half and (onnx or jit) and self.device.type == "cpu":
|
364
|
+
LOGGER.warning("half=True only compatible with GPU export, i.e. use device=0, setting half=False.")
|
365
365
|
self.args.half = False
|
366
366
|
self.imgsz = check_imgsz(self.args.imgsz, stride=model.stride, min_dim=2) # check image size
|
367
367
|
if self.args.optimize:
|
@@ -463,7 +463,7 @@ class Exporter:
|
|
463
463
|
y = None
|
464
464
|
for _ in range(2): # dry runs
|
465
465
|
y = NMSModel(model, self.args)(im) if self.args.nms and not coreml and not imx else model(im)
|
466
|
-
if self.args.half and onnx and self.device.type != "cpu":
|
466
|
+
if self.args.half and (onnx or jit) and self.device.type != "cpu":
|
467
467
|
im, model = im.half(), model.half() # to FP16
|
468
468
|
|
469
469
|
# Filter warnings
|
@@ -510,11 +510,11 @@ class Exporter:
|
|
510
510
|
self.run_callbacks("on_export_start")
|
511
511
|
# Exports
|
512
512
|
f = [""] * len(fmts) # exported filenames
|
513
|
-
if jit
|
513
|
+
if jit: # TorchScript
|
514
514
|
f[0] = self.export_torchscript()
|
515
515
|
if engine: # TensorRT required before ONNX
|
516
516
|
f[1] = self.export_engine(dla=dla)
|
517
|
-
if onnx: # ONNX
|
517
|
+
if onnx or ncnn: # ONNX
|
518
518
|
f[2] = self.export_onnx()
|
519
519
|
if xml: # OpenVINO
|
520
520
|
f[3] = self.export_openvino()
|
@@ -806,7 +806,7 @@ class Exporter:
|
|
806
806
|
|
807
807
|
LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__}...")
|
808
808
|
f = Path(str(self.file).replace(self.file.suffix, f"_ncnn_model{os.sep}"))
|
809
|
-
|
809
|
+
f_onnx = self.file.with_suffix(".onnx")
|
810
810
|
|
811
811
|
name = Path("pnnx.exe" if WINDOWS else "pnnx") # PNNX filename
|
812
812
|
pnnx = name if name.is_file() else (ROOT / name)
|
@@ -820,10 +820,10 @@ class Exporter:
|
|
820
820
|
try:
|
821
821
|
release, assets = get_github_assets(repo="pnnx/pnnx")
|
822
822
|
asset = [x for x in assets if f"{system}.zip" in x][0]
|
823
|
-
assert isinstance(asset, str), "Unable to retrieve PNNX repo assets" # i.e. pnnx-
|
823
|
+
assert isinstance(asset, str), "Unable to retrieve PNNX repo assets" # i.e. pnnx-20250930-macos.zip
|
824
824
|
LOGGER.info(f"{prefix} successfully found latest PNNX asset file {asset}")
|
825
825
|
except Exception as e:
|
826
|
-
release = "
|
826
|
+
release = "20250930"
|
827
827
|
asset = f"pnnx-{release}-{system}.zip"
|
828
828
|
LOGGER.warning(f"{prefix} PNNX GitHub assets not found: {e}, using default {asset}")
|
829
829
|
unzip_dir = safe_download(f"https://github.com/pnnx/pnnx/releases/download/{release}/{asset}", delete=True)
|
@@ -847,7 +847,7 @@ class Exporter:
|
|
847
847
|
|
848
848
|
cmd = [
|
849
849
|
str(pnnx),
|
850
|
-
str(
|
850
|
+
str(f_onnx),
|
851
851
|
*ncnn_args,
|
852
852
|
*pnnx_args,
|
853
853
|
f"fp16={int(self.args.half)}",
|
@@ -894,7 +894,7 @@ class Exporter:
|
|
894
894
|
classifier_config = ct.ClassifierConfig(list(self.model.names.values()))
|
895
895
|
model = self.model
|
896
896
|
elif self.model.task == "detect":
|
897
|
-
model = IOSDetectModel(self.model, self.im) if self.args.nms else self.model
|
897
|
+
model = IOSDetectModel(self.model, self.im, mlprogram=not mlmodel) if self.args.nms else self.model
|
898
898
|
else:
|
899
899
|
if self.args.nms:
|
900
900
|
LOGGER.warning(f"{prefix} 'nms=True' is only available for Detect models like 'yolo11n.pt'.")
|
@@ -938,12 +938,7 @@ class Exporter:
|
|
938
938
|
config = cto.OptimizationConfig(global_config=op_config)
|
939
939
|
ct_model = cto.palettize_weights(ct_model, config=config)
|
940
940
|
if self.args.nms and self.model.task == "detect":
|
941
|
-
if mlmodel
|
942
|
-
weights_dir = None
|
943
|
-
else:
|
944
|
-
ct_model.save(str(f)) # save otherwise weights_dir does not exist
|
945
|
-
weights_dir = str(f / "Data/com.apple.CoreML/weights")
|
946
|
-
ct_model = self._pipeline_coreml(ct_model, weights_dir=weights_dir)
|
941
|
+
ct_model = self._pipeline_coreml(ct_model, weights_dir=None if mlmodel else ct_model.weights_dir)
|
947
942
|
|
948
943
|
m = self.metadata # metadata dict
|
949
944
|
ct_model.short_description = m.pop("description")
|
@@ -1277,7 +1272,8 @@ class Exporter:
|
|
1277
1272
|
names = self.metadata["names"]
|
1278
1273
|
nx, ny = spec.description.input[0].type.imageType.width, spec.description.input[0].type.imageType.height
|
1279
1274
|
nc = outs[0].type.multiArrayType.shape[-1]
|
1280
|
-
|
1275
|
+
if len(names) != nc: # Hack fix for MLProgram NMS bug https://github.com/ultralytics/ultralytics/issues/22309
|
1276
|
+
names = {**names, **{i: str(i) for i in range(len(names), nc)}}
|
1281
1277
|
|
1282
1278
|
# Model from spec
|
1283
1279
|
model = ct.models.MLModel(spec, weights_dir=weights_dir)
|
@@ -1367,18 +1363,20 @@ class Exporter:
|
|
1367
1363
|
class IOSDetectModel(torch.nn.Module):
|
1368
1364
|
"""Wrap an Ultralytics YOLO model for Apple iOS CoreML export."""
|
1369
1365
|
|
1370
|
-
def __init__(self, model, im):
|
1366
|
+
def __init__(self, model, im, mlprogram=True):
|
1371
1367
|
"""
|
1372
1368
|
Initialize the IOSDetectModel class with a YOLO model and example image.
|
1373
1369
|
|
1374
1370
|
Args:
|
1375
1371
|
model (torch.nn.Module): The YOLO model to wrap.
|
1376
1372
|
im (torch.Tensor): Example input tensor with shape (B, C, H, W).
|
1373
|
+
mlprogram (bool): Whether exporting to MLProgram format to fix NMS bug.
|
1377
1374
|
"""
|
1378
1375
|
super().__init__()
|
1379
1376
|
_, _, h, w = im.shape # batch, channel, height, width
|
1380
1377
|
self.model = model
|
1381
1378
|
self.nc = len(model.names) # number of classes
|
1379
|
+
self.mlprogram = mlprogram
|
1382
1380
|
if w == h:
|
1383
1381
|
self.normalize = 1.0 / w # scalar
|
1384
1382
|
else:
|
@@ -1390,7 +1388,11 @@ class IOSDetectModel(torch.nn.Module):
|
|
1390
1388
|
def forward(self, x):
|
1391
1389
|
"""Normalize predictions of object detection model with input size-dependent factors."""
|
1392
1390
|
xywh, cls = self.model(x)[0].transpose(0, 1).split((4, self.nc), 1)
|
1393
|
-
|
1391
|
+
if self.mlprogram and self.nc % 80 != 0: # NMS bug https://github.com/ultralytics/ultralytics/issues/22309
|
1392
|
+
pad_length = int(((self.nc + 79) // 80) * 80) - self.nc # pad class length to multiple of 80
|
1393
|
+
cls = torch.nn.functional.pad(cls, (0, pad_length, 0, 0), "constant", 0)
|
1394
|
+
|
1395
|
+
return cls, xywh * self.normalize
|
1394
1396
|
|
1395
1397
|
|
1396
1398
|
class NMSModel(torch.nn.Module):
|
ultralytics/nn/autobackend.py
CHANGED
@@ -254,7 +254,7 @@ class AutoBackend(nn.Module):
|
|
254
254
|
session = onnxruntime.InferenceSession(w, providers=providers)
|
255
255
|
else:
|
256
256
|
check_requirements(
|
257
|
-
|
257
|
+
("model-compression-toolkit>=2.4.1", "sony-custom-layers[torch]>=0.3.0", "onnxruntime-extensions")
|
258
258
|
)
|
259
259
|
w = next(Path(w).glob("*.onnx"))
|
260
260
|
LOGGER.info(f"Loading {w} for ONNX IMX inference...")
|
ultralytics/nn/modules/head.py
CHANGED
@@ -896,6 +896,10 @@ class RTDETRDecoder(nn.Module):
|
|
896
896
|
"""
|
897
897
|
|
898
898
|
export = False # export mode
|
899
|
+
shapes = []
|
900
|
+
anchors = torch.empty(0)
|
901
|
+
valid_mask = torch.empty(0)
|
902
|
+
dynamic = False
|
899
903
|
|
900
904
|
def __init__(
|
901
905
|
self,
|
@@ -1116,10 +1120,12 @@ class RTDETRDecoder(nn.Module):
|
|
1116
1120
|
enc_scores (torch.Tensor): Encoded scores.
|
1117
1121
|
"""
|
1118
1122
|
bs = feats.shape[0]
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1123
|
+
if self.dynamic or self.shapes != shapes:
|
1124
|
+
self.anchors, self.valid_mask = self._generate_anchors(shapes, dtype=feats.dtype, device=feats.device)
|
1125
|
+
self.shapes = shapes
|
1122
1126
|
|
1127
|
+
# Prepare input for decoder
|
1128
|
+
features = self.enc_output(self.valid_mask * feats) # bs, h*w, 256
|
1123
1129
|
enc_outputs_scores = self.enc_score_head(features) # (bs, h*w, nc)
|
1124
1130
|
|
1125
1131
|
# Query selection
|
@@ -1131,7 +1137,7 @@ class RTDETRDecoder(nn.Module):
|
|
1131
1137
|
# (bs, num_queries, 256)
|
1132
1138
|
top_k_features = features[batch_ind, topk_ind].view(bs, self.num_queries, -1)
|
1133
1139
|
# (bs, num_queries, 4)
|
1134
|
-
top_k_anchors = anchors[:, topk_ind].view(bs, self.num_queries, -1)
|
1140
|
+
top_k_anchors = self.anchors[:, topk_ind].view(bs, self.num_queries, -1)
|
1135
1141
|
|
1136
1142
|
# Dynamic anchors + static content
|
1137
1143
|
refer_bbox = self.enc_bbox_head(top_k_features) + top_k_anchors
|
ultralytics/utils/benchmarks.py
CHANGED
@@ -595,7 +595,7 @@ class ProfileModels:
|
|
595
595
|
mean_time (float): Mean inference time in milliseconds.
|
596
596
|
std_time (float): Standard deviation of inference time in milliseconds.
|
597
597
|
"""
|
598
|
-
check_requirements("onnxruntime")
|
598
|
+
check_requirements([("onnxruntime", "onnxruntime-gpu")]) # either package meets requirements
|
599
599
|
import onnxruntime as ort
|
600
600
|
|
601
601
|
# Session with either 'TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'
|
ultralytics/utils/checks.py
CHANGED
@@ -363,8 +363,9 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
|
|
363
363
|
Check if installed dependencies meet Ultralytics YOLO models requirements and attempt to auto-update if needed.
|
364
364
|
|
365
365
|
Args:
|
366
|
-
requirements (Path | str | list[str] | tuple[str]): Path to a requirements.txt file, a single package
|
367
|
-
requirement as a string,
|
366
|
+
requirements (Path | str | list[str|tuple] | tuple[str]): Path to a requirements.txt file, a single package
|
367
|
+
requirement as a string, a list of package requirements as strings, or a list containing strings and
|
368
|
+
tuples of interchangeable packages.
|
368
369
|
exclude (tuple): Tuple of package names to exclude from checking.
|
369
370
|
install (bool): If True, attempt to auto-update packages that don't meet requirements.
|
370
371
|
cmds (str): Additional commands to pass to the pip install command when auto-updating.
|
@@ -376,10 +377,13 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
|
|
376
377
|
>>> check_requirements("path/to/requirements.txt")
|
377
378
|
|
378
379
|
Check a single package
|
379
|
-
>>> check_requirements("ultralytics>=8.
|
380
|
+
>>> check_requirements("ultralytics>=8.3.200", cmds="--index-url https://download.pytorch.org/whl/cpu")
|
380
381
|
|
381
382
|
Check multiple packages
|
382
|
-
>>> check_requirements(["numpy", "ultralytics
|
383
|
+
>>> check_requirements(["numpy", "ultralytics"])
|
384
|
+
|
385
|
+
Check with interchangeable packages
|
386
|
+
>>> check_requirements([("onnxruntime", "onnxruntime-gpu"), "numpy"])
|
383
387
|
"""
|
384
388
|
prefix = colorstr("red", "bold", "requirements:")
|
385
389
|
if isinstance(requirements, Path): # requirements.txt file
|
@@ -391,13 +395,22 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
|
|
391
395
|
|
392
396
|
pkgs = []
|
393
397
|
for r in requirements:
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
398
|
+
candidates = r if isinstance(r, (list, tuple)) else [r]
|
399
|
+
satisfied = False
|
400
|
+
|
401
|
+
for candidate in candidates:
|
402
|
+
r_stripped = candidate.rpartition("/")[-1].replace(".git", "") # replace git+https://org/repo.git -> 'repo'
|
403
|
+
match = re.match(r"([a-zA-Z0-9-_]+)([<>!=~]+.*)?", r_stripped)
|
404
|
+
name, required = match[1], match[2].strip() if match[2] else ""
|
405
|
+
try:
|
406
|
+
if check_version(metadata.version(name), required):
|
407
|
+
satisfied = True
|
408
|
+
break
|
409
|
+
except (AssertionError, metadata.PackageNotFoundError):
|
410
|
+
continue
|
411
|
+
|
412
|
+
if not satisfied:
|
413
|
+
pkgs.append(candidates[0])
|
401
414
|
|
402
415
|
@Retry(times=2, delay=1)
|
403
416
|
def attempt_install(packages, commands, use_uv):
|
ultralytics/utils/downloads.py
CHANGED
@@ -374,10 +374,10 @@ def safe_download(
|
|
374
374
|
raise # Re-raise immediately - no point retrying if insufficient disk space
|
375
375
|
except Exception as e:
|
376
376
|
if i == 0 and not is_online():
|
377
|
-
raise ConnectionError(emojis(f"❌ Download failure for {uri}. Environment
|
377
|
+
raise ConnectionError(emojis(f"❌ Download failure for {uri}. Environment may be offline.")) from e
|
378
378
|
elif i >= retry:
|
379
|
-
raise ConnectionError(emojis(f"❌ Download failure for {uri}. Retry limit reached.")) from e
|
380
|
-
LOGGER.warning(f"Download failure, retrying {i + 1}/{retry} {uri}...")
|
379
|
+
raise ConnectionError(emojis(f"❌ Download failure for {uri}. Retry limit reached. {e}")) from e
|
380
|
+
LOGGER.warning(f"Download failure, retrying {i + 1}/{retry} {uri}... {e}")
|
381
381
|
|
382
382
|
if unzip and f.exists() and f.suffix in {"", ".zip", ".tar", ".gz"}:
|
383
383
|
from zipfile import is_zipfile
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.208
|
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=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
|
2
2
|
tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
|
3
3
|
tests/test_cli.py,sha256=0jqS6RfzmJeqgjozUqfT4AoP2d_IhUR0Ej-5ToQBK7A,5463
|
4
|
-
tests/test_cuda.py,sha256=
|
4
|
+
tests/test_cuda.py,sha256=6zUSwu3xaYiO3RRNyDkNsuyeq47b1e9f6JNhPZVeDL4,8142
|
5
5
|
tests/test_engine.py,sha256=8W4_D48ZBUp-DsUlRYxHTXzougycY8yggvpbVwQDLPg,5025
|
6
|
-
tests/test_exports.py,sha256=
|
6
|
+
tests/test_exports.py,sha256=3o-qqPrPqjD1a_U6KBvwAusZ_Wy6S1WzmuvgRRUXmcA,11099
|
7
7
|
tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
|
8
|
-
tests/test_python.py,sha256=
|
8
|
+
tests/test_python.py,sha256=0D0VVzIk8Bdc-0qRUv5Wq3ASGOWl7fwWUtYzT9kyZ1I,28210
|
9
9
|
tests/test_solutions.py,sha256=oaTz5BttPDIeHkQh9oEaw-O73L4iYDP3Lfe82V7DeKM,13416
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=nqfnPtnAhClIjwIAQhPnP6rGlkCNiP0S5OAC50FWNQk,1302
|
11
11
|
ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
12
12
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
13
13
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
@@ -121,7 +121,7 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
|
|
121
121
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
122
122
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
123
123
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
124
|
-
ultralytics/engine/exporter.py,sha256=
|
124
|
+
ultralytics/engine/exporter.py,sha256=O367yF058mSaoIZdkxKfHcAD-W_lWJpNyfV43w4joA8,71233
|
125
125
|
ultralytics/engine/model.py,sha256=uX6cTFdlLllGRbz8Lr90IZGb4OrtMDIHQEg7DxUqwe8,53449
|
126
126
|
ultralytics/engine/predictor.py,sha256=4lfw2RbBDE7939011FcSCuznscrcnMuabZtc8GXaKO4,22735
|
127
127
|
ultralytics/engine/results.py,sha256=uQ_tgvdxKAg28pRgb5WCHiqx9Ktu7wYiVbwZy_IJ5bo,71499
|
@@ -196,14 +196,14 @@ ultralytics/models/yolo/yoloe/train.py,sha256=qefvNNXDTOK1tO3va0kNHr8lE5QJkOlV8G
|
|
196
196
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
|
197
197
|
ultralytics/models/yolo/yoloe/val.py,sha256=5Gd9EoFH0FmKKvWXBl4J7gBe9DVxIczN-s3ceHwdUDo,9458
|
198
198
|
ultralytics/nn/__init__.py,sha256=PJgOn2phQTTBR2P3s_JWvGeGXQpvw1znsumKow4tCuE,545
|
199
|
-
ultralytics/nn/autobackend.py,sha256=
|
199
|
+
ultralytics/nn/autobackend.py,sha256=Fs4gjgfCzR9mSpvZpnNXh1V1WWaUEap6oEZeSg5R4Hw,41270
|
200
200
|
ultralytics/nn/tasks.py,sha256=1hz7w60SNYk7T5TRWBOPup-mbAqCJDgZ91rv9cheqdc,70379
|
201
201
|
ultralytics/nn/text_model.py,sha256=pHqnKe8UueR1MuwJcIE_IvrnYIlt68QL796xjcRJs2A,15275
|
202
202
|
ultralytics/nn/modules/__init__.py,sha256=BPMbEm1daI7Tuds3zph2_afAX7Gq1uAqK8BfiCfKTZs,3198
|
203
203
|
ultralytics/nn/modules/activation.py,sha256=75JcIMH2Cu9GTC2Uf55r_5YLpxcrXQDaVoeGQ0hlUAU,2233
|
204
204
|
ultralytics/nn/modules/block.py,sha256=-5RfsA_ljekL8_bQPGupSn9dVcZ8V_lVsOGlhzIW1kg,70622
|
205
205
|
ultralytics/nn/modules/conv.py,sha256=U6P1ZuzQmIf09noKwp7syuWn-M98Tly2wMWOsDT3kOI,21457
|
206
|
-
ultralytics/nn/modules/head.py,sha256=
|
206
|
+
ultralytics/nn/modules/head.py,sha256=zNK05iZDGCG-sRxVaykW_jDfZVDse7q9sCSMtAi1sfc,53512
|
207
207
|
ultralytics/nn/modules/transformer.py,sha256=AkWqDGPtk5AgEaAZgP3TObu1nDr4_B_2fzOr3xqq6EY,31470
|
208
208
|
ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
|
209
209
|
ultralytics/solutions/__init__.py,sha256=ZoeAQavTLp8aClnhZ9tbl6lxy86GxofyGvZWTx2aWkI,1209
|
@@ -239,11 +239,11 @@ ultralytics/trackers/utils/matching.py,sha256=I8SX0sBaBgr4GBJ9uDGOy5LnotgNZHpB2p
|
|
239
239
|
ultralytics/utils/__init__.py,sha256=whSIuj-0lV0SAp4YjOeBJZ2emP1Qa8pqLnrhRiwl2Qs,53503
|
240
240
|
ultralytics/utils/autobatch.py,sha256=i6KYLLSItKP1Q2IUlTPHrZhjcxl7UOjs0Seb8bF8pvM,5124
|
241
241
|
ultralytics/utils/autodevice.py,sha256=d9yq6eEn05fdfzfpxeSECd0YEO61er5f7T-0kjLdofg,8843
|
242
|
-
ultralytics/utils/benchmarks.py,sha256=
|
243
|
-
ultralytics/utils/checks.py,sha256=
|
242
|
+
ultralytics/utils/benchmarks.py,sha256=L0EAWMTYmH-vvPp-mGkxaMXzKghmuWW766DSipm7wJM,31504
|
243
|
+
ultralytics/utils/checks.py,sha256=R3Fm3N3B5k4a_ATWMnOVuwFAFeSYaWmQm2yoNYh3MvU,36304
|
244
244
|
ultralytics/utils/cpu.py,sha256=OPlVxROWhQp-kEa9EkeNRKRQ-jz0KwySu5a-h91JZjk,3634
|
245
245
|
ultralytics/utils/dist.py,sha256=5xQhWK0OLORvseAL08UmG1LYdkiDVLquxmaGSnqiSqo,4151
|
246
|
-
ultralytics/utils/downloads.py,sha256=
|
246
|
+
ultralytics/utils/downloads.py,sha256=mlebo09sFXKp1s_BsPza3bQXIj07pV2VnAeEdj4SX0k,23038
|
247
247
|
ultralytics/utils/errors.py,sha256=XT9Ru7ivoBgofK6PlnyigGoa7Fmf5nEhyHtnD-8TRXI,1584
|
248
248
|
ultralytics/utils/events.py,sha256=v2RmLlx78_K6xQfOAuUTJMOexAgNdiuiOvvnsH65oDA,4679
|
249
249
|
ultralytics/utils/files.py,sha256=kxE2rkBuZL288nSN7jxLljmDnBgc16rekEXeRjhbUoo,8213
|
@@ -275,9 +275,9 @@ ultralytics/utils/callbacks/tensorboard.py,sha256=_4nfGK1dDLn6ijpvphBDhc-AS8qhS3
|
|
275
275
|
ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
|
276
276
|
ultralytics/utils/export/__init__.py,sha256=jQtf716PP0jt7bMoY9FkqmjG26KbvDzuR84jGhaBi2U,9901
|
277
277
|
ultralytics/utils/export/imx.py,sha256=Jl5nuNxqaP_bY5yrV2NypmoJSrexHE71TxR72SDdjcg,11394
|
278
|
-
ultralytics-8.3.
|
279
|
-
ultralytics-8.3.
|
280
|
-
ultralytics-8.3.
|
281
|
-
ultralytics-8.3.
|
282
|
-
ultralytics-8.3.
|
283
|
-
ultralytics-8.3.
|
278
|
+
ultralytics-8.3.208.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
279
|
+
ultralytics-8.3.208.dist-info/METADATA,sha256=gqk4EPrrKV0rxtvGakdOHYUlAAdRF3tGdLPo5-tDmUA,37667
|
280
|
+
ultralytics-8.3.208.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
281
|
+
ultralytics-8.3.208.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
282
|
+
ultralytics-8.3.208.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
283
|
+
ultralytics-8.3.208.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|