ultralytics 8.3.65__py3-none-any.whl → 8.3.66__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
@@ -11,6 +11,7 @@ from tests import MODEL, SOURCE
11
11
  from ultralytics import YOLO
12
12
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
13
13
  from ultralytics.utils import (
14
+ ARM64,
14
15
  IS_RASPBERRYPI,
15
16
  LINUX,
16
17
  MACOS,
@@ -157,7 +158,7 @@ def test_export_tflite_matrix(task, dynamic, int8, half, batch):
157
158
 
158
159
  @pytest.mark.skipif(not TORCH_1_9, reason="CoreML>=7.2 not supported with PyTorch<=1.8")
159
160
  @pytest.mark.skipif(WINDOWS, reason="CoreML not supported on Windows") # RuntimeError: BlobWriter not loaded
160
- @pytest.mark.skipif(IS_RASPBERRYPI, reason="CoreML not supported on Raspberry Pi")
161
+ @pytest.mark.skipif(LINUX and ARM64, reason="CoreML not supported on aarch64 Linux")
161
162
  @pytest.mark.skipif(checks.IS_PYTHON_3_12, reason="CoreML not supported in Python 3.12")
162
163
  def test_export_coreml():
163
164
  """Test YOLO exports to CoreML format, optimized for macOS only."""
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.65"
3
+ __version__ = "8.3.66"
4
4
 
5
5
  import os
6
6
 
@@ -921,12 +921,7 @@ def entrypoint(debug=""):
921
921
  # Task
922
922
  task = overrides.pop("task", None)
923
923
  if task:
924
- if task == "classify" and mode == "track":
925
- raise ValueError(
926
- f"❌ Classification doesn't support 'mode=track'. Valid modes for classification are"
927
- f" {MODES - {'track'}}.\n{CLI_HELP_MSG}"
928
- )
929
- elif task not in TASKS:
924
+ if task not in TASKS:
930
925
  if task == "track":
931
926
  LOGGER.warning(
932
927
  "WARNING ⚠️ invalid 'task=track', setting 'task=detect' and 'mode=track'. Valid tasks are {TASKS}.\n{CLI_HELP_MSG}."
@@ -6,18 +6,11 @@
6
6
 
7
7
  # Parameters
8
8
  nc: 10 # number of classes
9
- scales: # model compound scaling constants, i.e. 'model=yolo11n-cls.yaml' will call yolo11-cls.yaml with scale 'n'
10
- # [depth, width, max_channels]
11
- n: [0.33, 0.25, 1024]
12
- s: [0.33, 0.50, 1024]
13
- m: [0.67, 0.75, 1024]
14
- l: [1.00, 1.00, 1024]
15
- x: [1.00, 1.25, 1024]
16
9
 
17
10
  # ResNet18 backbone
18
11
  backbone:
19
12
  # [from, repeats, module, args]
20
- - [-1, 1, TorchVision, [512, "resnet18", "DEFAULT", True, 2]] # truncate two layers from the end
13
+ - [-1, 1, TorchVision, [512, resnet18, DEFAULT, True, 2]] # truncate two layers from the end
21
14
 
22
15
  # YOLO11n head
23
16
  head:
@@ -1850,7 +1850,7 @@ class Albumentations:
1850
1850
  A.CLAHE(p=0.01),
1851
1851
  A.RandomBrightnessContrast(p=0.0),
1852
1852
  A.RandomGamma(p=0.0),
1853
- A.ImageCompression(quality_lower=75, p=0.0),
1853
+ A.ImageCompression(quality_range=(75, 100), p=0.0),
1854
1854
  ]
1855
1855
 
1856
1856
  # Compose transforms
@@ -8,9 +8,9 @@ from pathlib import Path
8
8
  import cv2
9
9
  import numpy as np
10
10
  from PIL import Image
11
- from tqdm import tqdm
12
11
 
13
12
  from ultralytics.data.utils import exif_size, img2label_paths
13
+ from ultralytics.utils import TQDM
14
14
  from ultralytics.utils.checks import check_requirements
15
15
 
16
16
 
@@ -221,7 +221,7 @@ def split_images_and_labels(data_root, save_dir, split="train", crop_sizes=(1024
221
221
  lb_dir.mkdir(parents=True, exist_ok=True)
222
222
 
223
223
  annos = load_yolo_dota(data_root, split=split)
224
- for anno in tqdm(annos, total=len(annos), desc=split):
224
+ for anno in TQDM(annos, total=len(annos), desc=split):
225
225
  windows = get_windows(anno["ori_size"], crop_sizes, gaps)
226
226
  window_objs = get_window_obj(anno, windows)
227
227
  crop_and_save(anno, windows, window_objs, str(im_dir), str(lb_dir))
@@ -281,7 +281,7 @@ def split_test(data_root, save_dir, crop_size=1024, gap=200, rates=(1.0,)):
281
281
  im_dir = Path(data_root) / "images" / "test"
282
282
  assert im_dir.exists(), f"Can't find {im_dir}, please check your data root."
283
283
  im_files = glob(str(im_dir / "*"))
284
- for im_file in tqdm(im_files, total=len(im_files), desc="test"):
284
+ for im_file in TQDM(im_files, total=len(im_files), desc="test"):
285
285
  w, h = exif_size(Image.open(im_file))
286
286
  windows = get_windows((h, w), crop_sizes=crop_sizes, gaps=gaps)
287
287
  im = cv2.imread(im_file)
ultralytics/data/utils.py CHANGED
@@ -136,7 +136,7 @@ def verify_image_label(args):
136
136
 
137
137
  # All labels
138
138
  max_cls = lb[:, 0].max() # max label count
139
- assert max_cls <= num_cls, (
139
+ assert max_cls < num_cls, (
140
140
  f"Label class {int(max_cls)} exceeds dataset class count {num_cls}. "
141
141
  f"Possible class labels are 0-{num_cls - 1}"
142
142
  )
@@ -1159,21 +1159,19 @@ class Exporter:
1159
1159
  from rknn.api import RKNN
1160
1160
 
1161
1161
  f, _ = self.export_onnx()
1162
-
1163
- platform = self.args.name
1164
-
1165
1162
  export_path = Path(f"{Path(f).stem}_rknn_model")
1166
1163
  export_path.mkdir(exist_ok=True)
1167
1164
 
1168
1165
  rknn = RKNN(verbose=False)
1169
- rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform=platform)
1170
- _ = rknn.load_onnx(model=f)
1171
- _ = rknn.build(do_quantization=False) # TODO: Add quantization support
1172
- f = f.replace(".onnx", f"-{platform}.rknn")
1173
- _ = rknn.export_rknn(f"{export_path / f}")
1166
+ rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform=self.args.name)
1167
+ rknn.load_onnx(model=f)
1168
+ rknn.build(do_quantization=False) # TODO: Add quantization support
1169
+ f = f.replace(".onnx", f"-{self.args.name}.rknn")
1170
+ rknn.export_rknn(f"{export_path / f}")
1174
1171
  yaml_save(export_path / "metadata.yaml", self.metadata)
1175
1172
  return export_path, None
1176
1173
 
1174
+ @try_export
1177
1175
  def export_imx(self, prefix=colorstr("IMX:")):
1178
1176
  """YOLO IMX export."""
1179
1177
  gptq = False
@@ -1191,6 +1189,8 @@ class Exporter:
1191
1189
  import onnx
1192
1190
  from sony_custom_layers.pytorch.object_detection.nms import multiclass_nms
1193
1191
 
1192
+ LOGGER.info(f"\n{prefix} starting export with model_compression_toolkit {mct.__version__}...")
1193
+
1194
1194
  try:
1195
1195
  out = subprocess.run(
1196
1196
  ["java", "--version"], check=True, capture_output=True
@@ -1286,7 +1286,7 @@ class Exporter:
1286
1286
 
1287
1287
  f = Path(str(self.file).replace(self.file.suffix, "_imx_model"))
1288
1288
  f.mkdir(exist_ok=True)
1289
- onnx_model = f / Path(str(self.file).replace(self.file.suffix, "_imx.onnx")) # js dir
1289
+ onnx_model = f / Path(str(self.file.name).replace(self.file.suffix, "_imx.onnx")) # js dir
1290
1290
  mct.exporter.pytorch_export_model(
1291
1291
  model=quant_model, save_model_path=onnx_model, repr_dataset=representative_dataset_gen
1292
1292
  )
@@ -271,7 +271,6 @@ class BaseTrainer:
271
271
  )
272
272
  if world_size > 1:
273
273
  self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK], find_unused_parameters=True)
274
- self.set_model_attributes() # set again after DDP wrapper
275
274
 
276
275
  # Check imgsz
277
276
  gs = max(int(self.model.stride.max() if hasattr(self.model, "stride") else 32), 32) # grid size (max stride)
@@ -782,7 +781,7 @@ class BaseTrainer:
782
781
  f"ignoring 'lr0={self.args.lr0}' and 'momentum={self.args.momentum}' and "
783
782
  f"determining best 'optimizer', 'lr0' and 'momentum' automatically... "
784
783
  )
785
- nc = getattr(model, "nc", 10) # number of classes
784
+ nc = self.data.get("nc", 10) # number of classes
786
785
  lr_fit = round(0.002 * 5 / (4 + nc), 6) # lr0 fit equation to 6 decimal places
787
786
  name, lr, momentum = ("SGD", 0.01, 0.9) if iterations > 10000 else ("AdamW", lr_fit, 0.9)
788
787
  self.args.warmup_bias_lr = 0.0 # no higher than 0.01 for Adam
@@ -482,7 +482,7 @@ class AutoBackend(nn.Module):
482
482
  w = next(w.rglob("*.rknn")) # get *.rknn file from *_rknn_model dir
483
483
  rknn_model = RKNNLite()
484
484
  rknn_model.load_rknn(w)
485
- ret = rknn_model.init_runtime()
485
+ rknn_model.init_runtime()
486
486
  metadata = Path(w).parent / "metadata.yaml"
487
487
 
488
488
  # Any other format (unsupported)
@@ -1120,8 +1120,6 @@ class TorchVision(nn.Module):
1120
1120
  m (nn.Module): The loaded torchvision model, possibly truncated and unwrapped.
1121
1121
 
1122
1122
  Args:
1123
- c1 (int): Input channels.
1124
- c2 (): Output channels.
1125
1123
  model (str): Name of the torchvision model to load.
1126
1124
  weights (str, optional): Pre-trained weights to load. Default is "DEFAULT".
1127
1125
  unwrap (bool, optional): If True, unwraps the model to a sequential containing all but the last `truncate` layers. Default is True.
@@ -1129,7 +1127,7 @@ class TorchVision(nn.Module):
1129
1127
  split (bool, optional): Returns output from intermediate child modules as list. Default is False.
1130
1128
  """
1131
1129
 
1132
- def __init__(self, c1, c2, model, weights="DEFAULT", unwrap=True, truncate=2, split=False):
1130
+ def __init__(self, model, weights="DEFAULT", unwrap=True, truncate=2, split=False):
1133
1131
  """Load the model and weights from torchvision."""
1134
1132
  import torchvision # scope for faster 'import ultralytics'
1135
1133
 
@@ -336,7 +336,7 @@ class Concat(nn.Module):
336
336
  class Index(nn.Module):
337
337
  """Returns a particular index of the input."""
338
338
 
339
- def __init__(self, c1, c2, index=0):
339
+ def __init__(self, index=0):
340
340
  """Returns a particular index of the input."""
341
341
  super().__init__()
342
342
  self.index = index
ultralytics/nn/tasks.py CHANGED
@@ -1060,12 +1060,16 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1060
1060
  m.legacy = legacy
1061
1061
  elif m is RTDETRDecoder: # special case, channels arg must be passed in index 1
1062
1062
  args.insert(1, [ch[x] for x in f])
1063
- elif m in frozenset({CBLinear, TorchVision, Index}):
1063
+ elif m is CBLinear:
1064
1064
  c2 = args[0]
1065
1065
  c1 = ch[f]
1066
1066
  args = [c1, c2, *args[1:]]
1067
1067
  elif m is CBFuse:
1068
1068
  c2 = ch[f[-1]]
1069
+ elif m in frozenset({TorchVision, Index}):
1070
+ c2 = args[0]
1071
+ c1 = ch[f]
1072
+ args = [*args[1:]]
1069
1073
  else:
1070
1074
  c2 = ch[f]
1071
1075
 
@@ -31,6 +31,9 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
31
31
  >>> predictor = SomePredictorClass()
32
32
  >>> on_predict_start(predictor, persist=True)
33
33
  """
34
+ if predictor.args.task == "classify":
35
+ raise ValueError("❌ Classification doesn't support 'mode=track'")
36
+
34
37
  if hasattr(predictor, "trackers") and persist:
35
38
  return
36
39
 
@@ -23,8 +23,8 @@ import cv2
23
23
  import matplotlib.pyplot as plt
24
24
  import numpy as np
25
25
  import torch
26
+ import tqdm
26
27
  import yaml
27
- from tqdm import tqdm as tqdm_original
28
28
 
29
29
  from ultralytics import __version__
30
30
 
@@ -133,7 +133,7 @@ os.environ["TORCH_CPP_LOG_LEVEL"] = "ERROR" # suppress "NNPACK.cpp could not in
133
133
  os.environ["KINETO_LOG_LEVEL"] = "5" # suppress verbose PyTorch profiler output when computing FLOPs
134
134
 
135
135
 
136
- class TQDM(tqdm_original):
136
+ class TQDM(tqdm.tqdm):
137
137
  """
138
138
  A custom TQDM progress bar class that extends the original tqdm functionality.
139
139
 
@@ -41,7 +41,7 @@ import yaml
41
41
  from ultralytics import YOLO, YOLOWorld
42
42
  from ultralytics.cfg import TASK2DATA, TASK2METRIC
43
43
  from ultralytics.engine.exporter import export_formats
44
- from ultralytics.utils import ARM64, ASSETS, IS_JETSON, IS_RASPBERRYPI, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR
44
+ from ultralytics.utils import ARM64, ASSETS, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR
45
45
  from ultralytics.utils.checks import IS_PYTHON_3_12, check_requirements, check_yolo, is_rockchip
46
46
  from ultralytics.utils.downloads import safe_download
47
47
  from ultralytics.utils.files import file_size
@@ -100,9 +100,9 @@ def benchmark(
100
100
  elif i == 9: # Edge TPU
101
101
  assert LINUX and not ARM64, "Edge TPU export only supported on non-aarch64 Linux"
102
102
  elif i in {5, 10}: # CoreML and TF.js
103
- assert MACOS or LINUX, "CoreML and TF.js export only supported on macOS and Linux"
104
- assert not IS_RASPBERRYPI, "CoreML and TF.js export not supported on Raspberry Pi"
105
- assert not IS_JETSON, "CoreML and TF.js export not supported on NVIDIA Jetson"
103
+ assert MACOS or (LINUX and not ARM64), (
104
+ "CoreML and TF.js export only supported on macOS and non-aarch64 Linux"
105
+ )
106
106
  if i in {5}: # CoreML
107
107
  assert not IS_PYTHON_3_12, "CoreML not supported on Python 3.12"
108
108
  if i in {6, 7, 8}: # TF SavedModel, TF GraphDef, and TFLite
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ultralytics
3
- Version: 8.3.65
3
+ Version: 8.3.66
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,14 +3,14 @@ tests/conftest.py,sha256=DE4-5JqWhsQPyDhU5hHqRevz971yPBQORs3LitLc6Fo,3010
3
3
  tests/test_cli.py,sha256=b9pPCu6x_MejPw-G7TI3wxSZnaMmutcXW7aCzMzz4ig,5076
4
4
  tests/test_cuda.py,sha256=inPe0f_L0GutDxYLbe49BPEmjMevaS9XXCWX1Lfjo2g,5971
5
5
  tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
6
- tests/test_exports.py,sha256=gxr9Y2sleWRLYfRplp55TbIA_LfACBNOSa5vVW7Nb18,8794
6
+ tests/test_exports.py,sha256=dEWZpDaHrBjGOeQB9DjkSL1T1xFVJm-T3jQpKZ0tdtc,8807
7
7
  tests/test_integrations.py,sha256=p3DMnnPMKsV0Qm82JVJUIY1UZ67xRgF9E8AaL76TEHE,6154
8
8
  tests/test_python.py,sha256=tW-EFJC2rjl_DvAa8khXGWYdypseQjrLjGHhe2p9r9A,23238
9
9
  tests/test_solutions.py,sha256=aY0G3vNzXGCENG9FD76MfUp7jgzeESPsUvbvQYBUvH0,4205
10
- ultralytics/__init__.py,sha256=596JplagMUPC1iKhvyWXSLtvgmb7tp7bX8KQ1YjJqGY,709
10
+ ultralytics/__init__.py,sha256=sh3HIVlUYFfloK-ybLmXhVKJtGCbgPOESjbR3oBXmdY,709
11
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
12
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
13
- ultralytics/cfg/__init__.py,sha256=koCXc5sK4ykea46d8eUX_IxuwavmgrBQhEKmNwLJ2Bc,40028
13
+ ultralytics/cfg/__init__.py,sha256=qP44HnFP4QcC5FQz29A-EGTuwdtxXAzPvw_IvCVmiqA,39771
14
14
  ultralytics/cfg/default.yaml,sha256=tHE_VB_tzq5K1BntCCukmFIViwiRv0R-H6ZNucCnYsY,8469
15
15
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=W225bp0LpIKbn8qrApX4W0jGUJc5tPKQNJjVdkInzJo,3163
16
16
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
@@ -42,7 +42,7 @@ ultralytics/cfg/datasets/package-seg.yaml,sha256=uechtCYfX8OrJrO5zV1-uGwbr69lUSu
42
42
  ultralytics/cfg/datasets/signature.yaml,sha256=eABYny9n4w3RleR3RQmb505DiBll8R5cvcjWj8wkuf0,789
43
43
  ultralytics/cfg/datasets/tiger-pose.yaml,sha256=gCQc1AX04Xfhnms4czm7R_XnT2XFL2u-t3M8Yya20ds,925
44
44
  ultralytics/cfg/datasets/xView.yaml,sha256=q33mdKXN7B0tt2zeCvoy0BB9B0RVSIM5K94b2-tIkLo,5246
45
- ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml,sha256=8bk9ggBlJ75mPSc5Ycp-EwTU0CNeVrObMIAOsK0lV8U,794
45
+ ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml,sha256=rMwOjwrHuYmZUN9ct_rHAV8bExHDK2U6VeD-U23XdWg,522
46
46
  ultralytics/cfg/models/11/yolo11-cls.yaml,sha256=jWDUCRPe5UGTphXpi9kQSnJ_wg_Ga_9Gq20KuD_NMaU,1416
47
47
  ultralytics/cfg/models/11/yolo11-obb.yaml,sha256=x8XDI2WvbBDre79eslYafBDvu6AmdGbOzTfnq5UhmVM,2034
48
48
  ultralytics/cfg/models/11/yolo11-pose.yaml,sha256=RUe-8rIrrYWItv0GMo_VaO9JfrK2NJSXfbhv0NOq9dk,2128
@@ -93,20 +93,20 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=D9doE5GQUe6HrAFzr7OfQFIGPFk0M_vJ0B_
93
93
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
94
94
  ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
95
95
  ultralytics/data/annotator.py,sha256=jbKHB5l5IYOG1YOgCxA6czU_ivb3NPAACrtPe6-bVn4,3145
96
- ultralytics/data/augment.py,sha256=A9yBpNU0JkHMNTYdsN1gYPwmXFjb2S23i7HU99Bsqlk,120719
96
+ ultralytics/data/augment.py,sha256=sQDtIPD0P2pm_t-dI87hZt9KTB2PDN0JT_7AekHctRw,120726
97
97
  ultralytics/data/base.py,sha256=NTNdn-Emgx3Z2vats8i8oEe-9yosPmHd53v1A0xz0EU,15196
98
98
  ultralytics/data/build.py,sha256=gOU5SNABBNxwo5012N--WhjEnLK2ewycXIryMpbHg6U,7685
99
99
  ultralytics/data/converter.py,sha256=89E44LBCpbn5hMF03Kdts6DaTP8Oei5iCra5enFCt5I,24467
100
100
  ultralytics/data/dataset.py,sha256=lxtH3JytNu6nsiPAIhe0uGuGGpkZ4ZRqvXM6eJw9rXU,23244
101
101
  ultralytics/data/loaders.py,sha256=JOwXbz-dxgG2bx0_cQHp-olz5FleoCX8EzrUvZ77vvg,28534
102
- ultralytics/data/split_dota.py,sha256=NgnGcEJE2iVfGCoJUIeKUxhu_kGg6dln6UTajUqT-_k,10720
103
- ultralytics/data/utils.py,sha256=EoSlxcz5orjChBZbtzgIyddKuO3DFcuKVRBUWvpEk_4,33842
102
+ ultralytics/data/split_dota.py,sha256=YI-i2MqdiBt06W67TJnBXQHJrqTnkJDJ3zzoL0UZVro,10733
103
+ ultralytics/data/utils.py,sha256=K8xyA1xHLpaeluUbqOl5fy6AWZ6nDciCBZJofjxzOuw,33841
104
104
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
105
- ultralytics/engine/exporter.py,sha256=VV0bftPZ6gitpe9i2UBAg37x6Wkq3WVhUQ7AJVZdEfg,70827
105
+ ultralytics/engine/exporter.py,sha256=9xs7d1TGZecLmNg9ECra0oRclAOac0bjX9nXOf9tqPQ,70916
106
106
  ultralytics/engine/model.py,sha256=IHeaCwXlbxs6f2gVF5hEQVUiY-3F9Oz1wJNSTPZ-tZ0,53110
107
107
  ultralytics/engine/predictor.py,sha256=jiYDAjupOlRUpPvw9tu7or9PjXtLm-YCRiawANtWxj0,17881
108
108
  ultralytics/engine/results.py,sha256=ZIvu8Qb_ylmu92Jfy6m0IcRnenFpdVKaq-DZrfubKoo,75114
109
- ultralytics/engine/trainer.py,sha256=qJp2N-HKImqssZBEC9VoTrQDNBxMr9bXuC6ECbxlZmY,37434
109
+ ultralytics/engine/trainer.py,sha256=ZGAc6C1_LUBHDdZlr6wT6sbMtDzWa5rr7M8QVlXpBLs,37362
110
110
  ultralytics/engine/tuner.py,sha256=EUlTs7KJQ2RVABm8pihr_14M_Z2kGSzJaWH-Y9TJYDw,11976
111
111
  ultralytics/engine/validator.py,sha256=r27X8HGeDEwq7V5sFjEQH_3EnP1CyG-HcOLpFABUisU,15034
112
112
  ultralytics/hub/__init__.py,sha256=1ifzSYV0PIT4ZWOm2V7HnpGyY3G3hCz0malw3AXHFlY,5660
@@ -172,12 +172,12 @@ ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn
172
172
  ultralytics/models/yolo/world/train.py,sha256=6PVmQ0G-22OOPPwP_rqSobe2LM6e2b_lC7lJCdW3UIk,3714
173
173
  ultralytics/models/yolo/world/train_world.py,sha256=sCtg4Hnq9Y7amYjlQsdvTHXH8cKSooipvcXu_1Iyb2k,4885
174
174
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
175
- ultralytics/nn/autobackend.py,sha256=DDyV-CjGEze7bu_NelF_sOBQgmIzYlOonJVhPqUAzIY,36803
176
- ultralytics/nn/tasks.py,sha256=Q4lSIWEdB9BtwMt4Ecvs2yU-NnCmK6zlUCd57DO3lks,48795
175
+ ultralytics/nn/autobackend.py,sha256=6h8yg7X7U7mqJjflxFP9Vv2SFsAgoQ-UKBrIZ3v4ihg,36797
176
+ ultralytics/nn/tasks.py,sha256=Qe9EZ7NBDT5zOFAqJSl5XhYWnMDByuQL80r6pP0TuDM,48892
177
177
  ultralytics/nn/modules/__init__.py,sha256=02dPoAMtpPNQdHXHmvJeWZvJ_WG6eqwH8atLdFWgcuY,2713
178
178
  ultralytics/nn/modules/activation.py,sha256=oRkhMdqlNpIxQb35pTSUeHV-h0VyLl96GOqvIZ4OvT8,923
179
- ultralytics/nn/modules/block.py,sha256=JiT7flwBw7P8DbHf-UUHqz4uGC6WYlMrXx2f9Vlsvx0,44014
180
- ultralytics/nn/modules/conv.py,sha256=P3R8xTuE7GMJ2DJ_ye7D54Gh56tfh4ykNnIXBG2QcNQ,13140
179
+ ultralytics/nn/modules/block.py,sha256=vQqfKIXPmEnxupdzcLDGC5FkjCNIqURfqt4CEEseuXE,43940
180
+ ultralytics/nn/modules/conv.py,sha256=Wx_tZ56M7iMiNqz3v03oi86C2fatdmdBBDpkrUyzEIU,13132
181
181
  ultralytics/nn/modules/head.py,sha256=RYT31wplr64yDSHLpEZy3fyqg9W8HWlXWKrltwpqGiQ,27962
182
182
  ultralytics/nn/modules/transformer.py,sha256=fdc4xam82Dk8etahkhlc5RHW6dfY00klKj2od4QpdQo,18097
183
183
  ultralytics/nn/modules/utils.py,sha256=AA2M6ZyBgmnMXUuiqJ5aSpQv2h1BmmcWuBVA1343nZg,3223
@@ -199,14 +199,14 @@ ultralytics/trackers/__init__.py,sha256=Zlu_Ig5osn7hqch_g5Be_e4pwZUkeeTQiesJCi0p
199
199
  ultralytics/trackers/basetrack.py,sha256=h0fcxzCdZf_56H1NG_mCIATaz_cWj0e9aJKE1xgmtFQ,4451
200
200
  ultralytics/trackers/bot_sort.py,sha256=xUmlj0agS0PGjy97N3C0jLMV07yvsurE5QcnuoV_Ecw,10522
201
201
  ultralytics/trackers/byte_tracker.py,sha256=CT_Yjw2ahHoprEfNcTM0hBMoGss5qcqt6Paxk956lYU,20846
202
- ultralytics/trackers/track.py,sha256=L51gFZ6-X3gtcHf1ooCofP3lcwMg2tOXJpa3ipfAnx8,3902
202
+ ultralytics/trackers/track.py,sha256=RWG2sc2HkGaajwLMZp7A_5HusxYKNR8gky4igvZpzug,4021
203
203
  ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
204
204
  ultralytics/trackers/utils/gmc.py,sha256=kU54RozuGJcAVlyb5_HjXiNIUIX5VuH613AMc6Gdnwg,14597
205
205
  ultralytics/trackers/utils/kalman_filter.py,sha256=OBvemZXptgn9v1sgBLvFomCqOWwjIB3-8wBbc8nakHo,21377
206
206
  ultralytics/trackers/utils/matching.py,sha256=64PKHGoETwXhuZ9udE217hbjJHygLOPaYA66J2qMSno,7130
207
- ultralytics/utils/__init__.py,sha256=VVCd--k2ZEL7VLl1Ds6P7kfpBqFHo_yjke54zKrTPlU,49830
207
+ ultralytics/utils/__init__.py,sha256=BG71Eb5UwMtVi7ccUhV9n2mZzshAJzl7_X0YMpoNFzc,49799
208
208
  ultralytics/utils/autobatch.py,sha256=zc81HlAMArPASEbExty0E_zpITF8PVwin7w-xBFFZ5w,5048
209
- ultralytics/utils/benchmarks.py,sha256=gPC9B9Zx5xPQwSJiweT77_hhyqq7Ji8tIfINGwnv4XY,26132
209
+ ultralytics/utils/benchmarks.py,sha256=o9T7xfwhMsrOP0ce3F654L1an3fIoBKxUKz1CHNXerw,25979
210
210
  ultralytics/utils/checks.py,sha256=P543iMxEbXi0WWGrY67GaA7jIsas63K4uCSZpqmVx8M,31017
211
211
  ultralytics/utils/dist.py,sha256=fuiJQEnyyL-SighlI3hUlZPaaSreUl4Q39snF6OhQtI,2386
212
212
  ultralytics/utils/downloads.py,sha256=aUESyJOE2d7mJwbGECHWLR3RF8HVQPSwNH0cfmLGgdI,21999
@@ -233,9 +233,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=waZ_bRu0-qBKujTLuqonC2gx2DkgBuVnfq
233
233
  ultralytics/utils/callbacks/raytune.py,sha256=TbuZlDb721aIkh-nMozZcP2g_ttUh2cG5LUaXmept6g,728
234
234
  ultralytics/utils/callbacks/tensorboard.py,sha256=JHOEVlNQ5dYJPd4Z-EvqbXowuK5uA0p8wPgyyaIUQs0,4194
235
235
  ultralytics/utils/callbacks/wb.py,sha256=ayhT2y62AcSOacnawshATU0rWrlSFQ77mrGgBdRl3W4,7086
236
- ultralytics-8.3.65.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
- ultralytics-8.3.65.dist-info/METADATA,sha256=SdqWO5uc0DJ3VNa9e1zC08EioR-VUYxu3FkaQIVvbCM,35202
238
- ultralytics-8.3.65.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
239
- ultralytics-8.3.65.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
- ultralytics-8.3.65.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
- ultralytics-8.3.65.dist-info/RECORD,,
236
+ ultralytics-8.3.66.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
+ ultralytics-8.3.66.dist-info/METADATA,sha256=cCTTDdai2Jw3CYmdmlBFzJRbsw-KLJRoIk-dAhG_dNU,35202
238
+ ultralytics-8.3.66.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
239
+ ultralytics-8.3.66.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
+ ultralytics-8.3.66.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
+ ultralytics-8.3.66.dist-info/RECORD,,