dgenerate-ultralytics-headless 8.3.232__py3-none-any.whl → 8.3.234__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.232
3
+ Version: 8.3.234
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -50,7 +50,7 @@ Requires-Dist: ipython; extra == "dev"
50
50
  Requires-Dist: pytest; extra == "dev"
51
51
  Requires-Dist: pytest-cov; extra == "dev"
52
52
  Requires-Dist: coverage[toml]; extra == "dev"
53
- Requires-Dist: zensical>=0.0.9; extra == "dev"
53
+ Requires-Dist: zensical>=0.0.9; python_version >= "3.10" and extra == "dev"
54
54
  Requires-Dist: mkdocs-ultralytics-plugin>=0.2.3; extra == "dev"
55
55
  Requires-Dist: minijinja>=2.0.0; extra == "dev"
56
56
  Provides-Extra: export
@@ -1,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.232.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.234.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=bCox_hLdGRFYGLb2kd722VdNP2zEXNYNuLLYtqZSrbw,804
3
3
  tests/conftest.py,sha256=mOy9lGpNp7lk1hHl6_pVE0f9cU-72gnkoSm4TO-CNZU,2318
4
4
  tests/test_cli.py,sha256=GhIFHi-_WIJpDgoGNRi0DnjbfwP1wHbklBMnkCM-P_4,5464
@@ -8,7 +8,7 @@ tests/test_exports.py,sha256=OMLio2uUhyqo8D8qB5xUwmk7Po2rMeAACRc8WYoxbj4,13147
8
8
  tests/test_integrations.py,sha256=6QgSh9n0J04RdUYz08VeVOnKmf4S5MDEQ0chzS7jo_c,6220
9
9
  tests/test_python.py,sha256=jhnN-Oie3euE3kfHzUqvnadkWOsQyvFmdmEcse9Rsto,29253
10
10
  tests/test_solutions.py,sha256=j_PZZ5tMR1Y5ararY-OTXZr1hYJ7vEVr8H3w4O1tbQs,14153
11
- ultralytics/__init__.py,sha256=QwDEEKwVKp70y7aoaAwIzU9WYxVtvQzuNuQpLZnTKP0,1302
11
+ ultralytics/__init__.py,sha256=a_HMVA4o-9DN2vt7nIDkBq2U8E3oKkccQ9dw4UQ861I,1302
12
12
  ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
13
13
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
14
14
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
@@ -109,7 +109,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=tRxC-qT4Wz0mLn5x7ZEwrqgGKrmTDVY7gMg
109
109
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=7LS1ObP5u7BUFcmeY6L2m3bRuPUktnpJspFKd_ElVWc,908
110
110
  ultralytics/data/__init__.py,sha256=ToR8zl0JhBHy42ZvV7zIwO_F3lbi5oNlGQNPK3dlddU,644
111
111
  ultralytics/data/annotator.py,sha256=kbfSPBesKEVK6ys3dilTdMh7rCKyp0xV7tGQeEDbpWI,2985
112
- ultralytics/data/augment.py,sha256=OgOAxaisyrSIPrvY7h9QXpq0m8EKsnlHBEIrmZk8GOw,127481
112
+ ultralytics/data/augment.py,sha256=t5kWY6IjnnHz0ly5RTSiJRYWnoNh1rFiT8A8zVEFUkA,127496
113
113
  ultralytics/data/base.py,sha256=2sJmh1VUCvxjfdvEAQldK9PLVsw-pDVjcyo8gCLlbuo,19575
114
114
  ultralytics/data/build.py,sha256=86pnRpiFDHrm_ZvwN9DTSjTwLT9is2sO_tyXiqya7Wk,17205
115
115
  ultralytics/data/converter.py,sha256=_54Xw78TLRswJ9nUVCd2lfEP5riQ82rM0_g_Gad4PAI,31893
@@ -123,7 +123,7 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
123
123
  ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
124
124
  ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
125
125
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
126
- ultralytics/engine/exporter.py,sha256=m1I0IENaXW-z4pdA2Dvnh_UqesFWrWSfQN1kheIJKJA,68208
126
+ ultralytics/engine/exporter.py,sha256=nq14G-oL8iFSckIji9-GQunWUtp8qyUGuD8jI5a6Ixc,68720
127
127
  ultralytics/engine/model.py,sha256=RkjMWXkyGmYjmMYIG8mPX8Cf1cJvn0ccOsXt03g7tIk,52999
128
128
  ultralytics/engine/predictor.py,sha256=eu0sVo3PTt4zKH6SntzdO1E8cgFj9PFOJrfQO6VNqCE,22698
129
129
  ultralytics/engine/results.py,sha256=zHPX3j36SnbHHRzAtF5wv_IhugEHf-zEPUqpQwdgZxA,68029
@@ -198,8 +198,8 @@ ultralytics/models/yolo/yoloe/train.py,sha256=giX6zDu5Z3z48PCaBHzu7v9NH3BrpUaGAY
198
198
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=0hRByMXsEJA-J2B1wXDMVhiW9f9MOTj3LlrGTibN6Ww,4919
199
199
  ultralytics/models/yolo/yoloe/val.py,sha256=utUFWeFKRFWZrPr1y3A8ztbTwdoWMYqzlwBN7CQ0tCA,9418
200
200
  ultralytics/nn/__init__.py,sha256=538LZPUKKvc3JCMgiQ4VLGqRN2ZAaVLFcQbeNNHFkEA,545
201
- ultralytics/nn/autobackend.py,sha256=XdEWANgSpRhLm2t2aPvp4zaPDluS14-gF6_BPamg95I,42673
202
- ultralytics/nn/tasks.py,sha256=dkfIujXeSaR8FmLYyrhl5Pj2U1h22JMEOkv9T3pIIwc,70367
201
+ ultralytics/nn/autobackend.py,sha256=G89XeTrt7WSd-yNZ8vHRQBCGLgkVveh-E5He6W4ditw,42685
202
+ ultralytics/nn/tasks.py,sha256=LBBrSENKAQ1kpRLavjQ4kbBgpCQPqiSkfOmxCt2xQIw,70467
203
203
  ultralytics/nn/text_model.py,sha256=doU80pYuhc7GYtALVN8ZjetMmdTJTheuIP65riKnT48,15358
204
204
  ultralytics/nn/modules/__init__.py,sha256=5Sg_28MDfKwdu14Ty_WCaiIXZyjBSQ-xCNCwnoz_w-w,3198
205
205
  ultralytics/nn/modules/activation.py,sha256=J6n-CJKFK0YbhwcRDqm9zEJM9pSAEycj5quQss_3x6E,2219
@@ -228,7 +228,7 @@ ultralytics/solutions/speed_estimation.py,sha256=ph_5MFObDGz05uFZm1zmpLYw-YyLlKQ
228
228
  ultralytics/solutions/streamlit_inference.py,sha256=utJOe0Weu44_ABF9rDnAjwLjKyn3gwfaYaxFfFbx-9c,13060
229
229
  ultralytics/solutions/trackzone.py,sha256=oqv-zZL99RVUMcN5ViAPmadzX6QNdAEozYrrg2pqO6k,3903
230
230
  ultralytics/solutions/vision_eye.py,sha256=bSXmJ93DyLu4_CWgbF3GkHzh_VpiEmkK5vVJDPPGzI4,2982
231
- ultralytics/solutions/templates/similarity-search.html,sha256=jDlqKEbppC9udbL69DZ-w0IzUDp3qBH0tfOgkqYMxCE,4146
231
+ ultralytics/solutions/templates/similarity-search.html,sha256=mYuJI8H84cmu4kwPq2aEsmzazimFEEiLhOXZ08lXQgA,4165
232
232
  ultralytics/trackers/__init__.py,sha256=n3BOO0TR-Sz5ANDYOkKDipM9nSHOePMEwqafbk-YEPs,255
233
233
  ultralytics/trackers/basetrack.py,sha256=57kL3R9s50GrXTAR0QfBLk0ea2VAXTBWJ6TSk3iCMrY,4374
234
234
  ultralytics/trackers/bot_sort.py,sha256=nViAG2jjl4T9X4WZjHBW-xzfR9TpJJXvgsjjzE8HeW0,11701
@@ -238,7 +238,7 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
238
238
  ultralytics/trackers/utils/gmc.py,sha256=B07unzpprc_vSpAcBGPR1i2fcgFlBMC5pzTAoP9osTc,13800
239
239
  ultralytics/trackers/utils/kalman_filter.py,sha256=iO3WEGu9AWWpVwe0AfgMqXZCzO0sgQC8lGt8KpLnPN4,21485
240
240
  ultralytics/trackers/utils/matching.py,sha256=7lyDXEw6w5iEKeb9CARlAoPbvT35VnCc9hkjD6ZcIqs,7144
241
- ultralytics/utils/__init__.py,sha256=xJODO40KcdX2gpZIl0f62I-ko1-SSka_lZa3kdKTHB4,53316
241
+ ultralytics/utils/__init__.py,sha256=mumSvouTfDk9SnlGPiZCiuO52rpIUh6dpUbV8MfJXKE,54400
242
242
  ultralytics/utils/autobatch.py,sha256=jiE4m_--H9UkXFDm_FqzcZk_hSTCGpS72XdVEKgZwAo,5114
243
243
  ultralytics/utils/autodevice.py,sha256=rXlPuo-iX-vZ4BabmMGEGh9Uxpau4R7Zlt1KCo9Xfyc,8892
244
244
  ultralytics/utils/benchmarks.py,sha256=B6Q55qtZri2EWOKldXnEhGrFe2BjHsAQEt7juPN4m1s,32279
@@ -279,8 +279,8 @@ ultralytics/utils/export/__init__.py,sha256=Cfh-PwVfTF_lwPp-Ss4wiX4z8Sm1XRPklsqd
279
279
  ultralytics/utils/export/engine.py,sha256=23-lC6dNsmz5vprSJzaN7UGNXrFlVedNcqhlOH_IXes,9956
280
280
  ultralytics/utils/export/imx.py,sha256=9UPA4CwTPADzvJx9dOsh_8fQ-LMeqG7eI9EYIn5ojkc,11621
281
281
  ultralytics/utils/export/tensorflow.py,sha256=PyAp0_rXSUcXiqV2RY0H9b_-oFaZ7hZBiSM42X53t0Q,9374
282
- dgenerate_ultralytics_headless-8.3.232.dist-info/METADATA,sha256=vuau2oTebD3Pd14ncJPN9PgrKfEMPrQplLBbf6fooaA,38718
283
- dgenerate_ultralytics_headless-8.3.232.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
284
- dgenerate_ultralytics_headless-8.3.232.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
285
- dgenerate_ultralytics_headless-8.3.232.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
286
- dgenerate_ultralytics_headless-8.3.232.dist-info/RECORD,,
282
+ dgenerate_ultralytics_headless-8.3.234.dist-info/METADATA,sha256=gitNLEewgRpBk8OannYe12orATd0KmloihM2MzosidA,38747
283
+ dgenerate_ultralytics_headless-8.3.234.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
284
+ dgenerate_ultralytics_headless-8.3.234.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
285
+ dgenerate_ultralytics_headless-8.3.234.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
286
+ dgenerate_ultralytics_headless-8.3.234.dist-info/RECORD,,
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.232"
3
+ __version__ = "8.3.234"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -1946,7 +1946,7 @@ class Albumentations:
1946
1946
  new = self.transform(image=im, bboxes=bboxes, class_labels=cls) # transformed
1947
1947
  if len(new["class_labels"]) > 0: # skip update if no bbox in new im
1948
1948
  labels["img"] = new["image"]
1949
- labels["cls"] = np.array(new["class_labels"])
1949
+ labels["cls"] = np.array(new["class_labels"]).reshape(-1, 1)
1950
1950
  bboxes = np.array(new["bboxes"], dtype=np.float32)
1951
1951
  labels["instances"].update(bboxes=bboxes)
1952
1952
  else:
@@ -84,7 +84,11 @@ from ultralytics.utils import (
84
84
  ARM64,
85
85
  DEFAULT_CFG,
86
86
  IS_COLAB,
87
+ IS_DEBIAN_BOOKWORM,
88
+ IS_DEBIAN_TRIXIE,
87
89
  IS_JETSON,
90
+ IS_RASPBERRYPI,
91
+ IS_UBUNTU,
88
92
  LINUX,
89
93
  LOGGER,
90
94
  MACOS,
@@ -1193,8 +1197,16 @@ class Exporter:
1193
1197
  java_version = int(version_match.group(1)) if version_match else 0
1194
1198
  assert java_version >= 17, "Java version too old"
1195
1199
  except (FileNotFoundError, subprocess.CalledProcessError, AssertionError):
1196
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-21-jre"]
1197
- subprocess.run(cmd, check=True)
1200
+ cmd = None
1201
+ if IS_UBUNTU or IS_DEBIAN_TRIXIE:
1202
+ LOGGER.info(f"\n{prefix} installing Java 21 for Ubuntu...")
1203
+ cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-21-jre"]
1204
+ elif IS_RASPBERRYPI or IS_DEBIAN_BOOKWORM:
1205
+ LOGGER.info(f"\n{prefix} installing Java 17 for Raspberry Pi or Debian ...")
1206
+ cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-17-jre"]
1207
+
1208
+ if cmd:
1209
+ subprocess.run(cmd, check=True)
1198
1210
 
1199
1211
  return torch2imx(
1200
1212
  self.model,
@@ -606,7 +606,7 @@ class AutoBackend(nn.Module):
606
606
  if k in {"stride", "batch", "channels"}:
607
607
  metadata[k] = int(v)
608
608
  elif k in {"imgsz", "names", "kpt_shape", "kpt_names", "args"} and isinstance(v, str):
609
- metadata[k] = eval(v)
609
+ metadata[k] = ast.literal_eval(v)
610
610
  stride = metadata["stride"]
611
611
  task = metadata["task"]
612
612
  batch = metadata["batch"]
ultralytics/nn/tasks.py CHANGED
@@ -1730,10 +1730,10 @@ def guess_model_task(model):
1730
1730
  if isinstance(model, torch.nn.Module): # PyTorch model
1731
1731
  for x in "model.args", "model.model.args", "model.model.model.args":
1732
1732
  with contextlib.suppress(Exception):
1733
- return eval(x)["task"]
1733
+ return eval(x)["task"] # nosec B307: safe eval of known attribute paths
1734
1734
  for x in "model.yaml", "model.model.yaml", "model.model.model.yaml":
1735
1735
  with contextlib.suppress(Exception):
1736
- return cfg2task(eval(x))
1736
+ return cfg2task(eval(x)) # nosec B307: safe eval of known attribute paths
1737
1737
  for m in model.modules():
1738
1738
  if isinstance(m, (Segment, YOLOESegment)):
1739
1739
  return "segment"
@@ -106,7 +106,9 @@
106
106
  card.style.display = idx < k ? "block" : "none";
107
107
  });
108
108
  const buttons = document.querySelectorAll(".topk-btn");
109
- buttons.forEach((btn) => btn.classList.remove("active"));
109
+ buttons.forEach((btn) => {
110
+ btn.classList.remove("active");
111
+ });
110
112
  event.target.classList.add("active");
111
113
  }
112
114
  document.addEventListener("DOMContentLoaded", () => {
@@ -651,6 +651,32 @@ def is_ubuntu() -> bool:
651
651
  return False
652
652
 
653
653
 
654
+ def is_debian(codenames: list[str] | None | str = None) -> list[bool] | bool:
655
+ """Check if the OS is Debian.
656
+
657
+ Args:
658
+ codenames (list[str] | None | str): Specific Debian codename to check for (e.g., 'buster', 'bullseye'). If None,
659
+ only checks for Debian.
660
+
661
+ Returns:
662
+ (list[bool] | bool): List of booleans indicating if OS matches each Debian codename, or a single boolean if no
663
+ codenames provided.
664
+ """
665
+ try:
666
+ with open("/etc/os-release") as f:
667
+ content = f.read()
668
+ if codenames is None:
669
+ return "ID=debian" in content
670
+ if isinstance(codenames, str):
671
+ codenames = [codenames]
672
+ return [
673
+ f"VERSION_CODENAME={codename}" in content if codename else "ID=debian" in content
674
+ for codename in codenames
675
+ ]
676
+ except FileNotFoundError:
677
+ return [False] * len(codenames) if codenames else False
678
+
679
+
654
680
  def is_colab():
655
681
  """Check if the current script is running inside a Google Colab notebook.
656
682
 
@@ -879,6 +905,8 @@ IS_JETSON = is_jetson()
879
905
  IS_JUPYTER = is_jupyter()
880
906
  IS_PIP_PACKAGE = is_pip_package()
881
907
  IS_RASPBERRYPI = is_raspberrypi()
908
+ IS_DEBIAN, IS_DEBIAN_BOOKWORM, IS_DEBIAN_TRIXIE = is_debian([None, "bookworm", "trixie"])
909
+ IS_UBUNTU = is_ubuntu()
882
910
  GIT = GitRepo()
883
911
  USER_CONFIG_DIR = get_user_config_dir() # Ultralytics settings dir
884
912
  SETTINGS_FILE = USER_CONFIG_DIR / "settings.json"