ultralytics 8.3.177__py3-none-any.whl → 8.3.179__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.
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.177"
3
+ __version__ = "8.3.179"
4
4
 
5
5
  import os
6
6
 
@@ -954,7 +954,10 @@ def entrypoint(debug: str = "") -> None:
954
954
  from ultralytics import YOLO
955
955
 
956
956
  model = YOLO(model, task=task)
957
-
957
+ if "yoloe" in stem or "world" in stem:
958
+ cls_list = overrides.pop("classes", DEFAULT_CFG.classes)
959
+ if cls_list is not None and isinstance(cls_list, str):
960
+ model.set_classes(cls_list.split(",")) # convert "person, bus" -> ['person', ' bus'].
958
961
  # Task Update
959
962
  if task != model.task:
960
963
  if task:
@@ -1621,6 +1621,8 @@ class LetterBox:
1621
1621
  scaleup: bool = True,
1622
1622
  center: bool = True,
1623
1623
  stride: int = 32,
1624
+ padding_value: int = 114,
1625
+ interpolation: int = cv2.INTER_LINEAR,
1624
1626
  ):
1625
1627
  """
1626
1628
  Initialize LetterBox object for resizing and padding images.
@@ -1635,6 +1637,8 @@ class LetterBox:
1635
1637
  scaleup (bool): If True, allow scaling up. If False, only scale down.
1636
1638
  center (bool): If True, center the placed image. If False, place image in top-left corner.
1637
1639
  stride (int): Stride of the model (e.g., 32 for YOLOv5).
1640
+ padding_value (int): Value for padding the image. Default is 114.
1641
+ interpolation (int): Interpolation method for resizing. Default is cv2.INTER_LINEAR.
1638
1642
 
1639
1643
  Attributes:
1640
1644
  new_shape (Tuple[int, int]): Target size for the resized image.
@@ -1642,6 +1646,8 @@ class LetterBox:
1642
1646
  scale_fill (bool): Flag for stretching image without padding.
1643
1647
  scaleup (bool): Flag for allowing upscaling.
1644
1648
  stride (int): Stride value for ensuring image size is divisible by stride.
1649
+ padding_value (int): Value used for padding the image.
1650
+ interpolation (int): Interpolation method used for resizing.
1645
1651
 
1646
1652
  Examples:
1647
1653
  >>> letterbox = LetterBox(new_shape=(640, 640), auto=False, scale_fill=False, scaleup=True, stride=32)
@@ -1653,6 +1659,8 @@ class LetterBox:
1653
1659
  self.scaleup = scaleup
1654
1660
  self.stride = stride
1655
1661
  self.center = center # Put the image in the middle or top-left
1662
+ self.padding_value = padding_value
1663
+ self.interpolation = interpolation
1656
1664
 
1657
1665
  def __call__(self, labels: Dict[str, Any] = None, image: np.ndarray = None) -> Union[Dict[str, Any], np.ndarray]:
1658
1666
  """
@@ -1705,7 +1713,7 @@ class LetterBox:
1705
1713
  dh /= 2
1706
1714
 
1707
1715
  if shape[::-1] != new_unpad: # resize
1708
- img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR)
1716
+ img = cv2.resize(img, new_unpad, interpolation=self.interpolation)
1709
1717
  if img.ndim == 2:
1710
1718
  img = img[..., None]
1711
1719
 
@@ -1713,9 +1721,11 @@ class LetterBox:
1713
1721
  left, right = int(round(dw - 0.1)) if self.center else 0, int(round(dw + 0.1))
1714
1722
  h, w, c = img.shape
1715
1723
  if c == 3:
1716
- img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=(114, 114, 114))
1724
+ img = cv2.copyMakeBorder(
1725
+ img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=(self.padding_value,) * 3
1726
+ )
1717
1727
  else: # multispectral
1718
- pad_img = np.full((h + top + bottom, w + left + right, c), fill_value=114, dtype=img.dtype)
1728
+ pad_img = np.full((h + top + bottom, w + left + right, c), fill_value=self.padding_value, dtype=img.dtype)
1719
1729
  pad_img[top : top + h, left : left + w] = img
1720
1730
  img = pad_img
1721
1731
 
@@ -47,6 +47,7 @@ Inference:
47
47
  yolo11n.mnn # MNN
48
48
  yolo11n_ncnn_model # NCNN
49
49
  yolo11n_imx_model # IMX
50
+ yolo11n_rknn_model # RKNN
50
51
 
51
52
  TensorFlow.js:
52
53
  $ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example
@@ -764,7 +765,7 @@ class Exporter:
764
765
  @try_export
765
766
  def export_ncnn(self, prefix=colorstr("NCNN:")):
766
767
  """Export YOLO model to NCNN format using PNNX https://github.com/pnnx/pnnx."""
767
- check_requirements("ncnn")
768
+ check_requirements("ncnn", cmds="--no-deps") # no deps to avoid installing opencv-python
768
769
  import ncnn # noqa
769
770
 
770
771
  LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__}...")
@@ -3,6 +3,8 @@
3
3
  from pathlib import Path
4
4
  from typing import Any, Dict, List, Optional, Union
5
5
 
6
+ import torch
7
+
6
8
  from ultralytics.data.build import load_inference_source
7
9
  from ultralytics.engine.model import Model
8
10
  from ultralytics.models import yolo
@@ -315,7 +317,7 @@ class YOLOE(Model):
315
317
  assert isinstance(self.model, YOLOEModel)
316
318
  return self.model.get_vocab(names)
317
319
 
318
- def set_classes(self, classes: List[str], embeddings) -> None:
320
+ def set_classes(self, classes: List[str], embeddings: Optional[torch.Tensor] = None) -> None:
319
321
  """
320
322
  Set the model's class names and embeddings for detection.
321
323
 
@@ -324,6 +326,8 @@ class YOLOE(Model):
324
326
  embeddings (torch.Tensor): Embeddings corresponding to the classes.
325
327
  """
326
328
  assert isinstance(self.model, YOLOEModel)
329
+ if embeddings is None:
330
+ embeddings = self.get_text_pe(classes) # generate text embeddings if not provided
327
331
  self.model.set_classes(classes, embeddings)
328
332
  # Verify no background class is present
329
333
  assert " " not in classes
@@ -534,7 +534,7 @@ class AutoBackend(nn.Module):
534
534
  # NCNN
535
535
  elif ncnn:
536
536
  LOGGER.info(f"Loading {w} for NCNN inference...")
537
- check_requirements("git+https://github.com/Tencent/ncnn.git" if ARM64 else "ncnn") # requires NCNN
537
+ check_requirements("git+https://github.com/Tencent/ncnn.git" if ARM64 else "ncnn", cmds="--no-deps")
538
538
  import ncnn as pyncnn
539
539
 
540
540
  net = pyncnn.Net()
@@ -694,7 +694,7 @@ def collect_system_info():
694
694
  "GPU count": torch.cuda.device_count() if cuda else None,
695
695
  "CUDA": torch.version.cuda if cuda else None,
696
696
  }
697
- LOGGER.info("\n" + "\n".join(f"{k:<20}{v}" for k, v in info_dict.items()) + "\n")
697
+ LOGGER.info("\n" + "\n".join(f"{k:<23}{v}" for k, v in info_dict.items()) + "\n")
698
698
 
699
699
  package_info = {}
700
700
  for r in parse_requirements(package="ultralytics"):
@@ -705,7 +705,7 @@ def collect_system_info():
705
705
  current = "(not installed)"
706
706
  is_met = "❌ "
707
707
  package_info[r.name] = f"{is_met}{current}{r.specifier}"
708
- LOGGER.info(f"{r.name:<20}{package_info[r.name]}")
708
+ LOGGER.info(f"{r.name:<23}{package_info[r.name]}")
709
709
 
710
710
  info_dict["Package Info"] = package_info
711
711
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.177
3
+ Version: 8.3.179
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>
@@ -57,13 +57,13 @@ Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
57
57
  Requires-Dist: mkdocstrings[python]; extra == "dev"
58
58
  Requires-Dist: mkdocs-ultralytics-plugin>=0.1.26; extra == "dev"
59
59
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
60
- Requires-Dist: click==8.2.1; extra == "dev"
61
60
  Provides-Extra: export
61
+ Requires-Dist: numpy<2.0.0; extra == "export"
62
62
  Requires-Dist: onnx<1.18.0,>=1.12.0; extra == "export"
63
63
  Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
64
64
  Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
65
65
  Requires-Dist: openvino>=2024.0.0; extra == "export"
66
- Requires-Dist: tensorflow>=2.0.0; extra == "export"
66
+ Requires-Dist: tensorflow<=2.19.0,>=2.0.0; extra == "export"
67
67
  Requires-Dist: tensorflowjs>=2.0.0; extra == "export"
68
68
  Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
69
69
  Requires-Dist: h5py!=3.11.0; platform_machine == "aarch64" and extra == "export"
@@ -7,10 +7,10 @@ tests/test_exports.py,sha256=CY-4xVZlVM16vdyIC0mSR3Ix59aiZm1qjFGIhSNmB20,11007
7
7
  tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
8
8
  tests/test_python.py,sha256=-qvdeg-hEcKU5mWSDEU24iFZ-i8FAwQRznSXpkp6WQ4,27928
9
9
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
10
- ultralytics/__init__.py,sha256=hBzrXExeyo-zxXKBW2PwzDCW5hndyDerj2NQCxQF5y4,730
10
+ ultralytics/__init__.py,sha256=FXox6DqpIppgU1hJEkfFPGy8tO2CG0ydlzWZEuW7Zso,730
11
11
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
12
12
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
13
- ultralytics/cfg/__init__.py,sha256=VIpPHImhjb0XLJquGZrG_LBGZchtOtBSXR7HYTYV2GU,39602
13
+ ultralytics/cfg/__init__.py,sha256=Uj1br3-NVFvP6VY5CL4PK63mAQAom93XFC5cqSbM6t4,39887
14
14
  ultralytics/cfg/default.yaml,sha256=1SspGAK_K_DT7DBfEScJh4jsJUTOxahehZYj92xmj7o,8347
15
15
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=4SGaJio9JFUkrscHJTPnH_QSbYm48Wbk8EFwl39zntc,3262
16
16
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
@@ -105,7 +105,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=TpRaK5kH_-QbjCQ7ekM4s_7j8I8ti3q8Hs7
105
105
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
106
106
  ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
107
107
  ultralytics/data/annotator.py,sha256=uAgd7K-yudxiwdNqHz0ubfFg5JsfNlae4cgxdvCMyuY,3030
108
- ultralytics/data/augment.py,sha256=lZhe2p8nrMrlfq1Y0FEXzDUAqLK0zROd2Heb7pJqn58,132420
108
+ ultralytics/data/augment.py,sha256=Ps1s-ug_oXdyAz4Jyur6OmxzRlyzwP3VP-3hDalSxj8,132959
109
109
  ultralytics/data/base.py,sha256=mRcuehK1thNuuzQGL6D1AaZkod71oHRdYTod_zdQZQg,19688
110
110
  ultralytics/data/build.py,sha256=TfMLSPMbE2hGZVMLl178NTFrihC1-50jNOt1ex9elxw,11480
111
111
  ultralytics/data/converter.py,sha256=dExElV0vWd4EmDtZaFMC0clEmLdjRDIdFiXf01PUvQA,27134
@@ -119,7 +119,7 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
119
119
  ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
120
120
  ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
121
121
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
122
- ultralytics/engine/exporter.py,sha256=8H5FRyBNC6tpVMHk1iBXVyq9CLVA9rrkqY5lHT6-IR8,75068
122
+ ultralytics/engine/exporter.py,sha256=Vr7K8Yf3wyf91ZvDpRosAohwa_W0oe4qW-JvqigCPfk,75190
123
123
  ultralytics/engine/model.py,sha256=877u2n0ISz2COOYtEMUqQe0E-HHB4Atb2DuH1XCE98k,53530
124
124
  ultralytics/engine/predictor.py,sha256=iXnUB-tvBHtVpKbB-5EKs1wSREBIerdUxWx39MaFYuk,22485
125
125
  ultralytics/engine/results.py,sha256=QcHcbPVlLBiy_APwABr-T5K65HR8Bl1rRzxawjjP76E,71873
@@ -164,7 +164,7 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
164
164
  ultralytics/models/utils/loss.py,sha256=E-61TfLPc04IdeL6IlFDityDoPju-ov0ouWV_cNY4Kg,21254
165
165
  ultralytics/models/utils/ops.py,sha256=Pr77n8XW25SUEx4X3bBvXcVIbRdJPoaXJuG0KWWawRQ,15253
166
166
  ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
167
- ultralytics/models/yolo/model.py,sha256=e66CIsSLHbEeGlkEQ1r6WwVDKAoR2nc0-UoGA94z-eM,18544
167
+ ultralytics/models/yolo/model.py,sha256=96PDREUJwDiPb3w4lp2HCesc3c3y1WGyLttOUhUYPxk,18715
168
168
  ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
169
169
  ultralytics/models/yolo/classify/predict.py,sha256=FqAC2YXe25bRwedMZhF3Lw0waoY-a60xMKELhxApP9I,4149
170
170
  ultralytics/models/yolo/classify/train.py,sha256=V-hevc6X7xemnpyru84OfTRA77eNnkVSMEz16_OUvo4,10244
@@ -194,7 +194,7 @@ ultralytics/models/yolo/yoloe/train.py,sha256=XYpQYSnSD8vi_9VSj_S5oIsNUEqm3e66vP
194
194
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
195
195
  ultralytics/models/yolo/yoloe/val.py,sha256=yebPkxwKKt__cY05Zbh1YXg4_BKzzpcDc3Cv3FJ5SAA,9769
196
196
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
197
- ultralytics/nn/autobackend.py,sha256=wnIhA0tsgCn7berelnRvBRVLSV9Kz6ZPiryHavTkQNw,41789
197
+ ultralytics/nn/autobackend.py,sha256=UM9ObXeLB0lgak1Q5oSi2IA-R_Owr6NdJNBAsA3mSbo,41790
198
198
  ultralytics/nn/tasks.py,sha256=vw_TNacAv-RN24rusFzKuYL6qRBD7cve8EpB7gOlU_8,72505
199
199
  ultralytics/nn/text_model.py,sha256=cYwD-0el4VeToDBP4iPFOQGqyEQatJOBHrVyONL3K_s,15282
200
200
  ultralytics/nn/modules/__init__.py,sha256=2nY0X69Z5DD5SWt6v3CUTZa5gXSzC9TQr3VTVqhyGho,3158
@@ -238,7 +238,7 @@ ultralytics/utils/__init__.py,sha256=KyczXn2SLR0g8xkCVpfNaPkhDCQ4A8vLt99teYu7mss
238
238
  ultralytics/utils/autobatch.py,sha256=33m8YgggLIhltDqMXZ5OE-FGs2QiHrl2-LfgY1mI4cw,5119
239
239
  ultralytics/utils/autodevice.py,sha256=AvgXFt8c1Cg4icKh0Hbhhz8UmVQ2Wjyfdfkeb2C8zck,8855
240
240
  ultralytics/utils/benchmarks.py,sha256=btsi_B0mfLPfhE8GrsBpi79vl7SRam0YYngNFAsY8Ak,31035
241
- ultralytics/utils/checks.py,sha256=mkDl_BTLZyjfhYbFVSG6xYmxhB2s7wsQ62ugnhspqOc,34707
241
+ ultralytics/utils/checks.py,sha256=q64U5wKyejD-2W2fCPqJ0Oiaa4_4vq2pVxV9wp6lMz4,34707
242
242
  ultralytics/utils/dist.py,sha256=A9lDGtGefTjSVvVS38w86GOdbtLzNBDZuDGK0MT4PRI,4170
243
243
  ultralytics/utils/downloads.py,sha256=awaWFsx1k4wKESni5IgEmcAlAJVfKKpULhQmgmUhn2c,21916
244
244
  ultralytics/utils/errors.py,sha256=XT9Ru7ivoBgofK6PlnyigGoa7Fmf5nEhyHtnD-8TRXI,1584
@@ -265,9 +265,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
265
265
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
266
266
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
267
267
  ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
268
- ultralytics-8.3.177.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
269
- ultralytics-8.3.177.dist-info/METADATA,sha256=RK2QGMce25Sf-8S58uHGcnV1Om037RCPvZp9qD1sqEw,37620
270
- ultralytics-8.3.177.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
- ultralytics-8.3.177.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
- ultralytics-8.3.177.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
- ultralytics-8.3.177.dist-info/RECORD,,
268
+ ultralytics-8.3.179.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
269
+ ultralytics-8.3.179.dist-info/METADATA,sha256=KzQOfXwEeMLwmdhOwPuQ4_2M6UoqphuLnvFhScn8RdI,37631
270
+ ultralytics-8.3.179.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
+ ultralytics-8.3.179.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
+ ultralytics-8.3.179.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
+ ultralytics-8.3.179.dist-info/RECORD,,