ultralytics 8.0.143__py3-none-any.whl → 8.0.144__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.0.143'
3
+ __version__ = '8.0.144'
4
4
 
5
5
  from ultralytics.hub import start
6
6
  from ultralytics.models import RTDETR, SAM, YOLO
@@ -7,6 +7,7 @@ from typing import Union
7
7
 
8
8
  from ultralytics.cfg import get_cfg
9
9
  from ultralytics.engine.exporter import Exporter
10
+ from ultralytics.hub.utils import HUB_WEB_ROOT
10
11
  from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, nn, yaml_model_load
11
12
  from ultralytics.utils import (DEFAULT_CFG, DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, RANK, ROOT, callbacks,
12
13
  is_git_dir, yaml_load)
@@ -100,7 +101,7 @@ class Model:
100
101
  def is_hub_model(model):
101
102
  """Check if the provided model is a HUB model."""
102
103
  return any((
103
- model.startswith('https://hub.ultralytics.com/models/'), # i.e. https://hub.ultralytics.com/models/MODEL_ID
104
+ model.startswith(f'{HUB_WEB_ROOT}/models/'), # i.e. https://hub.ultralytics.com/models/MODEL_ID
104
105
  [len(x) for x in model.split('_')] == [42, 20], # APIKEY_MODELID
105
106
  len(model) == 20 and not Path(model).exists() and all(x not in model for x in './\\'))) # MODELID
106
107
 
@@ -455,9 +456,10 @@ class Model:
455
456
 
456
457
  @property
457
458
  def task_map(self):
458
- """Map head to model, trainer, validator, and predictor classes
459
+ """
460
+ Map head to model, trainer, validator, and predictor classes.
459
461
 
460
462
  Returns:
461
- task_map (dict)
463
+ task_map (dict): The map of model task to mode classes.
462
464
  """
463
465
  raise NotImplementedError('Please provide task map for your model!')
@@ -105,6 +105,7 @@ class BasePredictor:
105
105
  self.results = None
106
106
  self.transforms = None
107
107
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
108
+ self.txt_path = None
108
109
  callbacks.add_integration_callbacks(self)
109
110
 
110
111
  def get_save_dir(self):
@@ -178,7 +179,8 @@ class BasePredictor:
178
179
  if self.args.save_txt:
179
180
  result.save_txt(f'{self.txt_path}.txt', save_conf=self.args.save_conf)
180
181
  if self.args.save_crop:
181
- result.save_crop(save_dir=self.save_dir / 'crops', file_name=self.data_path.stem)
182
+ result.save_crop(save_dir=self.save_dir / 'crops',
183
+ file_name=self.data_path.stem + ('' if self.dataset.mode == 'image' else f'_{frame}'))
182
184
 
183
185
  return log_string
184
186
 
@@ -76,7 +76,6 @@ class Results(SimpleClass):
76
76
  probs (torch.tensor, optional): A 1D tensor of probabilities of each class for classification task.
77
77
  keypoints (List[List[float]], optional): A list of detected keypoints for each object.
78
78
 
79
-
80
79
  Attributes:
81
80
  orig_img (numpy.ndarray): The original image as a numpy array.
82
81
  orig_shape (tuple): The original image shape in (height, width) format.
@@ -172,6 +171,7 @@ class Results(SimpleClass):
172
171
  pil=False,
173
172
  img=None,
174
173
  im_gpu=None,
174
+ kpt_radius=5,
175
175
  kpt_line=True,
176
176
  labels=True,
177
177
  boxes=True,
@@ -190,6 +190,7 @@ class Results(SimpleClass):
190
190
  pil (bool): Whether to return the image as a PIL Image.
191
191
  img (numpy.ndarray): Plot to another image. if not, plot to original image.
192
192
  im_gpu (torch.Tensor): Normalized image in gpu with shape (1, 3, 640, 640), for faster mask plotting.
193
+ kpt_radius (int, optional): Radius of the drawn keypoints. Default is 5.
193
194
  kpt_line (bool): Whether to draw lines connecting keypoints.
194
195
  labels (bool): Whether to plot the label of bounding boxes.
195
196
  boxes (bool): Whether to plot the bounding boxes.
@@ -251,7 +252,7 @@ class Results(SimpleClass):
251
252
  # Plot Pose results
252
253
  if self.keypoints is not None:
253
254
  for k in reversed(self.keypoints.data):
254
- annotator.kpts(k, self.orig_shape, kpt_line=kpt_line)
255
+ annotator.kpts(k, self.orig_shape, radius=kpt_radius, kpt_line=kpt_line)
255
256
 
256
257
  return annotator.result()
257
258
 
@@ -4,7 +4,7 @@ import requests
4
4
 
5
5
  from ultralytics.data.utils import HUBDatasetStats
6
6
  from ultralytics.hub.auth import Auth
7
- from ultralytics.hub.utils import PREFIX
7
+ from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX
8
8
  from ultralytics.utils import LOGGER, SETTINGS, USER_CONFIG_DIR, yaml_save
9
9
 
10
10
 
@@ -50,13 +50,13 @@ WARNING ⚠️ ultralytics.start() is deprecated after 8.0.60. Updated usage to
50
50
  from ultralytics import YOLO, hub
51
51
 
52
52
  hub.login('{api_key}')
53
- model = YOLO('https://hub.ultralytics.com/models/{model_id}')
53
+ model = YOLO('{HUB_WEB_ROOT}/models/{model_id}')
54
54
  model.train()""")
55
55
 
56
56
 
57
57
  def reset_model(model_id=''):
58
58
  """Reset a trained model to an untrained state."""
59
- r = requests.post('https://api.ultralytics.com/model-reset', json={'apiKey': Auth().api_key, 'modelId': model_id})
59
+ r = requests.post(f'{HUB_API_ROOT}/model-reset', json={'apiKey': Auth().api_key, 'modelId': model_id})
60
60
  if r.status_code == 200:
61
61
  LOGGER.info(f'{PREFIX}Model reset successfully')
62
62
  return
@@ -72,7 +72,7 @@ def export_fmts_hub():
72
72
  def export_model(model_id='', format='torchscript'):
73
73
  """Export a model to all formats."""
74
74
  assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
75
- r = requests.post(f'https://api.ultralytics.com/v1/models/{model_id}/export',
75
+ r = requests.post(f'{HUB_API_ROOT}/v1/models/{model_id}/export',
76
76
  json={'format': format},
77
77
  headers={'x-api-key': Auth().api_key})
78
78
  assert r.status_code == 200, f'{PREFIX}{format} export failure {r.status_code} {r.reason}'
@@ -82,7 +82,7 @@ def export_model(model_id='', format='torchscript'):
82
82
  def get_export(model_id='', format='torchscript'):
83
83
  """Get an exported model dictionary with download URL."""
84
84
  assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
85
- r = requests.post('https://api.ultralytics.com/get-export',
85
+ r = requests.post(f'{HUB_API_ROOT}/get-export',
86
86
  json={
87
87
  'apiKey': Auth().api_key,
88
88
  'modelId': model_id,
@@ -110,7 +110,7 @@ def check_dataset(path='', task='detect'):
110
110
  ```
111
111
  """
112
112
  HUBDatasetStats(path=path, task=task).get_json()
113
- LOGGER.info('Checks completed correctly ✅. Upload this dataset to https://hub.ultralytics.com/datasets/.')
113
+ LOGGER.info(f'Checks completed correctly ✅. Upload this dataset to {HUB_WEB_ROOT}/datasets/.')
114
114
 
115
115
 
116
116
  if __name__ == '__main__':
ultralytics/hub/auth.py CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  import requests
4
4
 
5
- from ultralytics.hub.utils import HUB_API_ROOT, PREFIX, request_with_credentials
5
+ from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, request_with_credentials
6
6
  from ultralytics.utils import LOGGER, SETTINGS, emojis, is_colab
7
7
 
8
- API_KEY_URL = 'https://hub.ultralytics.com/settings?tab=api+keys'
8
+ API_KEY_URL = f'{HUB_WEB_ROOT}/settings?tab=api+keys'
9
9
 
10
10
 
11
11
  class Auth:
@@ -6,7 +6,7 @@ from time import sleep
6
6
 
7
7
  import requests
8
8
 
9
- from ultralytics.hub.utils import HUB_API_ROOT, PREFIX, smart_request
9
+ from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, smart_request
10
10
  from ultralytics.utils import LOGGER, __version__, checks, emojis, is_colab, threaded
11
11
  from ultralytics.utils.errors import HUBModelError
12
12
 
@@ -49,21 +49,21 @@ class HUBTrainingSession:
49
49
  from ultralytics.hub.auth import Auth
50
50
 
51
51
  # Parse input
52
- if url.startswith('https://hub.ultralytics.com/models/'):
53
- url = url.split('https://hub.ultralytics.com/models/')[-1]
52
+ if url.startswith(f'{HUB_WEB_ROOT}/models/'):
53
+ url = url.split(f'{HUB_WEB_ROOT}/models/')[-1]
54
54
  if [len(x) for x in url.split('_')] == [42, 20]:
55
55
  key, model_id = url.split('_')
56
56
  elif len(url) == 20:
57
57
  key, model_id = '', url
58
58
  else:
59
59
  raise HUBModelError(f"model='{url}' not found. Check format is correct, i.e. "
60
- f"model='https://hub.ultralytics.com/models/MODEL_ID' and try again.")
60
+ f"model='{HUB_WEB_ROOT}/models/MODEL_ID' and try again.")
61
61
 
62
62
  # Authorize
63
63
  auth = Auth(key)
64
64
  self.agent_id = None # identifies which instance is communicating with server
65
65
  self.model_id = model_id
66
- self.model_url = f'https://hub.ultralytics.com/models/{model_id}'
66
+ self.model_url = f'{HUB_WEB_ROOT}/models/{model_id}'
67
67
  self.api_url = f'{HUB_API_ROOT}/v1/models/{model_id}'
68
68
  self.auth_header = auth.get_auth_header()
69
69
  self.rate_limits = {'metrics': 3.0, 'ckpt': 900.0, 'heartbeat': 300.0} # rate limits (seconds)
ultralytics/hub/utils.py CHANGED
@@ -18,6 +18,7 @@ from ultralytics.utils.downloads import GITHUB_ASSET_NAMES
18
18
  PREFIX = colorstr('Ultralytics HUB: ')
19
19
  HELP_MSG = 'If this issue persists please visit https://github.com/ultralytics/hub/issues for assistance.'
20
20
  HUB_API_ROOT = os.environ.get('ULTRALYTICS_HUB_API', 'https://api.ultralytics.com')
21
+ HUB_WEB_ROOT = os.environ.get('ULTRALYTICS_HUB_WEB', 'https://hub.ultralytics.com')
21
22
 
22
23
 
23
24
  def request_with_credentials(url: str) -> any:
@@ -29,7 +29,7 @@ class SAM(Model):
29
29
  overrides = dict(conf=0.25, task='segment', mode='predict', imgsz=1024)
30
30
  kwargs.update(overrides)
31
31
  prompts = dict(bboxes=bboxes, points=points, labels=labels)
32
- super().predict(source, stream, prompts=prompts, **kwargs)
32
+ return super().predict(source, stream, prompts=prompts, **kwargs)
33
33
 
34
34
  def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
35
35
  """Calls the 'predict' function with given arguments to perform object detection."""
@@ -294,7 +294,7 @@ class Predictor(BasePredictor):
294
294
 
295
295
  def setup_model(self, model, verbose=True):
296
296
  """Set up YOLO model with specified thresholds and device."""
297
- device = select_device(self.args.device)
297
+ device = select_device(self.args.device, verbose=verbose)
298
298
  if model is None:
299
299
  model = build_sam(self.args.model)
300
300
  model.eval()
@@ -3,7 +3,7 @@
3
3
  import json
4
4
  from time import time
5
5
 
6
- from ultralytics.hub.utils import PREFIX, events
6
+ from ultralytics.hub.utils import HUB_WEB_ROOT, PREFIX, events
7
7
  from ultralytics.utils import LOGGER, SETTINGS
8
8
  from ultralytics.utils.torch_utils import model_info_for_loggers
9
9
 
@@ -13,7 +13,7 @@ def on_pretrain_routine_end(trainer):
13
13
  session = getattr(trainer, 'hub_session', None)
14
14
  if session:
15
15
  # Start timer for upload rate limit
16
- LOGGER.info(f'{PREFIX}View model at https://hub.ultralytics.com/models/{session.model_id} 🚀')
16
+ LOGGER.info(f'{PREFIX}View model at {HUB_WEB_ROOT}/models/{session.model_id} 🚀')
17
17
  session.timers = {'metrics': time(), 'ckpt': time()} # start timer on session.rate_limit
18
18
 
19
19
 
@@ -39,7 +39,7 @@ def on_model_save(trainer):
39
39
  # Upload checkpoints with rate limiting
40
40
  is_best = trainer.best_fitness == trainer.fitness
41
41
  if time() - session.timers['ckpt'] > session.rate_limits['ckpt']:
42
- LOGGER.info(f'{PREFIX}Uploading checkpoint https://hub.ultralytics.com/models/{session.model_id}')
42
+ LOGGER.info(f'{PREFIX}Uploading checkpoint {HUB_WEB_ROOT}/models/{session.model_id}')
43
43
  session.upload_model(trainer.epoch, trainer.last, is_best)
44
44
  session.timers['ckpt'] = time() # reset timer
45
45
 
@@ -53,7 +53,7 @@ def on_train_end(trainer):
53
53
  session.upload_model(trainer.epoch, trainer.best, map=trainer.metrics.get('metrics/mAP50-95(B)', 0), final=True)
54
54
  session.alive = False # stop heartbeats
55
55
  LOGGER.info(f'{PREFIX}Done ✅\n'
56
- f'{PREFIX}View model at https://hub.ultralytics.com/models/{session.model_id} 🚀')
56
+ f'{PREFIX}View model at {HUB_WEB_ROOT}/models/{session.model_id} 🚀')
57
57
 
58
58
 
59
59
  def on_train_start(trainer):
ultralytics/utils/ops.py CHANGED
@@ -321,7 +321,7 @@ def scale_image(masks, im0_shape, ratio_pad=None):
321
321
  Takes a mask, and resizes it to the original image size
322
322
 
323
323
  Args:
324
- masks (torch.Tensor): resized and padded masks/images, [h, w, num]/[h, w, 3].
324
+ masks (np.ndarray): resized and padded masks/images, [h, w, num]/[h, w, 3].
325
325
  im0_shape (tuple): the original image shape
326
326
  ratio_pad (tuple): the ratio of the padding to the original image.
327
327
 
@@ -344,9 +344,6 @@ def scale_image(masks, im0_shape, ratio_pad=None):
344
344
  if len(masks.shape) < 2:
345
345
  raise ValueError(f'"len of masks shape" should be 2 or 3, but got {len(masks.shape)}')
346
346
  masks = masks[top:bottom, left:right]
347
- # masks = masks.permute(2, 0, 1).contiguous()
348
- # masks = F.interpolate(masks[None], im0_shape[:2], mode='bilinear', align_corners=False)[0]
349
- # masks = masks.permute(1, 2, 0).contiguous()
350
347
  masks = cv2.resize(masks, (im0_shape[1], im0_shape[0]))
351
348
  if len(masks.shape) == 2:
352
349
  masks = masks[:, :, None]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.0.143
3
+ Version: 8.0.144
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
@@ -1,4 +1,4 @@
1
- ultralytics/__init__.py,sha256=8PBd08lW2wdrJcu7kBFCsCDwNLJr8OYHPcs-1B3ZIU4,530
1
+ ultralytics/__init__.py,sha256=ps8bpw7ccnC512NkZWirQNO-nXwTdCXn_k8op29nA1g,530
2
2
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
3
3
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
4
4
  ultralytics/cfg/__init__.py,sha256=fhKmI6UCAru_EridNH8XN4ELdfxFjkE4ANJ8DRAb5sY,18735
@@ -48,15 +48,15 @@ ultralytics/data/utils.py,sha256=itqzAgkUvpEJpROdEtCGdFlBvs-vBBJXyAYfCrtRITc,258
48
48
  ultralytics/data/dataloaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  ultralytics/engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  ultralytics/engine/exporter.py,sha256=VTU4G4IQQT6uagNokDDcIbce92jthQeZ8cH5UGoT0Hw,46161
51
- ultralytics/engine/model.py,sha256=yVN62EIm72ZCdytbN2rv7DkVY6wY39Xw0gdcwbWpMOo,20170
52
- ultralytics/engine/predictor.py,sha256=umAWoScvW_atJBTtSfSGt7sjhejfCxKrRvR7OXcWY_U,16516
53
- ultralytics/engine/results.py,sha256=FIdvChyT3PS6YrkUkd0eL0PZwapD0BAJJrTyT1DXDAI,24732
51
+ ultralytics/engine/model.py,sha256=Nco7y-N3YZJLYYfXWJkxet-5OCQDzhlVi0NwLMu_ke0,20255
52
+ ultralytics/engine/predictor.py,sha256=W_nE584JgshZhTLedcHR1eQRUurFaTFeHATaXyj2rks,16630
53
+ ultralytics/engine/results.py,sha256=fCREFnvEI6szKXhZ2HB8n-JJ7Maa913XqtJ1wnVl1KA,24861
54
54
  ultralytics/engine/trainer.py,sha256=KjOsNyZqnoClRM9NSLQLnJXnYstUr-F2AJxsPJgUFxI,31186
55
55
  ultralytics/engine/validator.py,sha256=CG3RhlL0bA4kQOhmhTklEIx4tRRD2ar0DkVvu3kpO0s,11804
56
- ultralytics/hub/__init__.py,sha256=6Bqn7WzlD78tVMUpFKCtIpNljRld1qUIjkMjOJFa8xk,4393
57
- ultralytics/hub/auth.py,sha256=hZqPHQvtgndksDjV8a_BSVIpVkHyssibH8drIzhDdrc,5193
58
- ultralytics/hub/session.py,sha256=buKfWcZpU7B9mR8JUvYmjlbref6jSBk5jCcl36NucwM,8469
59
- ultralytics/hub/utils.py,sha256=wNcvkqi8mvccD40XqGAGiAB3ODpVgTn1RT4acFasEzw,9425
56
+ ultralytics/hub/__init__.py,sha256=YheRUPHlrCJJdfU1AVDi6GKVr1mJ1f1mLi7c1HtM-dg,4359
57
+ ultralytics/hub/auth.py,sha256=3xWB_GlmLf85jAMUYepmUnjTsiS7k2UqZbaLEUimQdc,5195
58
+ ultralytics/hub/session.py,sha256=KWHl2fmW9wlWgaqPCBDDGlBrp-LSpZMFZP1ktYOphS4,8433
59
+ ultralytics/hub/utils.py,sha256=5s5VaCV8Ec14J6_EVnGOQr1XQ1z9HX0uYQTeYUsiVmw,9509
60
60
  ultralytics/models/__init__.py,sha256=RRIwQXcNlY3adevQs6mzD00OqejzASHro9TCSLNkwac,173
61
61
  ultralytics/models/fastsam/__init__.py,sha256=c3N-XQAJ9Mkw1WGw5gev4xXCUNiOp-_IgxonvqeYSVM,254
62
62
  ultralytics/models/fastsam/model.py,sha256=bntnX2bsqJI9MrXDYkp1VG78Cn-HYJHzaqY53AtCbHk,907
@@ -76,8 +76,8 @@ ultralytics/models/rtdetr/val.py,sha256=Lu5H0722XuPvFLi8GrryghumEvtlzRU-pFUKzaos
76
76
  ultralytics/models/sam/__init__.py,sha256=CrrWvUKwxqzRp48rpXQo-1Fb9qDxAzNlh9hPdsGuDno,176
77
77
  ultralytics/models/sam/amg.py,sha256=Ynox9Hjoj62AHDKczIH_yawbo56P3b3-5bTZZiraXlA,13296
78
78
  ultralytics/models/sam/build.py,sha256=C1yj4l7Ec6guzK4Y0Vy43Vbg8CrG_MMYOpb73m6WCG4,4822
79
- ultralytics/models/sam/model.py,sha256=cAbBtoshkjlEWV1NdvYBHqjOfAIm9yTSx0UILHbLu1c,1811
80
- ultralytics/models/sam/predict.py,sha256=0p8vNWpMInwOPlrG1L9N2_ZuXg6ys5lNKXyCnYC7d34,19310
79
+ ultralytics/models/sam/model.py,sha256=e6P9ap-IcOcFQ_DP2VAsxlQ0TYoMPS50oZ5fwe-u_XM,1818
80
+ ultralytics/models/sam/predict.py,sha256=D2XBIb2z5RLk2CfggLyvgaqJimCsO5HHCMLmF5yZZzE,19327
81
81
  ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
82
82
  ultralytics/models/sam/modules/decoders.py,sha256=qgRip-OucTbpwbLm6Fi8cho-XNQ-5g-ZXo7JYt9WuT4,6372
83
83
  ultralytics/models/sam/modules/encoders.py,sha256=XxXkQVWNuOfAJPVE-aE8Eb4YjPjAdly9mamQSpGURJc,22545
@@ -134,7 +134,7 @@ ultralytics/utils/files.py,sha256=PFHeKx0HzmyR5wZSYzhxq_X9HHGwwNuEV5PhvKouw_0,54
134
134
  ultralytics/utils/instance.py,sha256=iGxITi9ydxom1GB-VjVuUbIY4jgCax3aiWwY_uXoRIQ,14645
135
135
  ultralytics/utils/loss.py,sha256=yfQ0cE35lY5GF7V-0bP4QPOqzGWIjJBBnoF-AweBQak,19144
136
136
  ultralytics/utils/metrics.py,sha256=3GOKuVUkAPo1fLHtOBawAeq4trVyqlQy8hV8isPdTY4,42325
137
- ultralytics/utils/ops.py,sha256=Iecy95EclptUHN2dvBVrxHh0mincbpNGP75HZj0PdfE,29212
137
+ ultralytics/utils/ops.py,sha256=Mg44MTCbFRI1lnTLG4ik55ZFUPFswhj8tCEtoWYSWDA,29013
138
138
  ultralytics/utils/patches.py,sha256=L0Bm8ma7BVyuO8hW-XDTBzL06GBJ9tl2ov4cAfGOh60,1246
139
139
  ultralytics/utils/plotting.py,sha256=AYdvMh8I1jYCeo1kGl9cUu-a5jVfVBhX-yVMgZ_a6_Q,24845
140
140
  ultralytics/utils/tal.py,sha256=BFovrLm0m5_Pv-hFzYMAD3oonS1MvDqdy51f_Cx6Aq8,13645
@@ -145,7 +145,7 @@ ultralytics/utils/callbacks/base.py,sha256=VpiMIW9qiyncMq9cLRmm5WGr38On0LVTK2XND
145
145
  ultralytics/utils/callbacks/clearml.py,sha256=izRkp9wZvFUskG6ofYV_vcuPNSAYqiQSJc5USeEuurI,5974
146
146
  ultralytics/utils/callbacks/comet.py,sha256=jDfK-ntD9ShFJJNAXiB0Ra8SHKuKxSJWidftQrlojt4,13115
147
147
  ultralytics/utils/callbacks/dvc.py,sha256=8cRgEYyom8844U2tb_Te_YGfdme6C_I1XzkGbw9ysvc,4386
148
- ultralytics/utils/callbacks/hub.py,sha256=UZkEJzNQ05bOJXCJJzBveTA-SbYNnT2LT6zFtov9hh0,3363
148
+ ultralytics/utils/callbacks/hub.py,sha256=eeP1rjCCguKL_ge-QM8B935AcuWjsjYzNDoCULltTTw,3338
149
149
  ultralytics/utils/callbacks/mlflow.py,sha256=o4xiScF0TJNFBuC3EhO3XRtOd3gd7GZi9ISLfNBPhfE,2701
150
150
  ultralytics/utils/callbacks/neptune.py,sha256=fr5vf9kXLTwcL41Ag9B_Paxf9SZsWTm4u6ninvKCQxY,3751
151
151
  ultralytics/utils/callbacks/raytune.py,sha256=ckLwRlgkmwoEieNDoL3TFCf-4by5hWNHj5AiJ5v9GGg,608
@@ -157,9 +157,9 @@ ultralytics/yolo/data/__init__.py,sha256=yf8vCgHeoINeZBjKOT_SmCJozgAcoUEUHsKfVNH
157
157
  ultralytics/yolo/engine/__init__.py,sha256=TAHs06pR9q32XhqRfnS7bk_n7JCZMoJD9LlcySx-7M8,385
158
158
  ultralytics/yolo/utils/__init__.py,sha256=GK4bnt8wEbsJPJ5MTQGwR_6W4Nr8OdAaFHimCQ4YcSQ,647
159
159
  ultralytics/yolo/v8/__init__.py,sha256=cPnEgfUp79LakWJRJhwMMWSMba31TpiNXUDe2dugHCI,387
160
- ultralytics-8.0.143.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
161
- ultralytics-8.0.143.dist-info/METADATA,sha256=9xG3LYhxJvFl5kOXfedw_NJYRhuJua7CaFfvYzSHhZU,28208
162
- ultralytics-8.0.143.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
163
- ultralytics-8.0.143.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
164
- ultralytics-8.0.143.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
165
- ultralytics-8.0.143.dist-info/RECORD,,
160
+ ultralytics-8.0.144.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
161
+ ultralytics-8.0.144.dist-info/METADATA,sha256=jdT3OnHEwFpM_HW5VBgjKjRpPlYgcptrKXgBOo6CdAk,28208
162
+ ultralytics-8.0.144.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
163
+ ultralytics-8.0.144.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
164
+ ultralytics-8.0.144.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
165
+ ultralytics-8.0.144.dist-info/RECORD,,