ultralytics 8.2.64__py3-none-any.whl → 8.2.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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.64"
3
+ __version__ = "8.2.66"
4
4
 
5
5
  import os
6
6
 
@@ -431,6 +431,12 @@ class ClassificationDataset:
431
431
  self.samples = self.samples[: round(len(self.samples) * args.fraction)]
432
432
  self.prefix = colorstr(f"{prefix}: ") if prefix else ""
433
433
  self.cache_ram = args.cache is True or str(args.cache).lower() == "ram" # cache images into RAM
434
+ if self.cache_ram:
435
+ LOGGER.warning(
436
+ "WARNING ⚠️ Classification `cache_ram` training has known memory leak in "
437
+ "https://github.com/ultralytics/ultralytics/issues/9824, setting `cache_ram=False`."
438
+ )
439
+ self.cache_ram = False
434
440
  self.cache_disk = str(args.cache).lower() == "disk" # cache images on hard drive as uncompressed *.npy files
435
441
  self.samples = self.verify_images() # filter out bad images
436
442
  self.samples = [list(x) + [Path(x[0]).with_suffix(".npy"), None] for x in self.samples] # file, index, npy, im
@@ -545,7 +545,7 @@ def get_best_youtube_url(url, method="pytube"):
545
545
  """
546
546
  if method == "pytube":
547
547
  # Switched from pytube to pytubefix to resolve https://github.com/pytube/pytube/issues/1954
548
- check_requirements("pytubefix==6.3.4") # bug in 6.4.2 https://github.com/JuanBindez/pytubefix/issues/123
548
+ check_requirements("pytubefix>=6.5.2")
549
549
  from pytubefix import YouTube
550
550
 
551
551
  streams = YouTube(url).streams.filter(file_extension="mp4", only_video=True)
@@ -17,6 +17,7 @@ from ultralytics.utils import (
17
17
  DEFAULT_CFG_DICT,
18
18
  LOGGER,
19
19
  RANK,
20
+ SETTINGS,
20
21
  callbacks,
21
22
  checks,
22
23
  emojis,
@@ -286,7 +287,7 @@ class Model(nn.Module):
286
287
  >>> model._load('path/to/weights.pth', task='detect')
287
288
  """
288
289
  if weights.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")):
289
- weights = checks.check_file(weights) # automatically download and return local filename
290
+ weights = checks.check_file(weights, download_dir=SETTINGS["weights_dir"]) # download and return local file
290
291
  weights = checks.check_model_file_from_stem(weights) # add suffix, i.e. yolov8n -> yolov8n.pt
291
292
 
292
293
  if Path(weights).suffix == ".pt":
@@ -41,7 +41,6 @@ from ultralytics.utils.checks import check_amp, check_file, check_imgsz, check_m
41
41
  from ultralytics.utils.dist import ddp_cleanup, generate_ddp_command
42
42
  from ultralytics.utils.files import get_latest_run
43
43
  from ultralytics.utils.torch_utils import (
44
- TORCH_1_13,
45
44
  EarlyStopping,
46
45
  ModelEMA,
47
46
  autocast,
@@ -266,11 +265,7 @@ class BaseTrainer:
266
265
  if RANK > -1 and world_size > 1: # DDP
267
266
  dist.broadcast(self.amp, src=0) # broadcast the tensor from rank 0 to all other ranks (returns None)
268
267
  self.amp = bool(self.amp) # as boolean
269
- self.scaler = (
270
- torch.amp.GradScaler("cuda", enabled=self.amp)
271
- if TORCH_1_13
272
- else torch.cuda.amp.GradScaler(enabled=self.amp)
273
- )
268
+ self.scaler = torch.cuda.amp.GradScaler(enabled=self.amp)
274
269
  if world_size > 1:
275
270
  self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK], find_unused_parameters=True)
276
271
 
@@ -512,7 +507,7 @@ class BaseTrainer:
512
507
  self.last.write_bytes(serialized_ckpt) # save last.pt
513
508
  if self.best_fitness == self.fitness:
514
509
  self.best.write_bytes(serialized_ckpt) # save best.pt
515
- if (self.save_period > 0) and (self.epoch > 0) and (self.epoch % self.save_period == 0):
510
+ if (self.save_period > 0) and (self.epoch % self.save_period == 0):
516
511
  (self.wdir / f"epoch{self.epoch}.pt").write_bytes(serialized_ckpt) # save epoch, i.e. 'epoch3.pt'
517
512
 
518
513
  def get_dataset(self):
@@ -48,6 +48,7 @@ class HUBTrainingSession:
48
48
  self.timers = {} # holds timers in ultralytics/utils/callbacks/hub.py
49
49
  self.model = None
50
50
  self.model_url = None
51
+ self.model_file = None
51
52
 
52
53
  # Parse input
53
54
  api_key, model_id, self.filename = self._parse_identifier(identifier)
@@ -91,10 +92,13 @@ class HUBTrainingSession:
91
92
  raise ValueError(emojis("❌ The specified HUB model does not exist")) # TODO: improve error handling
92
93
 
93
94
  self.model_url = f"{HUB_WEB_ROOT}/models/{self.model.id}"
95
+ if self.model.is_trained():
96
+ print(emojis(f"Loading trained HUB model {self.model_url} 🚀"))
97
+ self.model_file = self.model.get_weights_url("best")
98
+ return
94
99
 
100
+ # Set training args and start heartbeats for HUB to monitor agent
95
101
  self._set_train_args()
96
-
97
- # Start heartbeats for HUB to monitor agent
98
102
  self.model.start_heartbeat(self.rate_limits["heartbeat"])
99
103
  LOGGER.info(f"{PREFIX}View model at {self.model_url} 🚀")
100
104
 
@@ -195,8 +199,6 @@ class HUBTrainingSession:
195
199
  ValueError: If the model is already trained, if required dataset information is missing, or if there are
196
200
  issues with the provided training arguments.
197
201
  """
198
- if self.model.is_trained():
199
- raise ValueError(emojis(f"Model is already trained and uploaded to {self.model_url} 🚀"))
200
202
 
201
203
  if self.model.is_resumable():
202
204
  # Model has saved weights
@@ -97,7 +97,7 @@ class DetectionValidator(BaseValidator):
97
97
  self.args.iou,
98
98
  labels=self.lb,
99
99
  multi_label=True,
100
- agnostic=self.args.single_cls,
100
+ agnostic=self.args.single_cls or self.args.agnostic_nms,
101
101
  max_det=self.args.max_det,
102
102
  )
103
103
 
@@ -0,0 +1,22 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+ """Activation modules."""
3
+
4
+ import torch
5
+ import torch.nn as nn
6
+
7
+
8
+ class AGLU(nn.Module):
9
+ """Unified activation function module from https://github.com/kostas1515/AGLU."""
10
+
11
+ def __init__(self, device=None, dtype=None) -> None:
12
+ """Initialize the Unified activation function."""
13
+ super().__init__()
14
+ self.act = nn.Softplus(beta=-1.0)
15
+ self.lambd = nn.Parameter(nn.init.uniform_(torch.empty(1, device=device, dtype=dtype))) # lambda parameter
16
+ self.kappa = nn.Parameter(nn.init.uniform_(torch.empty(1, device=device, dtype=dtype))) # kappa parameter
17
+
18
+ def forward(self, x: torch.Tensor) -> torch.Tensor:
19
+ """Compute the forward pass of the Unified activation function."""
20
+ lam = torch.clamp(self.lambd, min=0.0001)
21
+ y = torch.exp((1 / lam) * self.act((self.kappa * x) - torch.log(lam)))
22
+ return y # for AGLU simply return y * input
ultralytics/nn/tasks.py CHANGED
@@ -66,13 +66,13 @@ from ultralytics.utils.loss import (
66
66
  v8PoseLoss,
67
67
  v8SegmentationLoss,
68
68
  )
69
+ from ultralytics.utils.ops import make_divisible
69
70
  from ultralytics.utils.plotting import feature_visualization
70
71
  from ultralytics.utils.torch_utils import (
71
72
  fuse_conv_and_bn,
72
73
  fuse_deconv_and_bn,
73
74
  initialize_weights,
74
75
  intersect_dicts,
75
- make_divisible,
76
76
  model_info,
77
77
  scale_img,
78
78
  time_sync,
@@ -484,7 +484,7 @@ def check_model_file_from_stem(model="yolov8n"):
484
484
  return model
485
485
 
486
486
 
487
- def check_file(file, suffix="", download=True, hard=True):
487
+ def check_file(file, suffix="", download=True, download_dir=".", hard=True):
488
488
  """Search/download file (if necessary) and return path."""
489
489
  check_suffix(file, suffix) # optional
490
490
  file = str(file).strip() # convert to string and strip spaces
@@ -497,12 +497,12 @@ def check_file(file, suffix="", download=True, hard=True):
497
497
  return file
498
498
  elif download and file.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")): # download
499
499
  url = file # warning: Pathlib turns :// -> :/
500
- file = url2file(file) # '%2F' to '/', split https://url.com/file.txt?auth
501
- if Path(file).exists():
500
+ file = Path(download_dir) / url2file(file) # '%2F' to '/', split https://url.com/file.txt?auth
501
+ if file.exists():
502
502
  LOGGER.info(f"Found {clean_url(url)} locally at {file}") # file already exists
503
503
  else:
504
504
  downloads.safe_download(url=url, file=file, unzip=False)
505
- return file
505
+ return str(file)
506
506
  else: # search
507
507
  files = glob.glob(str(ROOT / "**" / file), recursive=True) or glob.glob(str(ROOT.parent / file)) # find file
508
508
  if not files and hard:
@@ -424,13 +424,6 @@ def scale_img(img, ratio=1.0, same_shape=False, gs=32):
424
424
  return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean
425
425
 
426
426
 
427
- def make_divisible(x, divisor):
428
- """Returns nearest x divisible by divisor."""
429
- if isinstance(divisor, torch.Tensor):
430
- divisor = int(divisor.max()) # to int
431
- return math.ceil(x / divisor) * divisor
432
-
433
-
434
427
  def copy_attr(a, b, include=(), exclude=()):
435
428
  """Copies attributes from object 'b' to object 'a', with options to include/exclude certain attributes."""
436
429
  for k, v in b.__dict__.items():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.64
3
+ Version: 8.2.66
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
@@ -69,6 +69,7 @@ Requires-Dist: keras ; extra == 'export'
69
69
  Requires-Dist: flatbuffers <100,>=23.5.26 ; (platform_machine == "aarch64") and extra == 'export'
70
70
  Requires-Dist: numpy ==1.23.5 ; (platform_machine == "aarch64") and extra == 'export'
71
71
  Requires-Dist: h5py !=3.11.0 ; (platform_machine == "aarch64") and extra == 'export'
72
+ Requires-Dist: tensorstore >=0.1.63 ; (platform_machine == "aarch64" and python_version >= "3.9") and extra == 'export'
72
73
  Requires-Dist: coremltools >=7.0 ; (platform_system != "Windows" and python_version <= "3.11") and extra == 'export'
73
74
  Provides-Extra: extra
74
75
  Requires-Dist: hub-sdk >=0.0.8 ; extra == 'extra'
@@ -8,7 +8,7 @@ tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
8
8
  tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
9
9
  tests/test_python.py,sha256=cLK8dyRf_4H_znFIm-krnOFMydwkxKlVZvHwl9vbck8,21780
10
10
  tests/test_solutions.py,sha256=EACnPXbeJe2aVTOKfqMk5jclKKCWCVgFEzjpR6y7Sh8,3304
11
- ultralytics/__init__.py,sha256=rw2gCflovitUo9hEqceHr89drnJZoRxYQQS6cZhT_4M,694
11
+ ultralytics/__init__.py,sha256=DI1GNRiF17xoRSVrHICeAxCcgyfbcZCnWdhJ6PdQUj8,694
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
14
  ultralytics/cfg/__init__.py,sha256=fD3Llw12sIkJo4g667t6b051je9nEpwdBLGgbbVEzHY,32973
@@ -88,8 +88,8 @@ ultralytics/data/augment.py,sha256=iYkTgHkmYZByMCgmdarX2M6xihKsJN1SXC9g7vaUETE,1
88
88
  ultralytics/data/base.py,sha256=C3teLnw97ZTbpJHT9P7yYWosAKocMzgJjRe1rxgfpls,13524
89
89
  ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
90
90
  ultralytics/data/converter.py,sha256=7640xKuf7LPeoTwoCvgbIXM5xbzyq72Hu2Rf2lrgjRY,17554
91
- ultralytics/data/dataset.py,sha256=2m_YOw73gO_mzvitel5OKuQpbkwFTDnpPNcUIz4cayI,22579
92
- ultralytics/data/loaders.py,sha256=cAyGlSNonzYXU5eBXiDVFrDOlTeziXGyO7_UaToUGrc,24152
91
+ ultralytics/data/dataset.py,sha256=ZBnO9KPVOJXwKQbN2LlmROIxLEb0mtppVQlrC4sX3oE,22879
92
+ ultralytics/data/loaders.py,sha256=vy71TzKAPqohCp4MDNQpia2CR1LaOxAU5eA14DonJoU,24085
93
93
  ultralytics/data/split_dota.py,sha256=fWezt1Bo3jiZ6AyUWdBtTUuvLamPv1t7JD-DirM9gQ8,10142
94
94
  ultralytics/data/utils.py,sha256=GHmqx6e5yRfcUD2Qkwk-tQfhXCwtUMFD3Uf6d699nGo,31046
95
95
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
@@ -99,15 +99,15 @@ ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2
99
99
  ultralytics/data/explorer/gui/dash.py,sha256=vZ476NaUH4FKU08rAJ1K9WNyKtg0soMyJJxqg176yWc,10498
100
100
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
101
101
  ultralytics/engine/exporter.py,sha256=EM35MOPWbIKE2ShJsPzdrEmrjzwZSp9gW-rO8GEFal0,58905
102
- ultralytics/engine/model.py,sha256=zeyyXy4dY3fTj0GjYeTuvJcKyNmlEX34ntSzLF3_T7E,52013
102
+ ultralytics/engine/model.py,sha256=8YSxLan1OfV_IynCQjAzaGS4gCWTEbGLfUWnfTDxhsE,52047
103
103
  ultralytics/engine/predictor.py,sha256=W58kDCFH2AfoFzpGbos3k8zUEVsLunBuM8sc2B64rPY,17449
104
104
  ultralytics/engine/results.py,sha256=oNAzSKdKxxx_5QQd9opzCevvgPhspdY5BkWxoz5bQ8E,69882
105
- ultralytics/engine/trainer.py,sha256=ovkJTW60uHy0pnU6l0Q6l8OLLRhjczVcVET155DNZNA,35605
105
+ ultralytics/engine/trainer.py,sha256=esQhG3XJUF1vsl49GavnqpL0tvMZIY-SwD_hw1XmWdU,35454
106
106
  ultralytics/engine/tuner.py,sha256=iZrgMmXSDpfuDu4bdFRflmAsscys2-8W8qAGxSyOVJE,11844
107
107
  ultralytics/engine/validator.py,sha256=Y21Uo8_Zto4qjk_YqQk6k7tyfpq_Qk9cfjeXeyDRxs8,14643
108
108
  ultralytics/hub/__init__.py,sha256=93bqI8x8-MfDYdKkQVduuocUiQj3WGnk1nIk0li08zA,5663
109
109
  ultralytics/hub/auth.py,sha256=FID58NE6fh7Op_B45QOpWBw1qoBN0ponL16uvyb2dZ8,5399
110
- ultralytics/hub/session.py,sha256=uXkP8AayJClLUD9TP8AlJSqxm-OmTgCmTXl1TkO6jQc,16147
110
+ ultralytics/hub/session.py,sha256=UF_aVwyxnbP-OzpzKXGGhi4i6KGWjjhoj5Qsn46dFpE,16257
111
111
  ultralytics/hub/utils.py,sha256=tXfM3QbXBcf4Y6StgHI1pktT4OM7Ic9eF3xiBFHGlhY,9721
112
112
  ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
113
113
  ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
@@ -148,7 +148,7 @@ ultralytics/models/yolo/classify/val.py,sha256=MXdtWrBYVpfFuPfFPOTLKa_wBdTIA4dBZ
148
148
  ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
149
149
  ultralytics/models/yolo/detect/predict.py,sha256=HcbhWUEqF97b8IjIt_scanHvSy6vzyRgybFo08o1Eok,1471
150
150
  ultralytics/models/yolo/detect/train.py,sha256=8Ulq1SPNLrkOqXj0Yt5zNR1c_Xl_QnOjllCdqBHUMds,6353
151
- ultralytics/models/yolo/detect/val.py,sha256=WaCGB_B_TTIbeR8ZxKoC2YJrPdIgFJ-fP8EI7SoE4NA,15128
151
+ ultralytics/models/yolo/detect/val.py,sha256=SmSyHH4N3YK9UqM7NRBwdC5YpX_i64zsfU9M5WdC1YA,15154
152
152
  ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
153
153
  ultralytics/models/yolo/obb/predict.py,sha256=prfDzhwuVHKF6CRwnFVBA-YFI5q7U7NEQwITGHmB2Ow,2037
154
154
  ultralytics/models/yolo/obb/train.py,sha256=tWpFtcasMwWq1A_9VdbEg5pIVHwuWwmeLOyj-S4_1sY,1473
@@ -166,8 +166,9 @@ ultralytics/models/yolo/world/train.py,sha256=acYN2-onL69LrL4av6_hY2r5AY0urC0WVi
166
166
  ultralytics/models/yolo/world/train_world.py,sha256=IsnCEVt6DcM9lUskCKmIN-M8MM79xLpwTRqRoAHUnZ4,4857
167
167
  ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
168
168
  ultralytics/nn/autobackend.py,sha256=3Bdljx-0GUGLBy70nUx4oDgSqrXqaOFYYtg9NKgPfgI,31576
169
- ultralytics/nn/tasks.py,sha256=jGAauQZOOSXKsxAKad_HBNfLleOoTS7T9XSlOZN8v7Y,45856
169
+ ultralytics/nn/tasks.py,sha256=aegNns5m1YewIT3oG9zgjsQddtyZ6rbOrgMKEIqK_s4,45885
170
170
  ultralytics/nn/modules/__init__.py,sha256=mARjWk83WPYF5phXhXfPbAu2ZohtdbHdi5zzoxyMubo,2553
171
+ ultralytics/nn/modules/activation.py,sha256=RS0DRDm9r56tojN79X8UBVtiktde9Wasw7GIbiopSMk,945
171
172
  ultralytics/nn/modules/block.py,sha256=jLXQerl4nXfr4MEGMp9S3YgdTqOJzas1GBxryyXyLV0,34582
172
173
  ultralytics/nn/modules/conv.py,sha256=Ywe87IhuaS22mR2JJ9xjnW8Sb-m7WTjxuqIxV_Dv8lI,12722
173
174
  ultralytics/nn/modules/head.py,sha256=vlp3rMa54kjiuPqP32_RdgOb9KrHItiJx0ih1SFzQec,26853
@@ -195,7 +196,7 @@ ultralytics/trackers/utils/matching.py,sha256=UxhSGa5pN6WoYwYSBAkkt-O7xMxUR47VuU
195
196
  ultralytics/utils/__init__.py,sha256=w6UHjkT0qkDmIr6JgwoGisLusJFpvmpOiegATYend_g,38526
196
197
  ultralytics/utils/autobatch.py,sha256=POJb9f8dioI7lPGnCc7bdxt0ncftXZa0bvOkip-XoWk,3969
197
198
  ultralytics/utils/benchmarks.py,sha256=6tdNcBLATllWpmAMUC6TW7DiCx1VKHhnQN4vkoqN3sE,23866
198
- ultralytics/utils/checks.py,sha256=dTyIJ17DvnDxRT6Jhmb71MGxc9qehic8OereIjfB8Js,28460
199
+ ultralytics/utils/checks.py,sha256=hBkhOinWRzhpA5SbY1v-wCMdFeOemORRlmKBXgwoHYo,28498
199
200
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
200
201
  ultralytics/utils/downloads.py,sha256=NB9UDas5f8Rzxt_PS1vDKkSgCxcJ0R_-pjNyZ8E3OUM,21897
201
202
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
@@ -207,7 +208,7 @@ ultralytics/utils/ops.py,sha256=CQeMDVV4f9QWvYPNvNJu7GJAW2-XG93D7ee7yFY0vsI,3268
207
208
  ultralytics/utils/patches.py,sha256=Oo3DkP7MbXnNGvPfoFSocAkVvaPh9kwMT_9RQUfjVhI,3594
208
209
  ultralytics/utils/plotting.py,sha256=5HRfiG2dklWZJheTxGTy0gFRk39utHcZbMJl7j2hnMI,55522
209
210
  ultralytics/utils/tal.py,sha256=hia39MhWPFpDWOTAXC_5vz-9cUdiRHZs-UcTnxD4Dlo,16112
210
- ultralytics/utils/torch_utils.py,sha256=YVIVnqZ-hzzACC9IBdyX0j6cyX_gc8s1fko18KxEiPs,29097
211
+ ultralytics/utils/torch_utils.py,sha256=ClXfUpTKFkwD3Zfnjk9YnK0gsA-7YmvEasTDiVN9Wvw,28880
211
212
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
212
213
  ultralytics/utils/tuner.py,sha256=49KAadKZsUeCpwIm5Sn0grb0RPcMNI8vHGLwroDEJNI,6171
213
214
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
@@ -221,9 +222,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
221
222
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
222
223
  ultralytics/utils/callbacks/tensorboard.py,sha256=QEgOVhUqY9akOs5TJIwz1Rvn6l32xWLpOxlwEyWF0B8,4136
223
224
  ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
224
- ultralytics-8.2.64.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
225
- ultralytics-8.2.64.dist-info/METADATA,sha256=_XEu9XR7VMz2RnWuDPb27_jJeLHD1BJzoaUIJxTFoUI,41217
226
- ultralytics-8.2.64.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
227
- ultralytics-8.2.64.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
228
- ultralytics-8.2.64.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
229
- ultralytics-8.2.64.dist-info/RECORD,,
225
+ ultralytics-8.2.66.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
226
+ ultralytics-8.2.66.dist-info/METADATA,sha256=HyQKUxXE05aM42tzp_IJ7EGFptuc-bif23Jtl7sZDUU,41337
227
+ ultralytics-8.2.66.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
228
+ ultralytics-8.2.66.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
229
+ ultralytics-8.2.66.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
230
+ ultralytics-8.2.66.dist-info/RECORD,,