ultralytics 8.3.9__py3-none-any.whl → 8.3.11__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.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- ultralytics/__init__.py +1 -1
- ultralytics/data/annotator.py +1 -1
- ultralytics/data/loaders.py +162 -81
- ultralytics/data/utils.py +1 -1
- ultralytics/engine/exporter.py +47 -50
- ultralytics/engine/model.py +33 -33
- ultralytics/engine/predictor.py +1 -1
- ultralytics/engine/results.py +1 -1
- ultralytics/engine/tuner.py +3 -3
- ultralytics/models/yolo/detect/predict.py +1 -1
- ultralytics/models/yolo/detect/train.py +1 -1
- ultralytics/models/yolo/detect/val.py +1 -1
- ultralytics/models/yolo/model.py +1 -1
- ultralytics/nn/autobackend.py +1 -1
- ultralytics/nn/modules/head.py +9 -9
- ultralytics/utils/benchmarks.py +2 -2
- ultralytics/utils/checks.py +10 -7
- ultralytics/utils/downloads.py +1 -1
- ultralytics/utils/files.py +2 -2
- ultralytics/utils/tuner.py +1 -1
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/METADATA +1 -1
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/RECORD +26 -27
- tests/test_explorer.py +0 -66
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/LICENSE +0 -0
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.9.dist-info → ultralytics-8.3.11.dist-info}/top_level.txt +0 -0
ultralytics/engine/exporter.py
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
"""
|
|
3
|
-
Export a
|
|
3
|
+
Export a YOLO PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit.
|
|
4
4
|
|
|
5
5
|
Format | `format=argument` | Model
|
|
6
6
|
--- | --- | ---
|
|
7
|
-
PyTorch | - |
|
|
8
|
-
TorchScript | `torchscript` |
|
|
9
|
-
ONNX | `onnx` |
|
|
10
|
-
OpenVINO | `openvino` |
|
|
11
|
-
TensorRT | `engine` |
|
|
12
|
-
CoreML | `coreml` |
|
|
13
|
-
TensorFlow SavedModel | `saved_model` |
|
|
14
|
-
TensorFlow GraphDef | `pb` |
|
|
15
|
-
TensorFlow Lite | `tflite` |
|
|
16
|
-
TensorFlow Edge TPU | `edgetpu` |
|
|
17
|
-
TensorFlow.js | `tfjs` |
|
|
18
|
-
PaddlePaddle | `paddle` |
|
|
19
|
-
NCNN | `ncnn` |
|
|
7
|
+
PyTorch | - | yolo11n.pt
|
|
8
|
+
TorchScript | `torchscript` | yolo11n.torchscript
|
|
9
|
+
ONNX | `onnx` | yolo11n.onnx
|
|
10
|
+
OpenVINO | `openvino` | yolo11n_openvino_model/
|
|
11
|
+
TensorRT | `engine` | yolo11n.engine
|
|
12
|
+
CoreML | `coreml` | yolo11n.mlpackage
|
|
13
|
+
TensorFlow SavedModel | `saved_model` | yolo11n_saved_model/
|
|
14
|
+
TensorFlow GraphDef | `pb` | yolo11n.pb
|
|
15
|
+
TensorFlow Lite | `tflite` | yolo11n.tflite
|
|
16
|
+
TensorFlow Edge TPU | `edgetpu` | yolo11n_edgetpu.tflite
|
|
17
|
+
TensorFlow.js | `tfjs` | yolo11n_web_model/
|
|
18
|
+
PaddlePaddle | `paddle` | yolo11n_paddle_model/
|
|
19
|
+
NCNN | `ncnn` | yolo11n_ncnn_model/
|
|
20
20
|
|
|
21
21
|
Requirements:
|
|
22
22
|
$ pip install "ultralytics[export]"
|
|
23
23
|
|
|
24
24
|
Python:
|
|
25
25
|
from ultralytics import YOLO
|
|
26
|
-
model = YOLO('
|
|
26
|
+
model = YOLO('yolo11n.pt')
|
|
27
27
|
results = model.export(format='onnx')
|
|
28
28
|
|
|
29
29
|
CLI:
|
|
30
|
-
$ yolo mode=export model=
|
|
30
|
+
$ yolo mode=export model=yolo11n.pt format=onnx
|
|
31
31
|
|
|
32
32
|
Inference:
|
|
33
|
-
$ yolo predict model=
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
$ yolo predict model=yolo11n.pt # PyTorch
|
|
34
|
+
yolo11n.torchscript # TorchScript
|
|
35
|
+
yolo11n.onnx # ONNX Runtime or OpenCV DNN with dnn=True
|
|
36
|
+
yolo11n_openvino_model # OpenVINO
|
|
37
|
+
yolo11n.engine # TensorRT
|
|
38
|
+
yolo11n.mlpackage # CoreML (macOS-only)
|
|
39
|
+
yolo11n_saved_model # TensorFlow SavedModel
|
|
40
|
+
yolo11n.pb # TensorFlow GraphDef
|
|
41
|
+
yolo11n.tflite # TensorFlow Lite
|
|
42
|
+
yolo11n_edgetpu.tflite # TensorFlow Edge TPU
|
|
43
|
+
yolo11n_paddle_model # PaddlePaddle
|
|
44
|
+
yolo11n_ncnn_model # NCNN
|
|
45
45
|
|
|
46
46
|
TensorFlow.js:
|
|
47
47
|
$ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example
|
|
48
48
|
$ npm install
|
|
49
|
-
$ ln -s ../../
|
|
49
|
+
$ ln -s ../../yolo11n_web_model public/yolo11n_web_model
|
|
50
50
|
$ npm start
|
|
51
51
|
"""
|
|
52
52
|
|
|
@@ -124,7 +124,7 @@ def gd_outputs(gd):
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
def try_export(inner_func):
|
|
127
|
-
"""
|
|
127
|
+
"""YOLO export decorator, i.e. @try_export."""
|
|
128
128
|
inner_args = get_default_args(inner_func)
|
|
129
129
|
|
|
130
130
|
def outer_func(*args, **kwargs):
|
|
@@ -378,7 +378,7 @@ class Exporter:
|
|
|
378
378
|
|
|
379
379
|
@try_export
|
|
380
380
|
def export_torchscript(self, prefix=colorstr("TorchScript:")):
|
|
381
|
-
"""
|
|
381
|
+
"""YOLO TorchScript model export."""
|
|
382
382
|
LOGGER.info(f"\n{prefix} starting export with torch {torch.__version__}...")
|
|
383
383
|
f = self.file.with_suffix(".torchscript")
|
|
384
384
|
|
|
@@ -395,7 +395,7 @@ class Exporter:
|
|
|
395
395
|
|
|
396
396
|
@try_export
|
|
397
397
|
def export_onnx(self, prefix=colorstr("ONNX:")):
|
|
398
|
-
"""
|
|
398
|
+
"""YOLO ONNX export."""
|
|
399
399
|
requirements = ["onnx>=1.12.0"]
|
|
400
400
|
if self.args.simplify:
|
|
401
401
|
requirements += ["onnxslim==0.1.34", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
|
|
@@ -452,7 +452,7 @@ class Exporter:
|
|
|
452
452
|
|
|
453
453
|
@try_export
|
|
454
454
|
def export_openvino(self, prefix=colorstr("OpenVINO:")):
|
|
455
|
-
"""
|
|
455
|
+
"""YOLO OpenVINO export."""
|
|
456
456
|
check_requirements(f'openvino{"<=2024.0.0" if ARM64 else ">=2024.0.0"}') # fix OpenVINO issue on ARM64
|
|
457
457
|
import openvino as ov
|
|
458
458
|
|
|
@@ -466,7 +466,7 @@ class Exporter:
|
|
|
466
466
|
|
|
467
467
|
def serialize(ov_model, file):
|
|
468
468
|
"""Set RT info, serialize and save metadata YAML."""
|
|
469
|
-
ov_model.set_rt_info("
|
|
469
|
+
ov_model.set_rt_info("YOLO", ["model_info", "model_type"])
|
|
470
470
|
ov_model.set_rt_info(True, ["model_info", "reverse_input_channels"])
|
|
471
471
|
ov_model.set_rt_info(114, ["model_info", "pad_value"])
|
|
472
472
|
ov_model.set_rt_info([255.0], ["model_info", "scale_values"])
|
|
@@ -524,7 +524,7 @@ class Exporter:
|
|
|
524
524
|
|
|
525
525
|
@try_export
|
|
526
526
|
def export_paddle(self, prefix=colorstr("PaddlePaddle:")):
|
|
527
|
-
"""
|
|
527
|
+
"""YOLO Paddle export."""
|
|
528
528
|
check_requirements(("paddlepaddle", "x2paddle"))
|
|
529
529
|
import x2paddle # noqa
|
|
530
530
|
from x2paddle.convert import pytorch2paddle # noqa
|
|
@@ -538,7 +538,7 @@ class Exporter:
|
|
|
538
538
|
|
|
539
539
|
@try_export
|
|
540
540
|
def export_ncnn(self, prefix=colorstr("NCNN:")):
|
|
541
|
-
"""
|
|
541
|
+
"""YOLO NCNN export using PNNX https://github.com/pnnx/pnnx."""
|
|
542
542
|
check_requirements("ncnn")
|
|
543
543
|
import ncnn # noqa
|
|
544
544
|
|
|
@@ -606,7 +606,7 @@ class Exporter:
|
|
|
606
606
|
|
|
607
607
|
@try_export
|
|
608
608
|
def export_coreml(self, prefix=colorstr("CoreML:")):
|
|
609
|
-
"""
|
|
609
|
+
"""YOLO CoreML export."""
|
|
610
610
|
mlmodel = self.args.format.lower() == "mlmodel" # legacy *.mlmodel export format requested
|
|
611
611
|
check_requirements("coremltools>=6.0,<=6.2" if mlmodel else "coremltools>=7.0")
|
|
612
612
|
import coremltools as ct # noqa
|
|
@@ -683,7 +683,7 @@ class Exporter:
|
|
|
683
683
|
|
|
684
684
|
@try_export
|
|
685
685
|
def export_engine(self, prefix=colorstr("TensorRT:")):
|
|
686
|
-
"""
|
|
686
|
+
"""YOLO TensorRT export https://developer.nvidia.com/tensorrt."""
|
|
687
687
|
assert self.im.device.type != "cpu", "export running on CPU but must be on GPU, i.e. use 'device=0'"
|
|
688
688
|
f_onnx, _ = self.export_onnx() # run before TRT import https://github.com/ultralytics/ultralytics/issues/7016
|
|
689
689
|
|
|
@@ -817,7 +817,7 @@ class Exporter:
|
|
|
817
817
|
|
|
818
818
|
@try_export
|
|
819
819
|
def export_saved_model(self, prefix=colorstr("TensorFlow SavedModel:")):
|
|
820
|
-
"""
|
|
820
|
+
"""YOLO TensorFlow SavedModel export."""
|
|
821
821
|
cuda = torch.cuda.is_available()
|
|
822
822
|
try:
|
|
823
823
|
import tensorflow as tf # noqa
|
|
@@ -869,22 +869,19 @@ class Exporter:
|
|
|
869
869
|
np_data = None
|
|
870
870
|
if self.args.int8:
|
|
871
871
|
tmp_file = f / "tmp_tflite_int8_calibration_images.npy" # int8 calibration images file
|
|
872
|
-
verbosity = "info"
|
|
873
872
|
if self.args.data:
|
|
874
873
|
f.mkdir()
|
|
875
874
|
images = [batch["img"].permute(0, 2, 3, 1) for batch in self.get_int8_calibration_dataloader(prefix)]
|
|
876
875
|
images = torch.cat(images, 0).float()
|
|
877
876
|
np.save(str(tmp_file), images.numpy().astype(np.float32)) # BHWC
|
|
878
877
|
np_data = [["images", tmp_file, [[[[0, 0, 0]]]], [[[[255, 255, 255]]]]]]
|
|
879
|
-
else:
|
|
880
|
-
verbosity = "error"
|
|
881
878
|
|
|
882
879
|
LOGGER.info(f"{prefix} starting TFLite export with onnx2tf {onnx2tf.__version__}...")
|
|
883
|
-
onnx2tf.convert(
|
|
880
|
+
keras_model = onnx2tf.convert(
|
|
884
881
|
input_onnx_file_path=f_onnx,
|
|
885
882
|
output_folder_path=str(f),
|
|
886
883
|
not_use_onnxsim=True,
|
|
887
|
-
verbosity=
|
|
884
|
+
verbosity="error", # note INT8-FP16 activation bug https://github.com/ultralytics/ultralytics/issues/15873
|
|
888
885
|
output_integer_quantized_tflite=self.args.int8,
|
|
889
886
|
quant_type="per-tensor", # "per-tensor" (faster) or "per-channel" (slower but more accurate)
|
|
890
887
|
custom_input_op_name_np_data_path=np_data,
|
|
@@ -905,11 +902,11 @@ class Exporter:
|
|
|
905
902
|
for file in f.rglob("*.tflite"):
|
|
906
903
|
f.unlink() if "quant_with_int16_act.tflite" in str(f) else self._add_tflite_metadata(file)
|
|
907
904
|
|
|
908
|
-
return str(f), tf.saved_model.load(f, tags=None, options=None)
|
|
905
|
+
return str(f), keras_model # or keras_model = tf.saved_model.load(f, tags=None, options=None)
|
|
909
906
|
|
|
910
907
|
@try_export
|
|
911
908
|
def export_pb(self, keras_model, prefix=colorstr("TensorFlow GraphDef:")):
|
|
912
|
-
"""
|
|
909
|
+
"""YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow."""
|
|
913
910
|
import tensorflow as tf # noqa
|
|
914
911
|
from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 # noqa
|
|
915
912
|
|
|
@@ -925,7 +922,7 @@ class Exporter:
|
|
|
925
922
|
|
|
926
923
|
@try_export
|
|
927
924
|
def export_tflite(self, keras_model, nms, agnostic_nms, prefix=colorstr("TensorFlow Lite:")):
|
|
928
|
-
"""
|
|
925
|
+
"""YOLO TensorFlow Lite export."""
|
|
929
926
|
# BUG https://github.com/ultralytics/ultralytics/issues/13436
|
|
930
927
|
import tensorflow as tf # noqa
|
|
931
928
|
|
|
@@ -941,7 +938,7 @@ class Exporter:
|
|
|
941
938
|
|
|
942
939
|
@try_export
|
|
943
940
|
def export_edgetpu(self, tflite_model="", prefix=colorstr("Edge TPU:")):
|
|
944
|
-
"""
|
|
941
|
+
"""YOLO Edge TPU export https://coral.ai/docs/edgetpu/models-intro/."""
|
|
945
942
|
LOGGER.warning(f"{prefix} WARNING ⚠️ Edge TPU known bug https://github.com/ultralytics/ultralytics/issues/1185")
|
|
946
943
|
|
|
947
944
|
cmd = "edgetpu_compiler --version"
|
|
@@ -971,7 +968,7 @@ class Exporter:
|
|
|
971
968
|
|
|
972
969
|
@try_export
|
|
973
970
|
def export_tfjs(self, prefix=colorstr("TensorFlow.js:")):
|
|
974
|
-
"""
|
|
971
|
+
"""YOLO TensorFlow.js export."""
|
|
975
972
|
check_requirements("tensorflowjs")
|
|
976
973
|
if ARM64:
|
|
977
974
|
# Fix error: `np.object` was a deprecated alias for the builtin `object` when exporting to TF.js on ARM64
|
|
@@ -1070,7 +1067,7 @@ class Exporter:
|
|
|
1070
1067
|
tmp_file.unlink()
|
|
1071
1068
|
|
|
1072
1069
|
def _pipeline_coreml(self, model, weights_dir=None, prefix=colorstr("CoreML Pipeline:")):
|
|
1073
|
-
"""
|
|
1070
|
+
"""YOLO CoreML pipeline."""
|
|
1074
1071
|
import coremltools as ct # noqa
|
|
1075
1072
|
|
|
1076
1073
|
LOGGER.info(f"{prefix} starting pipeline with coremltools {ct.__version__}...")
|
ultralytics/engine/model.py
CHANGED
|
@@ -72,16 +72,16 @@ class Model(nn.Module):
|
|
|
72
72
|
|
|
73
73
|
Examples:
|
|
74
74
|
>>> from ultralytics import YOLO
|
|
75
|
-
>>> model = YOLO("
|
|
75
|
+
>>> model = YOLO("yolo11n.pt")
|
|
76
76
|
>>> results = model.predict("image.jpg")
|
|
77
|
-
>>> model.train(data="
|
|
77
|
+
>>> model.train(data="coco8.yaml", epochs=3)
|
|
78
78
|
>>> metrics = model.val()
|
|
79
79
|
>>> model.export(format="onnx")
|
|
80
80
|
"""
|
|
81
81
|
|
|
82
82
|
def __init__(
|
|
83
83
|
self,
|
|
84
|
-
model: Union[str, Path] = "
|
|
84
|
+
model: Union[str, Path] = "yolo11n.pt",
|
|
85
85
|
task: str = None,
|
|
86
86
|
verbose: bool = False,
|
|
87
87
|
) -> None:
|
|
@@ -106,7 +106,7 @@ class Model(nn.Module):
|
|
|
106
106
|
ImportError: If required dependencies for specific model types (like HUB SDK) are not installed.
|
|
107
107
|
|
|
108
108
|
Examples:
|
|
109
|
-
>>> model = Model("
|
|
109
|
+
>>> model = Model("yolo11n.pt")
|
|
110
110
|
>>> model = Model("path/to/model.yaml", task="detect")
|
|
111
111
|
>>> model = Model("hub_model", verbose=True)
|
|
112
112
|
"""
|
|
@@ -168,7 +168,7 @@ class Model(nn.Module):
|
|
|
168
168
|
Results object.
|
|
169
169
|
|
|
170
170
|
Examples:
|
|
171
|
-
>>> model = YOLO("
|
|
171
|
+
>>> model = YOLO("yolo11n.pt")
|
|
172
172
|
>>> results = model("https://ultralytics.com/images/bus.jpg")
|
|
173
173
|
>>> for r in results:
|
|
174
174
|
... print(f"Detected {len(r)} objects in image")
|
|
@@ -192,7 +192,7 @@ class Model(nn.Module):
|
|
|
192
192
|
Examples:
|
|
193
193
|
>>> Model.is_triton_model("http://localhost:8000/v2/models/yolov8n")
|
|
194
194
|
True
|
|
195
|
-
>>> Model.is_triton_model("
|
|
195
|
+
>>> Model.is_triton_model("yolo11n.pt")
|
|
196
196
|
False
|
|
197
197
|
"""
|
|
198
198
|
from urllib.parse import urlsplit
|
|
@@ -217,7 +217,7 @@ class Model(nn.Module):
|
|
|
217
217
|
Examples:
|
|
218
218
|
>>> Model.is_hub_model("https://hub.ultralytics.com/models/MODEL")
|
|
219
219
|
True
|
|
220
|
-
>>> Model.is_hub_model("
|
|
220
|
+
>>> Model.is_hub_model("yolo11n.pt")
|
|
221
221
|
False
|
|
222
222
|
"""
|
|
223
223
|
return model.startswith(f"{HUB_WEB_ROOT}/models/")
|
|
@@ -274,7 +274,7 @@ class Model(nn.Module):
|
|
|
274
274
|
|
|
275
275
|
Examples:
|
|
276
276
|
>>> model = Model()
|
|
277
|
-
>>> model._load("
|
|
277
|
+
>>> model._load("yolo11n.pt")
|
|
278
278
|
>>> model._load("path/to/weights.pth", task="detect")
|
|
279
279
|
"""
|
|
280
280
|
if weights.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")):
|
|
@@ -307,7 +307,7 @@ class Model(nn.Module):
|
|
|
307
307
|
information about supported model formats and operations.
|
|
308
308
|
|
|
309
309
|
Examples:
|
|
310
|
-
>>> model = Model("
|
|
310
|
+
>>> model = Model("yolo11n.pt")
|
|
311
311
|
>>> model._check_is_pytorch_model() # No error raised
|
|
312
312
|
>>> model = Model("yolov8n.onnx")
|
|
313
313
|
>>> model._check_is_pytorch_model() # Raises TypeError
|
|
@@ -338,7 +338,7 @@ class Model(nn.Module):
|
|
|
338
338
|
AssertionError: If the model is not a PyTorch model.
|
|
339
339
|
|
|
340
340
|
Examples:
|
|
341
|
-
>>> model = Model("
|
|
341
|
+
>>> model = Model("yolo11n.pt")
|
|
342
342
|
>>> model.reset_weights()
|
|
343
343
|
"""
|
|
344
344
|
self._check_is_pytorch_model()
|
|
@@ -349,7 +349,7 @@ class Model(nn.Module):
|
|
|
349
349
|
p.requires_grad = True
|
|
350
350
|
return self
|
|
351
351
|
|
|
352
|
-
def load(self, weights: Union[str, Path] = "
|
|
352
|
+
def load(self, weights: Union[str, Path] = "yolo11n.pt") -> "Model":
|
|
353
353
|
"""
|
|
354
354
|
Loads parameters from the specified weights file into the model.
|
|
355
355
|
|
|
@@ -367,7 +367,7 @@ class Model(nn.Module):
|
|
|
367
367
|
|
|
368
368
|
Examples:
|
|
369
369
|
>>> model = Model()
|
|
370
|
-
>>> model.load("
|
|
370
|
+
>>> model.load("yolo11n.pt")
|
|
371
371
|
>>> model.load(Path("path/to/weights.pt"))
|
|
372
372
|
"""
|
|
373
373
|
self._check_is_pytorch_model()
|
|
@@ -391,7 +391,7 @@ class Model(nn.Module):
|
|
|
391
391
|
AssertionError: If the model is not a PyTorch model.
|
|
392
392
|
|
|
393
393
|
Examples:
|
|
394
|
-
>>> model = Model("
|
|
394
|
+
>>> model = Model("yolo11n.pt")
|
|
395
395
|
>>> model.save("my_model.pt")
|
|
396
396
|
"""
|
|
397
397
|
self._check_is_pytorch_model()
|
|
@@ -428,7 +428,7 @@ class Model(nn.Module):
|
|
|
428
428
|
TypeError: If the model is not a PyTorch model.
|
|
429
429
|
|
|
430
430
|
Examples:
|
|
431
|
-
>>> model = Model("
|
|
431
|
+
>>> model = Model("yolo11n.pt")
|
|
432
432
|
>>> model.info() # Prints model summary
|
|
433
433
|
>>> info_list = model.info(detailed=True, verbose=False) # Returns detailed info as a list
|
|
434
434
|
"""
|
|
@@ -451,7 +451,7 @@ class Model(nn.Module):
|
|
|
451
451
|
TypeError: If the model is not a PyTorch nn.Module.
|
|
452
452
|
|
|
453
453
|
Examples:
|
|
454
|
-
>>> model = Model("
|
|
454
|
+
>>> model = Model("yolo11n.pt")
|
|
455
455
|
>>> model.fuse()
|
|
456
456
|
>>> # Model is now fused and ready for optimized inference
|
|
457
457
|
"""
|
|
@@ -483,7 +483,7 @@ class Model(nn.Module):
|
|
|
483
483
|
AssertionError: If the model is not a PyTorch model.
|
|
484
484
|
|
|
485
485
|
Examples:
|
|
486
|
-
>>> model = YOLO("
|
|
486
|
+
>>> model = YOLO("yolo11n.pt")
|
|
487
487
|
>>> image = "https://ultralytics.com/images/bus.jpg"
|
|
488
488
|
>>> embeddings = model.embed(image)
|
|
489
489
|
>>> print(embeddings[0].shape)
|
|
@@ -520,7 +520,7 @@ class Model(nn.Module):
|
|
|
520
520
|
Results object.
|
|
521
521
|
|
|
522
522
|
Examples:
|
|
523
|
-
>>> model = YOLO("
|
|
523
|
+
>>> model = YOLO("yolo11n.pt")
|
|
524
524
|
>>> results = model.predict(source="path/to/image.jpg", conf=0.25)
|
|
525
525
|
>>> for r in results:
|
|
526
526
|
... print(r.boxes.data) # print detection bounding boxes
|
|
@@ -581,7 +581,7 @@ class Model(nn.Module):
|
|
|
581
581
|
AttributeError: If the predictor does not have registered trackers.
|
|
582
582
|
|
|
583
583
|
Examples:
|
|
584
|
-
>>> model = YOLO("
|
|
584
|
+
>>> model = YOLO("yolo11n.pt")
|
|
585
585
|
>>> results = model.track(source="path/to/video.mp4", show=True)
|
|
586
586
|
>>> for r in results:
|
|
587
587
|
... print(r.boxes.id) # print tracking IDs
|
|
@@ -624,8 +624,8 @@ class Model(nn.Module):
|
|
|
624
624
|
AssertionError: If the model is not a PyTorch model.
|
|
625
625
|
|
|
626
626
|
Examples:
|
|
627
|
-
>>> model = YOLO("
|
|
628
|
-
>>> results = model.val(data="
|
|
627
|
+
>>> model = YOLO("yolo11n.pt")
|
|
628
|
+
>>> results = model.val(data="coco8.yaml", imgsz=640)
|
|
629
629
|
>>> print(results.box.map) # Print mAP50-95
|
|
630
630
|
"""
|
|
631
631
|
custom = {"rect": True} # method defaults
|
|
@@ -666,7 +666,7 @@ class Model(nn.Module):
|
|
|
666
666
|
AssertionError: If the model is not a PyTorch model.
|
|
667
667
|
|
|
668
668
|
Examples:
|
|
669
|
-
>>> model = YOLO("
|
|
669
|
+
>>> model = YOLO("yolo11n.pt")
|
|
670
670
|
>>> results = model.benchmark(data="coco8.yaml", imgsz=640, half=True)
|
|
671
671
|
>>> print(results)
|
|
672
672
|
"""
|
|
@@ -716,7 +716,7 @@ class Model(nn.Module):
|
|
|
716
716
|
RuntimeError: If the export process fails due to errors.
|
|
717
717
|
|
|
718
718
|
Examples:
|
|
719
|
-
>>> model = YOLO("
|
|
719
|
+
>>> model = YOLO("yolo11n.pt")
|
|
720
720
|
>>> model.export(format="onnx", dynamic=True, simplify=True)
|
|
721
721
|
'path/to/exported/model.onnx'
|
|
722
722
|
"""
|
|
@@ -771,8 +771,8 @@ class Model(nn.Module):
|
|
|
771
771
|
ModuleNotFoundError: If the HUB SDK is not installed.
|
|
772
772
|
|
|
773
773
|
Examples:
|
|
774
|
-
>>> model = YOLO("
|
|
775
|
-
>>> results = model.train(data="
|
|
774
|
+
>>> model = YOLO("yolo11n.pt")
|
|
775
|
+
>>> results = model.train(data="coco8.yaml", epochs=3)
|
|
776
776
|
"""
|
|
777
777
|
self._check_is_pytorch_model()
|
|
778
778
|
if hasattr(self.session, "model") and self.session.model.id: # Ultralytics HUB session with loaded model
|
|
@@ -836,7 +836,7 @@ class Model(nn.Module):
|
|
|
836
836
|
AssertionError: If the model is not a PyTorch model.
|
|
837
837
|
|
|
838
838
|
Examples:
|
|
839
|
-
>>> model = YOLO("
|
|
839
|
+
>>> model = YOLO("yolo11n.pt")
|
|
840
840
|
>>> results = model.tune(use_ray=True, iterations=20)
|
|
841
841
|
>>> print(results)
|
|
842
842
|
"""
|
|
@@ -871,7 +871,7 @@ class Model(nn.Module):
|
|
|
871
871
|
AssertionError: If the model is not a PyTorch model.
|
|
872
872
|
|
|
873
873
|
Examples:
|
|
874
|
-
>>> model = Model("
|
|
874
|
+
>>> model = Model("yolo11n.pt")
|
|
875
875
|
>>> model = model._apply(lambda t: t.cuda()) # Move model to GPU
|
|
876
876
|
"""
|
|
877
877
|
self._check_is_pytorch_model()
|
|
@@ -896,7 +896,7 @@ class Model(nn.Module):
|
|
|
896
896
|
AttributeError: If the model or predictor does not have a 'names' attribute.
|
|
897
897
|
|
|
898
898
|
Examples:
|
|
899
|
-
>>> model = YOLO("
|
|
899
|
+
>>> model = YOLO("yolo11n.pt")
|
|
900
900
|
>>> print(model.names)
|
|
901
901
|
{0: 'person', 1: 'bicycle', 2: 'car', ...}
|
|
902
902
|
"""
|
|
@@ -924,7 +924,7 @@ class Model(nn.Module):
|
|
|
924
924
|
AttributeError: If the model is not a PyTorch nn.Module instance.
|
|
925
925
|
|
|
926
926
|
Examples:
|
|
927
|
-
>>> model = YOLO("
|
|
927
|
+
>>> model = YOLO("yolo11n.pt")
|
|
928
928
|
>>> print(model.device)
|
|
929
929
|
device(type='cuda', index=0) # if CUDA is available
|
|
930
930
|
>>> model = model.to("cpu")
|
|
@@ -946,7 +946,7 @@ class Model(nn.Module):
|
|
|
946
946
|
(object | None): The transform object of the model if available, otherwise None.
|
|
947
947
|
|
|
948
948
|
Examples:
|
|
949
|
-
>>> model = YOLO("
|
|
949
|
+
>>> model = YOLO("yolo11n.pt")
|
|
950
950
|
>>> transforms = model.transforms
|
|
951
951
|
>>> if transforms:
|
|
952
952
|
... print(f"Model transforms: {transforms}")
|
|
@@ -975,9 +975,9 @@ class Model(nn.Module):
|
|
|
975
975
|
Examples:
|
|
976
976
|
>>> def on_train_start(trainer):
|
|
977
977
|
... print("Training is starting!")
|
|
978
|
-
>>> model = YOLO("
|
|
978
|
+
>>> model = YOLO("yolo11n.pt")
|
|
979
979
|
>>> model.add_callback("on_train_start", on_train_start)
|
|
980
|
-
>>> model.train(data="
|
|
980
|
+
>>> model.train(data="coco8.yaml", epochs=1)
|
|
981
981
|
"""
|
|
982
982
|
self.callbacks[event].append(func)
|
|
983
983
|
|
|
@@ -994,7 +994,7 @@ class Model(nn.Module):
|
|
|
994
994
|
recognized by the Ultralytics callback system.
|
|
995
995
|
|
|
996
996
|
Examples:
|
|
997
|
-
>>> model = YOLO("
|
|
997
|
+
>>> model = YOLO("yolo11n.pt")
|
|
998
998
|
>>> model.add_callback("on_train_start", lambda: print("Training started"))
|
|
999
999
|
>>> model.clear_callback("on_train_start")
|
|
1000
1000
|
>>> # All callbacks for 'on_train_start' are now removed
|
|
@@ -1024,7 +1024,7 @@ class Model(nn.Module):
|
|
|
1024
1024
|
modifications, ensuring consistent behavior across different runs or experiments.
|
|
1025
1025
|
|
|
1026
1026
|
Examples:
|
|
1027
|
-
>>> model = YOLO("
|
|
1027
|
+
>>> model = YOLO("yolo11n.pt")
|
|
1028
1028
|
>>> model.add_callback("on_train_start", custom_function)
|
|
1029
1029
|
>>> model.reset_callbacks()
|
|
1030
1030
|
# All callbacks are now reset to their default functions
|
ultralytics/engine/predictor.py
CHANGED
|
@@ -381,7 +381,7 @@ class BasePredictor:
|
|
|
381
381
|
|
|
382
382
|
# Save images
|
|
383
383
|
else:
|
|
384
|
-
cv2.imwrite(save_path, im)
|
|
384
|
+
cv2.imwrite(str(Path(save_path).with_suffix(".jpg")), im) # save to JPG for best support
|
|
385
385
|
|
|
386
386
|
def show(self, p=""):
|
|
387
387
|
"""Display an image in a window using the OpenCV imshow function."""
|
ultralytics/engine/results.py
CHANGED
|
@@ -676,7 +676,7 @@ class Results(SimpleClass):
|
|
|
676
676
|
|
|
677
677
|
Examples:
|
|
678
678
|
>>> from ultralytics import YOLO
|
|
679
|
-
>>> model = YOLO("
|
|
679
|
+
>>> model = YOLO("yolo11n.pt")
|
|
680
680
|
>>> results = model("path/to/image.jpg")
|
|
681
681
|
>>> for result in results:
|
|
682
682
|
... result.save_txt("output.txt")
|
ultralytics/engine/tuner.py
CHANGED
|
@@ -12,7 +12,7 @@ Example:
|
|
|
12
12
|
```python
|
|
13
13
|
from ultralytics import YOLO
|
|
14
14
|
|
|
15
|
-
model = YOLO("
|
|
15
|
+
model = YOLO("yolo11n.pt")
|
|
16
16
|
model.tune(data="coco8.yaml", epochs=10, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)
|
|
17
17
|
```
|
|
18
18
|
"""
|
|
@@ -54,7 +54,7 @@ class Tuner:
|
|
|
54
54
|
```python
|
|
55
55
|
from ultralytics import YOLO
|
|
56
56
|
|
|
57
|
-
model = YOLO("
|
|
57
|
+
model = YOLO("yolo11n.pt")
|
|
58
58
|
model.tune(data="coco8.yaml", epochs=10, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)
|
|
59
59
|
```
|
|
60
60
|
|
|
@@ -62,7 +62,7 @@ class Tuner:
|
|
|
62
62
|
```python
|
|
63
63
|
from ultralytics import YOLO
|
|
64
64
|
|
|
65
|
-
model = YOLO("
|
|
65
|
+
model = YOLO("yolo11n.pt")
|
|
66
66
|
model.tune(space={key1: val1, key2: val2}) # custom search space dictionary
|
|
67
67
|
```
|
|
68
68
|
"""
|
|
@@ -14,7 +14,7 @@ class DetectionPredictor(BasePredictor):
|
|
|
14
14
|
from ultralytics.utils import ASSETS
|
|
15
15
|
from ultralytics.models.yolo.detect import DetectionPredictor
|
|
16
16
|
|
|
17
|
-
args = dict(model="
|
|
17
|
+
args = dict(model="yolo11n.pt", source=ASSETS)
|
|
18
18
|
predictor = DetectionPredictor(overrides=args)
|
|
19
19
|
predictor.predict_cli()
|
|
20
20
|
```
|
|
@@ -24,7 +24,7 @@ class DetectionTrainer(BaseTrainer):
|
|
|
24
24
|
```python
|
|
25
25
|
from ultralytics.models.yolo.detect import DetectionTrainer
|
|
26
26
|
|
|
27
|
-
args = dict(model="
|
|
27
|
+
args = dict(model="yolo11n.pt", data="coco8.yaml", epochs=3)
|
|
28
28
|
trainer = DetectionTrainer(overrides=args)
|
|
29
29
|
trainer.train()
|
|
30
30
|
```
|
|
@@ -22,7 +22,7 @@ class DetectionValidator(BaseValidator):
|
|
|
22
22
|
```python
|
|
23
23
|
from ultralytics.models.yolo.detect import DetectionValidator
|
|
24
24
|
|
|
25
|
-
args = dict(model="
|
|
25
|
+
args = dict(model="yolo11n.pt", data="coco8.yaml")
|
|
26
26
|
validator = DetectionValidator(args=args)
|
|
27
27
|
validator()
|
|
28
28
|
```
|
ultralytics/models/yolo/model.py
CHANGED
|
@@ -11,7 +11,7 @@ from ultralytics.utils import ROOT, yaml_load
|
|
|
11
11
|
class YOLO(Model):
|
|
12
12
|
"""YOLO (You Only Look Once) object detection model."""
|
|
13
13
|
|
|
14
|
-
def __init__(self, model="
|
|
14
|
+
def __init__(self, model="yolo11n.pt", task=None, verbose=False):
|
|
15
15
|
"""Initialize YOLO model, switching to YOLOWorld if model filename contains '-world'."""
|
|
16
16
|
path = Path(model)
|
|
17
17
|
if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}: # if YOLOWorld PyTorch model
|