ultralytics 8.3.117__py3-none-any.whl → 8.3.119__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/__init__.py +22 -0
- tests/conftest.py +83 -0
- tests/test_cli.py +128 -0
- tests/test_cuda.py +164 -0
- tests/test_engine.py +131 -0
- tests/test_exports.py +231 -0
- tests/test_integrations.py +154 -0
- tests/test_python.py +695 -0
- tests/test_solutions.py +176 -0
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +1 -0
- ultralytics/cfg/default.yaml +1 -0
- ultralytics/data/augment.py +122 -7
- ultralytics/data/base.py +9 -2
- ultralytics/data/dataset.py +7 -5
- ultralytics/engine/exporter.py +10 -91
- ultralytics/engine/tuner.py +2 -1
- ultralytics/models/rtdetr/val.py +1 -0
- ultralytics/models/yolo/detect/predict.py +1 -1
- ultralytics/models/yolo/model.py +2 -3
- ultralytics/models/yolo/obb/train.py +1 -1
- ultralytics/models/yolo/pose/predict.py +1 -1
- ultralytics/models/yolo/pose/train.py +1 -1
- ultralytics/models/yolo/pose/val.py +1 -1
- ultralytics/models/yolo/segment/train.py +3 -3
- ultralytics/nn/autobackend.py +2 -5
- ultralytics/nn/text_model.py +97 -13
- ultralytics/utils/benchmarks.py +1 -1
- ultralytics/utils/downloads.py +1 -0
- ultralytics/utils/ops.py +1 -1
- ultralytics/utils/tuner.py +2 -1
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/METADATA +6 -7
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/RECORD +37 -28
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/WHEEL +1 -1
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.117.dist-info → ultralytics-8.3.119.dist-info}/top_level.txt +0 -0
ultralytics/models/rtdetr/val.py
CHANGED
@@ -63,6 +63,7 @@ class RTDETRDataset(YOLODataset):
|
|
63
63
|
if self.augment:
|
64
64
|
hyp.mosaic = hyp.mosaic if self.augment and not self.rect else 0.0
|
65
65
|
hyp.mixup = hyp.mixup if self.augment and not self.rect else 0.0
|
66
|
+
hyp.cutmix = hyp.cutmix if self.augment and not self.rect else 0.0
|
66
67
|
transforms = v8_transforms(self, self.imgsz, hyp, stretch=True)
|
67
68
|
else:
|
68
69
|
# transforms = Compose([LetterBox(new_shape=(self.imgsz, self.imgsz), auto=False, scale_fill=True)])
|
@@ -47,7 +47,7 @@ class DetectionPredictor(BasePredictor):
|
|
47
47
|
(list): List of Results objects containing the post-processed predictions.
|
48
48
|
|
49
49
|
Examples:
|
50
|
-
>>> predictor = DetectionPredictor(overrides=dict(model="
|
50
|
+
>>> predictor = DetectionPredictor(overrides=dict(model="yolo11n.pt"))
|
51
51
|
>>> results = predictor.predict("path/to/image.jpg")
|
52
52
|
>>> processed_results = predictor.postprocess(preds, img, orig_imgs)
|
53
53
|
"""
|
ultralytics/models/yolo/model.py
CHANGED
@@ -29,16 +29,15 @@ class YOLO(Model):
|
|
29
29
|
(YOLOWorld or YOLOE) based on the model filename.
|
30
30
|
|
31
31
|
Args:
|
32
|
-
model (str | Path): Model name or path to model file, i.e. 'yolo11n.pt', '
|
32
|
+
model (str | Path): Model name or path to model file, i.e. 'yolo11n.pt', 'yolo11n.yaml'.
|
33
33
|
task (str | None): YOLO task specification, i.e. 'detect', 'segment', 'classify', 'pose', 'obb'.
|
34
34
|
Defaults to auto-detection based on model.
|
35
35
|
verbose (bool): Display model info on load.
|
36
36
|
|
37
37
|
Examples:
|
38
38
|
>>> from ultralytics import YOLO
|
39
|
-
>>> model = YOLO("yolov8n.pt") # load a pretrained YOLOv8n detection model
|
40
|
-
>>> model = YOLO("yolov8n-seg.pt") # load a pretrained YOLOv8n segmentation model
|
41
39
|
>>> model = YOLO("yolo11n.pt") # load a pretrained YOLOv11n detection model
|
40
|
+
>>> model = YOLO("yolo11n-seg.pt") # load a pretrained YOLO11n segmentation model
|
42
41
|
"""
|
43
42
|
path = Path(model)
|
44
43
|
if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}: # if YOLOWorld PyTorch model
|
@@ -65,7 +65,7 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
|
|
65
65
|
|
66
66
|
Examples:
|
67
67
|
>>> trainer = OBBTrainer()
|
68
|
-
>>> model = trainer.get_model(cfg="
|
68
|
+
>>> model = trainer.get_model(cfg="yolo11n-obb.yaml", weights="yolo11n-obb.pt")
|
69
69
|
"""
|
70
70
|
model = OBBModel(cfg, nc=self.data["nc"], ch=self.data["channels"], verbose=verbose and RANK == -1)
|
71
71
|
if weights:
|
@@ -41,7 +41,7 @@ class PosePredictor(DetectionPredictor):
|
|
41
41
|
Examples:
|
42
42
|
>>> from ultralytics.utils import ASSETS
|
43
43
|
>>> from ultralytics.models.yolo.pose import PosePredictor
|
44
|
-
>>> args = dict(model="
|
44
|
+
>>> args = dict(model="yolo11n-pose.pt", source=ASSETS)
|
45
45
|
>>> predictor = PosePredictor(overrides=args)
|
46
46
|
>>> predictor.predict_cli()
|
47
47
|
"""
|
@@ -53,7 +53,7 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
|
|
53
53
|
|
54
54
|
Examples:
|
55
55
|
>>> from ultralytics.models.yolo.pose import PoseTrainer
|
56
|
-
>>> args = dict(model="
|
56
|
+
>>> args = dict(model="yolo11n-pose.pt", data="coco8-pose.yaml", epochs=3)
|
57
57
|
>>> trainer = PoseTrainer(overrides=args)
|
58
58
|
>>> trainer.train()
|
59
59
|
"""
|
@@ -62,7 +62,7 @@ class PoseValidator(DetectionValidator):
|
|
62
62
|
|
63
63
|
Examples:
|
64
64
|
>>> from ultralytics.models.yolo.pose import PoseValidator
|
65
|
-
>>> args = dict(model="
|
65
|
+
>>> args = dict(model="yolo11n-pose.pt", data="coco8-pose.yaml")
|
66
66
|
>>> validator = PoseValidator(args=args)
|
67
67
|
>>> validator()
|
68
68
|
|
@@ -39,7 +39,7 @@ class SegmentationTrainer(yolo.detect.DetectionTrainer):
|
|
39
39
|
|
40
40
|
Examples:
|
41
41
|
>>> from ultralytics.models.yolo.segment import SegmentationTrainer
|
42
|
-
>>> args = dict(model="
|
42
|
+
>>> args = dict(model="yolo11n-seg.pt", data="coco8-seg.yaml", epochs=3)
|
43
43
|
>>> trainer = SegmentationTrainer(overrides=args)
|
44
44
|
>>> trainer.train()
|
45
45
|
"""
|
@@ -62,8 +62,8 @@ class SegmentationTrainer(yolo.detect.DetectionTrainer):
|
|
62
62
|
|
63
63
|
Examples:
|
64
64
|
>>> trainer = SegmentationTrainer()
|
65
|
-
>>> model = trainer.get_model(cfg="
|
66
|
-
>>> model = trainer.get_model(weights="
|
65
|
+
>>> model = trainer.get_model(cfg="yolo11n-seg.yaml")
|
66
|
+
>>> model = trainer.get_model(weights="yolo11n-seg.pt", verbose=False)
|
67
67
|
"""
|
68
68
|
model = SegmentationModel(cfg, nc=self.data["nc"], ch=self.data["channels"], verbose=verbose and RANK == -1)
|
69
69
|
if weights:
|
ultralytics/nn/autobackend.py
CHANGED
@@ -14,7 +14,7 @@ import torch
|
|
14
14
|
import torch.nn as nn
|
15
15
|
from PIL import Image
|
16
16
|
|
17
|
-
from ultralytics.utils import ARM64, IS_JETSON,
|
17
|
+
from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, yaml_load
|
18
18
|
from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
|
19
19
|
from ultralytics.utils.downloads import attempt_download_asset, is_url
|
20
20
|
|
@@ -90,7 +90,7 @@ class AutoBackend(nn.Module):
|
|
90
90
|
_model_type: Determine the model type from file path.
|
91
91
|
|
92
92
|
Examples:
|
93
|
-
>>> model = AutoBackend(weights="
|
93
|
+
>>> model = AutoBackend(weights="yolo11n.pt", device="cuda")
|
94
94
|
>>> results = model(img)
|
95
95
|
"""
|
96
96
|
|
@@ -207,9 +207,6 @@ class AutoBackend(nn.Module):
|
|
207
207
|
elif onnx or imx:
|
208
208
|
LOGGER.info(f"Loading {w} for ONNX Runtime inference...")
|
209
209
|
check_requirements(("onnx", "onnxruntime-gpu" if cuda else "onnxruntime"))
|
210
|
-
if IS_RASPBERRYPI or IS_JETSON:
|
211
|
-
# Fix 'numpy.linalg._umath_linalg' has no attribute '_ilp64' for TF SavedModel on RPi and Jetson
|
212
|
-
check_requirements("numpy==1.23.5")
|
213
210
|
import onnxruntime
|
214
211
|
|
215
212
|
providers = ["CPUExecutionProvider"]
|
ultralytics/nn/text_model.py
CHANGED
@@ -15,18 +15,6 @@ except ImportError:
|
|
15
15
|
checks.check_requirements("git+https://github.com/ultralytics/CLIP.git")
|
16
16
|
import clip
|
17
17
|
|
18
|
-
try:
|
19
|
-
import warnings
|
20
|
-
|
21
|
-
# Suppress 'timm.models.layers is deprecated, please import via timm.layers' warning from mobileclip usage
|
22
|
-
with warnings.catch_warnings():
|
23
|
-
warnings.filterwarnings("ignore", category=FutureWarning)
|
24
|
-
import mobileclip
|
25
|
-
except ImportError:
|
26
|
-
# Ultralytics fork preferred since Apple MobileCLIP repo has incorrect version of torchvision
|
27
|
-
checks.check_requirements("git+https://github.com/ultralytics/mobileclip.git")
|
28
|
-
import mobileclip
|
29
|
-
|
30
18
|
|
31
19
|
class TextModel(nn.Module):
|
32
20
|
"""
|
@@ -190,6 +178,18 @@ class MobileCLIP(TextModel):
|
|
190
178
|
>>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
|
191
179
|
>>> features = model.encode_text(tokens)
|
192
180
|
"""
|
181
|
+
try:
|
182
|
+
import warnings
|
183
|
+
|
184
|
+
# Suppress 'timm.models.layers is deprecated, please import via timm.layers' warning from mobileclip usage
|
185
|
+
with warnings.catch_warnings():
|
186
|
+
warnings.filterwarnings("ignore", category=FutureWarning)
|
187
|
+
import mobileclip
|
188
|
+
except ImportError:
|
189
|
+
# Ultralytics fork preferred since Apple MobileCLIP repo has incorrect version of torchvision
|
190
|
+
checks.check_requirements("git+https://github.com/ultralytics/mobileclip.git")
|
191
|
+
import mobileclip
|
192
|
+
|
193
193
|
super().__init__()
|
194
194
|
config = self.config_size_map[size]
|
195
195
|
file = f"mobileclip_{size}.pt"
|
@@ -243,6 +243,90 @@ class MobileCLIP(TextModel):
|
|
243
243
|
return text_features
|
244
244
|
|
245
245
|
|
246
|
+
class MobileCLIPTS(TextModel):
|
247
|
+
"""
|
248
|
+
Load a TorchScript traced version of MobileCLIP.
|
249
|
+
|
250
|
+
This class implements the TextModel interface using Apple's MobileCLIP model, providing efficient text encoding
|
251
|
+
capabilities for vision-language tasks.
|
252
|
+
|
253
|
+
Attributes:
|
254
|
+
encoder (mobileclip.model.MobileCLIP): The loaded MobileCLIP text encoder.
|
255
|
+
tokenizer (callable): Tokenizer function for processing text inputs.
|
256
|
+
device (torch.device): Device where the model is loaded.
|
257
|
+
|
258
|
+
Methods:
|
259
|
+
tokenize: Convert input texts to MobileCLIP tokens.
|
260
|
+
encode_text: Encode tokenized texts into normalized feature vectors.
|
261
|
+
|
262
|
+
Examples:
|
263
|
+
>>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
264
|
+
>>> text_encoder = MobileCLIP(device=device)
|
265
|
+
>>> tokens = text_encoder.tokenize(["a photo of a cat", "a photo of a dog"])
|
266
|
+
>>> features = text_encoder.encode_text(tokens)
|
267
|
+
"""
|
268
|
+
|
269
|
+
def __init__(self, device):
|
270
|
+
"""
|
271
|
+
Initialize the MobileCLIP text encoder.
|
272
|
+
|
273
|
+
This class implements the TextModel interface using Apple's MobileCLIP model for efficient text encoding.
|
274
|
+
|
275
|
+
Args:
|
276
|
+
device (torch.device): Device to load the model on.
|
277
|
+
|
278
|
+
Examples:
|
279
|
+
>>> from ultralytics.nn.modules import MobileCLIP
|
280
|
+
>>> import torch
|
281
|
+
>>> model = MobileCLIP(device=torch.device("cpu"))
|
282
|
+
>>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
|
283
|
+
>>> features = model.encode_text(tokens)
|
284
|
+
"""
|
285
|
+
super().__init__()
|
286
|
+
from ultralytics.utils.downloads import attempt_download_asset
|
287
|
+
|
288
|
+
self.encoder = torch.jit.load(attempt_download_asset("mobileclip_blt.ts"), map_location=device)
|
289
|
+
self.tokenizer = clip.clip.tokenize
|
290
|
+
self.device = device
|
291
|
+
|
292
|
+
def tokenize(self, texts):
|
293
|
+
"""
|
294
|
+
Convert input texts to MobileCLIP tokens.
|
295
|
+
|
296
|
+
Args:
|
297
|
+
texts (list[str]): List of text strings to tokenize.
|
298
|
+
|
299
|
+
Returns:
|
300
|
+
(torch.Tensor): Tokenized text inputs with shape (batch_size, sequence_length).
|
301
|
+
|
302
|
+
Examples:
|
303
|
+
>>> model = MobileCLIP("cpu")
|
304
|
+
>>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
|
305
|
+
"""
|
306
|
+
return self.tokenizer(texts).to(self.device)
|
307
|
+
|
308
|
+
@smart_inference_mode()
|
309
|
+
def encode_text(self, texts, dtype=torch.float32):
|
310
|
+
"""
|
311
|
+
Encode tokenized texts into normalized feature vectors.
|
312
|
+
|
313
|
+
Args:
|
314
|
+
texts (torch.Tensor): Tokenized text inputs.
|
315
|
+
dtype (torch.dtype, optional): Data type for output features.
|
316
|
+
|
317
|
+
Returns:
|
318
|
+
(torch.Tensor): Normalized text feature vectors with L2 normalization applied.
|
319
|
+
|
320
|
+
Examples:
|
321
|
+
>>> model = MobileCLIP(device="cpu")
|
322
|
+
>>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
|
323
|
+
>>> features = model.encode_text(tokens)
|
324
|
+
>>> features.shape
|
325
|
+
torch.Size([2, 512]) # Actual dimension depends on model size
|
326
|
+
"""
|
327
|
+
return self.encoder(texts)
|
328
|
+
|
329
|
+
|
246
330
|
def build_text_model(variant, device=None):
|
247
331
|
"""
|
248
332
|
Build a text encoding model based on the specified variant.
|
@@ -262,6 +346,6 @@ def build_text_model(variant, device=None):
|
|
262
346
|
if base == "clip":
|
263
347
|
return CLIP(size, device)
|
264
348
|
elif base == "mobileclip":
|
265
|
-
return
|
349
|
+
return MobileCLIPTS(device)
|
266
350
|
else:
|
267
351
|
raise ValueError(f"Unrecognized base model: '{base}'. Supported base models: 'clip', 'mobileclip'.")
|
ultralytics/utils/benchmarks.py
CHANGED
@@ -136,7 +136,7 @@ def benchmark(
|
|
136
136
|
assert not is_end2end
|
137
137
|
assert not isinstance(model, YOLOWorld), "YOLOWorldv2 IMX exports not supported"
|
138
138
|
assert model.task == "detect", "IMX only supported for detection task"
|
139
|
-
assert "C2f" in model.__str__(), "IMX only supported for YOLOv8"
|
139
|
+
assert "C2f" in model.__str__(), "IMX only supported for YOLOv8" # TODO: enable for YOLO11
|
140
140
|
if i == 15: # RKNN
|
141
141
|
assert not isinstance(model, YOLOWorld), "YOLOWorldv2 RKNN exports not supported yet"
|
142
142
|
assert not is_end2end, "End-to-end models not supported by RKNN yet"
|
ultralytics/utils/downloads.py
CHANGED
@@ -34,6 +34,7 @@ GITHUB_ASSETS_NAMES = frozenset(
|
|
34
34
|
+ [f"FastSAM-{k}.pt" for k in "sx"]
|
35
35
|
+ [f"rtdetr-{k}.pt" for k in "lx"]
|
36
36
|
+ ["mobile_sam.pt"]
|
37
|
+
+ ["mobileclip_blt.ts"]
|
37
38
|
+ ["calibration_image_sample_data_20x128x128x3_float32.npy.zip"]
|
38
39
|
)
|
39
40
|
GITHUB_ASSETS_STEMS = frozenset(k.rsplit(".", 1)[0] for k in GITHUB_ASSETS_NAMES)
|
ultralytics/utils/ops.py
CHANGED
@@ -213,7 +213,7 @@ def non_max_suppression(
|
|
213
213
|
multi_label (bool): If True, each box may have multiple labels.
|
214
214
|
labels (List[List[Union[int, float, torch.Tensor]]]): A list of lists, where each inner
|
215
215
|
list contains the apriori labels for a given image. The list should be in the format
|
216
|
-
output by a dataloader, with each label being a tuple of (class_index,
|
216
|
+
output by a dataloader, with each label being a tuple of (class_index, x, y, w, h).
|
217
217
|
max_det (int): The maximum number of boxes to keep after NMS.
|
218
218
|
nc (int): The number of classes output by the model. Any indices after this will be considered masks.
|
219
219
|
max_time_img (float): The maximum time (seconds) for processing one image.
|
ultralytics/utils/tuner.py
CHANGED
@@ -77,8 +77,9 @@ def run_ray_tune(
|
|
77
77
|
"flipud": tune.uniform(0.0, 1.0), # image flip up-down (probability)
|
78
78
|
"fliplr": tune.uniform(0.0, 1.0), # image flip left-right (probability)
|
79
79
|
"bgr": tune.uniform(0.0, 1.0), # image channel BGR (probability)
|
80
|
-
"mosaic": tune.uniform(0.0, 1.0), # image
|
80
|
+
"mosaic": tune.uniform(0.0, 1.0), # image mosaic (probability)
|
81
81
|
"mixup": tune.uniform(0.0, 1.0), # image mixup (probability)
|
82
|
+
"cutmix": tune.uniform(0.0, 1.0), # image cutmix (probability)
|
82
83
|
"copy_paste": tune.uniform(0.0, 1.0), # segment copy-paste (probability)
|
83
84
|
}
|
84
85
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.119
|
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>
|
@@ -32,7 +32,7 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
32
32
|
Requires-Python: >=3.8
|
33
33
|
Description-Content-Type: text/markdown
|
34
34
|
License-File: LICENSE
|
35
|
-
Requires-Dist: numpy
|
35
|
+
Requires-Dist: numpy>=1.23.0
|
36
36
|
Requires-Dist: matplotlib>=3.3.0
|
37
37
|
Requires-Dist: opencv-python>=4.6.0
|
38
38
|
Requires-Dist: pillow>=7.1.2
|
@@ -61,20 +61,19 @@ Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
|
|
61
61
|
Provides-Extra: export
|
62
62
|
Requires-Dist: onnx>=1.12.0; extra == "export"
|
63
63
|
Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
64
|
-
Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.
|
64
|
+
Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
65
65
|
Requires-Dist: openvino>=2024.0.0; extra == "export"
|
66
66
|
Requires-Dist: tensorflow>=2.0.0; extra == "export"
|
67
67
|
Requires-Dist: tensorflowjs>=2.0.0; extra == "export"
|
68
68
|
Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
|
69
|
-
Requires-Dist: keras; extra == "export"
|
70
69
|
Requires-Dist: h5py!=3.11.0; platform_machine == "aarch64" and extra == "export"
|
71
70
|
Provides-Extra: solutions
|
72
71
|
Requires-Dist: shapely<2.1.0,>=2.0.0; extra == "solutions"
|
73
72
|
Requires-Dist: streamlit<1.44.0,>=1.29.0; extra == "solutions"
|
74
73
|
Provides-Extra: logging
|
75
|
-
Requires-Dist:
|
76
|
-
Requires-Dist: tensorboard
|
77
|
-
Requires-Dist:
|
74
|
+
Requires-Dist: wandb; extra == "logging"
|
75
|
+
Requires-Dist: tensorboard; extra == "logging"
|
76
|
+
Requires-Dist: mlflow; extra == "logging"
|
78
77
|
Provides-Extra: extra
|
79
78
|
Requires-Dist: hub-sdk>=0.0.12; extra == "extra"
|
80
79
|
Requires-Dist: ipython; extra == "extra"
|
@@ -1,8 +1,17 @@
|
|
1
|
-
|
1
|
+
tests/__init__.py,sha256=xnMhv3O_DF1YrW4zk__ZywQzAaoTDjPKPoiI1Ktss1w,670
|
2
|
+
tests/conftest.py,sha256=rsIAipRKfrVNoTaJ1LdpYue8AbcJ_fr3d3WIlM_6uXY,2982
|
3
|
+
tests/test_cli.py,sha256=PtMFl5Lp_6ygBbYDJ1ndofz2k7ZYupMPEAiZw6aZVm8,5450
|
4
|
+
tests/test_cuda.py,sha256=0uvTF4bY_Grsd_Xgtp7TdIEgMpUqKv8_kWA82NYDl_g,6260
|
5
|
+
tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
|
6
|
+
tests/test_exports.py,sha256=dhZn86LdbapW15RthQF870LGxDjC1MUZhlGdBgPmgIQ,9716
|
7
|
+
tests/test_integrations.py,sha256=dQteeRsRVuT_p5-T88-7jqT65Zm9iAXkyKg-KQ1_TQ8,6341
|
8
|
+
tests/test_python.py,sha256=ok2xp7zwPOwcyl4yNawlx1uJ5HETn9eU-jyTPYzA0fI,25491
|
9
|
+
tests/test_solutions.py,sha256=BIvg9zW0a_ggEmrPKgB_Y0MncveH-eYuN5KlqdJ6nHs,5726
|
10
|
+
ultralytics/__init__.py,sha256=owiblkGBEVc3POFvnqSoYYmsIOc_JfalcE8QZaGrfB4,730
|
2
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
3
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
4
|
-
ultralytics/cfg/__init__.py,sha256=
|
5
|
-
ultralytics/cfg/default.yaml,sha256=
|
13
|
+
ultralytics/cfg/__init__.py,sha256=eZ7exHSsrTLY72atmmHKatJgJYLjfZDPXMWVmpZF9Qw,39683
|
14
|
+
ultralytics/cfg/default.yaml,sha256=zSiCmQp_HRlh0gZe_AZSjNQNe1aNDoX2vcNUo5oJs2Q,8306
|
6
15
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
|
7
16
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
|
8
17
|
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=j_DvXVQzZ4dQmf8I7oPX4v9xO3WZXztxV4Xo9VhUTsM,1194
|
@@ -95,11 +104,11 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=8fM3y4TXKKT_5aWsqmQw5JEgwNlBGlRaf8L
|
|
95
104
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
|
96
105
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
97
106
|
ultralytics/data/annotator.py,sha256=VEwb11FsEZm75qlEp8XDHFGKW0_rGsEaFDaBVd771Kw,2902
|
98
|
-
ultralytics/data/augment.py,sha256=
|
99
|
-
ultralytics/data/base.py,sha256=
|
107
|
+
ultralytics/data/augment.py,sha256=qJ9O1WMXnsNOyr71IRD6qM789gHzC5FedGnSXZ0U7As,129477
|
108
|
+
ultralytics/data/base.py,sha256=uMh_xzs6ci1hciDLpbVW2ZQr7js0o8jctE8KhL2T7Z4,19015
|
100
109
|
ultralytics/data/build.py,sha256=FVIkgLGv5n1C7SRDrQiKOMDcI7V59WmEihKslzvEISg,9651
|
101
110
|
ultralytics/data/converter.py,sha256=znXH2XTdo0Q4NDHMny1ydVBvrxKn2kbbwI-X5bn1MlQ,26890
|
102
|
-
ultralytics/data/dataset.py,sha256=
|
111
|
+
ultralytics/data/dataset.py,sha256=zCHeTpiPWWl9joUrMSIZZAIKnBLTvbCRSCAbpYvPPOI,34813
|
103
112
|
ultralytics/data/loaders.py,sha256=o844tZlfZEhXop16t-hwaEQHhbfP3_bQMS0whF_NSos,28531
|
104
113
|
ultralytics/data/split.py,sha256=6LHB1z8woXurWjXfM-Zm2thRr1KXvzR18CFJA-SDUvE,4677
|
105
114
|
ultralytics/data/split_dota.py,sha256=p8eVGht9tABSVbf9vwvxA_AQYEva3IGHePKlMeNrn64,11872
|
@@ -109,12 +118,12 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
|
|
109
118
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
110
119
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
111
120
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
112
|
-
ultralytics/engine/exporter.py,sha256=
|
121
|
+
ultralytics/engine/exporter.py,sha256=d-L46TSA2U36k6LowP1t1DJqXWndsvNVxXR54a70V8Y,69771
|
113
122
|
ultralytics/engine/model.py,sha256=wS1cwgv0iyhsslMAZYMGlYDWitDIRW96d7MxwW-Sw5o,52817
|
114
123
|
ultralytics/engine/predictor.py,sha256=YJ5l-0qIpr6JAJxowswtZ0IqmXBqVTvAA9vR40v0sCM,21752
|
115
124
|
ultralytics/engine/results.py,sha256=MZkhI0CCOkBQPR-EzswymVqvqeyk35EkESGUQ_08r8k,79738
|
116
125
|
ultralytics/engine/trainer.py,sha256=fdB8H6brnnQAL-ZFP6nmNmKMze0_qy0OT3jJg1B5uhQ,38864
|
117
|
-
ultralytics/engine/tuner.py,sha256=
|
126
|
+
ultralytics/engine/tuner.py,sha256=IyFKsh4Q4a1DsjfK02DdN9cufAiBDhdhIq7F7ddguys,12646
|
118
127
|
ultralytics/engine/validator.py,sha256=jfV81wuFDgrVVXEcPzgOpxAPrAZn-1LgpKwu9l_1-ts,17050
|
119
128
|
ultralytics/hub/__init__.py,sha256=wDtAUKdfqob95tfFHgDJFXcsNSDSdoIQkJTm-CfIUTI,6616
|
120
129
|
ultralytics/hub/auth.py,sha256=_bGQVLTgP-ina4fQxq2M7qkj9zKKfxb99_VWgN3S_4k,5549
|
@@ -135,7 +144,7 @@ ultralytics/models/rtdetr/__init__.py,sha256=_jEHmOjI_QP_nT3XJXLgYHQ6bXG4EL8Gnvn
|
|
135
144
|
ultralytics/models/rtdetr/model.py,sha256=zx9UKpReYCRL7Is2DXIX9ZcJE25KE_fPZ-NYx5vF6E4,2119
|
136
145
|
ultralytics/models/rtdetr/predict.py,sha256=5VNvyULxegg_NfGo7ugfIKHrtKhpaspJZdagU1haQmo,3942
|
137
146
|
ultralytics/models/rtdetr/train.py,sha256=-c0DZNRscWXRNHddwHHY_OH5nLUb4LLoLyn2yIohGTg,3395
|
138
|
-
ultralytics/models/rtdetr/val.py,sha256=
|
147
|
+
ultralytics/models/rtdetr/val.py,sha256=4KsGuWOsik7JXpU8mUY6ts7_wWuPvcNSxiAGIiGSuxA,7380
|
139
148
|
ultralytics/models/sam/__init__.py,sha256=iR7B06rAEni21eptg8n4rLOP0Z_qV9y9PL-L93n4_7s,266
|
140
149
|
ultralytics/models/sam/amg.py,sha256=r_duG0DCeCyTYfhcVh-ti10FPMl4VGL4SKc8yvbQpNU,11050
|
141
150
|
ultralytics/models/sam/build.py,sha256=Vhml3zBGDcRO-efauNdM0ZlKTV10ADAj_aT823lPJv8,12515
|
@@ -154,26 +163,26 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
|
|
154
163
|
ultralytics/models/utils/loss.py,sha256=4IiyDbxBCm7vRvZuIvXbr0_rCvjOratbqLx4KYaGouw,19986
|
155
164
|
ultralytics/models/utils/ops.py,sha256=SuBnwwgUTqByNHpufobGLW72yO2cyfZFi14KAFWSjjw,13613
|
156
165
|
ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
|
157
|
-
ultralytics/models/yolo/model.py,sha256=
|
166
|
+
ultralytics/models/yolo/model.py,sha256=8TbfllTKxvNzr4MlMAFfTV8s-144AUSNUyO_7Ps6aKA,14277
|
158
167
|
ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
|
159
168
|
ultralytics/models/yolo/classify/predict.py,sha256=JV9szginTQ9Lpob0FozhKMiEIu1vVaYg4YItuVK2AFM,4081
|
160
169
|
ultralytics/models/yolo/classify/train.py,sha256=rv2CJv9fzvtHf2q4l5g0RsjplWKeLpz637kKqjtrLNY,9737
|
161
170
|
ultralytics/models/yolo/classify/val.py,sha256=xk-YwSQdl_oqyCBV0OOAOcXFL6CchebFOc36AkRSyjE,9992
|
162
171
|
ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
|
163
|
-
ultralytics/models/yolo/detect/predict.py,sha256=
|
172
|
+
ultralytics/models/yolo/detect/predict.py,sha256=oAftDYhksUDjVfgKIsmmair1_ujwVY-yc-MHrl7r9Hw,5343
|
164
173
|
ultralytics/models/yolo/detect/train.py,sha256=YOEmUZkfJBq6hNbB_P10k-uy4_2fUgdPfVWzO4y8Egs,9538
|
165
174
|
ultralytics/models/yolo/detect/val.py,sha256=7AB_wZi7aQ9_V1pZQSWk5qiJYS34fuO3P5aX7_3eeFE,18471
|
166
175
|
ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
|
167
176
|
ultralytics/models/yolo/obb/predict.py,sha256=L40iamQgTY7VDn0WggG2jeJK8cVUo1qsNuFSbK67ry0,2974
|
168
|
-
ultralytics/models/yolo/obb/train.py,sha256=
|
177
|
+
ultralytics/models/yolo/obb/train.py,sha256=NBSpXCyIn2qxtaG7gvolUzXOB0mf3oEFIpQZHTES1_s,3458
|
169
178
|
ultralytics/models/yolo/obb/val.py,sha256=dkXUh2JfffILVRkfXycQGImQQssUDgKMtfDRP7jUpV0,13981
|
170
179
|
ultralytics/models/yolo/pose/__init__.py,sha256=63xmuHZLNzV8I76HhVXAq4f2W0KTk8Oi9eL-Y204LyQ,227
|
171
|
-
ultralytics/models/yolo/pose/predict.py,sha256=
|
172
|
-
ultralytics/models/yolo/pose/train.py,sha256=
|
173
|
-
ultralytics/models/yolo/pose/val.py,sha256=
|
180
|
+
ultralytics/models/yolo/pose/predict.py,sha256=sY-yMVl-hW8tGVSKt-5Pl1Bhdhj9exnmGIeb4n9wUDc,3836
|
181
|
+
ultralytics/models/yolo/pose/train.py,sha256=QQo4Q5kpvPv7kfa4uWmg3mFFa__fvIQ0yklGpa6XL58,5942
|
182
|
+
ultralytics/models/yolo/pose/val.py,sha256=FWDOPjf1Ajumh8DU5VRqUKYEDB8PeAzWtdZvhaIYTRc,18303
|
174
183
|
ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
|
175
184
|
ultralytics/models/yolo/segment/predict.py,sha256=mIC3aHI7Jg4dU1k2UZnjVj4unE-5TWi_rh7P0AEyJmA,5410
|
176
|
-
ultralytics/models/yolo/segment/train.py,sha256=
|
185
|
+
ultralytics/models/yolo/segment/train.py,sha256=EIyIAjYp127Mb-DomyjPORaONu57OY_gOTK9p2MwW6E,5359
|
177
186
|
ultralytics/models/yolo/segment/val.py,sha256=cXJM1JNuzDraU0SJQRIdzNxabd0bfcxiRE8wozHZChY,18415
|
178
187
|
ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
|
179
188
|
ultralytics/models/yolo/world/train.py,sha256=HUJ0XiJIGx_FA9kqNYnSFsaKWMiZUDxgkpfGoBH6UNc,4896
|
@@ -184,9 +193,9 @@ ultralytics/models/yolo/yoloe/train.py,sha256=JF_QxJUU3_w8yhmTfKFTpI7rVRJL1g7z7w
|
|
184
193
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=6nN9DbP-AJKlJ3nIlvNn8VXFwFLQEVjSOgdN5aA817M,5309
|
185
194
|
ultralytics/models/yolo/yoloe/val.py,sha256=oA8cVT3pBXF6aPZy7ITq0mDcktRuIgks8tTtqMRISyY,8431
|
186
195
|
ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
|
187
|
-
ultralytics/nn/autobackend.py,sha256=
|
196
|
+
ultralytics/nn/autobackend.py,sha256=tnYxzboWGBgNvUYrz2zokPH1Bw__GD2ZQro1gO-ZIF8,39298
|
188
197
|
ultralytics/nn/tasks.py,sha256=EwRC70qA3eP8Xp-gGP8OuN-q8LCGDrq1iRue7ncRSV4,62916
|
189
|
-
ultralytics/nn/text_model.py,sha256=
|
198
|
+
ultralytics/nn/text_model.py,sha256=8_7SRejKZA4Pi-ha0gjcWrQDDCDMBhtwlg8pPMWgjDE,13145
|
190
199
|
ultralytics/nn/modules/__init__.py,sha256=dXLtIk9rt944WfsTdpgEdWOg3HQEHdwQztuZ6WNJygs,3144
|
191
200
|
ultralytics/nn/modules/activation.py,sha256=PvXZkA9AzEntR575JkFORdmtcRwATyy0lje-uHA5_8w,2210
|
192
201
|
ultralytics/nn/modules/block.py,sha256=jGPMLa-FWYall7FmWvSLIduc2qu-A-lOcBjCaHqe4nk,66667
|
@@ -223,23 +232,23 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=A0CqOnnaKH6kr0XwuHzyHmIU6aJAj
|
|
223
232
|
ultralytics/trackers/utils/matching.py,sha256=7eIufSdeN7cXuFMjvcfvz0Ldq84m4YKZl5IGxBR8IIo,7169
|
224
233
|
ultralytics/utils/__init__.py,sha256=qV5nw3ED1NuSCoYwW3WpT6BTLeCnoH7KJgbPZU_3Sbo,50422
|
225
234
|
ultralytics/utils/autobatch.py,sha256=VZTIKLWeFZFwBHJmbiCn3MaxoFp89hLR0DSCR_iLXJg,4913
|
226
|
-
ultralytics/utils/benchmarks.py,sha256=
|
235
|
+
ultralytics/utils/benchmarks.py,sha256=aZse9tetEwjMy2GkdNWZ0WfCgjLfCM3_BkI1qNNQb_w,30377
|
227
236
|
ultralytics/utils/checks.py,sha256=5bkna--ZH4FJDZtgef_K4xgjiKOZqCarTqIE4Z0vwJU,32628
|
228
237
|
ultralytics/utils/dist.py,sha256=e-DK_YowV7D9rDGQyWR9Kaosxp2eWe2EogSWnnUMthc,4098
|
229
|
-
ultralytics/utils/downloads.py,sha256=
|
238
|
+
ultralytics/utils/downloads.py,sha256=d9m7VJKl_grFf0R-oYDrOa-vkSyaP9ucjfMILMB5Ly4,22153
|
230
239
|
ultralytics/utils/errors.py,sha256=vY9h2evFSrHnZdHJVVrmm8Zzw4qVDLyo9DeYW5g0dFk,1573
|
231
240
|
ultralytics/utils/export.py,sha256=mTkebwilsT1jwIfTLgAQdkbrnZr9Sm96W-Vi7B1j5wQ,8817
|
232
241
|
ultralytics/utils/files.py,sha256=0K4O1cgqRiXaDw7EQK13TqA5SME_RrvfDVQSPetNr5w,8042
|
233
242
|
ultralytics/utils/instance.py,sha256=UOEsXR9V-bXNRk6BTonASBEgeMqvzzAk4S7VdXZJUAM,18090
|
234
243
|
ultralytics/utils/loss.py,sha256=iIDVMX2nKRGi6oEv1mu86ewZtNphNK-KWkqWF5bDo6A,37477
|
235
244
|
ultralytics/utils/metrics.py,sha256=uv5O-2Ft8wYfTvDedFxiUqMZ6Nr2CL6I9ybGZiK3e2s,53773
|
236
|
-
ultralytics/utils/ops.py,sha256=
|
245
|
+
ultralytics/utils/ops.py,sha256=YFwPrKlPcgEmgAWqnJVR0Ccx5NQgp5e3P-YYHwVSP0k,34779
|
237
246
|
ultralytics/utils/patches.py,sha256=6rVT-l8WDp_Py3O-gZdv9t3PnrYRRkrX_lF3mZ1XS8c,4928
|
238
247
|
ultralytics/utils/plotting.py,sha256=5QPK1y-gm4T1mK3sjfRZhIUJAyP05D1cJ7h9wHPTifU,46616
|
239
248
|
ultralytics/utils/tal.py,sha256=P5nPoR9qNnFuDIda0fsn8WP6m1V8r7EbvXUuhNRFFTA,20805
|
240
249
|
ultralytics/utils/torch_utils.py,sha256=KUt2qoud3O2bb_cWv1TDjZloNKuLbWk0XJU97wlEdU4,39028
|
241
250
|
ultralytics/utils/triton.py,sha256=xK9Db_ZUVDnIK1u76S2G-6ulIBsLfj9HN_YOaSrnMuU,5304
|
242
|
-
ultralytics/utils/tuner.py,sha256=
|
251
|
+
ultralytics/utils/tuner.py,sha256=0Bp7l5dWZe1RzdvAIa11wQoX6eoAaoNRcA-EAnpofbk,6755
|
243
252
|
ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
|
244
253
|
ultralytics/utils/callbacks/base.py,sha256=p8YCeYDp4GLcyHWFZxC2Wxr2IXLw_MfIE5ef1fOQcWk,6848
|
245
254
|
ultralytics/utils/callbacks/clearml.py,sha256=z-MmCALz1FcNSec8CmDiFHkRd_zTzzuPDCidq_xkUXY,5990
|
@@ -251,9 +260,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=JaI95Cj2kIjUhlEEOiDN0-Drc-fDelLhNI
|
|
251
260
|
ultralytics/utils/callbacks/raytune.py,sha256=A8amUGpux7dYES-L1iSeMoMXBySGWCD1aUqT7vcG-pU,1284
|
252
261
|
ultralytics/utils/callbacks/tensorboard.py,sha256=jgYnym3cUQFAgN1GzTyO7l3jINtfAh8zhrllDvnLuVQ,5339
|
253
262
|
ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
|
254
|
-
ultralytics-8.3.
|
255
|
-
ultralytics-8.3.
|
256
|
-
ultralytics-8.3.
|
257
|
-
ultralytics-8.3.
|
258
|
-
ultralytics-8.3.
|
259
|
-
ultralytics-8.3.
|
263
|
+
ultralytics-8.3.119.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
264
|
+
ultralytics-8.3.119.dist-info/METADATA,sha256=w83hqOIWMLTLqR-2-nrGAqgu-Pc6OVt2BdBPA79Oct4,37195
|
265
|
+
ultralytics-8.3.119.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
|
266
|
+
ultralytics-8.3.119.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
267
|
+
ultralytics-8.3.119.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
268
|
+
ultralytics-8.3.119.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|