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

@@ -19,7 +19,7 @@ __all__ = "Detect", "Segment", "Pose", "Classify", "OBB", "RTDETRDecoder", "v10D
19
19
 
20
20
 
21
21
  class Detect(nn.Module):
22
- """YOLOv8 Detect head for detection models."""
22
+ """YOLO Detect head for detection models."""
23
23
 
24
24
  dynamic = False # force grid reconstruction
25
25
  export = False # export mode
@@ -30,7 +30,7 @@ class Detect(nn.Module):
30
30
  strides = torch.empty(0) # init
31
31
 
32
32
  def __init__(self, nc=80, ch=()):
33
- """Initializes the YOLOv8 detection layer with specified number of classes and channels."""
33
+ """Initializes the YOLO detection layer with specified number of classes and channels."""
34
34
  super().__init__()
35
35
  self.nc = nc # number of classes
36
36
  self.nl = len(ch) # number of detection layers
@@ -162,7 +162,7 @@ class Detect(nn.Module):
162
162
 
163
163
 
164
164
  class Segment(Detect):
165
- """YOLOv8 Segment head for segmentation models."""
165
+ """YOLO Segment head for segmentation models."""
166
166
 
167
167
  def __init__(self, nc=80, nm=32, npr=256, ch=()):
168
168
  """Initialize the YOLO model attributes such as the number of masks, prototypes, and the convolution layers."""
@@ -187,7 +187,7 @@ class Segment(Detect):
187
187
 
188
188
 
189
189
  class OBB(Detect):
190
- """YOLOv8 OBB detection head for detection with rotation models."""
190
+ """YOLO OBB detection head for detection with rotation models."""
191
191
 
192
192
  def __init__(self, nc=80, ne=1, ch=()):
193
193
  """Initialize OBB with number of classes `nc` and layer channels `ch`."""
@@ -217,7 +217,7 @@ class OBB(Detect):
217
217
 
218
218
 
219
219
  class Pose(Detect):
220
- """YOLOv8 Pose head for keypoints models."""
220
+ """YOLO Pose head for keypoints models."""
221
221
 
222
222
  def __init__(self, nc=80, kpt_shape=(17, 3), ch=()):
223
223
  """Initialize YOLO network with default parameters and Convolutional Layers."""
@@ -257,10 +257,10 @@ class Pose(Detect):
257
257
 
258
258
 
259
259
  class Classify(nn.Module):
260
- """YOLOv8 classification head, i.e. x(b,c1,20,20) to x(b,c2)."""
260
+ """YOLO classification head, i.e. x(b,c1,20,20) to x(b,c2)."""
261
261
 
262
262
  def __init__(self, c1, c2, k=1, s=1, p=None, g=1):
263
- """Initializes YOLOv8 classification head to transform input tensor from (b,c1,20,20) to (b,c2) shape."""
263
+ """Initializes YOLO classification head to transform input tensor from (b,c1,20,20) to (b,c2) shape."""
264
264
  super().__init__()
265
265
  c_ = 1280 # efficientnet_b0 size
266
266
  self.conv = Conv(c1, c_, k, s, p, g)
@@ -277,10 +277,10 @@ class Classify(nn.Module):
277
277
 
278
278
 
279
279
  class WorldDetect(Detect):
280
- """Head for integrating YOLOv8 detection models with semantic understanding from text embeddings."""
280
+ """Head for integrating YOLO detection models with semantic understanding from text embeddings."""
281
281
 
282
282
  def __init__(self, nc=80, embed=512, with_bn=False, ch=()):
283
- """Initialize YOLOv8 detection layer with nc classes and layer channels ch."""
283
+ """Initialize YOLO detection layer with nc classes and layer channels ch."""
284
284
  super().__init__(nc, ch)
285
285
  c3 = max(ch[0], min(self.nc, 100))
286
286
  self.cv3 = nn.ModuleList(nn.Sequential(Conv(x, c3, 3), Conv(c3, c3, 3), nn.Conv2d(c3, embed, 1)) for x in ch)
@@ -47,7 +47,7 @@ from ultralytics.utils.torch_utils import get_cpu_info, select_device
47
47
 
48
48
 
49
49
  def benchmark(
50
- model=WEIGHTS_DIR / "yolov8n.pt",
50
+ model=WEIGHTS_DIR / "yolo11n.pt",
51
51
  data=None,
52
52
  imgsz=160,
53
53
  half=False,
@@ -76,7 +76,7 @@ def benchmark(
76
76
  Examples:
77
77
  Benchmark a YOLO model with default settings:
78
78
  >>> from ultralytics.utils.benchmarks import benchmark
79
- >>> benchmark(model="yolov8n.pt", imgsz=640)
79
+ >>> benchmark(model="yolo11n.pt", imgsz=640)
80
80
  """
81
81
  import pandas as pd # scope for faster 'import ultralytics'
82
82
 
@@ -238,12 +238,14 @@ def check_version(
238
238
  c = parse_version(current) # '1.2.3' -> (1, 2, 3)
239
239
  for r in required.strip(",").split(","):
240
240
  op, version = re.match(r"([^0-9]*)([\d.]+)", r).groups() # split '>=22.04' -> ('>=', '22.04')
241
+ if not op:
242
+ op = ">=" # assume >= if no op passed
241
243
  v = parse_version(version) # '1.2.3' -> (1, 2, 3)
242
244
  if op == "==" and c != v:
243
245
  result = False
244
246
  elif op == "!=" and c == v:
245
247
  result = False
246
- elif op in {">=", ""} and not (c >= v): # if no constraint passed assume '>=required'
248
+ elif op == ">=" and not (c >= v):
247
249
  result = False
248
250
  elif op == "<=" and not (c <= v):
249
251
  result = False
@@ -333,18 +335,19 @@ def check_font(font="Arial.ttf"):
333
335
  return file
334
336
 
335
337
 
336
- def check_python(minimum: str = "3.8.0", hard: bool = True) -> bool:
338
+ def check_python(minimum: str = "3.8.0", hard: bool = True, verbose: bool = True) -> bool:
337
339
  """
338
340
  Check current python version against the required minimum version.
339
341
 
340
342
  Args:
341
343
  minimum (str): Required minimum version of python.
342
344
  hard (bool, optional): If True, raise an AssertionError if the requirement is not met.
345
+ verbose (bool, optional): If True, print warning message if requirement is not met.
343
346
 
344
347
  Returns:
345
348
  (bool): Whether the installed Python version meets the minimum constraints.
346
349
  """
347
- return check_version(PYTHON_VERSION, minimum, name="Python", hard=hard)
350
+ return check_version(PYTHON_VERSION, minimum, name="Python", hard=hard, verbose=verbose)
348
351
 
349
352
 
350
353
  @TryExcept()
@@ -374,8 +377,6 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
374
377
  ```
375
378
  """
376
379
  prefix = colorstr("red", "bold", "requirements:")
377
- check_python() # check python version
378
- check_torchvision() # check torch-torchvision compatibility
379
380
  if isinstance(requirements, Path): # requirements.txt file
380
381
  file = requirements.resolve()
381
382
  assert file.exists(), f"{prefix} {file} not found, check failed."
@@ -457,7 +458,7 @@ def check_torchvision():
457
458
  )
458
459
 
459
460
 
460
- def check_suffix(file="yolov8n.pt", suffix=".pt", msg=""):
461
+ def check_suffix(file="yolo11n.pt", suffix=".pt", msg=""):
461
462
  """Check file(s) for acceptable suffix."""
462
463
  if file and suffix:
463
464
  if isinstance(suffix, str):
@@ -770,6 +771,8 @@ def cuda_is_available() -> bool:
770
771
  return cuda_device_count() > 0
771
772
 
772
773
 
773
- # Define constants
774
+ # Run checks and define constants
775
+ check_python("3.8", hard=False, verbose=True) # check python version
776
+ check_torchvision() # check torch-torchvision compatibility
774
777
  IS_PYTHON_MINIMUM_3_10 = check_python("3.10", hard=False)
775
778
  IS_PYTHON_3_12 = PYTHON_VERSION.startswith("3.12")
@@ -425,7 +425,7 @@ def attempt_download_asset(file, repo="ultralytics/assets", release="v8.3.0", **
425
425
 
426
426
  Example:
427
427
  ```python
428
- file_path = attempt_download_asset("yolov8n.pt", repo="ultralytics/assets", release="latest")
428
+ file_path = attempt_download_asset("yolo11n.pt", repo="ultralytics/assets", release="latest")
429
429
  ```
430
430
  """
431
431
  from ultralytics.utils import SETTINGS # scoped for circular import
@@ -183,7 +183,7 @@ def get_latest_run(search_dir="."):
183
183
  return max(last_list, key=os.path.getctime) if last_list else ""
184
184
 
185
185
 
186
- def update_models(model_names=("yolov8n.pt",), source_dir=Path("."), update_names=False):
186
+ def update_models(model_names=("yolo11n.pt",), source_dir=Path("."), update_names=False):
187
187
  """
188
188
  Updates and re-saves specified YOLO models in an 'updated_models' subdirectory.
189
189
 
@@ -195,7 +195,7 @@ def update_models(model_names=("yolov8n.pt",), source_dir=Path("."), update_name
195
195
  Examples:
196
196
  Update specified YOLO models and save them in 'updated_models' subdirectory:
197
197
  >>> from ultralytics.utils.files import update_models
198
- >>> model_names = ("yolov8n.pt", "yolov8s.pt")
198
+ >>> model_names = ("yolo11n.pt", "yolov8s.pt")
199
199
  >>> update_models(model_names, source_dir=Path("/models"), update_names=True)
200
200
  """
201
201
  from ultralytics import YOLO
@@ -28,7 +28,7 @@ def run_ray_tune(
28
28
  from ultralytics import YOLO
29
29
 
30
30
  # Load a YOLOv8n model
31
- model = YOLO("yolov8n.pt")
31
+ model = YOLO("yolo11n.pt")
32
32
 
33
33
  # Start tuning hyperparameters for YOLOv8n training on the COCO8 dataset
34
34
  result_grid = model.tune(data="coco8.yaml", use_ray=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.9
3
+ Version: 8.3.11
4
4
  Summary: Ultralytics YOLO for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -3,12 +3,11 @@ tests/conftest.py,sha256=9PFAiwAy6eeORGspr5dOKxVuFDVKqYg8Nn_RxSJ27UI,2919
3
3
  tests/test_cli.py,sha256=E4lMt49TGo12Lb5CgQfpk1bwyFUZuFxF0V9j_ykV7xM,4821
4
4
  tests/test_cuda.py,sha256=KoRtRLUB7KOb9IXYX4mCi295Uh_cZEEFhCyvCDGRK9s,5381
5
5
  tests/test_engine.py,sha256=dcEcJsMQh61rDSNv7l4TIAgybLpzjVwerv9JZC_KCM8,4934
6
- tests/test_explorer.py,sha256=9EeMtt4-K3-MeGnAc7NemTg3uTo-Xr6AYJlTJZJJeF8,2572
7
6
  tests/test_exports.py,sha256=fpTKEVBUGLF3WiZPNKRs-IEcIY4cfxgvgKjUNfodjww,8042
8
7
  tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
9
8
  tests/test_python.py,sha256=I1RRdCwLdrc3jX06huVxct8HX8ccQOmQgVpuEflRl0U,23560
10
9
  tests/test_solutions.py,sha256=dpxWGKO-aJ3Yff4KR7BQGajX9VyFdGTWEtcbmFC3WwE,3005
11
- ultralytics/__init__.py,sha256=kKW4tliZreJmH3V6DWiiMAz_zr3td0m2oDNptee7Y5U,752
10
+ ultralytics/__init__.py,sha256=19JcU9M-VZ6RCIz0c3u-8ynzEpeqhYIKNSN9t_kpNuI,753
12
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
13
  ultralytics/cfg/__init__.py,sha256=N-XONBXwmD3vzoE4icBXznkV8LOLmf6ak6mRdGPucvw,33146
@@ -90,27 +89,27 @@ ultralytics/cfg/solutions/default.yaml,sha256=CByxINYMyoGzGKdurDk2GhYc8XOa8Z6H7C
90
89
  ultralytics/cfg/trackers/botsort.yaml,sha256=8B0xNbnG_E-9DCUpap72PWkUgBb1AjuApEn7gHiVngE,916
91
90
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=8vpTZ2x9mhRXJymoJvs1G8kTXo_HxbSwHup2FQALT3A,721
92
91
  ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
93
- ultralytics/data/annotator.py,sha256=PniOxH2MScWKp539vuufk69uG1JsltDB5OMCUhxn2QY,2489
92
+ ultralytics/data/annotator.py,sha256=oy87bzQN6ZRYeucoLk8e-jDEo6YJ91FE_zMFtLEVC1I,2489
94
93
  ultralytics/data/augment.py,sha256=YCLrwx1mRGeidggo_7GeINay8KdxACqREHJofZeaTHA,120430
95
94
  ultralytics/data/base.py,sha256=ZCIhAyFfxXVp5fVnYD8mwbksNALJTayBKIR5FKGV7ZM,15168
96
95
  ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
97
96
  ultralytics/data/converter.py,sha256=QCtrcbNz9kid8nvHfGIWt02nH1wwMKv6HI-8s927CR8,24251
98
97
  ultralytics/data/dataset.py,sha256=D556AW0ZEsW3V8c5zJiHM_prc_YfZqymIkDKPw3k9Io,22936
99
- ultralytics/data/loaders.py,sha256=JF2Z_ESK6RweavOuYWejYSGJwmqINb5hNwwCb3AAf0M,24094
98
+ ultralytics/data/loaders.py,sha256=Fr70Q9p9t7buLW_8R2_lI_nyCMG033gWSxvwy1M-a-U,28449
100
99
  ultralytics/data/split_dota.py,sha256=yOtypHoY5HvIVBKZgFXdfj2tuCLLEBnMwNfAeG94Eik,10680
101
- ultralytics/data/utils.py,sha256=BK4Z87fDHfNCd6RYVYVWdTVWc8-tCqNJ-VfeN8ZG8l0,31068
100
+ ultralytics/data/utils.py,sha256=u6OZ7InLpI1em5aEPz13ZzS9BcO37dcY9_s2btXGZYQ,31076
102
101
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
103
102
  ultralytics/data/explorer/explorer.py,sha256=JWmLHHhp68h2q3vx4poBou5RYoAX3R89yihR50YLDb0,18881
104
103
  ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
105
104
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
106
105
  ultralytics/data/explorer/gui/dash.py,sha256=6XOZy9NrkPEXREJPbi0EBkGgu78TAdHpdhSB2HuBOAo,10222
107
106
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
108
- ultralytics/engine/exporter.py,sha256=DeHW_T_Zd3A21BLQYV1-FnS5EcmepMOy9nrussYNieU,57505
109
- ultralytics/engine/model.py,sha256=Vtkza7cQrxvowb0PqGFhp7eC3cXRIKj6OUaR5d9w1-U,51464
110
- ultralytics/engine/predictor.py,sha256=MgMWHUJdRcVCaVmOyvdy2Gjk_EyRHv-ar0SSGxQe8F4,17471
111
- ultralytics/engine/results.py,sha256=8RJlN8J-_9w-mrDZm9wC-DZJTPBS7v1c_r_R173QyRM,75043
107
+ ultralytics/engine/exporter.py,sha256=b3OIHAABVyqqSizJKQxiWPZvKzIvThK9kucN2iYWnwE,57487
108
+ ultralytics/engine/model.py,sha256=pvL1uf-wwdWL8Iph7VEAYn1-z7wEHzVug21V_0_gO6M,51456
109
+ ultralytics/engine/predictor.py,sha256=keTelEeo23Dcbs-XvmRWAPIs4pbCNDtsMBz88WM1eK8,17534
110
+ ultralytics/engine/results.py,sha256=BxanBI8PhBCfs-9cSy-GS6naScuiD3hdvUAJWPW2mS0,75043
112
111
  ultralytics/engine/trainer.py,sha256=6dGOEZvMo3o97SLpKlcR5XmhWhUHh05uLYpj3jNn0jU,36981
113
- ultralytics/engine/tuner.py,sha256=gPqDTHH7vRB2O3YyH26m1BjVKbXxuA2XAlPRzTKFZsc,11838
112
+ ultralytics/engine/tuner.py,sha256=WBj8iw1K1TK0hvanlA-wkwmfqh1SI8jEe2dGwUINeTg,11838
114
113
  ultralytics/engine/validator.py,sha256=2C_qXI36Z9rLOpmS0YR8Qe3ka4p23YiH2w5ai7-XBwE,14811
115
114
  ultralytics/hub/__init__.py,sha256=3SKvZ5aRina3h94xMPQIB3D4maF62qFcyIqPPHRHNAc,5644
116
115
  ultralytics/hub/auth.py,sha256=kDLakGa2NbzvMAeXc2UdzZ65r0AH-XeM_JfsDY97WGk,5545
@@ -150,15 +149,15 @@ ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8
150
149
  ultralytics/models/utils/loss.py,sha256=Ozi0Up7cmPAehXgqGuVSAtUS4XQxaX76KqE8Q0VHk7E,15840
151
150
  ultralytics/models/utils/ops.py,sha256=aPAPwWMLJLWq-I04wS_YrqJ_Vy_xBXtqQu6Aox15YDA,13221
152
151
  ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xskBM8gEk,247
153
- ultralytics/models/yolo/model.py,sha256=CMh3_qYCm2mdFHVyZJDMu8eFCTMD0z1ZPmM8GmwTU7E,4233
152
+ ultralytics/models/yolo/model.py,sha256=E4TuJZZux0L_SG7sC0SDgxrmeBvuZRpxprPrCC26lvs,4233
154
153
  ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
155
154
  ultralytics/models/yolo/classify/predict.py,sha256=0CEJ4B4fXbOMUnJy79gRvG-qdszOzTSLOb1xxkgsKek,2444
156
155
  ultralytics/models/yolo/classify/train.py,sha256=THXSkQVQVBuw1QxcEVA8MtLHYYdaAEqepObJCXoLcZ8,6358
157
156
  ultralytics/models/yolo/classify/val.py,sha256=Tzizhp3ebzPvwJejrE8tb-TuXw4MdkEI9mOANV74eXQ,4909
158
157
  ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
159
- ultralytics/models/yolo/detect/predict.py,sha256=_kY6-_wsPCt9ZOf-iwusceikAM5TV_KnjYdv2koE45A,1471
160
- ultralytics/models/yolo/detect/train.py,sha256=cHlCTj39Tr6butQOQRreCFnVODK2IqaogBpTAQuGAPE,6363
161
- ultralytics/models/yolo/detect/val.py,sha256=qZDP1ETpZE1e7avZyOuBe3U8zuLpsBdKHUuN3YL-tQI,15152
158
+ ultralytics/models/yolo/detect/predict.py,sha256=-uZFLutxGYZX47RANcaxC-LFStRbv0nBv_8-ypadQoI,1471
159
+ ultralytics/models/yolo/detect/train.py,sha256=jayPByykRhJvUeDCN-oZ4M6Yx0rpjAWq9epjJgnHeYA,6363
160
+ ultralytics/models/yolo/detect/val.py,sha256=ulKYfViVU2WErDtFOU8FTGBlROR4p-jFK4Nf9O4LMV4,15152
162
161
  ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
163
162
  ultralytics/models/yolo/obb/predict.py,sha256=VxpKCKV5dWnOr0GyV1rJGH5SzzRouCYW_8T26xJ8MU8,2037
164
163
  ultralytics/models/yolo/obb/train.py,sha256=_FVYCvHJ5ECi2aN8k7AmVLxRUuun7acSqwWtCBRuL6Q,1473
@@ -175,13 +174,13 @@ ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2
175
174
  ultralytics/models/yolo/world/train.py,sha256=gaDrAmLJpg9qDtmL5evA5HsV2yb4RTRSfk2EDYrHdRg,3686
176
175
  ultralytics/models/yolo/world/train_world.py,sha256=IsnCEVt6DcM9lUskCKmIN-M8MM79xLpwTRqRoAHUnZ4,4857
177
176
  ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
178
- ultralytics/nn/autobackend.py,sha256=aBW_Z8XnSsD-vW7Ek873dyKX9h55XHIYwTG22M3eOIk,31599
177
+ ultralytics/nn/autobackend.py,sha256=xcbndT-esNu3Icx3SWRJXZ7JqWjj8H5hteUetYBliDo,31599
179
178
  ultralytics/nn/tasks.py,sha256=ssBZR4LY4rvaxYawXq5-yWSBAZ9oCz6BgxWYXB2YD68,48399
180
179
  ultralytics/nn/modules/__init__.py,sha256=xhW2BennT9U_VaMXVpRu-bdLgp1BXt9L8mkIUBE3idU,2625
181
180
  ultralytics/nn/modules/activation.py,sha256=chhn469wnRHEs5BMGNBYXwPYZc_7-urspTT8fnBd-xA,895
182
181
  ultralytics/nn/modules/block.py,sha256=thcIPcnGRRxDDDswywJsfzbewr9XfTrzl_UvSl-bJ3c,41832
183
182
  ultralytics/nn/modules/conv.py,sha256=vOeHZ6Z4sc6-9PrDmRGT1hFkxSBbbWkQm2jRbGGjpqQ,12705
184
- ultralytics/nn/modules/head.py,sha256=x0Y8lTKFqYC4oAN1JTJ-yQ43sIXEIp35dmC14vdtQnk,26627
183
+ ultralytics/nn/modules/head.py,sha256=WnCpQDBlMDStpEs-m-R0vcKq28OX2FEgTcmHEpRL_pA,26609
185
184
  ultralytics/nn/modules/transformer.py,sha256=tGiK8NmPfswwW1rbF21r5ILUkkZQ6Nk4s8j16vFBmps,18069
186
185
  ultralytics/nn/modules/utils.py,sha256=a88cKl2wz1nMVSEBiajtvaCbDBQIkESWOKTZ_WAJy90,3195
187
186
  ultralytics/solutions/__init__.py,sha256=6RDeXWO1QSaMgCq8YrWXaj2xvPw2sJwJL_a0dgjCvz0,648
@@ -206,12 +205,12 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=cH9zD3fwkuezP97H9mw8cSBN7a8hH
206
205
  ultralytics/trackers/utils/matching.py,sha256=3Ie1WNNRZ4_q3365F03XD7Nr9juZB_08mw4yUKC3w74,7162
207
206
  ultralytics/utils/__init__.py,sha256=du1Y1LMU0jQn_zWWnAIx9U8wn6Vh7ce-k7qMwi6y0po,48698
208
207
  ultralytics/utils/autobatch.py,sha256=BO9MCRtrLDtrDQaxqV0BdjaYsgXf-q07Y3_VdGp4URY,4330
209
- ultralytics/utils/benchmarks.py,sha256=8FYp5WPzcxcDaeg8ol2sgzRBHVGYatEO7f3MrmPF6nI,25097
210
- ultralytics/utils/checks.py,sha256=7oWc91HqQdH9EHuHysxk_ZltiRrGt6eq-pUf0TkA3gU,29579
208
+ ultralytics/utils/benchmarks.py,sha256=R3_jtwLd48azPSXmtIhqlzduUvflk0FOY8GJOJ6mB6E,25097
209
+ ultralytics/utils/checks.py,sha256=iH5R-DQKhP7qnW8pQm-rlYPsMJ5KWvcn9imo-hamIqE,29765
211
210
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
212
- ultralytics/utils/downloads.py,sha256=o8RY9f0KrzWfueLs8DuJ5w8OWQ-ll4ZS9lX6MEFDi70,21977
211
+ ultralytics/utils/downloads.py,sha256=xxM9zTNCqo3PRFOxWCH1pJoKuFJKZFsb3sab6Hvabug,21977
213
212
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
214
- ultralytics/utils/files.py,sha256=YjfzbBDAq-nD3LKjtuMVwggnnv1dROMuVoo3Edm_tjU,8224
213
+ ultralytics/utils/files.py,sha256=uiXQSVABJRoI5ImnM6ndEBIFbECfksmWNEldBg8GnSo,8224
215
214
  ultralytics/utils/instance.py,sha256=QSms7mPHZ5e8JGuJYLohLWltzI0aBE8dob2rOUK4RtM,16249
216
215
  ultralytics/utils/loss.py,sha256=SW3FVFFp8Ki_LCT8wIdFbm6KmyPcQn3RmKNcvVAhMQI,34174
217
216
  ultralytics/utils/metrics.py,sha256=UgLGudWp57uXDMlMUJy4gsz6cfVjcq7tYmHeto3TqvM,53927
@@ -221,7 +220,7 @@ ultralytics/utils/plotting.py,sha256=aozAEwcbc447ume9bQrEBTU04AzyiZZrnzcTzA2S6j0
221
220
  ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
222
221
  ultralytics/utils/torch_utils.py,sha256=gVN-KSrAzJC1rW3woQd4FsTT693GD8rXiccToL2m4kM,30059
223
222
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
224
- ultralytics/utils/tuner.py,sha256=AtEtK6pOt9xVTyx864OpNRVxNdAxz5aKHzveiXwkD1A,6250
223
+ ultralytics/utils/tuner.py,sha256=mJdgvuE2StoFS13mEdsTbsxQgSZA4fSdSCgoyh8PvNw,6250
225
224
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
226
225
  ultralytics/utils/callbacks/base.py,sha256=PHjQ6RITwC2dylCQTB0bdPgAsHjxVeuDb5N1NPTbHGc,5775
227
226
  ultralytics/utils/callbacks/clearml.py,sha256=qbLbqzMVWAnjqg5YUM-Ue6CmGueFCvqKpHFKlw-MyVc,5933
@@ -233,9 +232,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=IbGQfEltamUKXJt93uSLQFn8c2rYh3DMTg
233
232
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
234
233
  ultralytics/utils/callbacks/tensorboard.py,sha256=bv4fkkesdgmZv_E2MU6wuaMBwEV5iI2G53RHPyD9quw,4170
235
234
  ultralytics/utils/callbacks/wb.py,sha256=upfbF8-LLXueUvulLaMDmKDhKCl_PWbNa_87PQ0L0Rc,6752
236
- ultralytics-8.3.9.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
- ultralytics-8.3.9.dist-info/METADATA,sha256=zlSN3Ydf1s9RX4F0F_V0apmc-8fAwWBctBKsKeej9Tg,34699
238
- ultralytics-8.3.9.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
239
- ultralytics-8.3.9.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
- ultralytics-8.3.9.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
- ultralytics-8.3.9.dist-info/RECORD,,
235
+ ultralytics-8.3.11.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
236
+ ultralytics-8.3.11.dist-info/METADATA,sha256=bD92haGae0_AYj7u5Z8EE6OoUn5sAhwau3R0S-z6pVQ,34700
237
+ ultralytics-8.3.11.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
238
+ ultralytics-8.3.11.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
239
+ ultralytics-8.3.11.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
240
+ ultralytics-8.3.11.dist-info/RECORD,,
tests/test_explorer.py DELETED
@@ -1,66 +0,0 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
2
-
3
- import PIL
4
- import pytest
5
-
6
- from ultralytics import Explorer
7
- from ultralytics.utils import ASSETS
8
- from ultralytics.utils.torch_utils import TORCH_1_13
9
-
10
-
11
- @pytest.mark.slow
12
- @pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
13
- def test_similarity():
14
- """Test the correctness and response length of similarity calculations and SQL queries in the Explorer."""
15
- exp = Explorer(data="coco8.yaml")
16
- exp.create_embeddings_table()
17
- similar = exp.get_similar(idx=1)
18
- assert len(similar) == 4
19
- similar = exp.get_similar(img=ASSETS / "bus.jpg")
20
- assert len(similar) == 4
21
- similar = exp.get_similar(idx=[1, 2], limit=2)
22
- assert len(similar) == 2
23
- sim_idx = exp.similarity_index()
24
- assert len(sim_idx) == 4
25
- sql = exp.sql_query("WHERE labels LIKE '%zebra%'")
26
- assert len(sql) == 1
27
-
28
-
29
- @pytest.mark.slow
30
- @pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
31
- def test_det():
32
- """Test detection functionalities and verify embedding table includes bounding boxes."""
33
- exp = Explorer(data="coco8.yaml", model="yolo11n.pt")
34
- exp.create_embeddings_table(force=True)
35
- assert len(exp.table.head()["bboxes"]) > 0
36
- similar = exp.get_similar(idx=[1, 2], limit=10)
37
- assert len(similar) > 0
38
- # This is a loose test, just checks errors not correctness
39
- similar = exp.plot_similar(idx=[1, 2], limit=10)
40
- assert isinstance(similar, PIL.Image.Image)
41
-
42
-
43
- @pytest.mark.slow
44
- @pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
45
- def test_seg():
46
- """Test segmentation functionalities and ensure the embedding table includes segmentation masks."""
47
- exp = Explorer(data="coco8-seg.yaml", model="yolo11n-seg.pt")
48
- exp.create_embeddings_table(force=True)
49
- assert len(exp.table.head()["masks"]) > 0
50
- similar = exp.get_similar(idx=[1, 2], limit=10)
51
- assert len(similar) > 0
52
- similar = exp.plot_similar(idx=[1, 2], limit=10)
53
- assert isinstance(similar, PIL.Image.Image)
54
-
55
-
56
- @pytest.mark.slow
57
- @pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
58
- def test_pose():
59
- """Test pose estimation functionality and verify the embedding table includes keypoints."""
60
- exp = Explorer(data="coco8-pose.yaml", model="yolo11n-pose.pt")
61
- exp.create_embeddings_table(force=True)
62
- assert len(exp.table.head()["keypoints"]) > 0
63
- similar = exp.get_similar(idx=[1, 2], limit=10)
64
- assert len(similar) > 0
65
- similar = exp.plot_similar(idx=[1, 2], limit=10)
66
- assert isinstance(similar, PIL.Image.Image)