dgenerate-ultralytics-headless 8.3.214__py3-none-any.whl → 8.4.7__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.
- {dgenerate_ultralytics_headless-8.3.214.dist-info → dgenerate_ultralytics_headless-8.4.7.dist-info}/METADATA +64 -74
- dgenerate_ultralytics_headless-8.4.7.dist-info/RECORD +311 -0
- {dgenerate_ultralytics_headless-8.3.214.dist-info → dgenerate_ultralytics_headless-8.4.7.dist-info}/WHEEL +1 -1
- tests/__init__.py +7 -9
- tests/conftest.py +8 -15
- tests/test_cli.py +1 -1
- tests/test_cuda.py +13 -10
- tests/test_engine.py +9 -9
- tests/test_exports.py +65 -13
- tests/test_integrations.py +13 -13
- tests/test_python.py +125 -69
- tests/test_solutions.py +161 -152
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +86 -92
- ultralytics/cfg/datasets/Argoverse.yaml +7 -6
- ultralytics/cfg/datasets/DOTAv1.5.yaml +1 -1
- ultralytics/cfg/datasets/DOTAv1.yaml +1 -1
- ultralytics/cfg/datasets/ImageNet.yaml +1 -1
- ultralytics/cfg/datasets/TT100K.yaml +346 -0
- ultralytics/cfg/datasets/VOC.yaml +15 -16
- ultralytics/cfg/datasets/african-wildlife.yaml +1 -1
- ultralytics/cfg/datasets/coco-pose.yaml +21 -0
- ultralytics/cfg/datasets/coco12-formats.yaml +101 -0
- ultralytics/cfg/datasets/coco128-seg.yaml +1 -1
- ultralytics/cfg/datasets/coco8-pose.yaml +21 -0
- ultralytics/cfg/datasets/dog-pose.yaml +28 -0
- ultralytics/cfg/datasets/dota8-multispectral.yaml +1 -1
- ultralytics/cfg/datasets/dota8.yaml +2 -2
- ultralytics/cfg/datasets/hand-keypoints.yaml +26 -2
- ultralytics/cfg/datasets/kitti.yaml +27 -0
- ultralytics/cfg/datasets/lvis.yaml +5 -5
- ultralytics/cfg/datasets/open-images-v7.yaml +1 -1
- ultralytics/cfg/datasets/tiger-pose.yaml +16 -0
- ultralytics/cfg/datasets/xView.yaml +16 -16
- ultralytics/cfg/default.yaml +4 -2
- ultralytics/cfg/models/11/yolo11-pose.yaml +1 -1
- ultralytics/cfg/models/11/yoloe-11-seg.yaml +2 -2
- ultralytics/cfg/models/11/yoloe-11.yaml +2 -2
- ultralytics/cfg/models/26/yolo26-cls.yaml +33 -0
- ultralytics/cfg/models/26/yolo26-obb.yaml +52 -0
- ultralytics/cfg/models/26/yolo26-p2.yaml +60 -0
- ultralytics/cfg/models/26/yolo26-p6.yaml +62 -0
- ultralytics/cfg/models/26/yolo26-pose.yaml +53 -0
- ultralytics/cfg/models/26/yolo26-seg.yaml +52 -0
- ultralytics/cfg/models/26/yolo26.yaml +52 -0
- ultralytics/cfg/models/26/yoloe-26-seg.yaml +53 -0
- ultralytics/cfg/models/26/yoloe-26.yaml +53 -0
- ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +1 -1
- ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +1 -1
- ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +1 -1
- ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +1 -1
- ultralytics/cfg/models/v10/yolov10b.yaml +2 -2
- ultralytics/cfg/models/v10/yolov10l.yaml +2 -2
- ultralytics/cfg/models/v10/yolov10m.yaml +2 -2
- ultralytics/cfg/models/v10/yolov10n.yaml +2 -2
- ultralytics/cfg/models/v10/yolov10s.yaml +2 -2
- ultralytics/cfg/models/v10/yolov10x.yaml +2 -2
- ultralytics/cfg/models/v3/yolov3-tiny.yaml +1 -1
- ultralytics/cfg/models/v6/yolov6.yaml +1 -1
- ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +9 -6
- ultralytics/cfg/models/v8/yoloe-v8.yaml +9 -6
- ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +2 -2
- ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +2 -2
- ultralytics/cfg/models/v8/yolov8-ghost.yaml +2 -2
- ultralytics/cfg/models/v8/yolov8-obb.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-p2.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-world.yaml +1 -1
- ultralytics/cfg/models/v8/yolov8-worldv2.yaml +6 -6
- ultralytics/cfg/models/v9/yolov9s.yaml +1 -1
- ultralytics/data/__init__.py +4 -4
- ultralytics/data/annotator.py +5 -6
- ultralytics/data/augment.py +300 -475
- ultralytics/data/base.py +18 -26
- ultralytics/data/build.py +147 -25
- ultralytics/data/converter.py +108 -87
- ultralytics/data/dataset.py +47 -75
- ultralytics/data/loaders.py +42 -49
- ultralytics/data/split.py +5 -6
- ultralytics/data/split_dota.py +8 -15
- ultralytics/data/utils.py +36 -45
- ultralytics/engine/exporter.py +351 -263
- ultralytics/engine/model.py +186 -225
- ultralytics/engine/predictor.py +45 -54
- ultralytics/engine/results.py +198 -325
- ultralytics/engine/trainer.py +165 -106
- ultralytics/engine/tuner.py +41 -43
- ultralytics/engine/validator.py +55 -38
- ultralytics/hub/__init__.py +16 -19
- ultralytics/hub/auth.py +6 -12
- ultralytics/hub/google/__init__.py +7 -10
- ultralytics/hub/session.py +15 -25
- ultralytics/hub/utils.py +5 -8
- ultralytics/models/__init__.py +1 -1
- ultralytics/models/fastsam/__init__.py +1 -1
- ultralytics/models/fastsam/model.py +8 -10
- ultralytics/models/fastsam/predict.py +18 -30
- ultralytics/models/fastsam/utils.py +1 -2
- ultralytics/models/fastsam/val.py +5 -7
- ultralytics/models/nas/__init__.py +1 -1
- ultralytics/models/nas/model.py +5 -8
- ultralytics/models/nas/predict.py +7 -9
- ultralytics/models/nas/val.py +1 -2
- ultralytics/models/rtdetr/__init__.py +1 -1
- ultralytics/models/rtdetr/model.py +5 -8
- ultralytics/models/rtdetr/predict.py +15 -19
- ultralytics/models/rtdetr/train.py +10 -13
- ultralytics/models/rtdetr/val.py +21 -23
- ultralytics/models/sam/__init__.py +15 -2
- ultralytics/models/sam/amg.py +14 -20
- ultralytics/models/sam/build.py +26 -19
- ultralytics/models/sam/build_sam3.py +377 -0
- ultralytics/models/sam/model.py +29 -32
- ultralytics/models/sam/modules/blocks.py +83 -144
- ultralytics/models/sam/modules/decoders.py +19 -37
- ultralytics/models/sam/modules/encoders.py +44 -101
- ultralytics/models/sam/modules/memory_attention.py +16 -30
- ultralytics/models/sam/modules/sam.py +200 -73
- ultralytics/models/sam/modules/tiny_encoder.py +64 -83
- ultralytics/models/sam/modules/transformer.py +18 -28
- ultralytics/models/sam/modules/utils.py +174 -50
- ultralytics/models/sam/predict.py +2248 -350
- ultralytics/models/sam/sam3/__init__.py +3 -0
- ultralytics/models/sam/sam3/decoder.py +546 -0
- ultralytics/models/sam/sam3/encoder.py +529 -0
- ultralytics/models/sam/sam3/geometry_encoders.py +415 -0
- ultralytics/models/sam/sam3/maskformer_segmentation.py +286 -0
- ultralytics/models/sam/sam3/model_misc.py +199 -0
- ultralytics/models/sam/sam3/necks.py +129 -0
- ultralytics/models/sam/sam3/sam3_image.py +339 -0
- ultralytics/models/sam/sam3/text_encoder_ve.py +307 -0
- ultralytics/models/sam/sam3/vitdet.py +547 -0
- ultralytics/models/sam/sam3/vl_combiner.py +160 -0
- ultralytics/models/utils/loss.py +14 -26
- ultralytics/models/utils/ops.py +13 -17
- ultralytics/models/yolo/__init__.py +1 -1
- ultralytics/models/yolo/classify/predict.py +10 -13
- ultralytics/models/yolo/classify/train.py +12 -33
- ultralytics/models/yolo/classify/val.py +30 -29
- ultralytics/models/yolo/detect/predict.py +9 -12
- ultralytics/models/yolo/detect/train.py +17 -23
- ultralytics/models/yolo/detect/val.py +77 -59
- ultralytics/models/yolo/model.py +43 -60
- ultralytics/models/yolo/obb/predict.py +7 -16
- ultralytics/models/yolo/obb/train.py +14 -17
- ultralytics/models/yolo/obb/val.py +40 -37
- ultralytics/models/yolo/pose/__init__.py +1 -1
- ultralytics/models/yolo/pose/predict.py +7 -22
- ultralytics/models/yolo/pose/train.py +13 -16
- ultralytics/models/yolo/pose/val.py +39 -58
- ultralytics/models/yolo/segment/predict.py +17 -21
- ultralytics/models/yolo/segment/train.py +7 -10
- ultralytics/models/yolo/segment/val.py +95 -47
- ultralytics/models/yolo/world/train.py +8 -14
- ultralytics/models/yolo/world/train_world.py +11 -34
- ultralytics/models/yolo/yoloe/__init__.py +7 -7
- ultralytics/models/yolo/yoloe/predict.py +16 -23
- ultralytics/models/yolo/yoloe/train.py +36 -44
- ultralytics/models/yolo/yoloe/train_seg.py +11 -11
- ultralytics/models/yolo/yoloe/val.py +15 -20
- ultralytics/nn/__init__.py +7 -7
- ultralytics/nn/autobackend.py +159 -85
- ultralytics/nn/modules/__init__.py +68 -60
- ultralytics/nn/modules/activation.py +4 -6
- ultralytics/nn/modules/block.py +260 -224
- ultralytics/nn/modules/conv.py +52 -97
- ultralytics/nn/modules/head.py +831 -299
- ultralytics/nn/modules/transformer.py +76 -88
- ultralytics/nn/modules/utils.py +16 -21
- ultralytics/nn/tasks.py +180 -195
- ultralytics/nn/text_model.py +45 -69
- ultralytics/optim/__init__.py +5 -0
- ultralytics/optim/muon.py +338 -0
- ultralytics/solutions/__init__.py +12 -12
- ultralytics/solutions/ai_gym.py +13 -19
- ultralytics/solutions/analytics.py +15 -16
- ultralytics/solutions/config.py +6 -7
- ultralytics/solutions/distance_calculation.py +10 -13
- ultralytics/solutions/heatmap.py +8 -14
- ultralytics/solutions/instance_segmentation.py +6 -9
- ultralytics/solutions/object_blurrer.py +7 -10
- ultralytics/solutions/object_counter.py +12 -19
- ultralytics/solutions/object_cropper.py +8 -14
- ultralytics/solutions/parking_management.py +34 -32
- ultralytics/solutions/queue_management.py +10 -12
- ultralytics/solutions/region_counter.py +9 -12
- ultralytics/solutions/security_alarm.py +15 -20
- ultralytics/solutions/similarity_search.py +10 -15
- ultralytics/solutions/solutions.py +77 -76
- ultralytics/solutions/speed_estimation.py +7 -10
- ultralytics/solutions/streamlit_inference.py +2 -4
- ultralytics/solutions/templates/similarity-search.html +7 -18
- ultralytics/solutions/trackzone.py +7 -10
- ultralytics/solutions/vision_eye.py +5 -8
- ultralytics/trackers/__init__.py +1 -1
- ultralytics/trackers/basetrack.py +3 -5
- ultralytics/trackers/bot_sort.py +10 -27
- ultralytics/trackers/byte_tracker.py +21 -37
- ultralytics/trackers/track.py +4 -7
- ultralytics/trackers/utils/gmc.py +11 -22
- ultralytics/trackers/utils/kalman_filter.py +37 -48
- ultralytics/trackers/utils/matching.py +12 -15
- ultralytics/utils/__init__.py +124 -124
- ultralytics/utils/autobatch.py +2 -4
- ultralytics/utils/autodevice.py +17 -18
- ultralytics/utils/benchmarks.py +57 -71
- ultralytics/utils/callbacks/base.py +8 -10
- ultralytics/utils/callbacks/clearml.py +5 -13
- ultralytics/utils/callbacks/comet.py +32 -46
- ultralytics/utils/callbacks/dvc.py +13 -18
- ultralytics/utils/callbacks/mlflow.py +4 -5
- ultralytics/utils/callbacks/neptune.py +7 -15
- ultralytics/utils/callbacks/platform.py +423 -38
- ultralytics/utils/callbacks/raytune.py +3 -4
- ultralytics/utils/callbacks/tensorboard.py +25 -31
- ultralytics/utils/callbacks/wb.py +16 -14
- ultralytics/utils/checks.py +127 -85
- ultralytics/utils/cpu.py +3 -8
- ultralytics/utils/dist.py +9 -12
- ultralytics/utils/downloads.py +25 -33
- ultralytics/utils/errors.py +6 -14
- ultralytics/utils/events.py +2 -4
- ultralytics/utils/export/__init__.py +4 -236
- ultralytics/utils/export/engine.py +246 -0
- ultralytics/utils/export/imx.py +117 -63
- ultralytics/utils/export/tensorflow.py +231 -0
- ultralytics/utils/files.py +26 -30
- ultralytics/utils/git.py +9 -11
- ultralytics/utils/instance.py +30 -51
- ultralytics/utils/logger.py +212 -114
- ultralytics/utils/loss.py +601 -215
- ultralytics/utils/metrics.py +128 -156
- ultralytics/utils/nms.py +13 -16
- ultralytics/utils/ops.py +117 -166
- ultralytics/utils/patches.py +75 -21
- ultralytics/utils/plotting.py +75 -80
- ultralytics/utils/tal.py +125 -59
- ultralytics/utils/torch_utils.py +53 -79
- ultralytics/utils/tqdm.py +24 -21
- ultralytics/utils/triton.py +13 -19
- ultralytics/utils/tuner.py +19 -10
- dgenerate_ultralytics_headless-8.3.214.dist-info/RECORD +0 -283
- {dgenerate_ultralytics_headless-8.3.214.dist-info → dgenerate_ultralytics_headless-8.4.7.dist-info}/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.214.dist-info → dgenerate_ultralytics_headless-8.4.7.dist-info}/licenses/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.214.dist-info → dgenerate_ultralytics_headless-8.4.7.dist-info}/top_level.txt +0 -0
ultralytics/engine/predictor.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Run prediction on images, videos, directories, globs, YouTube, webcam, streams, etc.
|
|
4
4
|
|
|
5
5
|
Usage - sources:
|
|
6
|
-
$ yolo mode=predict model=
|
|
6
|
+
$ yolo mode=predict model=yolo26n.pt source=0 # webcam
|
|
7
7
|
img.jpg # image
|
|
8
8
|
vid.mp4 # video
|
|
9
9
|
screen # screenshot
|
|
@@ -15,21 +15,22 @@ Usage - sources:
|
|
|
15
15
|
'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP, TCP stream
|
|
16
16
|
|
|
17
17
|
Usage - formats:
|
|
18
|
-
$ yolo mode=predict model=
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
$ yolo mode=predict model=yolo26n.pt # PyTorch
|
|
19
|
+
yolo26n.torchscript # TorchScript
|
|
20
|
+
yolo26n.onnx # ONNX Runtime or OpenCV DNN with dnn=True
|
|
21
|
+
yolo26n_openvino_model # OpenVINO
|
|
22
|
+
yolo26n.engine # TensorRT
|
|
23
|
+
yolo26n.mlpackage # CoreML (macOS-only)
|
|
24
|
+
yolo26n_saved_model # TensorFlow SavedModel
|
|
25
|
+
yolo26n.pb # TensorFlow GraphDef
|
|
26
|
+
yolo26n.tflite # TensorFlow Lite
|
|
27
|
+
yolo26n_edgetpu.tflite # TensorFlow Edge TPU
|
|
28
|
+
yolo26n_paddle_model # PaddlePaddle
|
|
29
|
+
yolo26n.mnn # MNN
|
|
30
|
+
yolo26n_ncnn_model # NCNN
|
|
31
|
+
yolo26n_imx_model # Sony IMX
|
|
32
|
+
yolo26n_rknn_model # Rockchip RKNN
|
|
33
|
+
yolo26n.pte # PyTorch Executorch
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
from __future__ import annotations
|
|
@@ -54,8 +55,8 @@ from ultralytics.utils.files import increment_path
|
|
|
54
55
|
from ultralytics.utils.torch_utils import attempt_compile, select_device, smart_inference_mode
|
|
55
56
|
|
|
56
57
|
STREAM_WARNING = """
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
Inference results will accumulate in RAM unless `stream=True` is passed, which can cause out-of-memory errors for large
|
|
59
|
+
sources or long-running streams and videos. See https://docs.ultralytics.com/modes/predict/ for help.
|
|
59
60
|
|
|
60
61
|
Example:
|
|
61
62
|
results = model(source=..., stream=True) # generator of Results objects
|
|
@@ -67,11 +68,10 @@ Example:
|
|
|
67
68
|
|
|
68
69
|
|
|
69
70
|
class BasePredictor:
|
|
70
|
-
"""
|
|
71
|
-
A base class for creating predictors.
|
|
71
|
+
"""A base class for creating predictors.
|
|
72
72
|
|
|
73
|
-
This class provides the foundation for prediction functionality, handling model setup, inference,
|
|
74
|
-
|
|
73
|
+
This class provides the foundation for prediction functionality, handling model setup, inference, and result
|
|
74
|
+
processing across various input sources.
|
|
75
75
|
|
|
76
76
|
Attributes:
|
|
77
77
|
args (SimpleNamespace): Configuration for the predictor.
|
|
@@ -114,8 +114,7 @@ class BasePredictor:
|
|
|
114
114
|
overrides: dict[str, Any] | None = None,
|
|
115
115
|
_callbacks: dict[str, list[callable]] | None = None,
|
|
116
116
|
):
|
|
117
|
-
"""
|
|
118
|
-
Initialize the BasePredictor class.
|
|
117
|
+
"""Initialize the BasePredictor class.
|
|
119
118
|
|
|
120
119
|
Args:
|
|
121
120
|
cfg (str | dict): Path to a configuration file or a configuration dictionary.
|
|
@@ -150,8 +149,7 @@ class BasePredictor:
|
|
|
150
149
|
callbacks.add_integration_callbacks(self)
|
|
151
150
|
|
|
152
151
|
def preprocess(self, im: torch.Tensor | list[np.ndarray]) -> torch.Tensor:
|
|
153
|
-
"""
|
|
154
|
-
Prepare input image before inference.
|
|
152
|
+
"""Prepare input image before inference.
|
|
155
153
|
|
|
156
154
|
Args:
|
|
157
155
|
im (torch.Tensor | list[np.ndarray]): Images of shape (N, 3, H, W) for tensor, [(H, W, 3) x N] for list.
|
|
@@ -184,8 +182,7 @@ class BasePredictor:
|
|
|
184
182
|
return self.model(im, augment=self.args.augment, visualize=visualize, embed=self.args.embed, *args, **kwargs)
|
|
185
183
|
|
|
186
184
|
def pre_transform(self, im: list[np.ndarray]) -> list[np.ndarray]:
|
|
187
|
-
"""
|
|
188
|
-
Pre-transform input image before inference.
|
|
185
|
+
"""Pre-transform input image before inference.
|
|
189
186
|
|
|
190
187
|
Args:
|
|
191
188
|
im (list[np.ndarray]): List of images with shape [(H, W, 3) x N].
|
|
@@ -208,8 +205,7 @@ class BasePredictor:
|
|
|
208
205
|
return preds
|
|
209
206
|
|
|
210
207
|
def __call__(self, source=None, model=None, stream: bool = False, *args, **kwargs):
|
|
211
|
-
"""
|
|
212
|
-
Perform inference on an image or stream.
|
|
208
|
+
"""Perform inference on an image or stream.
|
|
213
209
|
|
|
214
210
|
Args:
|
|
215
211
|
source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor, optional):
|
|
@@ -226,14 +222,13 @@ class BasePredictor:
|
|
|
226
222
|
if stream:
|
|
227
223
|
return self.stream_inference(source, model, *args, **kwargs)
|
|
228
224
|
else:
|
|
229
|
-
return list(self.stream_inference(source, model, *args, **kwargs)) # merge list of
|
|
225
|
+
return list(self.stream_inference(source, model, *args, **kwargs)) # merge list of Results into one
|
|
230
226
|
|
|
231
227
|
def predict_cli(self, source=None, model=None):
|
|
232
|
-
"""
|
|
233
|
-
Method used for Command Line Interface (CLI) prediction.
|
|
228
|
+
"""Method used for Command Line Interface (CLI) prediction.
|
|
234
229
|
|
|
235
|
-
This function is designed to run predictions using the CLI. It sets up the source and model, then processes
|
|
236
|
-
|
|
230
|
+
This function is designed to run predictions using the CLI. It sets up the source and model, then processes the
|
|
231
|
+
inputs in a streaming manner. This method ensures that no outputs accumulate in memory by consuming the
|
|
237
232
|
generator without storing results.
|
|
238
233
|
|
|
239
234
|
Args:
|
|
@@ -241,7 +236,7 @@ class BasePredictor:
|
|
|
241
236
|
Source for inference.
|
|
242
237
|
model (str | Path | torch.nn.Module, optional): Model for inference.
|
|
243
238
|
|
|
244
|
-
|
|
239
|
+
Notes:
|
|
245
240
|
Do not modify this function or remove the generator. The generator ensures that no outputs are
|
|
246
241
|
accumulated in memory, which is critical for preventing memory issues during long-running predictions.
|
|
247
242
|
"""
|
|
@@ -249,15 +244,15 @@ class BasePredictor:
|
|
|
249
244
|
for _ in gen: # sourcery skip: remove-empty-nested-block, noqa
|
|
250
245
|
pass
|
|
251
246
|
|
|
252
|
-
def setup_source(self, source):
|
|
253
|
-
"""
|
|
254
|
-
Set up source and inference mode.
|
|
247
|
+
def setup_source(self, source, stride: int | None = None):
|
|
248
|
+
"""Set up source and inference mode.
|
|
255
249
|
|
|
256
250
|
Args:
|
|
257
|
-
source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor):
|
|
258
|
-
|
|
251
|
+
source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor): Source for
|
|
252
|
+
inference.
|
|
253
|
+
stride (int, optional): Model stride for image size checking.
|
|
259
254
|
"""
|
|
260
|
-
self.imgsz = check_imgsz(self.args.imgsz, stride=self.model.stride, min_dim=2) # check image size
|
|
255
|
+
self.imgsz = check_imgsz(self.args.imgsz, stride=stride or self.model.stride, min_dim=2) # check image size
|
|
261
256
|
self.dataset = load_inference_source(
|
|
262
257
|
source=source,
|
|
263
258
|
batch=self.args.batch,
|
|
@@ -266,13 +261,12 @@ class BasePredictor:
|
|
|
266
261
|
channels=getattr(self.model, "ch", 3),
|
|
267
262
|
)
|
|
268
263
|
self.source_type = self.dataset.source_type
|
|
269
|
-
|
|
264
|
+
if (
|
|
270
265
|
self.source_type.stream
|
|
271
266
|
or self.source_type.screenshot
|
|
272
267
|
or len(self.dataset) > 1000 # many images
|
|
273
268
|
or any(getattr(self.dataset, "video_flag", [False]))
|
|
274
|
-
)
|
|
275
|
-
if long_sequence:
|
|
269
|
+
): # long sequence
|
|
276
270
|
import torchvision # noqa (import here triggers torchvision NMS use in nms.py)
|
|
277
271
|
|
|
278
272
|
if not getattr(self, "stream", True): # videos
|
|
@@ -281,8 +275,7 @@ class BasePredictor:
|
|
|
281
275
|
|
|
282
276
|
@smart_inference_mode()
|
|
283
277
|
def stream_inference(self, source=None, model=None, *args, **kwargs):
|
|
284
|
-
"""
|
|
285
|
-
Stream real-time inference on camera feed and save results to file.
|
|
278
|
+
"""Stream real-time inference on camera feed and save results to file.
|
|
286
279
|
|
|
287
280
|
Args:
|
|
288
281
|
source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor, optional):
|
|
@@ -323,7 +316,8 @@ class BasePredictor:
|
|
|
323
316
|
ops.Profile(device=self.device),
|
|
324
317
|
)
|
|
325
318
|
self.run_callbacks("on_predict_start")
|
|
326
|
-
for
|
|
319
|
+
for batch in self.dataset:
|
|
320
|
+
self.batch = batch
|
|
327
321
|
self.run_callbacks("on_predict_batch_start")
|
|
328
322
|
paths, im0s, s = self.batch
|
|
329
323
|
|
|
@@ -387,8 +381,7 @@ class BasePredictor:
|
|
|
387
381
|
self.run_callbacks("on_predict_end")
|
|
388
382
|
|
|
389
383
|
def setup_model(self, model, verbose: bool = True):
|
|
390
|
-
"""
|
|
391
|
-
Initialize YOLO model with given parameters and set it to evaluation mode.
|
|
384
|
+
"""Initialize YOLO model with given parameters and set it to evaluation mode.
|
|
392
385
|
|
|
393
386
|
Args:
|
|
394
387
|
model (str | Path | torch.nn.Module, optional): Model to load or use.
|
|
@@ -412,8 +405,7 @@ class BasePredictor:
|
|
|
412
405
|
self.model = attempt_compile(self.model, device=self.device, mode=self.args.compile)
|
|
413
406
|
|
|
414
407
|
def write_results(self, i: int, p: Path, im: torch.Tensor, s: list[str]) -> str:
|
|
415
|
-
"""
|
|
416
|
-
Write inference results to a file or directory.
|
|
408
|
+
"""Write inference results to a file or directory.
|
|
417
409
|
|
|
418
410
|
Args:
|
|
419
411
|
i (int): Index of the current image in the batch.
|
|
@@ -463,8 +455,7 @@ class BasePredictor:
|
|
|
463
455
|
return string
|
|
464
456
|
|
|
465
457
|
def save_predicted_images(self, save_path: Path, frame: int = 0):
|
|
466
|
-
"""
|
|
467
|
-
Save video predictions as mp4 or images as jpg at specified path.
|
|
458
|
+
"""Save video predictions as mp4 or images as jpg at specified path.
|
|
468
459
|
|
|
469
460
|
Args:
|
|
470
461
|
save_path (Path): Path to save the results.
|