ultralytics 8.1.39__py3-none-any.whl → 8.1.41__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.

Files changed (47) hide show
  1. ultralytics/__init__.py +1 -1
  2. ultralytics/cfg/__init__.py +3 -3
  3. ultralytics/data/augment.py +2 -2
  4. ultralytics/data/base.py +2 -2
  5. ultralytics/data/converter.py +2 -2
  6. ultralytics/data/dataset.py +4 -4
  7. ultralytics/data/loaders.py +11 -8
  8. ultralytics/data/split_dota.py +1 -1
  9. ultralytics/data/utils.py +8 -7
  10. ultralytics/engine/exporter.py +3 -3
  11. ultralytics/engine/model.py +6 -3
  12. ultralytics/engine/results.py +2 -2
  13. ultralytics/engine/trainer.py +22 -25
  14. ultralytics/engine/validator.py +2 -2
  15. ultralytics/hub/utils.py +1 -1
  16. ultralytics/models/fastsam/model.py +1 -1
  17. ultralytics/models/fastsam/prompt.py +4 -5
  18. ultralytics/models/nas/model.py +1 -1
  19. ultralytics/models/sam/model.py +1 -1
  20. ultralytics/models/sam/modules/tiny_encoder.py +1 -1
  21. ultralytics/models/yolo/classify/train.py +1 -1
  22. ultralytics/models/yolo/detect/train.py +1 -1
  23. ultralytics/models/yolo/world/train.py +16 -15
  24. ultralytics/nn/autobackend.py +5 -5
  25. ultralytics/nn/modules/conv.py +1 -1
  26. ultralytics/nn/modules/head.py +4 -4
  27. ultralytics/nn/tasks.py +1 -1
  28. ultralytics/solutions/ai_gym.py +1 -1
  29. ultralytics/solutions/heatmap.py +1 -1
  30. ultralytics/trackers/byte_tracker.py +1 -1
  31. ultralytics/trackers/track.py +1 -1
  32. ultralytics/trackers/utils/gmc.py +1 -1
  33. ultralytics/utils/__init__.py +4 -4
  34. ultralytics/utils/benchmarks.py +2 -2
  35. ultralytics/utils/callbacks/comet.py +1 -1
  36. ultralytics/utils/callbacks/mlflow.py +1 -1
  37. ultralytics/utils/checks.py +6 -4
  38. ultralytics/utils/downloads.py +2 -2
  39. ultralytics/utils/metrics.py +1 -1
  40. ultralytics/utils/plotting.py +1 -1
  41. ultralytics/utils/torch_utils.py +4 -4
  42. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/METADATA +1 -1
  43. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/RECORD +47 -47
  44. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/LICENSE +0 -0
  45. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/WHEEL +0 -0
  46. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/entry_points.txt +0 -0
  47. {ultralytics-8.1.39.dist-info → ultralytics-8.1.41.dist-info}/top_level.txt +0 -0
@@ -1,31 +1,24 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
+ import itertools
4
+
5
+ from ultralytics.data import build_yolo_dataset
3
6
  from ultralytics.models import yolo
4
7
  from ultralytics.nn.tasks import WorldModel
5
- from ultralytics.utils import DEFAULT_CFG, RANK
6
- from ultralytics.data import build_yolo_dataset
8
+ from ultralytics.utils import DEFAULT_CFG, RANK, checks
7
9
  from ultralytics.utils.torch_utils import de_parallel
8
- from ultralytics.utils.checks import check_requirements
9
- import itertools
10
-
11
- try:
12
- import clip
13
- except ImportError:
14
- check_requirements("git+https://github.com/ultralytics/CLIP.git")
15
- import clip
16
10
 
17
11
 
18
12
  def on_pretrain_routine_end(trainer):
19
13
  """Callback."""
20
- if RANK in (-1, 0):
14
+ if RANK in {-1, 0}:
21
15
  # NOTE: for evaluation
22
16
  names = [name.split("/")[0] for name in list(trainer.test_loader.dataset.data["names"].values())]
23
17
  de_parallel(trainer.ema.ema).set_classes(names, cache_clip_model=False)
24
18
  device = next(trainer.model.parameters()).device
25
- text_model, _ = clip.load("ViT-B/32", device=device)
26
- for p in text_model.parameters():
19
+ trainer.text_model, _ = trainer.clip.load("ViT-B/32", device=device)
20
+ for p in trainer.text_model.parameters():
27
21
  p.requires_grad_(False)
28
- trainer.text_model = text_model
29
22
 
30
23
 
31
24
  class WorldTrainer(yolo.detect.DetectionTrainer):
@@ -48,6 +41,14 @@ class WorldTrainer(yolo.detect.DetectionTrainer):
48
41
  overrides = {}
49
42
  super().__init__(cfg, overrides, _callbacks)
50
43
 
44
+ # Import and assign clip
45
+ try:
46
+ import clip
47
+ except ImportError:
48
+ checks.check_requirements("git+https://github.com/ultralytics/CLIP.git")
49
+ import clip
50
+ self.clip = clip
51
+
51
52
  def get_model(self, cfg=None, weights=None, verbose=True):
52
53
  """Return WorldModel initialized with specified config and weights."""
53
54
  # NOTE: This `nc` here is the max number of different text samples in one image, rather than the actual `nc`.
@@ -84,7 +85,7 @@ class WorldTrainer(yolo.detect.DetectionTrainer):
84
85
 
85
86
  # NOTE: add text features
86
87
  texts = list(itertools.chain(*batch["texts"]))
87
- text_token = clip.tokenize(texts).to(batch["img"].device)
88
+ text_token = self.clip.tokenize(texts).to(batch["img"].device)
88
89
  txt_feats = self.text_model.encode_text(text_token).to(dtype=batch["img"].dtype) # torch.float32
89
90
  txt_feats = txt_feats / txt_feats.norm(p=2, dim=-1, keepdim=True)
90
91
  batch["txt_feats"] = txt_feats.reshape(len(batch["texts"]), -1, txt_feats.shape[-1])
@@ -374,9 +374,9 @@ class AutoBackend(nn.Module):
374
374
  metadata = yaml_load(metadata)
375
375
  if metadata:
376
376
  for k, v in metadata.items():
377
- if k in ("stride", "batch"):
377
+ if k in {"stride", "batch"}:
378
378
  metadata[k] = int(v)
379
- elif k in ("imgsz", "names", "kpt_shape") and isinstance(v, str):
379
+ elif k in {"imgsz", "names", "kpt_shape"} and isinstance(v, str):
380
380
  metadata[k] = eval(v)
381
381
  stride = metadata["stride"]
382
382
  task = metadata["task"]
@@ -531,8 +531,8 @@ class AutoBackend(nn.Module):
531
531
  self.names = {i: f"class{i}" for i in range(nc)}
532
532
  else: # Lite or Edge TPU
533
533
  details = self.input_details[0]
534
- integer = details["dtype"] in (np.int8, np.int16) # is TFLite quantized int8 or int16 model
535
- if integer:
534
+ is_int = details["dtype"] in {np.int8, np.int16} # is TFLite quantized int8 or int16 model
535
+ if is_int:
536
536
  scale, zero_point = details["quantization"]
537
537
  im = (im / scale + zero_point).astype(details["dtype"]) # de-scale
538
538
  self.interpreter.set_tensor(details["index"], im)
@@ -540,7 +540,7 @@ class AutoBackend(nn.Module):
540
540
  y = []
541
541
  for output in self.output_details:
542
542
  x = self.interpreter.get_tensor(output["index"])
543
- if integer:
543
+ if is_int:
544
544
  scale, zero_point = output["quantization"]
545
545
  x = (x.astype(np.float32) - zero_point) * scale # re-scale
546
546
  if x.ndim == 3: # if task is not classification, excluding masks (ndim=4) as well
@@ -296,7 +296,7 @@ class SpatialAttention(nn.Module):
296
296
  def __init__(self, kernel_size=7):
297
297
  """Initialize Spatial-attention module with kernel size argument."""
298
298
  super().__init__()
299
- assert kernel_size in (3, 7), "kernel size must be 3 or 7"
299
+ assert kernel_size in {3, 7}, "kernel size must be 3 or 7"
300
300
  padding = 3 if kernel_size == 7 else 1
301
301
  self.cv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
302
302
  self.act = nn.Sigmoid()
@@ -54,13 +54,13 @@ class Detect(nn.Module):
54
54
  self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))
55
55
  self.shape = shape
56
56
 
57
- if self.export and self.format in ("saved_model", "pb", "tflite", "edgetpu", "tfjs"): # avoid TF FlexSplitV ops
57
+ if self.export and self.format in {"saved_model", "pb", "tflite", "edgetpu", "tfjs"}: # avoid TF FlexSplitV ops
58
58
  box = x_cat[:, : self.reg_max * 4]
59
59
  cls = x_cat[:, self.reg_max * 4 :]
60
60
  else:
61
61
  box, cls = x_cat.split((self.reg_max * 4, self.nc), 1)
62
62
 
63
- if self.export and self.format in ("tflite", "edgetpu"):
63
+ if self.export and self.format in {"tflite", "edgetpu"}:
64
64
  # Precompute normalization factor to increase numerical stability
65
65
  # See https://github.com/ultralytics/ultralytics/issues/7371
66
66
  grid_h = shape[2]
@@ -230,13 +230,13 @@ class WorldDetect(Detect):
230
230
  self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))
231
231
  self.shape = shape
232
232
 
233
- if self.export and self.format in ("saved_model", "pb", "tflite", "edgetpu", "tfjs"): # avoid TF FlexSplitV ops
233
+ if self.export and self.format in {"saved_model", "pb", "tflite", "edgetpu", "tfjs"}: # avoid TF FlexSplitV ops
234
234
  box = x_cat[:, : self.reg_max * 4]
235
235
  cls = x_cat[:, self.reg_max * 4 :]
236
236
  else:
237
237
  box, cls = x_cat.split((self.reg_max * 4, self.nc), 1)
238
238
 
239
- if self.export and self.format in ("tflite", "edgetpu"):
239
+ if self.export and self.format in {"tflite", "edgetpu"}:
240
240
  # Precompute normalization factor to increase numerical stability
241
241
  # See https://github.com/ultralytics/ultralytics/issues/7371
242
242
  grid_h = shape[2]
ultralytics/nn/tasks.py CHANGED
@@ -896,7 +896,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
896
896
  ) # num heads
897
897
 
898
898
  args = [c1, c2, *args[1:]]
899
- if m in (BottleneckCSP, C1, C2, C2f, C2fAttn, C3, C3TR, C3Ghost, C3x, RepC3):
899
+ if m in {BottleneckCSP, C1, C2, C2f, C2fAttn, C3, C3TR, C3Ghost, C3x, RepC3}:
900
900
  args.insert(2, n) # number of repeats
901
901
  n = 1
902
902
  elif m is AIFI:
@@ -81,7 +81,7 @@ class AIGym:
81
81
  self.annotator = Annotator(im0, line_width=2)
82
82
 
83
83
  for ind, k in enumerate(reversed(self.keypoints)):
84
- if self.pose_type in ["pushup", "pullup"]:
84
+ if self.pose_type in {"pushup", "pullup"}:
85
85
  self.angle[ind] = self.annotator.estimate_pose_angle(
86
86
  k[int(self.kpts_to_check[0])].cpu(),
87
87
  k[int(self.kpts_to_check[1])].cpu(),
@@ -153,7 +153,7 @@ class Heatmap:
153
153
  self.cls_txtdisplay_gap = cls_txtdisplay_gap
154
154
 
155
155
  # shape of heatmap, if not selected
156
- if self.shape not in ["circle", "rect"]:
156
+ if self.shape not in {"circle", "rect"}:
157
157
  print("Unknown shape value provided, 'circle' & 'rect' supported")
158
158
  print("Using Circular shape now")
159
159
  self.shape = "circle"
@@ -47,7 +47,7 @@ class STrack(BaseTrack):
47
47
  """Initialize new STrack instance."""
48
48
  super().__init__()
49
49
  # xywh+idx or xywha+idx
50
- assert len(xywh) in [5, 6], f"expected 5 or 6 values but got {len(xywh)}"
50
+ assert len(xywh) in {5, 6}, f"expected 5 or 6 values but got {len(xywh)}"
51
51
  self._tlwh = np.asarray(xywh2ltwh(xywh[:4]), dtype=np.float32)
52
52
  self.kalman_filter = None
53
53
  self.mean, self.covariance = None, None
@@ -31,7 +31,7 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
31
31
  tracker = check_yaml(predictor.args.tracker)
32
32
  cfg = IterableSimpleNamespace(**yaml_load(tracker))
33
33
 
34
- if cfg.tracker_type not in ["bytetrack", "botsort"]:
34
+ if cfg.tracker_type not in {"bytetrack", "botsort"}:
35
35
  raise AssertionError(f"Only 'bytetrack' and 'botsort' are supported for now, but got '{cfg.tracker_type}'")
36
36
 
37
37
  trackers = []
@@ -94,7 +94,7 @@ class GMC:
94
94
  array([[1, 2, 3],
95
95
  [4, 5, 6]])
96
96
  """
97
- if self.method in ["orb", "sift"]:
97
+ if self.method in {"orb", "sift"}:
98
98
  return self.applyFeatures(raw_frame, detections)
99
99
  elif self.method == "ecc":
100
100
  return self.applyEcc(raw_frame)
@@ -41,7 +41,7 @@ VERBOSE = str(os.getenv("YOLO_VERBOSE", True)).lower() == "true" # global verbo
41
41
  TQDM_BAR_FORMAT = "{l_bar}{bar:10}{r_bar}" if VERBOSE else None # tqdm bar format
42
42
  LOGGING_NAME = "ultralytics"
43
43
  MACOS, LINUX, WINDOWS = (platform.system() == x for x in ["Darwin", "Linux", "Windows"]) # environment booleans
44
- ARM64 = platform.machine() in ("arm64", "aarch64") # ARM64 booleans
44
+ ARM64 = platform.machine() in {"arm64", "aarch64"} # ARM64 booleans
45
45
  HELP_MSG = """
46
46
  Usage examples for running YOLOv8:
47
47
 
@@ -359,7 +359,7 @@ def yaml_load(file="data.yaml", append_filename=False):
359
359
  Returns:
360
360
  (dict): YAML data and file name.
361
361
  """
362
- assert Path(file).suffix in (".yaml", ".yml"), f"Attempting to load non-YAML file {file} with yaml_load()"
362
+ assert Path(file).suffix in {".yaml", ".yml"}, f"Attempting to load non-YAML file {file} with yaml_load()"
363
363
  with open(file, errors="ignore", encoding="utf-8") as f:
364
364
  s = f.read() # string
365
365
 
@@ -866,7 +866,7 @@ def set_sentry():
866
866
  """
867
867
  if "exc_info" in hint:
868
868
  exc_type, exc_value, tb = hint["exc_info"]
869
- if exc_type in (KeyboardInterrupt, FileNotFoundError) or "out of memory" in str(exc_value):
869
+ if exc_type in {KeyboardInterrupt, FileNotFoundError} or "out of memory" in str(exc_value):
870
870
  return None # do not send event
871
871
 
872
872
  event["tags"] = {
@@ -879,7 +879,7 @@ def set_sentry():
879
879
 
880
880
  if (
881
881
  SETTINGS["sync"]
882
- and RANK in (-1, 0)
882
+ and RANK in {-1, 0}
883
883
  and Path(ARGV[0]).name == "yolo"
884
884
  and not TESTS_RUNNING
885
885
  and ONLINE
@@ -115,7 +115,7 @@ def benchmark(
115
115
 
116
116
  # Predict
117
117
  assert model.task != "pose" or i != 7, "GraphDef Pose inference is not supported"
118
- assert i not in (9, 10), "inference not supported" # Edge TPU and TF.js are unsupported
118
+ assert i not in {9, 10}, "inference not supported" # Edge TPU and TF.js are unsupported
119
119
  assert i != 5 or platform.system() == "Darwin", "inference only supported on macOS>=10.13" # CoreML
120
120
  exported_model.predict(ASSETS / "bus.jpg", imgsz=imgsz, device=device, half=half)
121
121
 
@@ -220,7 +220,7 @@ class ProfileModels:
220
220
  output = []
221
221
  for file in files:
222
222
  engine_file = file.with_suffix(".engine")
223
- if file.suffix in (".pt", ".yaml", ".yml"):
223
+ if file.suffix in {".pt", ".yaml", ".yml"}:
224
224
  model = YOLO(str(file))
225
225
  model.fuse() # to report correct params and GFLOPs in model.info()
226
226
  model_info = model.info()
@@ -71,7 +71,7 @@ def _get_experiment_type(mode, project_name):
71
71
 
72
72
  def _create_experiment(args):
73
73
  """Ensures that the experiment object is only created in a single process during distributed training."""
74
- if RANK not in (-1, 0):
74
+ if RANK not in {-1, 0}:
75
75
  return
76
76
  try:
77
77
  comet_mode = _get_comet_mode()
@@ -108,7 +108,7 @@ def on_train_end(trainer):
108
108
  for f in trainer.save_dir.glob("*"): # log all other files in save_dir
109
109
  if f.suffix in {".png", ".jpg", ".csv", ".pt", ".yaml"}:
110
110
  mlflow.log_artifact(str(f))
111
- keep_run_active = os.environ.get("MLFLOW_KEEP_RUN_ACTIVE", "False").lower() in ("true")
111
+ keep_run_active = os.environ.get("MLFLOW_KEEP_RUN_ACTIVE", "False").lower() == "true"
112
112
  if keep_run_active:
113
113
  LOGGER.info(f"{PREFIX}mlflow run still alive, remember to close it using mlflow.end_run()")
114
114
  else:
@@ -28,6 +28,7 @@ from ultralytics.utils import (
28
28
  ONLINE,
29
29
  ROOT,
30
30
  USER_CONFIG_DIR,
31
+ Retry,
31
32
  SimpleNamespace,
32
33
  ThreadingLocked,
33
34
  TryExcept,
@@ -237,7 +238,7 @@ def check_version(
237
238
  result = False
238
239
  elif op == "!=" and c == v:
239
240
  result = False
240
- elif op in (">=", "") and not (c >= v): # if no constraint passed assume '>=required'
241
+ elif op in {">=", ""} and not (c >= v): # if no constraint passed assume '>=required'
241
242
  result = False
242
243
  elif op == "<=" and not (c <= v):
243
244
  result = False
@@ -390,7 +391,8 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
390
391
  try:
391
392
  t = time.time()
392
393
  assert is_online(), "AutoUpdate skipped (offline)"
393
- LOGGER.info(subprocess.check_output(f"pip install --no-cache {s} {cmds}", shell=True).decode())
394
+ with Retry(times=2, delay=1): # run up to 2 times with 1-second retry delay
395
+ LOGGER.info(subprocess.check_output(f"pip install --no-cache {s} {cmds}", shell=True).decode())
394
396
  dt = time.time() - t
395
397
  LOGGER.info(
396
398
  f"{prefix} AutoUpdate success ✅ {dt:.1f}s, installed {n} package{'s' * (n > 1)}: {pkgs}\n"
@@ -500,7 +502,7 @@ def check_file(file, suffix="", download=True, hard=True):
500
502
  raise FileNotFoundError(f"'{file}' does not exist")
501
503
  elif len(files) > 1 and hard:
502
504
  raise FileNotFoundError(f"Multiple files match '{file}', specify exact path: {files}")
503
- return files[0] if len(files) else [] if hard else file # return file
505
+ return files[0] if len(files) else [] # return file
504
506
 
505
507
 
506
508
  def check_yaml(file, suffix=(".yaml", ".yml"), hard=True):
@@ -632,7 +634,7 @@ def check_amp(model):
632
634
  (bool): Returns True if the AMP functionality works correctly with YOLOv8 model, else False.
633
635
  """
634
636
  device = next(model.parameters()).device # get model device
635
- if device.type in ("cpu", "mps"):
637
+ if device.type in {"cpu", "mps"}:
636
638
  return False # AMP only used on CUDA devices
637
639
 
638
640
  def amp_allclose(m, im):
@@ -356,13 +356,13 @@ def safe_download(
356
356
  raise ConnectionError(emojis(f"❌ Download failure for {url}. Retry limit reached.")) from e
357
357
  LOGGER.warning(f"⚠️ Download failure, retrying {i + 1}/{retry} {url}...")
358
358
 
359
- if unzip and f.exists() and f.suffix in ("", ".zip", ".tar", ".gz"):
359
+ if unzip and f.exists() and f.suffix in {"", ".zip", ".tar", ".gz"}:
360
360
  from zipfile import is_zipfile
361
361
 
362
362
  unzip_dir = (dir or f.parent).resolve() # unzip to dir if provided else unzip in place
363
363
  if is_zipfile(f):
364
364
  unzip_dir = unzip_file(file=f, path=unzip_dir, exist_ok=exist_ok, progress=progress) # unzip
365
- elif f.suffix in (".tar", ".gz"):
365
+ elif f.suffix in {".tar", ".gz"}:
366
366
  LOGGER.info(f"Unzipping {f} to {unzip_dir}...")
367
367
  subprocess.run(["tar", "xf" if f.suffix == ".tar" else "xfz", f, "--directory", unzip_dir], check=True)
368
368
  if delete:
@@ -298,7 +298,7 @@ class ConfusionMatrix:
298
298
  self.task = task
299
299
  self.matrix = np.zeros((nc + 1, nc + 1)) if self.task == "detect" else np.zeros((nc, nc))
300
300
  self.nc = nc # number of classes
301
- self.conf = 0.25 if conf in (None, 0.001) else conf # apply 0.25 if default val conf is passed
301
+ self.conf = 0.25 if conf in {None, 0.001} else conf # apply 0.25 if default val conf is passed
302
302
  self.iou_thres = iou_thres
303
303
 
304
304
  def process_cls_preds(self, preds, targets):
@@ -904,7 +904,7 @@ def plot_results(file="path/to/results.csv", dir="", segment=False, pose=False,
904
904
  ax[i].plot(x, y, marker=".", label=f.stem, linewidth=2, markersize=8) # actual results
905
905
  ax[i].plot(x, gaussian_filter1d(y, sigma=3), ":", label="smooth", linewidth=2) # smoothing line
906
906
  ax[i].set_title(s[j], fontsize=12)
907
- # if j in [8, 9, 10]: # share train and val loss y axes
907
+ # if j in {8, 9, 10}: # share train and val loss y axes
908
908
  # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5])
909
909
  except Exception as e:
910
910
  LOGGER.warning(f"WARNING: Plotting error for {f}: {e}")
@@ -37,7 +37,7 @@ TORCHVISION_0_13 = check_version(torchvision.__version__, "0.13.0")
37
37
  def torch_distributed_zero_first(local_rank: int):
38
38
  """Decorator to make all processes in distributed training wait for each local_master to do something."""
39
39
  initialized = torch.distributed.is_available() and torch.distributed.is_initialized()
40
- if initialized and local_rank not in (-1, 0):
40
+ if initialized and local_rank not in {-1, 0}:
41
41
  dist.barrier(device_ids=[local_rank])
42
42
  yield
43
43
  if initialized and local_rank == 0:
@@ -109,7 +109,7 @@ def select_device(device="", batch=0, newline=False, verbose=True):
109
109
  for remove in "cuda:", "none", "(", ")", "[", "]", "'", " ":
110
110
  device = device.replace(remove, "") # to string, 'cuda:0' -> '0' and '(0, 1)' -> '0,1'
111
111
  cpu = device == "cpu"
112
- mps = device in ("mps", "mps:0") # Apple Metal Performance Shaders (MPS)
112
+ mps = device in {"mps", "mps:0"} # Apple Metal Performance Shaders (MPS)
113
113
  if cpu or mps:
114
114
  os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # force torch.cuda.is_available() = False
115
115
  elif device: # non-cpu device requested
@@ -347,7 +347,7 @@ def initialize_weights(model):
347
347
  elif t is nn.BatchNorm2d:
348
348
  m.eps = 1e-3
349
349
  m.momentum = 0.03
350
- elif t in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU]:
350
+ elif t in {nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU}:
351
351
  m.inplace = True
352
352
 
353
353
 
@@ -513,7 +513,7 @@ def convert_optimizer_state_dict_to_fp16(state_dict):
513
513
  """
514
514
  for state in state_dict["state"].values():
515
515
  for k, v in state.items():
516
- if isinstance(v, torch.Tensor) and v.dtype is torch.float32:
516
+ if k != "step" and isinstance(v, torch.Tensor) and v.dtype is torch.float32:
517
517
  state[k] = v.half()
518
518
 
519
519
  return state_dict
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.39
3
+ Version: 8.1.41
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -1,7 +1,7 @@
1
- ultralytics/__init__.py,sha256=y39QHT7q6JTmHajqZC2jADfLYGrDHkqKw8rTwpfQIhY,625
1
+ ultralytics/__init__.py,sha256=lFvHnsBspb8aDTRHlGUm58PT7hhIa8sou9hVr7MGudg,625
2
2
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
3
3
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
4
- ultralytics/cfg/__init__.py,sha256=TrOyD2ONqvSvrIX_AdPzfcIazmGBRBlQ4zIkwkKxiKM,21316
4
+ ultralytics/cfg/__init__.py,sha256=ugSQqHCg31bAE9rwhVrnLMNzKLShr9JxDFcN6kBTbUk,21316
5
5
  ultralytics/cfg/default.yaml,sha256=2DFD7eZJiKdnUB3eQPIxo8nV6TG4SiZzdaBJnD5Aw2k,8213
6
6
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
7
7
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=YDsyFPI6F6-OQXLBM3hOXo3vADYREwZzmMQfJNdpWyM,1193
@@ -62,40 +62,40 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q
62
62
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
63
63
  ultralytics/data/__init__.py,sha256=bGJ8oEBheIj8tQ2q3d7JqiVJUT4Ft9lXkDXOvBUj6Q0,637
64
64
  ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
65
- ultralytics/data/augment.py,sha256=f--8PyJmgpAI2Z0-YWbbLd2i28bEFY8I1GbJCwabCe8,57388
66
- ultralytics/data/base.py,sha256=AM3JUQKLyz5njw53o043-qb3aOUzWUvZCXBaE32joOs,13432
65
+ ultralytics/data/augment.py,sha256=tU1HGE7Dm-cjPvXfKyNpThzYCGO54RgcN3WR0SgjfpU,57388
66
+ ultralytics/data/base.py,sha256=8DwF1_H0GIdTbF6iSm-763TK3ez3El9aZVix0h-X-c0,13470
67
67
  ultralytics/data/build.py,sha256=CgUq3g3s5Kc6UXDjCkx-rfmK2biRqhGHZWY21tnJOk0,7265
68
- ultralytics/data/converter.py,sha256=WlRyw1quyrpXSlLakweeybejHhuT_eq72gu3JE2lexg,17527
69
- ultralytics/data/dataset.py,sha256=4FdctQtAc3KV-j3w8j4VRQgo-nPdwcK28sl0Z7KG1z4,22011
70
- ultralytics/data/loaders.py,sha256=zrfxXQ5CMFXKTR_FUPk3oKHwXruKmoXfuJq4B0vcSyA,23045
71
- ultralytics/data/split_dota.py,sha256=1q2FZC0SE4deRpXUSbKTbUAjX9VeejUIFM2DBLF8Cco,9961
72
- ultralytics/data/utils.py,sha256=10a3jQCzwNo31xoFmVYjYHP7-8A1g3DxLhtTuKSCH_A,30738
68
+ ultralytics/data/converter.py,sha256=Y0V4xuCqge55gXbXHhWZij52zx27BFAKCspyxrg_MFs,17527
69
+ ultralytics/data/dataset.py,sha256=THxFiJdawrdrC9MB4Moayml70gQ6ophAa_3F5_V_jlk,22011
70
+ ultralytics/data/loaders.py,sha256=2GOYHELK9nh7RlIcqUqg3kuRgWUvXT43mI2P_XOtxCA,23146
71
+ ultralytics/data/split_dota.py,sha256=PQdkwwlFtLKhWIrbToshSekXGdgbrbYMN6hM4ujfa7o,10010
72
+ ultralytics/data/utils.py,sha256=7zaL2N9Hp3ki1EI31NuthMVJS9uEcakDjoN-2t7Amw4,30869
73
73
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
74
74
  ultralytics/data/explorer/explorer.py,sha256=9i_TlOfC87m2_tL4UR6ZjRb_T_mZNCMLIYMVWtD4pkY,18782
75
75
  ultralytics/data/explorer/utils.py,sha256=a6ugY8rKpFM8dIRcUwRyjRkRJ-zXEwe-NiJr6CLVlus,7041
76
76
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
77
77
  ultralytics/data/explorer/gui/dash.py,sha256=a2s8oJKI8kqnWEcIyqCCzvIyvM_uZmfMaxrOdwmiq7k,10044
78
78
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
79
- ultralytics/engine/exporter.py,sha256=-soZ5dbMnxFNP24lbm3XZ6Gr8rB8JlDZLwYRfEgthwA,53790
80
- ultralytics/engine/model.py,sha256=MImz7C2PGzZGN80wGCEbsXzZ03cd23REStbZdE8-VSo,39541
79
+ ultralytics/engine/exporter.py,sha256=ZQNF6SUj0NlgUCr9Tbj2TQJxLrgEJJPfdyo4LtL_WJA,53790
80
+ ultralytics/engine/model.py,sha256=tCU9z_cQhdJTwUUce3a7rSeCWkUgJO4RfHNT29pB41E,39829
81
81
  ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
82
- ultralytics/engine/results.py,sha256=D4wZ9OsmBrEQWCkfOeUn_oagXLqu3SxRZYlpYkDDLH8,30667
83
- ultralytics/engine/trainer.py,sha256=rI8DczolV2fRngYymfZoeHJ6ZxeDwaGYoqTav7bfYqg,34969
82
+ ultralytics/engine/results.py,sha256=MvrOBrBlRF7kbL-QwysMf9mIDy_lwQBTTYvy1x1FMME,30667
83
+ ultralytics/engine/trainer.py,sha256=JIyEh2HYLuFJI2bGRd8OOFe9ZlmEAas72Ce-WqaKPV8,34942
84
84
  ultralytics/engine/tuner.py,sha256=zttHrQkvXuUVTB7jmM4Z85GgIsQ2hjpW9YrMccrQ4wo,11829
85
- ultralytics/engine/validator.py,sha256=rcmJSGrsAfj-ryQktv6-fe0hAT7Z8CLNhUUUf0VsPYI,14645
85
+ ultralytics/engine/validator.py,sha256=p0irfLSZa3-0TtcuGheI8kNbzPUqs_UM3TMK4VRUGK4,14645
86
86
  ultralytics/hub/__init__.py,sha256=U4j-2QPdwSDlxw6RgFYnnJXOoIzLtwke4TkY2A8q4ws,5068
87
87
  ultralytics/hub/auth.py,sha256=hc97pJ01OfI8oQ7uw3ubKbiVCDSGxSGJHoo9W6hrrNw,5403
88
88
  ultralytics/hub/session.py,sha256=kFwufDIY7TeV79DdEQBKYrU5883WxgCrpJoTr1S5QuE,14649
89
- ultralytics/hub/utils.py,sha256=tU_MfrT_mwyo0D7ihWe5vwBQYv_mS_U3ys-Zw8aCPa0,9729
89
+ ultralytics/hub/utils.py,sha256=U0Bd-cwc1DvHwmM1CWB7Fr4MwfPi9SkF1tPUnHyy3qc,9729
90
90
  ultralytics/models/__init__.py,sha256=xrzn2dcLBG6Ujxll8LtlTIblPar2gjNhAwjAQg7u8sk,197
91
91
  ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
92
- ultralytics/models/fastsam/model.py,sha256=2b4HEcl798xbPRceXEYTu5YoBe9zJJA4BaVzH1KAM3Q,1054
92
+ ultralytics/models/fastsam/model.py,sha256=yOf-byvFxafXYTEoc9j1dYnE2XFNErRYSnroyGxkW7I,1054
93
93
  ultralytics/models/fastsam/predict.py,sha256=0WHUFrqHUNy1cTNpLKsN0FKqLKCvr7fHU6pp91_QVg0,4121
94
- ultralytics/models/fastsam/prompt.py,sha256=Tk8qM5kenOujuhOl6SZHCxJpWDcUGi2RTte8LwKUowQ,16170
94
+ ultralytics/models/fastsam/prompt.py,sha256=H-EtgJAz2I0iSEVzNEw_DdhBdELxzGZ2FnL0dvxssf0,16132
95
95
  ultralytics/models/fastsam/utils.py,sha256=r-b362Wb7P2ZAlOwWckPJM6HLvg-eFDDz4wkA0ymLd0,2157
96
96
  ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
97
97
  ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
98
- ultralytics/models/nas/model.py,sha256=Nr1YHj0YQkBITp3xVVGliEcbrjpZemtBt0crz1h63qo,2864
98
+ ultralytics/models/nas/model.py,sha256=roo4H9YcDX2s-qxxoIHTJiueNSMeul2F0scB5WUYlPs,2864
99
99
  ultralytics/models/nas/predict.py,sha256=O7f92KE6hi5DENTRzXiMsm-qK-ndVoO1Bs3dugp8aLA,2136
100
100
  ultralytics/models/nas/val.py,sha256=u35kVTVgGxK_rbHytUvFB4F3_nZn4MPv3PbZLFWSmkQ,1680
101
101
  ultralytics/models/rtdetr/__init__.py,sha256=AZga1C3qlGTtgpAupDW4doijq5aZlQeF8e55_DP2Uas,197
@@ -106,13 +106,13 @@ ultralytics/models/rtdetr/val.py,sha256=6bNhHl_6JbpjuW4nlaojjDgmhbUNJy0J5Qz8FXZI
106
106
  ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
107
107
  ultralytics/models/sam/amg.py,sha256=MsKSRS2SieZK_n-m2ICk1QpcYogl5mofcsVa-4FXYvo,7935
108
108
  ultralytics/models/sam/build.py,sha256=jJvloRbPwHvSnVWwM3pEdzpM5MdIcEHbRaqQk_S9lG8,4943
109
- ultralytics/models/sam/model.py,sha256=yLIjB00UZ6WDkcRBXtUmwmu8gTIsKyTdKsLAxI1SeoM,4706
109
+ ultralytics/models/sam/model.py,sha256=H87wexHJ84wbtfKVrZe6I-VuLlhI8h6XeNpxe0D-Sgc,4706
110
110
  ultralytics/models/sam/predict.py,sha256=C8dErpMefMwQvReJSvxRMaTala6OJbAckrGO3m508kI,23632
111
111
  ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
112
112
  ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
113
113
  ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
114
114
  ultralytics/models/sam/modules/sam.py,sha256=zC4l4kcrIQD_ekczjl2l6dgaABqqjROZxQ-FDb-itt0,2783
115
- ultralytics/models/sam/modules/tiny_encoder.py,sha256=cPMmQDJA3BkM0yF97BdGLHkHig-8HPH7dYiOhaZi_ZI,29135
115
+ ultralytics/models/sam/modules/tiny_encoder.py,sha256=kxEh4nZn5lwRYTSuauEQNg7uzibuKiLDzzwx5MD5WMY,29135
116
116
  ultralytics/models/sam/modules/transformer.py,sha256=-wboK4gNKOJMP8J8ACN2JoK-xze40NZG696HsxdYObs,11170
117
117
  ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
118
118
  ultralytics/models/utils/loss.py,sha256=IMzcnDwwkgO9F6GDKVxrDdVdhUX_7d9uY4tX-AgtT0g,15134
@@ -121,11 +121,11 @@ ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xsk
121
121
  ultralytics/models/yolo/model.py,sha256=PJwBkdDkgyPuQBuIcAx5uDb78JwYg56nFeYMyzBY_nY,3991
122
122
  ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
123
123
  ultralytics/models/yolo/classify/predict.py,sha256=wFY4GIlWxe7idMndEw1RnDI63o53MTfiHKz0s2fOjAY,2513
124
- ultralytics/models/yolo/classify/train.py,sha256=BY_tGilj0w0OEgdvA9FTa-_lIcdt1w9lOGVFEai9yzg,6838
124
+ ultralytics/models/yolo/classify/train.py,sha256=Q5gN5Zq0mVV7DsLLBcGNhrWhoVYjJlqwTPSotbR87-8,6838
125
125
  ultralytics/models/yolo/classify/val.py,sha256=EP_hjRExXgdI4xojTKvj_YeNdaz_i2CoUzorl55r0OA,4861
126
126
  ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
127
127
  ultralytics/models/yolo/detect/predict.py,sha256=_a9vH3DmKFY6eeztFTdj3nkfu_MKG6n7zb5rRKGjs9I,1510
128
- ultralytics/models/yolo/detect/train.py,sha256=zvxmevSiWNq8rdlGYeM3SZkMCcFh0qFQN9HjwxcGjJw,6306
128
+ ultralytics/models/yolo/detect/train.py,sha256=8Ulq1SPNLrkOqXj0Yt5zNR1c_Xl_QnOjllCdqBHUMds,6353
129
129
  ultralytics/models/yolo/detect/val.py,sha256=KznQpsllz3_4YAv2kSub2y75q5XQXz0UHay3zta2P30,14416
130
130
  ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
131
131
  ultralytics/models/yolo/obb/predict.py,sha256=prfDzhwuVHKF6CRwnFVBA-YFI5q7U7NEQwITGHmB2Ow,2037
@@ -140,64 +140,64 @@ ultralytics/models/yolo/segment/predict.py,sha256=xtA0ZZyuh9WVpX7zZFdAeCkWnxhQ30
140
140
  ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBINBkI9K8-3sQ,2298
141
141
  ultralytics/models/yolo/segment/val.py,sha256=njiF6RWddS-HOWxVvlk5PXRw6UOgEt_HEOZVPF7rruQ,11745
142
142
  ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2bmETJUhsVTBI,103
143
- ultralytics/models/yolo/world/train.py,sha256=cgglmnMe1XiQdr7Z_8f-ptcUoGNSEly2At7IwuYsGoA,3635
143
+ ultralytics/models/yolo/world/train.py,sha256=acYN2-onL69LrL4av6_hY2r5AY0urC0WViDstn7npfI,3686
144
144
  ultralytics/models/yolo/world/train_world.py,sha256=5IXNJU9otTH0e5_Lo0Fyu-rmVgkPWuSDOrqAL9hFu3s,4805
145
145
  ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
146
- ultralytics/nn/autobackend.py,sha256=veArcvRc6pu4MWarMaRnSdn-Gp1shbcSg3Z8NuuqRjg,28719
147
- ultralytics/nn/tasks.py,sha256=EV3m8OBsg7bbElSvqhNR-7l_LVsTQ6h_GjIJ8fdg3co,43623
146
+ ultralytics/nn/autobackend.py,sha256=QtPDtQfUNnTGiW6yJnWGNWR_aqkYDFIevyx22uC2bdI,28716
147
+ ultralytics/nn/tasks.py,sha256=UKPA4T-QX50qUTemlKO2FB_vR9U19E6K5KVAriFs-xY,43623
148
148
  ultralytics/nn/modules/__init__.py,sha256=Ga3MDpwX6DeI7VSH8joti5uleP4mgkQGolbe8RLZ2T8,2326
149
149
  ultralytics/nn/modules/block.py,sha256=smIz3oNTDA7UKrAH5FfSMh08C12-avgWTeIkbgZIv18,25251
150
- ultralytics/nn/modules/conv.py,sha256=ndUYNL2f9DK41y1vVbtEusMByXy-LMMsBKlcWjRQ9Z8,12722
151
- ultralytics/nn/modules/head.py,sha256=8w34JeojQT3-kGiaMhFLRYVa0y83daDOulzI_mR7RsI,22337
150
+ ultralytics/nn/modules/conv.py,sha256=Ywe87IhuaS22mR2JJ9xjnW8Sb-m7WTjxuqIxV_Dv8lI,12722
151
+ ultralytics/nn/modules/head.py,sha256=djW6YGN70mFYGDkMFV1xj1WZJtA9yKsNxmtnPVSxukY,22337
152
152
  ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
153
153
  ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQjhU,3196
154
154
  ultralytics/solutions/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
155
- ultralytics/solutions/ai_gym.py,sha256=LqOg7XKxuDlBAXFhSLQAIVTMxsQxoj7BumiHeVrjLMc,5696
155
+ ultralytics/solutions/ai_gym.py,sha256=IZHpvmNyEQT_aqMTrA5sIjCsl3_5Zl2WG31HxGT6KV4,5696
156
156
  ultralytics/solutions/distance_calculation.py,sha256=N1QB5uDG_6sp8jD5uSwp_NTPmyP4UCqJm9G2lNrgpr8,6334
157
- ultralytics/solutions/heatmap.py,sha256=J_Tt9g0fura0IcEFo4ch4wo2W0Ft5pSxUs-xTxDHOsc,12902
157
+ ultralytics/solutions/heatmap.py,sha256=PjRI0PRhPwO1RE-NSDXlbvgCXTnGtD-HvI0HMKwUOkE,12902
158
158
  ultralytics/solutions/object_counter.py,sha256=LOExuFduOKJcs94pWpv27jgLAZJxHDsmxouXKVBS10s,12058
159
159
  ultralytics/solutions/speed_estimation.py,sha256=lvaU-F8f3V4KFVKFaNS7isIdYtMSFjh_zF9gl0Mals8,6714
160
160
  ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
161
161
  ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
162
162
  ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
163
- ultralytics/trackers/byte_tracker.py,sha256=z6z6jrhj8WeAP2azWZkhMUZET6g_8XMkMfdNpJg7jus,18871
164
- ultralytics/trackers/track.py,sha256=ayktOpi7SmaONsWqYXebrLQlVgDGuC9GNhmCBsDnLtI,3462
163
+ ultralytics/trackers/byte_tracker.py,sha256=OH1AfBZ7TXzjRPyvrsaWnbqI1CqWxdErMrGazKJ5GtM,18871
164
+ ultralytics/trackers/track.py,sha256=Brp7G1le2kLs-8PTOzDllpUBW6ps_Wta2qx2GUPI7TU,3462
165
165
  ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
166
- ultralytics/trackers/utils/gmc.py,sha256=fNn1U-981W4Bm6JNo7ak2URJ5OtIcLDXbCplEx4Fr4A,13688
166
+ ultralytics/trackers/utils/gmc.py,sha256=vwcPA1n5zjPaBGhCDt8ItN7rq_6Sczsjn4gsXJfRylU,13688
167
167
  ultralytics/trackers/utils/kalman_filter.py,sha256=JN1sAcfJZy8fTZxc8w3jUJnGQDKtgAL__p4nTR6RM2I,15168
168
168
  ultralytics/trackers/utils/matching.py,sha256=c_pthBfu9sWeMVYe-dSecdWcQxUey-mQT2yMVsFH3VQ,5404
169
- ultralytics/utils/__init__.py,sha256=OypNCPSubkIQQQbLn6GNBbyi63MNmzpPar5nJ-VvfKg,37539
169
+ ultralytics/utils/__init__.py,sha256=ChS67z-V8SQDK43FWu1hfDJCLp2cLitLP4HCQtVJKY8,37539
170
170
  ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
171
- ultralytics/utils/benchmarks.py,sha256=cj_sztcI-hzfvRX8vzfXo4wmQe2CuQUcDHBO9THBbco,18285
172
- ultralytics/utils/checks.py,sha256=nzWNEfNci6rKC9x9ZYXRPJtK2vvvI7YKKZHROMUSsb0,27940
171
+ ultralytics/utils/benchmarks.py,sha256=fpNWdrty1ULKP3jHFrRNln_o9gIT03F4KOE5xPuy0WI,18285
172
+ ultralytics/utils/checks.py,sha256=OtBD-U90qsiYGSti7xq2LlhjbtgKbye05fJ4cgCst7s,28030
173
173
  ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
174
- ultralytics/utils/downloads.py,sha256=IVuwBodagj7GOGnzy868TBq4TC8O2d9TlV94_Uzi_KA,21496
174
+ ultralytics/utils/downloads.py,sha256=j1S27awWiLTt1qC9l53WqH_BilM13JHLSVmQ2xFqh-4,21496
175
175
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
176
176
  ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
177
177
  ultralytics/utils/instance.py,sha256=fPClvPPtTk8VeXWiRv90DrFk1j1lTUKdYJtpZKUDDtA,15575
178
178
  ultralytics/utils/loss.py,sha256=lOFBx-lKn-aGHUIPTb1NQefXiNot07egNx7qKErChpU,32716
179
- ultralytics/utils/metrics.py,sha256=eb_3cTHyTk65nJRIb30Mr-9Q1RZ2OdKDusFPpPr4sHM,53473
179
+ ultralytics/utils/metrics.py,sha256=xKcQFjkrOpA5JtlC9K9F3BF40h09ejC8w0jKSbR3gCE,53473
180
180
  ultralytics/utils/ops.py,sha256=GFe_tx8MVKT56xelbAuQjiJ28ohpzARpD6BzGyJ1yMk,33264
181
181
  ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
182
- ultralytics/utils/plotting.py,sha256=55V4aLduFu4ZHxNUhbekh7TmyQl7PVnOtZPb-DE7UTU,45077
182
+ ultralytics/utils/plotting.py,sha256=ILz1jEpmMQxeAdEHQ-E66XEJbsyYZqWhgQpLhDNpXvk,45077
183
183
  ultralytics/utils/tal.py,sha256=xuIyryUjaaYHkHPG9GvBwh1xxN2Hq4y3hXOtuERehwY,16017
184
- ultralytics/utils/torch_utils.py,sha256=UKNSTPHUlX895vXEbgHk00iA209faOzk_c_-533yF2A,25743
184
+ ultralytics/utils/torch_utils.py,sha256=b6SgmqhVr8qW8S9c_XoHNbHTy9Tm52_MCl6iK6UKt0U,25759
185
185
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
186
186
  ultralytics/utils/tuner.py,sha256=JhvBp6haKA6eqpNPpGJzzjjCmPxBx5phk9kHmt_jppw,6171
187
187
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
188
188
  ultralytics/utils/callbacks/base.py,sha256=sOe3JvyBFmRwVZ8_Q03u7JwTeOOm9CI4s9-UEhnG0xA,5777
189
189
  ultralytics/utils/callbacks/clearml.py,sha256=K7bDf5tS8xL4KeFMkoVDL2kKkil3f4qoKy8KfZkD854,5897
190
- ultralytics/utils/callbacks/comet.py,sha256=9mLgOprENliphnxfd8iTwtkdhS6eR7J7-q4YWaHL0So,13744
190
+ ultralytics/utils/callbacks/comet.py,sha256=QR3-9f0L_W7nZWWg_OEN7t8La2JotapSS-CnNYVjCdk,13744
191
191
  ultralytics/utils/callbacks/dvc.py,sha256=WIClMsuvhiiyrwRv5BsZLxjsxYNJ3Y8Vq7zN0Bthtro,5045
192
192
  ultralytics/utils/callbacks/hub.py,sha256=2xebyUL92j3OZwMmL80kdvHrMizqaaqXBe5oSXJRKdA,3621
193
- ultralytics/utils/callbacks/mlflow.py,sha256=G0WgpoTCeubKSY0Zp4I8h5PbnajAojU83e84bQFoMDI,5335
193
+ ultralytics/utils/callbacks/mlflow.py,sha256=Wr5Kju9GFdwGJXJKvkPJDCZH6KiPF9EUxKPk08DBttY,5333
194
194
  ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyzC5q7p4ipQ,3756
195
195
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
196
196
  ultralytics/utils/callbacks/tensorboard.py,sha256=hRmWjbqdA4RNaLuSZznuDcpOBW-_-_Ga0u-B8UU-7ZI,4134
197
197
  ultralytics/utils/callbacks/wb.py,sha256=4QI81nHdzgwhXHlmTiRxLqunvkKakLXYUhHTUY1ZeHA,6635
198
- ultralytics-8.1.39.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
199
- ultralytics-8.1.39.dist-info/METADATA,sha256=qp0Z1FXHXEXzDew87rR0g2keaN_4wioJVH3pnFJ8O54,40330
200
- ultralytics-8.1.39.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
201
- ultralytics-8.1.39.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
202
- ultralytics-8.1.39.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
203
- ultralytics-8.1.39.dist-info/RECORD,,
198
+ ultralytics-8.1.41.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
199
+ ultralytics-8.1.41.dist-info/METADATA,sha256=1ZvyClcBCC17dlE6SKdJsvK9xiVdo8V2Ws5Y5bR1Ovo,40330
200
+ ultralytics-8.1.41.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
201
+ ultralytics-8.1.41.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
202
+ ultralytics-8.1.41.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
203
+ ultralytics-8.1.41.dist-info/RECORD,,