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

ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.40"
3
+ __version__ = "8.2.41"
4
4
 
5
5
  import os
6
6
 
@@ -133,7 +133,7 @@ class Model(nn.Module):
133
133
  # Check if Ultralytics HUB model from https://hub.ultralytics.com
134
134
  if self.is_hub_model(model):
135
135
  # Fetch model from HUB
136
- checks.check_requirements("hub-sdk>=0.0.6")
136
+ checks.check_requirements("hub-sdk>=0.0.8")
137
137
  self.session = HUBTrainingSession.create_session(model)
138
138
  model = self.session.model_file
139
139
 
@@ -48,6 +48,7 @@ from ultralytics.utils.torch_utils import (
48
48
  one_cycle,
49
49
  select_device,
50
50
  strip_optimizer,
51
+ torch_distributed_zero_first,
51
52
  )
52
53
 
53
54
 
@@ -127,7 +128,8 @@ class BaseTrainer:
127
128
 
128
129
  # Model and Dataset
129
130
  self.model = check_model_file_from_stem(self.args.model) # add suffix, i.e. yolov8n -> yolov8n.pt
130
- self.trainset, self.testset = self.get_dataset()
131
+ with torch_distributed_zero_first(RANK): # avoid auto-downloading dataset multiple times
132
+ self.trainset, self.testset = self.get_dataset()
131
133
  self.ema = None
132
134
 
133
135
  # Optimization utils init
@@ -143,6 +145,9 @@ class BaseTrainer:
143
145
  self.csv = self.save_dir / "results.csv"
144
146
  self.plot_idx = [0, 1, 2]
145
147
 
148
+ # HUB
149
+ self.hub_session = None
150
+
146
151
  # Callbacks
147
152
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
148
153
  if RANK in {-1, 0}:
@@ -38,7 +38,7 @@ def login(api_key: str = None, save=True) -> bool:
38
38
  Returns:
39
39
  (bool): True if authentication is successful, False otherwise.
40
40
  """
41
- checks.check_requirements("hub-sdk>=0.0.6")
41
+ checks.check_requirements("hub-sdk>=0.0.8")
42
42
  from hub_sdk import HUBClient
43
43
 
44
44
  api_key_url = f"{HUB_WEB_ROOT}/settings?tab=api+keys" # set the redirect URL
@@ -71,8 +71,12 @@ class HUBTrainingSession:
71
71
  """Class method to create an authenticated HUBTrainingSession or return None."""
72
72
  try:
73
73
  session = cls(identifier)
74
- assert session.client.authenticated, "HUB not authenticated"
75
- if args:
74
+ if not session.client.authenticated:
75
+ if identifier.startswith(f"{HUB_WEB_ROOT}/models/"):
76
+ LOGGER.warning(f"{PREFIX}WARNING ⚠️ Login to Ultralytics HUB with 'yolo hub login API_KEY'.")
77
+ exit()
78
+ return None
79
+ if args and not identifier.startswith(f"{HUB_WEB_ROOT}/models/"): # not a HUB model URL
76
80
  session.create_model(args)
77
81
  assert session.model.id, "HUB model not loaded correctly"
78
82
  return session
@@ -9,7 +9,7 @@ from ultralytics.utils import LOGGER, RANK, SETTINGS
9
9
 
10
10
  def on_pretrain_routine_start(trainer):
11
11
  """Create a remote Ultralytics HUB session to log local model training."""
12
- if RANK in {-1, 0} and SETTINGS["hub"] is True and not getattr(trainer, "hub_session", None):
12
+ if RANK in {-1, 0} and SETTINGS["hub"] is True and SETTINGS["api_key"] and trainer.hub_session is None:
13
13
  trainer.hub_session = HUBTrainingSession.create_session(trainer.args.model, trainer.args)
14
14
 
15
15
 
ultralytics/utils/dist.py CHANGED
@@ -37,6 +37,7 @@ if __name__ == "__main__":
37
37
  cfg = DEFAULT_CFG_DICT.copy()
38
38
  cfg.update(save_dir='') # handle the extra key 'save_dir'
39
39
  trainer = {name}(cfg=cfg, overrides=overrides)
40
+ trainer.args.model = "{getattr(trainer.hub_session, 'model_url', trainer.args.model)}"
40
41
  results = trainer.train()
41
42
  """
42
43
  (USER_CONFIG_DIR / "DDP").mkdir(exist_ok=True)
@@ -168,13 +168,15 @@ def unzip_file(file, path=None, exclude=(".DS_Store", "__MACOSX"), exist_ok=Fals
168
168
  files = [f for f in zipObj.namelist() if all(x not in f for x in exclude)]
169
169
  top_level_dirs = {Path(f).parts[0] for f in files}
170
170
 
171
- if len(top_level_dirs) > 1 or (len(files) > 1 and not files[0].endswith("/")):
172
- # Zip has multiple files at top level
173
- path = extract_path = Path(path) / Path(file).stem # i.e. ../datasets/coco8
174
- else:
171
+ # Decide to unzip directly or unzip into a directory
172
+ unzip_as_dir = len(top_level_dirs) == 1 # (len(files) > 1 and not files[0].endswith("/"))
173
+ if unzip_as_dir:
175
174
  # Zip has 1 top-level directory
176
175
  extract_path = path # i.e. ../datasets
177
- path = Path(path) / list(top_level_dirs)[0] # i.e. ../datasets/coco8
176
+ path = Path(path) / list(top_level_dirs)[0] # i.e. extract coco8/ dir to ../datasets/
177
+ else:
178
+ # Zip has multiple files at top level
179
+ path = extract_path = Path(path) / Path(file).stem # i.e. extract multiple files to ../datasets/coco8/
178
180
 
179
181
  # Check if destination directory already exists and contains files
180
182
  if path.exists() and any(path.iterdir()) and not exist_ok:
@@ -43,8 +43,8 @@ TORCHVISION_0_13 = check_version(TORCHVISION_VERSION, "0.13.0")
43
43
 
44
44
  @contextmanager
45
45
  def torch_distributed_zero_first(local_rank: int):
46
- """Decorator to make all processes in distributed training wait for each local_master to do something."""
47
- initialized = torch.distributed.is_available() and torch.distributed.is_initialized()
46
+ """Ensures all processes in distributed training wait for the local master (rank 0) to complete a task first."""
47
+ initialized = dist.is_available() and dist.is_initialized()
48
48
  if initialized and local_rank not in {-1, 0}:
49
49
  dist.barrier(device_ids=[local_rank])
50
50
  yield
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.40
3
+ Version: 8.2.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
@@ -30,7 +30,7 @@ Classifier: Operating System :: Microsoft :: Windows
30
30
  Requires-Python: >=3.8
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
- Requires-Dist: numpy <2.0.0
33
+ Requires-Dist: numpy <2.0.0,>=1.23.5
34
34
  Requires-Dist: matplotlib >=3.3.0
35
35
  Requires-Dist: opencv-python >=4.6.0
36
36
  Requires-Dist: pillow >=7.1.2
@@ -47,8 +47,6 @@ Requires-Dist: seaborn >=0.11.0
47
47
  Requires-Dist: ultralytics-thop >=2.0.0
48
48
  Provides-Extra: dev
49
49
  Requires-Dist: ipython ; extra == 'dev'
50
- Requires-Dist: check-manifest ; extra == 'dev'
51
- Requires-Dist: pre-commit ; extra == 'dev'
52
50
  Requires-Dist: pytest ; extra == 'dev'
53
51
  Requires-Dist: pytest-cov ; extra == 'dev'
54
52
  Requires-Dist: coverage[toml] ; extra == 'dev'
@@ -73,7 +71,7 @@ Requires-Dist: numpy ==1.23.5 ; (platform_machine == "aarch64") and extra == 'ex
73
71
  Requires-Dist: h5py !=3.11.0 ; (platform_machine == "aarch64") and extra == 'export'
74
72
  Requires-Dist: coremltools >=7.0 ; (platform_system != "Windows" and python_version <= "3.11") and extra == 'export'
75
73
  Provides-Extra: extra
76
- Requires-Dist: hub-sdk >=0.0.5 ; extra == 'extra'
74
+ Requires-Dist: hub-sdk >=0.0.8 ; extra == 'extra'
77
75
  Requires-Dist: ipython ; extra == 'extra'
78
76
  Requires-Dist: albumentations >=1.4.6 ; extra == 'extra'
79
77
  Requires-Dist: pycocotools >=2.0.7 ; extra == 'extra'
@@ -7,7 +7,7 @@ tests/test_explorer.py,sha256=r1pWer2y290Y0DqsM-La7egfEY0497YCdC4rwq3URV4,2178
7
7
  tests/test_exports.py,sha256=qc4YOgsGixqYLO6IRNY16-v6z14R0dp5fdni1v222xw,8034
8
8
  tests/test_integrations.py,sha256=8Ru7GyKV8j44EEc8X9_E7q7aR4CTOIMPuSagXjSGUxw,5847
9
9
  tests/test_python.py,sha256=9KjBKQXj6T9hRfX-4nnERd7OR3xx2ejV8430BoXjHro,20536
10
- ultralytics/__init__.py,sha256=EnkTVTA0WLhbesHd-athIUXYTqm5ZUIUVcty9r4kGyE,694
10
+ ultralytics/__init__.py,sha256=GcMVEfwdozZwncuVp8g-Zr28SQqaPQb_NKSxXeuPvok,694
11
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
12
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
13
13
  ultralytics/cfg/__init__.py,sha256=JblkT6Ze9MZ8hSs8gkV8JPcEKNMm-YqRqM4x501Dn9g,21507
@@ -98,15 +98,15 @@ ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2
98
98
  ultralytics/data/explorer/gui/dash.py,sha256=CPlFIIhf53j_YVAqealsC3AbcztdPqZxfniQcBnlKK4,10042
99
99
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
100
100
  ultralytics/engine/exporter.py,sha256=RVREJjFJ7Y-pnLq_i0yM5x9QRlKoLr0WnQWepkbFD_Y,58534
101
- ultralytics/engine/model.py,sha256=3R-jqjW7pJX_E6cfraE20GzkQ1nngy52m3LS1uQlYtE,39046
101
+ ultralytics/engine/model.py,sha256=XxV97SX-TWLU3FYY_FImupUJo75NQm7mTw7m5FIYDYM,39046
102
102
  ultralytics/engine/predictor.py,sha256=W58kDCFH2AfoFzpGbos3k8zUEVsLunBuM8sc2B64rPY,17449
103
103
  ultralytics/engine/results.py,sha256=zRuEIrBtpoCQ3M6a_YscnyXrWSP-zpL3ACv0gTdrDaw,30987
104
- ultralytics/engine/trainer.py,sha256=Gkh7tFa5BlQv4pZhcAKCfKBHwR28w4AHLqALxKa8ask,35264
104
+ ultralytics/engine/trainer.py,sha256=K3I7HWtgt72FH91Wl8La8Wl9zgg4TN-AiYIGGWjKGKw,35447
105
105
  ultralytics/engine/tuner.py,sha256=iZrgMmXSDpfuDu4bdFRflmAsscys2-8W8qAGxSyOVJE,11844
106
106
  ultralytics/engine/validator.py,sha256=Y21Uo8_Zto4qjk_YqQk6k7tyfpq_Qk9cfjeXeyDRxs8,14643
107
- ultralytics/hub/__init__.py,sha256=0pwI44r0JniiaCFzcwdh_vfSKlf4UTlKPGui5aOMPc8,5663
107
+ ultralytics/hub/__init__.py,sha256=93bqI8x8-MfDYdKkQVduuocUiQj3WGnk1nIk0li08zA,5663
108
108
  ultralytics/hub/auth.py,sha256=FID58NE6fh7Op_B45QOpWBw1qoBN0ponL16uvyb2dZ8,5399
109
- ultralytics/hub/session.py,sha256=l7o2RzhicROeG87_LS2Al4DWseFfEOqbaCmun8wEKlo,15733
109
+ ultralytics/hub/session.py,sha256=VaTpoctiX0I8-diPS8ntUPRpFw4rUEV1jwjPRf9yZT8,16031
110
110
  ultralytics/hub/utils.py,sha256=RpFDFp9biUK70Mswzz2o3uEu4xwQxRaStPS19U2gu0g,9721
111
111
  ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
112
112
  ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
@@ -194,8 +194,8 @@ ultralytics/utils/__init__.py,sha256=WdStmMYcXE7q4V3RgTYGmLEicMJR0mTQawGtK5_q9Is
194
194
  ultralytics/utils/autobatch.py,sha256=gPFcREMsMHRAuTQiBnNZ9Mm1XNqmQW-uMPhveDFEQ_Y,3966
195
195
  ultralytics/utils/benchmarks.py,sha256=tDX7wu0TpMMlEQDOFqfkjxl156ssS7Lh_5tFWIXdJfg,23549
196
196
  ultralytics/utils/checks.py,sha256=PDY1eHlsyDVEIiKRjvb81uz2jniL1MqgP_TmXH_78KM,28379
197
- ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
198
- ultralytics/utils/downloads.py,sha256=AcO0vT4jZd3BJz4dhYYci8PKWJxlqAGraqo_IlU2kYE,21539
197
+ ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
198
+ ultralytics/utils/downloads.py,sha256=LQ_mqMwHocOyyHvooEZHJKNVS11bFrwXAeefp21LX7M,21681
199
199
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
200
200
  ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
201
201
  ultralytics/utils/instance.py,sha256=5daM5nkxBv9hr5QzyII8zmuFj24hHuNtcr4EMCHAtpY,15654
@@ -205,7 +205,7 @@ ultralytics/utils/ops.py,sha256=A6MnypWNEpgOQRJpPwE3JMi2rUQWaDmBklIaaqvu3Lc,3321
205
205
  ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
206
206
  ultralytics/utils/plotting.py,sha256=I3YYLSsmj1BX8S5DphsedAm0RfisrPbeLpyuzsKXbqY,53288
207
207
  ultralytics/utils/tal.py,sha256=xuIyryUjaaYHkHPG9GvBwh1xxN2Hq4y3hXOtuERehwY,16017
208
- ultralytics/utils/torch_utils.py,sha256=G8gVzI3sOSVSHORi5a2u-iFhUCGGHn5_eKHaOaLfsOY,27047
208
+ ultralytics/utils/torch_utils.py,sha256=LwicOi4hI801LilElKmArs0z8T_e4wPCsyTcd2Y70Pk,27028
209
209
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
210
210
  ultralytics/utils/tuner.py,sha256=49KAadKZsUeCpwIm5Sn0grb0RPcMNI8vHGLwroDEJNI,6171
211
211
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
@@ -213,15 +213,15 @@ ultralytics/utils/callbacks/base.py,sha256=A8H6jXnPQJfOxA1ByTBWF2ePDs5ldccUabXG0
213
213
  ultralytics/utils/callbacks/clearml.py,sha256=M9Fi1OfdWqcm8uVkauuX3zJIYhNh6Tp7Jo4CfA0u0nw,5923
214
214
  ultralytics/utils/callbacks/comet.py,sha256=QR3-9f0L_W7nZWWg_OEN7t8La2JotapSS-CnNYVjCdk,13744
215
215
  ultralytics/utils/callbacks/dvc.py,sha256=WIClMsuvhiiyrwRv5BsZLxjsxYNJ3Y8Vq7zN0Bthtro,5045
216
- ultralytics/utils/callbacks/hub.py,sha256=boBWcpgNUjg4b2BvxEPPgz2mldi2J_2XZv2J6h05znU,3987
216
+ ultralytics/utils/callbacks/hub.py,sha256=EPewsLigFQc9ucTX2exKSlKBiaBNhYYyGC_nR2ragJo,3997
217
217
  ultralytics/utils/callbacks/mlflow.py,sha256=_bUzHyPb0npne0WFlGzlGCy-X5sxGQhC_xA3dZbF08I,5391
218
218
  ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyzC5q7p4ipQ,3756
219
219
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
220
220
  ultralytics/utils/callbacks/tensorboard.py,sha256=QEgOVhUqY9akOs5TJIwz1Rvn6l32xWLpOxlwEyWF0B8,4136
221
221
  ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
222
- ultralytics-8.2.40.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
223
- ultralytics-8.2.40.dist-info/METADATA,sha256=wH0JGdmXtJ2-3mAZZuTWXAT5WRlTPKcC-Z1XbC8erms,41291
224
- ultralytics-8.2.40.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
225
- ultralytics-8.2.40.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
226
- ultralytics-8.2.40.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
227
- ultralytics-8.2.40.dist-info/RECORD,,
222
+ ultralytics-8.2.41.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
223
+ ultralytics-8.2.41.dist-info/METADATA,sha256=OpSeNlqKDSM2DcYw5w86dWwabG7EvNaCmtqKwjPCGW8,41210
224
+ ultralytics-8.2.41.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
225
+ ultralytics-8.2.41.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
226
+ ultralytics-8.2.41.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
227
+ ultralytics-8.2.41.dist-info/RECORD,,