ultralytics 8.3.24__py3-none-any.whl → 8.3.25__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_exports.py CHANGED
@@ -197,3 +197,10 @@ def test_export_ncnn():
197
197
  """Test YOLO exports to NCNN format."""
198
198
  file = YOLO(MODEL).export(format="ncnn", imgsz=32)
199
199
  YOLO(file)(SOURCE, imgsz=32) # exported model inference
200
+
201
+
202
+ @pytest.mark.slow
203
+ def test_export_mnn():
204
+ """Test YOLO exports to MNN format."""
205
+ file = YOLO(MODEL).export(format="mnn", imgsz=32)
206
+ YOLO(file)(SOURCE, imgsz=32) # exported model inference
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.24"
3
+ __version__ = "8.3.25"
4
4
 
5
5
  import os
6
6
 
@@ -2,9 +2,9 @@
2
2
  # Default YOLO tracker settings for BoT-SORT tracker https://github.com/NirAharon/BoT-SORT
3
3
 
4
4
  tracker_type: botsort # tracker type, ['botsort', 'bytetrack']
5
- track_high_thresh: 0.5 # threshold for the first association
5
+ track_high_thresh: 0.25 # threshold for the first association
6
6
  track_low_thresh: 0.1 # threshold for the second association
7
- new_track_thresh: 0.6 # threshold for init new track if the detection does not match any tracks
7
+ new_track_thresh: 0.25 # threshold for init new track if the detection does not match any tracks
8
8
  track_buffer: 30 # buffer to calculate the time when to remove tracks
9
9
  match_thresh: 0.8 # threshold for matching tracks
10
10
  fuse_score: True # Whether to fuse confidence scores with the iou distances before matching
@@ -2,9 +2,9 @@
2
2
  # Default YOLO tracker settings for ByteTrack tracker https://github.com/ifzhang/ByteTrack
3
3
 
4
4
  tracker_type: bytetrack # tracker type, ['botsort', 'bytetrack']
5
- track_high_thresh: 0.5 # threshold for the first association
5
+ track_high_thresh: 0.25 # threshold for the first association
6
6
  track_low_thresh: 0.1 # threshold for the second association
7
- new_track_thresh: 0.6 # threshold for init new track if the detection does not match any tracks
7
+ new_track_thresh: 0.25 # threshold for init new track if the detection does not match any tracks
8
8
  track_buffer: 30 # buffer to calculate the time when to remove tracks
9
9
  match_thresh: 0.8 # threshold for matching tracks
10
10
  fuse_score: True # Whether to fuse confidence scores with the iou distances before matching
@@ -16,6 +16,7 @@ TensorFlow Lite | `tflite` | yolo11n.tflite
16
16
  TensorFlow Edge TPU | `edgetpu` | yolo11n_edgetpu.tflite
17
17
  TensorFlow.js | `tfjs` | yolo11n_web_model/
18
18
  PaddlePaddle | `paddle` | yolo11n_paddle_model/
19
+ MNN | `mnn` | yolo11n.mnn
19
20
  NCNN | `ncnn` | yolo11n_ncnn_model/
20
21
 
21
22
  Requirements:
@@ -41,6 +42,7 @@ Inference:
41
42
  yolo11n.tflite # TensorFlow Lite
42
43
  yolo11n_edgetpu.tflite # TensorFlow Edge TPU
43
44
  yolo11n_paddle_model # PaddlePaddle
45
+ yolo11n.mnn # MNN
44
46
  yolo11n_ncnn_model # NCNN
45
47
 
46
48
  TensorFlow.js:
@@ -109,6 +111,7 @@ def export_formats():
109
111
  ["TensorFlow Edge TPU", "edgetpu", "_edgetpu.tflite", True, False],
110
112
  ["TensorFlow.js", "tfjs", "_web_model", True, False],
111
113
  ["PaddlePaddle", "paddle", "_paddle_model", True, True],
114
+ ["MNN", "mnn", ".mnn", True, True],
112
115
  ["NCNN", "ncnn", "_ncnn_model", True, True],
113
116
  ]
114
117
  return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU"], zip(*x)))
@@ -190,7 +193,9 @@ class Exporter:
190
193
  flags = [x == fmt for x in fmts]
191
194
  if sum(flags) != 1:
192
195
  raise ValueError(f"Invalid export format='{fmt}'. Valid formats are {fmts}")
193
- jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, ncnn = flags # export booleans
196
+ jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, mnn, ncnn = (
197
+ flags # export booleans
198
+ )
194
199
  is_tf_format = any((saved_model, pb, tflite, edgetpu, tfjs))
195
200
 
196
201
  # Device
@@ -333,8 +338,10 @@ class Exporter:
333
338
  f[9], _ = self.export_tfjs()
334
339
  if paddle: # PaddlePaddle
335
340
  f[10], _ = self.export_paddle()
341
+ if mnn: # MNN
342
+ f[11], _ = self.export_mnn()
336
343
  if ncnn: # NCNN
337
- f[11], _ = self.export_ncnn()
344
+ f[12], _ = self.export_ncnn()
338
345
 
339
346
  # Finish
340
347
  f = [str(x) for x in f if x] # filter out '' and None
@@ -541,6 +548,32 @@ class Exporter:
541
548
  yaml_save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
542
549
  return f, None
543
550
 
551
+ @try_export
552
+ def export_mnn(self, prefix=colorstr("MNN:")):
553
+ """YOLOv8 MNN export using MNN https://github.com/alibaba/MNN."""
554
+ f_onnx, _ = self.export_onnx() # get onnx model first
555
+
556
+ check_requirements("MNN>=2.9.6")
557
+ import MNN # noqa
558
+ from MNN.tools import mnnconvert
559
+
560
+ # Setup and checks
561
+ LOGGER.info(f"\n{prefix} starting export with MNN {MNN.version()}...")
562
+ assert Path(f_onnx).exists(), f"failed to export ONNX file: {f_onnx}"
563
+ f = str(self.file.with_suffix(".mnn")) # MNN model file
564
+ args = ["", "-f", "ONNX", "--modelFile", f_onnx, "--MNNModel", f, "--bizCode", json.dumps(self.metadata)]
565
+ if self.args.int8:
566
+ args.append("--weightQuantBits")
567
+ args.append("8")
568
+ if self.args.half:
569
+ args.append("--fp16")
570
+ mnnconvert.convert(args)
571
+ # remove scratch file for model convert optimize
572
+ convert_scratch = Path(self.file.parent / ".__convert_external_data.bin")
573
+ if convert_scratch.exists():
574
+ convert_scratch.unlink()
575
+ return f, None
576
+
544
577
  @try_export
545
578
  def export_ncnn(self, prefix=colorstr("NCNN:")):
546
579
  """YOLO NCNN export using PNNX https://github.com/pnnx/pnnx."""
@@ -890,8 +923,10 @@ class Exporter:
890
923
  tmp_file = f / "tmp_tflite_int8_calibration_images.npy" # int8 calibration images file
891
924
  if self.args.data:
892
925
  f.mkdir()
893
- images = [batch["img"].permute(0, 2, 3, 1) for batch in self.get_int8_calibration_dataloader(prefix)]
894
- images = torch.cat(images, 0).float()
926
+ images = [batch["img"] for batch in self.get_int8_calibration_dataloader(prefix)]
927
+ images = torch.nn.functional.interpolate(torch.cat(images, 0).float(), size=self.imgsz).permute(
928
+ 0, 2, 3, 1
929
+ )
895
930
  np.save(str(tmp_file), images.numpy().astype(np.float32)) # BHWC
896
931
  np_data = [["images", tmp_file, [[[[0, 0, 0]]]], [[[[255, 255, 255]]]]]]
897
932
 
@@ -26,6 +26,7 @@ Usage - formats:
26
26
  yolov8n.tflite # TensorFlow Lite
27
27
  yolov8n_edgetpu.tflite # TensorFlow Edge TPU
28
28
  yolov8n_paddle_model # PaddlePaddle
29
+ yolov8n.mnn # MNN
29
30
  yolov8n_ncnn_model # NCNN
30
31
  """
31
32
 
@@ -17,6 +17,7 @@ Usage - formats:
17
17
  yolov8n.tflite # TensorFlow Lite
18
18
  yolov8n_edgetpu.tflite # TensorFlow Edge TPU
19
19
  yolov8n_paddle_model # PaddlePaddle
20
+ yolov8n.mnn # MNN
20
21
  yolov8n_ncnn_model # NCNN
21
22
  """
22
23
 
@@ -854,6 +854,7 @@ class SAM2Model(torch.nn.Module):
854
854
  mask_inputs,
855
855
  output_dict,
856
856
  num_frames,
857
+ track_in_reverse,
857
858
  prev_sam_mask_logits,
858
859
  ):
859
860
  """Performs a single tracking step, updating object masks and memory features based on current frame inputs."""
@@ -59,21 +59,22 @@ class AutoBackend(nn.Module):
59
59
  range of formats, each with specific naming conventions as outlined below:
60
60
 
61
61
  Supported Formats and Naming Conventions:
62
- | Format | File Suffix |
63
- |-----------------------|------------------|
64
- | PyTorch | *.pt |
65
- | TorchScript | *.torchscript |
66
- | ONNX Runtime | *.onnx |
67
- | ONNX OpenCV DNN | *.onnx (dnn=True)|
68
- | OpenVINO | *openvino_model/ |
69
- | CoreML | *.mlpackage |
70
- | TensorRT | *.engine |
71
- | TensorFlow SavedModel | *_saved_model |
72
- | TensorFlow GraphDef | *.pb |
73
- | TensorFlow Lite | *.tflite |
74
- | TensorFlow Edge TPU | *_edgetpu.tflite |
75
- | PaddlePaddle | *_paddle_model |
76
- | NCNN | *_ncnn_model |
62
+ | Format | File Suffix |
63
+ |-----------------------|-------------------|
64
+ | PyTorch | *.pt |
65
+ | TorchScript | *.torchscript |
66
+ | ONNX Runtime | *.onnx |
67
+ | ONNX OpenCV DNN | *.onnx (dnn=True) |
68
+ | OpenVINO | *openvino_model/ |
69
+ | CoreML | *.mlpackage |
70
+ | TensorRT | *.engine |
71
+ | TensorFlow SavedModel | *_saved_model/ |
72
+ | TensorFlow GraphDef | *.pb |
73
+ | TensorFlow Lite | *.tflite |
74
+ | TensorFlow Edge TPU | *_edgetpu.tflite |
75
+ | PaddlePaddle | *_paddle_model/ |
76
+ | MNN | *.mnn |
77
+ | NCNN | *_ncnn_model/ |
77
78
 
78
79
  This class offers dynamic backend switching capabilities based on the input model format, making it easier to deploy
79
80
  models across various platforms.
@@ -120,6 +121,7 @@ class AutoBackend(nn.Module):
120
121
  edgetpu,
121
122
  tfjs,
122
123
  paddle,
124
+ mnn,
123
125
  ncnn,
124
126
  triton,
125
127
  ) = self._model_type(w)
@@ -189,10 +191,32 @@ class AutoBackend(nn.Module):
189
191
  check_requirements("numpy==1.23.5")
190
192
  import onnxruntime
191
193
 
192
- providers = ["CUDAExecutionProvider", "CPUExecutionProvider"] if cuda else ["CPUExecutionProvider"]
194
+ providers = onnxruntime.get_available_providers()
195
+ if not cuda and "CUDAExecutionProvider" in providers:
196
+ providers.remove("CUDAExecutionProvider")
197
+ elif cuda and "CUDAExecutionProvider" not in providers:
198
+ LOGGER.warning("WARNING ⚠️ Failed to start ONNX Runtime session with CUDA. Falling back to CPU...")
199
+ device = torch.device("cpu")
200
+ cuda = False
201
+ LOGGER.info(f"Preferring ONNX Runtime {providers[0]}")
193
202
  session = onnxruntime.InferenceSession(w, providers=providers)
194
203
  output_names = [x.name for x in session.get_outputs()]
195
204
  metadata = session.get_modelmeta().custom_metadata_map
205
+ dynamic = isinstance(session.get_outputs()[0].shape[0], str)
206
+ if not dynamic:
207
+ io = session.io_binding()
208
+ bindings = []
209
+ for output in session.get_outputs():
210
+ y_tensor = torch.empty(output.shape, dtype=torch.float16 if fp16 else torch.float32).to(device)
211
+ io.bind_output(
212
+ name=output.name,
213
+ device_type=device.type,
214
+ device_id=device.index if cuda else 0,
215
+ element_type=np.float16 if fp16 else np.float32,
216
+ shape=tuple(y_tensor.shape),
217
+ buffer_ptr=y_tensor.data_ptr(),
218
+ )
219
+ bindings.append(y_tensor)
196
220
 
197
221
  # OpenVINO
198
222
  elif xml:
@@ -381,6 +405,26 @@ class AutoBackend(nn.Module):
381
405
  output_names = predictor.get_output_names()
382
406
  metadata = w.parents[1] / "metadata.yaml"
383
407
 
408
+ # MNN
409
+ elif mnn:
410
+ LOGGER.info(f"Loading {w} for MNN inference...")
411
+ check_requirements("MNN") # requires MNN
412
+ import os
413
+
414
+ import MNN
415
+
416
+ config = {}
417
+ config["precision"] = "low"
418
+ config["backend"] = "CPU"
419
+ config["numThread"] = (os.cpu_count() + 1) // 2
420
+ rt = MNN.nn.create_runtime_manager((config,))
421
+ net = MNN.nn.load_module_from_file(w, [], [], runtime_manager=rt, rearrange=True)
422
+
423
+ def torch_to_mnn(x):
424
+ return MNN.expr.const(x.data_ptr(), x.shape)
425
+
426
+ metadata = json.loads(net.get_info()["bizCode"])
427
+
384
428
  # NCNN
385
429
  elif ncnn:
386
430
  LOGGER.info(f"Loading {w} for NCNN inference...")
@@ -477,8 +521,22 @@ class AutoBackend(nn.Module):
477
521
 
478
522
  # ONNX Runtime
479
523
  elif self.onnx:
480
- im = im.cpu().numpy() # torch to numpy
481
- y = self.session.run(self.output_names, {self.session.get_inputs()[0].name: im})
524
+ if self.dynamic:
525
+ im = im.cpu().numpy() # torch to numpy
526
+ y = self.session.run(self.output_names, {self.session.get_inputs()[0].name: im})
527
+ else:
528
+ if not self.cuda:
529
+ im = im.cpu()
530
+ self.io.bind_input(
531
+ name="images",
532
+ device_type=im.device.type,
533
+ device_id=im.device.index if im.device.type == "cuda" else 0,
534
+ element_type=np.float16 if self.fp16 else np.float32,
535
+ shape=tuple(im.shape),
536
+ buffer_ptr=im.data_ptr(),
537
+ )
538
+ self.session.run_with_iobinding(self.io)
539
+ y = self.bindings
482
540
 
483
541
  # OpenVINO
484
542
  elif self.xml:
@@ -554,6 +612,12 @@ class AutoBackend(nn.Module):
554
612
  self.predictor.run()
555
613
  y = [self.predictor.get_output_handle(x).copy_to_cpu() for x in self.output_names]
556
614
 
615
+ # MNN
616
+ elif self.mnn:
617
+ input_var = self.torch_to_mnn(im)
618
+ output_var = self.net.onForward([input_var])
619
+ y = [x.read() for x in output_var]
620
+
557
621
  # NCNN
558
622
  elif self.ncnn:
559
623
  mat_in = self.pyncnn.Mat(im[0].cpu().numpy())
@@ -21,6 +21,7 @@ TensorFlow Lite | `tflite` | yolov8n.tflite
21
21
  TensorFlow Edge TPU | `edgetpu` | yolov8n_edgetpu.tflite
22
22
  TensorFlow.js | `tfjs` | yolov8n_web_model/
23
23
  PaddlePaddle | `paddle` | yolov8n_paddle_model/
24
+ MNN | `mnn` | yolov8n.mnn
24
25
  NCNN | `ncnn` | yolov8n_ncnn_model/
25
26
  """
26
27
 
@@ -111,8 +112,8 @@ def benchmark(
111
112
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 Paddle exports not supported yet"
112
113
  assert not is_end2end, "End-to-end models not supported by PaddlePaddle yet"
113
114
  assert LINUX or MACOS, "Windows Paddle exports not supported yet"
114
- if i in {12}: # NCNN
115
- assert not isinstance(model, YOLOWorld), "YOLOWorldv2 NCNN exports not supported yet"
115
+ if i in {12, 13}: # MNN, NCNN
116
+ assert not isinstance(model, YOLOWorld), "YOLOWorldv2 MNN, NCNN exports not supported yet"
116
117
  if "cpu" in device.type:
117
118
  assert cpu, "inference not supported on CPU"
118
119
  if "cuda" in device.type:
@@ -132,7 +133,7 @@ def benchmark(
132
133
  assert model.task != "pose" or i != 7, "GraphDef Pose inference is not supported"
133
134
  assert i not in {9, 10}, "inference not supported" # Edge TPU and TF.js are unsupported
134
135
  assert i != 5 or platform.system() == "Darwin", "inference only supported on macOS>=10.13" # CoreML
135
- if i in {12}:
136
+ if i in {13}:
136
137
  assert not is_end2end, "End-to-end torch.topk operation is not supported for NCNN prediction yet"
137
138
  exported_model.predict(ASSETS / "bus.jpg", imgsz=imgsz, device=device, half=half)
138
139
 
@@ -1,13 +1,16 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- import subprocess
4
-
5
3
  from ultralytics.cfg import TASK2DATA, TASK2METRIC, get_save_dir
6
4
  from ultralytics.utils import DEFAULT_CFG, DEFAULT_CFG_DICT, LOGGER, NUM_THREADS, checks
7
5
 
8
6
 
9
7
  def run_ray_tune(
10
- model, space: dict = None, grace_period: int = 10, gpu_per_trial: int = None, max_samples: int = 10, **train_args
8
+ model,
9
+ space: dict = None,
10
+ grace_period: int = 10,
11
+ gpu_per_trial: int = None,
12
+ max_samples: int = 10,
13
+ **train_args,
11
14
  ):
12
15
  """
13
16
  Runs hyperparameter tuning using Ray Tune.
@@ -39,7 +42,7 @@ def run_ray_tune(
39
42
  train_args = {}
40
43
 
41
44
  try:
42
- subprocess.run("pip install ray[tune]".split(), check=True) # do not add single quotes here
45
+ checks.check_requirements("ray[tune]")
43
46
 
44
47
  import ray
45
48
  from ray import tune
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.24
3
+ Version: 8.3.25
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>
@@ -3,11 +3,11 @@ tests/conftest.py,sha256=9PFAiwAy6eeORGspr5dOKxVuFDVKqYg8Nn_RxSJ27UI,2919
3
3
  tests/test_cli.py,sha256=G7OJ1ErQYsGy2Dx1zP-0p7EZR4aPoAdtLGiY4Hm7jQM,5006
4
4
  tests/test_cuda.py,sha256=rhHFvKNegN1ChtueKM0JhATJaJDFB377uXo2Kca5JVQ,5943
5
5
  tests/test_engine.py,sha256=dcEcJsMQh61rDSNv7l4TIAgybLpzjVwerv9JZC_KCM8,4934
6
- tests/test_exports.py,sha256=fpTKEVBUGLF3WiZPNKRs-IEcIY4cfxgvgKjUNfodjww,8042
6
+ tests/test_exports.py,sha256=yYowGouJrMhvZXiklC8l4uq1R_p_Wy27RsmswklH93k,8243
7
7
  tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
8
8
  tests/test_python.py,sha256=I1RRdCwLdrc3jX06huVxct8HX8ccQOmQgVpuEflRl0U,23560
9
9
  tests/test_solutions.py,sha256=sPYhy2d814mIVvojQeVxeZPu0IVy01_Y8zuMcu_9GF0,3790
10
- ultralytics/__init__.py,sha256=e2H8k7jyu991EqE27QnJvrA-0fi4MKC_qARjJoT11TE,681
10
+ ultralytics/__init__.py,sha256=YiWNN3uUV32CchAlJHPFiLwXwMrng7pwa5o0QKsf0ag,681
11
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
12
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
13
13
  ultralytics/cfg/__init__.py,sha256=YXEtAr5WS3HLO90wFbyzspsaFxpBu4WJjVXWEFim-_o,32509
@@ -86,8 +86,8 @@ ultralytics/cfg/models/v9/yolov9m.yaml,sha256=l6CmivzNu44sRVmkQXk4-tXflbV1nWnk5M
86
86
  ultralytics/cfg/models/v9/yolov9s.yaml,sha256=lPWcu-6ub1kCBD6zIDFwthYZ3RvdJfODWKy3vEQWRjo,1291
87
87
  ultralytics/cfg/models/v9/yolov9t.yaml,sha256=qL__kr6GoefpQWP4jV0jdzwTp46bdFUcqtPRnfDbkY8,1275
88
88
  ultralytics/cfg/solutions/default.yaml,sha256=irtGM8nxaSBkrWMqcXoJdtKgqAq1YBwyVMGx5csSH2Y,1239
89
- ultralytics/cfg/trackers/botsort.yaml,sha256=8B0xNbnG_E-9DCUpap72PWkUgBb1AjuApEn7gHiVngE,916
90
- ultralytics/cfg/trackers/bytetrack.yaml,sha256=8vpTZ2x9mhRXJymoJvs1G8kTXo_HxbSwHup2FQALT3A,721
89
+ ultralytics/cfg/trackers/botsort.yaml,sha256=FDIrZ3hAhRtMfDl654pt1HIexmPqlFQK-3lQ4D0tF84,918
90
+ ultralytics/cfg/trackers/bytetrack.yaml,sha256=rBWY4RjjX6PTO2o6TUJFYHVgXNZHCN5TuBuzwuPYVjA,723
91
91
  ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
92
92
  ultralytics/data/annotator.py,sha256=oy87bzQN6ZRYeucoLk8e-jDEo6YJ91FE_zMFtLEVC1I,2489
93
93
  ultralytics/data/augment.py,sha256=YCLrwx1mRGeidggo_7GeINay8KdxACqREHJofZeaTHA,120430
@@ -99,13 +99,13 @@ ultralytics/data/loaders.py,sha256=Fr70Q9p9t7buLW_8R2_lI_nyCMG033gWSxvwy1M-a-U,2
99
99
  ultralytics/data/split_dota.py,sha256=eFafJ7Vg52wj6KDCHFJAf1tKzyPD5YaPB8kM4VX5Aeg,10688
100
100
  ultralytics/data/utils.py,sha256=bmWEIrdogj4kssZQSJdSbIF8QsJU00lo-EY-Mgcqv4M,31073
101
101
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
102
- ultralytics/engine/exporter.py,sha256=TJsamX8n3JDFjVUiV9vmfAm-bOz09pMJnypgXYqbp5I,58735
102
+ ultralytics/engine/exporter.py,sha256=atCOVnXPrN66xq1rbOTZFBQmY00qpveLrZ_C86DDZSc,60194
103
103
  ultralytics/engine/model.py,sha256=pvL1uf-wwdWL8Iph7VEAYn1-z7wEHzVug21V_0_gO6M,51456
104
- ultralytics/engine/predictor.py,sha256=keTelEeo23Dcbs-XvmRWAPIs4pbCNDtsMBz88WM1eK8,17534
104
+ ultralytics/engine/predictor.py,sha256=aS4yJdTK2kYq-TTpzIlWxqnAcBz38zIECZoMb_yOPMY,17597
105
105
  ultralytics/engine/results.py,sha256=BxanBI8PhBCfs-9cSy-GS6naScuiD3hdvUAJWPW2mS0,75043
106
106
  ultralytics/engine/trainer.py,sha256=6dGOEZvMo3o97SLpKlcR5XmhWhUHh05uLYpj3jNn0jU,36981
107
107
  ultralytics/engine/tuner.py,sha256=WBj8iw1K1TK0hvanlA-wkwmfqh1SI8jEe2dGwUINeTg,11838
108
- ultralytics/engine/validator.py,sha256=2C_qXI36Z9rLOpmS0YR8Qe3ka4p23YiH2w5ai7-XBwE,14811
108
+ ultralytics/engine/validator.py,sha256=aWpXE3nrOqaA7jCuUgwxi0FabiGTIXtZvjoJyCX903o,14870
109
109
  ultralytics/hub/__init__.py,sha256=c6Me4E8V-P7mtzTggyPYz9FnVkqWRyPp9F-fMcyFNQ0,5632
110
110
  ultralytics/hub/auth.py,sha256=pj_2NijotQpyG4_VJ6EAzNWGD93L6t-34J60yfiNZPc,5541
111
111
  ultralytics/hub/session.py,sha256=2KznO5kX14HFZ2-Ct9LoG312sdHuigQSLZb58MGvbJY,16411
@@ -136,7 +136,7 @@ ultralytics/models/sam/modules/blocks.py,sha256=Q-KwhFbdyZhl1tjG_kP2LcQkZbzoNt61
136
136
  ultralytics/models/sam/modules/decoders.py,sha256=mODsqnTN_CjE3H0Sh9cd8PfTnHANPjGB1bjqHxfezSg,25830
137
137
  ultralytics/models/sam/modules/encoders.py,sha256=Ay3sYeUonCf6URXBdB0dDwyngovevW8hUDgULRnNIoA,34824
138
138
  ultralytics/models/sam/modules/memory_attention.py,sha256=XilWBnRfH8wZxIoL2-yEk-dRypCsS0Jf_9t8WJxXKg0,9722
139
- ultralytics/models/sam/modules/sam.py,sha256=TEo4iB7i8B3hKr1SaNu-PDIWHl3FZoSvyjnSJZI0V1A,53076
139
+ ultralytics/models/sam/modules/sam.py,sha256=H0EJpbwwYUJ-Hx4d_5OVCH0rZInmS937cu1183lzpcc,53102
140
140
  ultralytics/models/sam/modules/tiny_encoder.py,sha256=NyzeFMLnmqwcFQFs-JBM9PCWSsYoYZ_6h59Un1DeDV0,41332
141
141
  ultralytics/models/sam/modules/transformer.py,sha256=nuhF_14LGrr5uYCAP9XCXps-zlVcT4OWO0evXWDxPwI,16081
142
142
  ultralytics/models/sam/modules/utils.py,sha256=Y36V6BVy6GeaAvKE8gHmoDIa-f5LjJpmSVwywNkv2yk,12315
@@ -169,7 +169,7 @@ ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2
169
169
  ultralytics/models/yolo/world/train.py,sha256=gaDrAmLJpg9qDtmL5evA5HsV2yb4RTRSfk2EDYrHdRg,3686
170
170
  ultralytics/models/yolo/world/train_world.py,sha256=IsnCEVt6DcM9lUskCKmIN-M8MM79xLpwTRqRoAHUnZ4,4857
171
171
  ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
172
- ultralytics/nn/autobackend.py,sha256=4KqKBafUP7SbsD6rtubukr2KhmYhTogLBSZtF3Hpjzc,31893
172
+ ultralytics/nn/autobackend.py,sha256=as3IbpBeFM3YOAL5zGP3nu1EVVEiFsp3TwMfai55XCs,34618
173
173
  ultralytics/nn/tasks.py,sha256=NWe0cL7A0LpsP3S1Efvi2NutAjWc_rGYMJMwAeb2bAg,48605
174
174
  ultralytics/nn/modules/__init__.py,sha256=xhW2BennT9U_VaMXVpRu-bdLgp1BXt9L8mkIUBE3idU,2625
175
175
  ultralytics/nn/modules/activation.py,sha256=chhn469wnRHEs5BMGNBYXwPYZc_7-urspTT8fnBd-xA,895
@@ -200,7 +200,7 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=cH9zD3fwkuezP97H9mw8cSBN7a8hH
200
200
  ultralytics/trackers/utils/matching.py,sha256=3Ie1WNNRZ4_q3365F03XD7Nr9juZB_08mw4yUKC3w74,7162
201
201
  ultralytics/utils/__init__.py,sha256=oUtiHZUVtz-KtequUv15Has85k2BHgP6c-_cAAdf-rM,49060
202
202
  ultralytics/utils/autobatch.py,sha256=BO9MCRtrLDtrDQaxqV0BdjaYsgXf-q07Y3_VdGp4URY,4330
203
- ultralytics/utils/benchmarks.py,sha256=R3_jtwLd48azPSXmtIhqlzduUvflk0FOY8GJOJ6mB6E,25097
203
+ ultralytics/utils/benchmarks.py,sha256=UVjTO1gRCNVdk1-meSeNAh050nWhIR7i5E3ZjRcdyPk,25177
204
204
  ultralytics/utils/checks.py,sha256=cEQIYK3ZGQqcQ9uckNF-KbYdjGpfA1FHJHsUim94EoA,29800
205
205
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
206
206
  ultralytics/utils/downloads.py,sha256=fh7I5toTSowAOXtmx5zIzCEDREfTFG45cLIHmsDmuYw,21974
@@ -215,7 +215,7 @@ ultralytics/utils/plotting.py,sha256=TKtdbAOl6gZdFD2hlA5T4LNWfr2LUWbCC-cXkgL1JAU
215
215
  ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
216
216
  ultralytics/utils/torch_utils.py,sha256=91fmJtZRvIVb6LI-wNkNrlHE7mMNBmcR4oif8ZYppYU,30089
217
217
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
218
- ultralytics/utils/tuner.py,sha256=mJdgvuE2StoFS13mEdsTbsxQgSZA4fSdSCgoyh8PvNw,6250
218
+ ultralytics/utils/tuner.py,sha256=K09-z5k1E4ZriSKoWdwQrJ2PJ2fY1ez3-b2R6aKPTqM,6198
219
219
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
220
220
  ultralytics/utils/callbacks/base.py,sha256=PHjQ6RITwC2dylCQTB0bdPgAsHjxVeuDb5N1NPTbHGc,5775
221
221
  ultralytics/utils/callbacks/clearml.py,sha256=qbLbqzMVWAnjqg5YUM-Ue6CmGueFCvqKpHFKlw-MyVc,5933
@@ -227,9 +227,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=IbGQfEltamUKXJt93uSLQFn8c2rYh3DMTg
227
227
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
228
228
  ultralytics/utils/callbacks/tensorboard.py,sha256=SHlE58Fb-sg-uZKtgy-ybIO3SAIfK55aj8kTYGA0Cyg,4167
229
229
  ultralytics/utils/callbacks/wb.py,sha256=oX3JarCJGhzvW556XiEXQNaZblAaK_UETAt3kzkY61w,6869
230
- ultralytics-8.3.24.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
231
- ultralytics-8.3.24.dist-info/METADATA,sha256=NkjGa5lIXR6fh71OxXnh155XCqvuZGz6qDihMM_bX4g,35081
232
- ultralytics-8.3.24.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
233
- ultralytics-8.3.24.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
234
- ultralytics-8.3.24.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
235
- ultralytics-8.3.24.dist-info/RECORD,,
230
+ ultralytics-8.3.25.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
231
+ ultralytics-8.3.25.dist-info/METADATA,sha256=l2ixBYS0H21g6Nn7iGFLQZxuptNlobGD_PJY7AQTfGg,35081
232
+ ultralytics-8.3.25.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
233
+ ultralytics-8.3.25.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
234
+ ultralytics-8.3.25.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
235
+ ultralytics-8.3.25.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5