ultralytics 8.3.202__py3-none-any.whl → 8.3.204__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_cli.py +7 -9
- tests/test_cuda.py +4 -1
- tests/test_exports.py +7 -7
- tests/test_python.py +18 -10
- tests/test_solutions.py +13 -11
- ultralytics/__init__.py +1 -1
- ultralytics/data/build.py +4 -1
- ultralytics/data/utils.py +5 -0
- ultralytics/engine/exporter.py +45 -6
- ultralytics/engine/trainer.py +14 -12
- ultralytics/engine/tuner.py +1 -1
- ultralytics/engine/validator.py +1 -1
- ultralytics/models/fastsam/predict.py +2 -1
- ultralytics/models/rtdetr/model.py +2 -0
- ultralytics/models/sam/modules/sam.py +1 -1
- ultralytics/models/sam/predict.py +9 -5
- ultralytics/models/yolo/classify/train.py +2 -2
- ultralytics/models/yolo/classify/val.py +2 -2
- ultralytics/models/yolo/detect/train.py +1 -1
- ultralytics/models/yolo/detect/val.py +1 -1
- ultralytics/models/yolo/model.py +1 -0
- ultralytics/models/yolo/world/train.py +4 -2
- ultralytics/models/yolo/yoloe/train.py +1 -13
- ultralytics/nn/autobackend.py +1 -1
- ultralytics/nn/modules/head.py +3 -3
- ultralytics/nn/modules/transformer.py +3 -1
- ultralytics/solutions/similarity_search.py +3 -2
- ultralytics/solutions/streamlit_inference.py +2 -3
- ultralytics/utils/checks.py +27 -0
- ultralytics/utils/metrics.py +3 -3
- ultralytics/utils/tal.py +3 -5
- ultralytics/utils/torch_utils.py +5 -34
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/METADATA +21 -21
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/RECORD +38 -38
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.202.dist-info → ultralytics-8.3.204.dist-info}/top_level.txt +0 -0
ultralytics/models/yolo/model.py
CHANGED
@@ -64,6 +64,7 @@ class WorldTrainer(DetectionTrainer):
|
|
64
64
|
"""
|
65
65
|
if overrides is None:
|
66
66
|
overrides = {}
|
67
|
+
assert not overrides.get("compile"), f"Training with 'model={overrides['model']}' requires 'compile=False'"
|
67
68
|
super().__init__(cfg, overrides, _callbacks)
|
68
69
|
self.text_embeddings = None
|
69
70
|
|
@@ -171,7 +172,8 @@ class WorldTrainer(DetectionTrainer):
|
|
171
172
|
|
172
173
|
# Add text features
|
173
174
|
texts = list(itertools.chain(*batch["texts"]))
|
174
|
-
txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(
|
175
|
-
|
175
|
+
txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(
|
176
|
+
self.device, non_blocking=self.device.type == "cuda"
|
177
|
+
)
|
176
178
|
batch["txt_feats"] = txt_feats.reshape(len(batch["texts"]), -1, txt_feats.shape[-1])
|
177
179
|
return batch
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
import itertools
|
6
5
|
from copy import copy, deepcopy
|
7
6
|
from pathlib import Path
|
8
7
|
|
@@ -46,6 +45,7 @@ class YOLOETrainer(DetectionTrainer):
|
|
46
45
|
"""
|
47
46
|
if overrides is None:
|
48
47
|
overrides = {}
|
48
|
+
assert not overrides.get("compile"), f"Training with 'model={overrides['model']}' requires 'compile=False'"
|
49
49
|
overrides["overlap_mask"] = False
|
50
50
|
super().__init__(cfg, overrides, _callbacks)
|
51
51
|
|
@@ -168,7 +168,6 @@ class YOLOETrainerFromScratch(YOLOETrainer, WorldTrainerFromScratch):
|
|
168
168
|
|
169
169
|
Methods:
|
170
170
|
build_dataset: Build datasets for training with grounding support.
|
171
|
-
preprocess_batch: Process batches with text features.
|
172
171
|
generate_text_embeddings: Generate and cache text embeddings for training.
|
173
172
|
"""
|
174
173
|
|
@@ -189,16 +188,6 @@ class YOLOETrainerFromScratch(YOLOETrainer, WorldTrainerFromScratch):
|
|
189
188
|
"""
|
190
189
|
return WorldTrainerFromScratch.build_dataset(self, img_path, mode, batch)
|
191
190
|
|
192
|
-
def preprocess_batch(self, batch):
|
193
|
-
"""Process batch for training, moving text features to the appropriate device."""
|
194
|
-
batch = DetectionTrainer.preprocess_batch(self, batch)
|
195
|
-
|
196
|
-
texts = list(itertools.chain(*batch["texts"]))
|
197
|
-
txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(self.device, non_blocking=True)
|
198
|
-
txt_feats = txt_feats.reshape(len(batch["texts"]), -1, txt_feats.shape[-1])
|
199
|
-
batch["txt_feats"] = txt_feats
|
200
|
-
return batch
|
201
|
-
|
202
191
|
def generate_text_embeddings(self, texts: list[str], batch: int, cache_dir: Path):
|
203
192
|
"""
|
204
193
|
Generate text embeddings for a list of text samples.
|
@@ -279,7 +268,6 @@ class YOLOEVPTrainer(YOLOETrainerFromScratch):
|
|
279
268
|
|
280
269
|
Methods:
|
281
270
|
build_dataset: Build dataset with visual prompt loading transforms.
|
282
|
-
preprocess_batch: Preprocess batches with visual prompts.
|
283
271
|
"""
|
284
272
|
|
285
273
|
def build_dataset(self, img_path: list[str] | str, mode: str = "train", batch: int | None = None):
|
ultralytics/nn/autobackend.py
CHANGED
@@ -249,7 +249,7 @@ class AutoBackend(nn.Module):
|
|
249
249
|
LOGGER.warning("Failed to start ONNX Runtime with CUDA. Using CPU...")
|
250
250
|
device = torch.device("cpu")
|
251
251
|
cuda = False
|
252
|
-
LOGGER.info(f"Using ONNX Runtime {providers[0]}")
|
252
|
+
LOGGER.info(f"Using ONNX Runtime {onnxruntime.__version__} {providers[0]}")
|
253
253
|
if onnx:
|
254
254
|
session = onnxruntime.InferenceSession(w, providers=providers)
|
255
255
|
else:
|
ultralytics/nn/modules/head.py
CHANGED
@@ -12,8 +12,8 @@ import torch.nn.functional as F
|
|
12
12
|
from torch.nn.init import constant_, xavier_uniform_
|
13
13
|
|
14
14
|
from ultralytics.utils import NOT_MACOS14
|
15
|
-
from ultralytics.utils.tal import
|
16
|
-
from ultralytics.utils.torch_utils import fuse_conv_and_bn, smart_inference_mode
|
15
|
+
from ultralytics.utils.tal import dist2bbox, dist2rbox, make_anchors
|
16
|
+
from ultralytics.utils.torch_utils import TORCH_1_11, fuse_conv_and_bn, smart_inference_mode
|
17
17
|
|
18
18
|
from .block import DFL, SAVPE, BNContrastiveHead, ContrastiveHead, Proto, Residual, SwiGLUFFN
|
19
19
|
from .conv import Conv, DWConv
|
@@ -1052,7 +1052,7 @@ class RTDETRDecoder(nn.Module):
|
|
1052
1052
|
for i, (h, w) in enumerate(shapes):
|
1053
1053
|
sy = torch.arange(end=h, dtype=dtype, device=device)
|
1054
1054
|
sx = torch.arange(end=w, dtype=dtype, device=device)
|
1055
|
-
grid_y, grid_x = torch.meshgrid(sy, sx, indexing="ij") if
|
1055
|
+
grid_y, grid_x = torch.meshgrid(sy, sx, indexing="ij") if TORCH_1_11 else torch.meshgrid(sy, sx)
|
1056
1056
|
grid_xy = torch.stack([grid_x, grid_y], -1) # (h, w, 2)
|
1057
1057
|
|
1058
1058
|
valid_WH = torch.tensor([w, h], dtype=dtype, device=device)
|
@@ -10,6 +10,8 @@ import torch.nn as nn
|
|
10
10
|
import torch.nn.functional as F
|
11
11
|
from torch.nn.init import constant_, xavier_uniform_
|
12
12
|
|
13
|
+
from ultralytics.utils.torch_utils import TORCH_1_11
|
14
|
+
|
13
15
|
from .conv import Conv
|
14
16
|
from .utils import _get_clones, inverse_sigmoid, multi_scale_deformable_attn_pytorch
|
15
17
|
|
@@ -236,7 +238,7 @@ class AIFI(TransformerEncoderLayer):
|
|
236
238
|
assert embed_dim % 4 == 0, "Embed dimension must be divisible by 4 for 2D sin-cos position embedding"
|
237
239
|
grid_w = torch.arange(w, dtype=torch.float32)
|
238
240
|
grid_h = torch.arange(h, dtype=torch.float32)
|
239
|
-
grid_w, grid_h = torch.meshgrid(grid_w, grid_h, indexing="ij")
|
241
|
+
grid_w, grid_h = torch.meshgrid(grid_w, grid_h, indexing="ij") if TORCH_1_11 else torch.meshgrid(grid_w, grid_h)
|
240
242
|
pos_dim = embed_dim // 4
|
241
243
|
omega = torch.arange(pos_dim, dtype=torch.float32) / pos_dim
|
242
244
|
omega = 1.0 / (temperature**omega)
|
@@ -10,9 +10,9 @@ import numpy as np
|
|
10
10
|
from PIL import Image
|
11
11
|
|
12
12
|
from ultralytics.data.utils import IMG_FORMATS
|
13
|
-
from ultralytics.utils import LOGGER
|
13
|
+
from ultralytics.utils import LOGGER, TORCH_VERSION
|
14
14
|
from ultralytics.utils.checks import check_requirements
|
15
|
-
from ultralytics.utils.torch_utils import select_device
|
15
|
+
from ultralytics.utils.torch_utils import TORCH_2_4, select_device
|
16
16
|
|
17
17
|
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # Avoid OpenMP conflict on some systems
|
18
18
|
|
@@ -49,6 +49,7 @@ class VisualAISearch:
|
|
49
49
|
|
50
50
|
def __init__(self, **kwargs: Any) -> None:
|
51
51
|
"""Initialize the VisualAISearch class with FAISS index and CLIP model."""
|
52
|
+
assert TORCH_2_4, f"VisualAISearch requires torch>=2.4 (found torch=={TORCH_VERSION})"
|
52
53
|
from ultralytics.nn.text_model import build_text_model
|
53
54
|
|
54
55
|
check_requirements("faiss-cpu")
|
@@ -166,9 +166,8 @@ class Inference:
|
|
166
166
|
selected_model = self.st.sidebar.selectbox("Model", available_models)
|
167
167
|
|
168
168
|
with self.st.spinner("Model is downloading..."):
|
169
|
-
if (
|
170
|
-
selected_model
|
171
|
-
or "openvino_model" in selected_model
|
169
|
+
if selected_model.endswith((".pt", ".onnx", ".torchscript", ".mlpackage", ".engine")) or any(
|
170
|
+
fmt in selected_model for fmt in ("openvino_model", "rknn_model")
|
172
171
|
):
|
173
172
|
model_path = selected_model
|
174
173
|
else:
|
ultralytics/utils/checks.py
CHANGED
@@ -669,6 +669,9 @@ def check_yolo(verbose=True, device=""):
|
|
669
669
|
else:
|
670
670
|
s = ""
|
671
671
|
|
672
|
+
if GIT.is_repo:
|
673
|
+
check_multiple_install() # check conflicting installation if using local clone
|
674
|
+
|
672
675
|
select_device(device=device, newline=False)
|
673
676
|
LOGGER.info(f"Setup complete ✅ {s}")
|
674
677
|
|
@@ -807,6 +810,30 @@ def check_amp(model):
|
|
807
810
|
return True
|
808
811
|
|
809
812
|
|
813
|
+
def check_multiple_install():
|
814
|
+
"""Check if there are multiple Ultralytics installations."""
|
815
|
+
import sys
|
816
|
+
|
817
|
+
try:
|
818
|
+
result = subprocess.run([sys.executable, "-m", "pip", "show", "ultralytics"], capture_output=True, text=True)
|
819
|
+
install_msg = (
|
820
|
+
f"Install your local copy in editable mode with 'pip install -e {ROOT.parent}' to avoid "
|
821
|
+
"issues. See https://docs.ultralytics.com/quickstart/"
|
822
|
+
)
|
823
|
+
if result.returncode != 0:
|
824
|
+
if "not found" in result.stderr.lower(): # Package not pip-installed but locally imported
|
825
|
+
LOGGER.warning(f"Ultralytics not found via pip but importing from: {ROOT}. {install_msg}")
|
826
|
+
return
|
827
|
+
yolo_path = (Path(re.findall(r"location:\s+(.+)", result.stdout, flags=re.I)[-1]) / "ultralytics").resolve()
|
828
|
+
if not yolo_path.samefile(ROOT.resolve()):
|
829
|
+
LOGGER.warning(
|
830
|
+
f"Multiple Ultralytics installations detected. The `yolo` command uses: {yolo_path}, "
|
831
|
+
f"but current session imports from: {ROOT}. This may cause version conflicts. {install_msg}"
|
832
|
+
)
|
833
|
+
except Exception:
|
834
|
+
return
|
835
|
+
|
836
|
+
|
810
837
|
def print_args(args: dict | None = None, show_file=True, show_func=False):
|
811
838
|
"""
|
812
839
|
Print function arguments (optional args dict).
|
ultralytics/utils/metrics.py
CHANGED
@@ -491,12 +491,12 @@ class ConfusionMatrix(DataExportMixin):
|
|
491
491
|
for i, mtype in enumerate(["GT", "FP", "TP", "FN"]):
|
492
492
|
mbatch = self.matches[mtype]
|
493
493
|
if "conf" not in mbatch:
|
494
|
-
mbatch["conf"] = torch.tensor([1.0] * mbatch["bboxes"]
|
495
|
-
mbatch["batch_idx"] = torch.ones(mbatch["bboxes"]
|
494
|
+
mbatch["conf"] = torch.tensor([1.0] * len(mbatch["bboxes"]), device=img.device)
|
495
|
+
mbatch["batch_idx"] = torch.ones(len(mbatch["bboxes"]), device=img.device) * i
|
496
496
|
for k in mbatch.keys():
|
497
497
|
labels[k] += mbatch[k]
|
498
498
|
|
499
|
-
labels = {k: torch.stack(v, 0) if len(v) else
|
499
|
+
labels = {k: torch.stack(v, 0) if len(v) else torch.empty(0) for k, v in labels.items()}
|
500
500
|
if self.task != "obb" and labels["bboxes"].shape[0]:
|
501
501
|
labels["bboxes"] = xyxy2xywh(labels["bboxes"])
|
502
502
|
(save_dir / "visualizations").mkdir(parents=True, exist_ok=True)
|
ultralytics/utils/tal.py
CHANGED
@@ -3,12 +3,10 @@
|
|
3
3
|
import torch
|
4
4
|
import torch.nn as nn
|
5
5
|
|
6
|
-
from . import LOGGER
|
7
|
-
from .checks import check_version
|
6
|
+
from . import LOGGER
|
8
7
|
from .metrics import bbox_iou, probiou
|
9
8
|
from .ops import xywhr2xyxyxyxy
|
10
|
-
|
11
|
-
TORCH_1_10 = check_version(TORCH_VERSION, "1.10.0")
|
9
|
+
from .torch_utils import TORCH_1_11
|
12
10
|
|
13
11
|
|
14
12
|
class TaskAlignedAssigner(nn.Module):
|
@@ -373,7 +371,7 @@ def make_anchors(feats, strides, grid_cell_offset=0.5):
|
|
373
371
|
h, w = feats[i].shape[2:] if isinstance(feats, list) else (int(feats[i][0]), int(feats[i][1]))
|
374
372
|
sx = torch.arange(end=w, device=device, dtype=dtype) + grid_cell_offset # shift x
|
375
373
|
sy = torch.arange(end=h, device=device, dtype=dtype) + grid_cell_offset # shift y
|
376
|
-
sy, sx = torch.meshgrid(sy, sx, indexing="ij") if
|
374
|
+
sy, sx = torch.meshgrid(sy, sx, indexing="ij") if TORCH_1_11 else torch.meshgrid(sy, sx)
|
377
375
|
anchor_points.append(torch.stack((sx, sy), -1).view(-1, 2))
|
378
376
|
stride_tensor.append(torch.full((h * w, 1), stride, dtype=dtype, device=device))
|
379
377
|
return torch.cat(anchor_points), torch.cat(stride_tensor)
|
ultralytics/utils/torch_utils.py
CHANGED
@@ -38,8 +38,11 @@ from ultralytics.utils.patches import torch_load
|
|
38
38
|
|
39
39
|
# Version checks (all default to version>=min_version)
|
40
40
|
TORCH_1_9 = check_version(TORCH_VERSION, "1.9.0")
|
41
|
+
TORCH_1_10 = check_version(TORCH_VERSION, "1.10.0")
|
42
|
+
TORCH_1_11 = check_version(TORCH_VERSION, "1.11.0")
|
41
43
|
TORCH_1_13 = check_version(TORCH_VERSION, "1.13.0")
|
42
44
|
TORCH_2_0 = check_version(TORCH_VERSION, "2.0.0")
|
45
|
+
TORCH_2_1 = check_version(TORCH_VERSION, "2.1.0")
|
43
46
|
TORCH_2_4 = check_version(TORCH_VERSION, "2.4.0")
|
44
47
|
TORCHVISION_0_10 = check_version(TORCHVISION_VERSION, "0.10.0")
|
45
48
|
TORCHVISION_0_11 = check_version(TORCHVISION_VERSION, "0.11.0")
|
@@ -127,7 +130,7 @@ def get_gpu_info(index):
|
|
127
130
|
return f"{properties.name}, {properties.total_memory / (1 << 20):.0f}MiB"
|
128
131
|
|
129
132
|
|
130
|
-
def select_device(device="",
|
133
|
+
def select_device(device="", newline=False, verbose=True):
|
131
134
|
"""
|
132
135
|
Select the appropriate PyTorch device based on the provided arguments.
|
133
136
|
|
@@ -138,17 +141,12 @@ def select_device(device="", batch=0, newline=False, verbose=True):
|
|
138
141
|
Args:
|
139
142
|
device (str | torch.device, optional): Device string or torch.device object. Options are 'None', 'cpu', or
|
140
143
|
'cuda', or '0' or '0,1,2,3'. Auto-selects the first available GPU, or CPU if no GPU is available.
|
141
|
-
batch (int, optional): Batch size being used in your model.
|
142
144
|
newline (bool, optional): If True, adds a newline at the end of the log string.
|
143
145
|
verbose (bool, optional): If True, logs the device information.
|
144
146
|
|
145
147
|
Returns:
|
146
148
|
(torch.device): Selected device.
|
147
149
|
|
148
|
-
Raises:
|
149
|
-
ValueError: If the specified device is not available or if the batch size is not a multiple of the number of
|
150
|
-
devices when using multiple GPUs.
|
151
|
-
|
152
150
|
Examples:
|
153
151
|
>>> select_device("cuda:0")
|
154
152
|
device(type='cuda', index=0)
|
@@ -210,18 +208,6 @@ def select_device(device="", batch=0, newline=False, verbose=True):
|
|
210
208
|
|
211
209
|
if not cpu and not mps and torch.cuda.is_available(): # prefer GPU if available
|
212
210
|
devices = device.split(",") if device else "0" # i.e. "0,1" -> ["0", "1"]
|
213
|
-
n = len(devices) # device count
|
214
|
-
if n > 1: # multi-GPU
|
215
|
-
if batch < 1:
|
216
|
-
raise ValueError(
|
217
|
-
"AutoBatch with batch<1 not supported for Multi-GPU training, "
|
218
|
-
f"please specify a valid batch size multiple of GPU count {n}, i.e. batch={n * 8}."
|
219
|
-
)
|
220
|
-
if batch >= 0 and batch % n != 0: # check batch_size is divisible by device_count
|
221
|
-
raise ValueError(
|
222
|
-
f"'batch={batch}' must be a multiple of GPU count {n}. Try 'batch={batch // n * n}' or "
|
223
|
-
f"'batch={batch // n * n + n}', the nearest batch sizes evenly divisible by {n}."
|
224
|
-
)
|
225
211
|
space = " " * len(s)
|
226
212
|
for i, d in enumerate(devices):
|
227
213
|
s += f"{'' if i == 0 else space}CUDA:{d} ({get_gpu_info(i)})\n" # bytes to MB
|
@@ -534,21 +520,6 @@ def copy_attr(a, b, include=(), exclude=()):
|
|
534
520
|
setattr(a, k, v)
|
535
521
|
|
536
522
|
|
537
|
-
def get_latest_opset():
|
538
|
-
"""
|
539
|
-
Return the second-most recent ONNX opset version supported by this version of PyTorch, adjusted for maturity.
|
540
|
-
|
541
|
-
Returns:
|
542
|
-
(int): The ONNX opset version.
|
543
|
-
"""
|
544
|
-
if TORCH_1_13:
|
545
|
-
# If the PyTorch>=1.13, dynamically compute the latest opset minus one using 'symbolic_opset'
|
546
|
-
return max(int(k[14:]) for k in vars(torch.onnx) if "symbolic_opset" in k) - 1
|
547
|
-
# Otherwise for PyTorch<=1.12 return the corresponding predefined opset
|
548
|
-
version = torch.onnx.producer_version.rsplit(".", 1)[0] # i.e. '2.3'
|
549
|
-
return {"1.12": 15, "1.11": 14, "1.10": 13, "1.9": 12, "1.8": 12}.get(version, 12)
|
550
|
-
|
551
|
-
|
552
523
|
def intersect_dicts(da, db, exclude=()):
|
553
524
|
"""
|
554
525
|
Return a dictionary of intersecting keys with matching shapes, excluding 'exclude' keys, using da values.
|
@@ -761,7 +732,7 @@ def strip_optimizer(f: str | Path = "best.pt", s: str = "", updates: dict[str, A
|
|
761
732
|
|
762
733
|
# Update other keys
|
763
734
|
args = {**DEFAULT_CFG_DICT, **x.get("train_args", {})} # combine args
|
764
|
-
for k in "optimizer", "best_fitness", "ema", "updates": # keys
|
735
|
+
for k in "optimizer", "best_fitness", "ema", "updates", "scaler": # keys
|
765
736
|
x[k] = None
|
766
737
|
x["epoch"] = -1
|
767
738
|
x["train_args"] = {k: v for k, v in args.items() if k in DEFAULT_CFG_KEYS} # strip non-default keys
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.204
|
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>
|
@@ -239,11 +239,11 @@ Refer to the [Segmentation Docs](https://docs.ultralytics.com/tasks/segment/) fo
|
|
239
239
|
|
240
240
|
| Model | size<br><sup>(pixels) | mAP<sup>box<br>50-95 | mAP<sup>mask<br>50-95 | Speed<br><sup>CPU ONNX<br>(ms) | Speed<br><sup>T4 TensorRT10<br>(ms) | params<br><sup>(M) | FLOPs<br><sup>(B) |
|
241
241
|
| -------------------------------------------------------------------------------------------- | --------------------- | -------------------- | --------------------- | ------------------------------ | ----------------------------------- | ------------------ | ----------------- |
|
242
|
-
| [YOLO11n-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-seg.pt) | 640 | 38.9 | 32.0 | 65.9 ± 1.1 | 1.8 ± 0.0 | 2.9 |
|
243
|
-
| [YOLO11s-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-seg.pt) | 640 | 46.6 | 37.8 | 117.6 ± 4.9 | 2.9 ± 0.0 | 10.1 |
|
244
|
-
| [YOLO11m-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-seg.pt) | 640 | 51.5 | 41.5 | 281.6 ± 1.2 | 6.3 ± 0.1 | 22.4 |
|
245
|
-
| [YOLO11l-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-seg.pt) | 640 | 53.4 | 42.9 | 344.2 ± 3.2 | 7.8 ± 0.2 | 27.6 |
|
246
|
-
| [YOLO11x-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-seg.pt) | 640 | 54.7 | 43.8 | 664.5 ± 3.2 | 15.8 ± 0.7 | 62.1 |
|
242
|
+
| [YOLO11n-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-seg.pt) | 640 | 38.9 | 32.0 | 65.9 ± 1.1 | 1.8 ± 0.0 | 2.9 | 9.7 |
|
243
|
+
| [YOLO11s-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-seg.pt) | 640 | 46.6 | 37.8 | 117.6 ± 4.9 | 2.9 ± 0.0 | 10.1 | 33.0 |
|
244
|
+
| [YOLO11m-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-seg.pt) | 640 | 51.5 | 41.5 | 281.6 ± 1.2 | 6.3 ± 0.1 | 22.4 | 113.2 |
|
245
|
+
| [YOLO11l-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-seg.pt) | 640 | 53.4 | 42.9 | 344.2 ± 3.2 | 7.8 ± 0.2 | 27.6 | 132.2 |
|
246
|
+
| [YOLO11x-seg](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-seg.pt) | 640 | 54.7 | 43.8 | 664.5 ± 3.2 | 15.8 ± 0.7 | 62.1 | 296.4 |
|
247
247
|
|
248
248
|
- **mAP<sup>val</sup>** values are for single-model single-scale on the [COCO val2017](https://cocodataset.org/) dataset. See [YOLO Performance Metrics](https://docs.ultralytics.com/guides/yolo-performance-metrics/) for details. <br>Reproduce with `yolo val segment data=coco.yaml device=0`
|
249
249
|
- **Speed** metrics are averaged over COCO val images using an [Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/) instance. CPU speeds measured with [ONNX](https://onnx.ai/) export. GPU speeds measured with [TensorRT](https://developer.nvidia.com/tensorrt) export. <br>Reproduce with `yolo val segment data=coco.yaml batch=1 device=0|cpu`
|
@@ -256,11 +256,11 @@ Consult the [Classification Docs](https://docs.ultralytics.com/tasks/classify/)
|
|
256
256
|
|
257
257
|
| Model | size<br><sup>(pixels) | acc<br><sup>top1 | acc<br><sup>top5 | Speed<br><sup>CPU ONNX<br>(ms) | Speed<br><sup>T4 TensorRT10<br>(ms) | params<br><sup>(M) | FLOPs<br><sup>(B) at 224 |
|
258
258
|
| -------------------------------------------------------------------------------------------- | --------------------- | ---------------- | ---------------- | ------------------------------ | ----------------------------------- | ------------------ | ------------------------ |
|
259
|
-
| [YOLO11n-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-cls.pt) | 224 | 70.0 | 89.4 | 5.0 ± 0.3 | 1.1 ± 0.0 |
|
260
|
-
| [YOLO11s-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-cls.pt) | 224 | 75.4 | 92.7 | 7.9 ± 0.2 | 1.3 ± 0.0 |
|
261
|
-
| [YOLO11m-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-cls.pt) | 224 | 77.3 | 93.9 | 17.2 ± 0.4 | 2.0 ± 0.0 |
|
262
|
-
| [YOLO11l-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-cls.pt) | 224 | 78.3 | 94.3 | 23.2 ± 0.3 | 2.8 ± 0.0 |
|
263
|
-
| [YOLO11x-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-cls.pt) | 224 | 79.5 | 94.9 | 41.4 ± 0.9 | 3.8 ± 0.0 |
|
259
|
+
| [YOLO11n-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-cls.pt) | 224 | 70.0 | 89.4 | 5.0 ± 0.3 | 1.1 ± 0.0 | 2.8 | 0.5 |
|
260
|
+
| [YOLO11s-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-cls.pt) | 224 | 75.4 | 92.7 | 7.9 ± 0.2 | 1.3 ± 0.0 | 6.7 | 1.6 |
|
261
|
+
| [YOLO11m-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-cls.pt) | 224 | 77.3 | 93.9 | 17.2 ± 0.4 | 2.0 ± 0.0 | 11.6 | 4.9 |
|
262
|
+
| [YOLO11l-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-cls.pt) | 224 | 78.3 | 94.3 | 23.2 ± 0.3 | 2.8 ± 0.0 | 14.1 | 6.2 |
|
263
|
+
| [YOLO11x-cls](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-cls.pt) | 224 | 79.5 | 94.9 | 41.4 ± 0.9 | 3.8 ± 0.0 | 29.6 | 13.6 |
|
264
264
|
|
265
265
|
- **acc** values represent model accuracy on the [ImageNet](https://www.image-net.org/) dataset validation set. <br>Reproduce with `yolo val classify data=path/to/ImageNet device=0`
|
266
266
|
- **Speed** metrics are averaged over ImageNet val images using an [Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/) instance. CPU speeds measured with [ONNX](https://onnx.ai/) export. GPU speeds measured with [TensorRT](https://developer.nvidia.com/tensorrt) export. <br>Reproduce with `yolo val classify data=path/to/ImageNet batch=1 device=0|cpu`
|
@@ -273,11 +273,11 @@ See the [Pose Estimation Docs](https://docs.ultralytics.com/tasks/pose/) for usa
|
|
273
273
|
|
274
274
|
| Model | size<br><sup>(pixels) | mAP<sup>pose<br>50-95 | mAP<sup>pose<br>50 | Speed<br><sup>CPU ONNX<br>(ms) | Speed<br><sup>T4 TensorRT10<br>(ms) | params<br><sup>(M) | FLOPs<br><sup>(B) |
|
275
275
|
| ---------------------------------------------------------------------------------------------- | --------------------- | --------------------- | ------------------ | ------------------------------ | ----------------------------------- | ------------------ | ----------------- |
|
276
|
-
| [YOLO11n-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-pose.pt) | 640 | 50.0 | 81.0 | 52.4 ± 0.5 | 1.7 ± 0.0 | 2.9 | 7.
|
277
|
-
| [YOLO11s-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-pose.pt) | 640 | 58.9 | 86.3 | 90.5 ± 0.6 | 2.6 ± 0.0 | 9.9 | 23.
|
278
|
-
| [YOLO11m-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-pose.pt) | 640 | 64.9 | 89.4 | 187.3 ± 0.8 | 4.9 ± 0.1 | 20.9 | 71.
|
279
|
-
| [YOLO11l-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-pose.pt) | 640 | 66.1 | 89.9 | 247.7 ± 1.1 | 6.4 ± 0.1 | 26.
|
280
|
-
| [YOLO11x-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-pose.pt) | 640 | 69.5 | 91.1 | 488.0 ± 13.9 | 12.1 ± 0.2 | 58.8 |
|
276
|
+
| [YOLO11n-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-pose.pt) | 640 | 50.0 | 81.0 | 52.4 ± 0.5 | 1.7 ± 0.0 | 2.9 | 7.4 |
|
277
|
+
| [YOLO11s-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-pose.pt) | 640 | 58.9 | 86.3 | 90.5 ± 0.6 | 2.6 ± 0.0 | 9.9 | 23.1 |
|
278
|
+
| [YOLO11m-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-pose.pt) | 640 | 64.9 | 89.4 | 187.3 ± 0.8 | 4.9 ± 0.1 | 20.9 | 71.4 |
|
279
|
+
| [YOLO11l-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-pose.pt) | 640 | 66.1 | 89.9 | 247.7 ± 1.1 | 6.4 ± 0.1 | 26.1 | 90.3 |
|
280
|
+
| [YOLO11x-pose](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-pose.pt) | 640 | 69.5 | 91.1 | 488.0 ± 13.9 | 12.1 ± 0.2 | 58.8 | 202.8 |
|
281
281
|
|
282
282
|
- **mAP<sup>val</sup>** values are for single-model single-scale on the [COCO Keypoints val2017](https://docs.ultralytics.com/datasets/pose/coco/) dataset. See [YOLO Performance Metrics](https://docs.ultralytics.com/guides/yolo-performance-metrics/) for details. <br>Reproduce with `yolo val pose data=coco-pose.yaml device=0`
|
283
283
|
- **Speed** metrics are averaged over COCO val images using an [Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/) instance. CPU speeds measured with [ONNX](https://onnx.ai/) export. GPU speeds measured with [TensorRT](https://developer.nvidia.com/tensorrt) export. <br>Reproduce with `yolo val pose data=coco-pose.yaml batch=1 device=0|cpu`
|
@@ -290,11 +290,11 @@ Check the [OBB Docs](https://docs.ultralytics.com/tasks/obb/) for usage examples
|
|
290
290
|
|
291
291
|
| Model | size<br><sup>(pixels) | mAP<sup>test<br>50 | Speed<br><sup>CPU ONNX<br>(ms) | Speed<br><sup>T4 TensorRT10<br>(ms) | params<br><sup>(M) | FLOPs<br><sup>(B) |
|
292
292
|
| -------------------------------------------------------------------------------------------- | --------------------- | ------------------ | ------------------------------ | ----------------------------------- | ------------------ | ----------------- |
|
293
|
-
| [YOLO11n-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-obb.pt) | 1024 | 78.4 | 117.6 ± 0.8 | 4.4 ± 0.0 | 2.7 |
|
294
|
-
| [YOLO11s-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-obb.pt) | 1024 | 79.5 | 219.4 ± 4.0 | 5.1 ± 0.0 | 9.7 | 57.
|
295
|
-
| [YOLO11m-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-obb.pt) | 1024 | 80.9 | 562.8 ± 2.9 | 10.1 ± 0.4 | 20.9 |
|
296
|
-
| [YOLO11l-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-obb.pt) | 1024 | 81.0 | 712.5 ± 5.0 | 13.5 ± 0.6 | 26.
|
297
|
-
| [YOLO11x-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-obb.pt) | 1024 | 81.3 | 1408.6 ± 7.7 | 28.6 ± 1.0 | 58.8 |
|
293
|
+
| [YOLO11n-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-obb.pt) | 1024 | 78.4 | 117.6 ± 0.8 | 4.4 ± 0.0 | 2.7 | 16.8 |
|
294
|
+
| [YOLO11s-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s-obb.pt) | 1024 | 79.5 | 219.4 ± 4.0 | 5.1 ± 0.0 | 9.7 | 57.1 |
|
295
|
+
| [YOLO11m-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11m-obb.pt) | 1024 | 80.9 | 562.8 ± 2.9 | 10.1 ± 0.4 | 20.9 | 182.8 |
|
296
|
+
| [YOLO11l-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11l-obb.pt) | 1024 | 81.0 | 712.5 ± 5.0 | 13.5 ± 0.6 | 26.1 | 231.2 |
|
297
|
+
| [YOLO11x-obb](https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11x-obb.pt) | 1024 | 81.3 | 1408.6 ± 7.7 | 28.6 ± 1.0 | 58.8 | 519.1 |
|
298
298
|
|
299
299
|
- **mAP<sup>test</sup>** values are for single-model multiscale performance on the [DOTAv1 test set](https://captain-whu.github.io/DOTA/dataset.html). <br>Reproduce by `yolo val obb data=DOTAv1.yaml device=0 split=test` and submit merged results to the [DOTA evaluation server](https://captain-whu.github.io/DOTA/evaluation.html).
|
300
300
|
- **Speed** metrics are averaged over [DOTAv1 val images](https://docs.ultralytics.com/datasets/obb/dota-v2/#dota-v10) using an [Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/) instance. CPU speeds measured with [ONNX](https://onnx.ai/) export. GPU speeds measured with [TensorRT](https://developer.nvidia.com/tensorrt) export. <br>Reproduce by `yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu`
|