dgenerate-ultralytics-headless 8.3.173__py3-none-any.whl → 8.3.175__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.173
3
+ Version: 8.3.175
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>
@@ -1,14 +1,14 @@
1
- dgenerate_ultralytics_headless-8.3.173.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.175.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
3
3
  tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
4
4
  tests/test_cli.py,sha256=EMf5gTAopOnIz8VvzaM-Qb044o7D0flnUHYQ-2ffOM4,5670
5
5
  tests/test_cuda.py,sha256=-nQsfF3lGfqLm6cIeu_BCiXqLj7HzpL7R1GzPEc6z2I,8128
6
6
  tests/test_engine.py,sha256=Jpt2KVrltrEgh2-3Ykouz-2Z_2fza0eymL5ectRXadM,4922
7
- tests/test_exports.py,sha256=hGUS29WDX9KvFS2PuX2c8NlHSmw3O5UFs0iBVoOqH5k,9690
7
+ tests/test_exports.py,sha256=3JhxE6QxyYhwHugCr8CC1FQjTpeP5G72ACJ2twbgYrU,10331
8
8
  tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
9
9
  tests/test_python.py,sha256=-qvdeg-hEcKU5mWSDEU24iFZ-i8FAwQRznSXpkp6WQ4,27928
10
10
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
11
- ultralytics/__init__.py,sha256=PVea5gIVU5Z1cSfFaisFeQeZDBY7FAxlOYebh8XdxAQ,730
11
+ ultralytics/__init__.py,sha256=0fZl-D8kxXutIutI3XOSZ7JZa0PLd1AsYr2XyHM5Zwo,730
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
14
  ultralytics/cfg/__init__.py,sha256=VIpPHImhjb0XLJquGZrG_LBGZchtOtBSXR7HYTYV2GU,39602
@@ -126,7 +126,7 @@ ultralytics/engine/predictor.py,sha256=iXnUB-tvBHtVpKbB-5EKs1wSREBIerdUxWx39MaFY
126
126
  ultralytics/engine/results.py,sha256=QcHcbPVlLBiy_APwABr-T5K65HR8Bl1rRzxawjjP76E,71873
127
127
  ultralytics/engine/trainer.py,sha256=28FeqASvQRxCaK96SXDM-BfPJjqy5KNiWhf8v6GXTug,39785
128
128
  ultralytics/engine/tuner.py,sha256=sfQ8_yzgLNcGlKyz9b2vAzyggGZXiQzdZ5tKstyqjHM,12825
129
- ultralytics/engine/validator.py,sha256=qftJUomb4A-6rSThtST3TccEbc_zTmzovCBBCSpYm3k,16671
129
+ ultralytics/engine/validator.py,sha256=g0StH6WOn95zBN-hULDAR5Uug1pU2YkaeNH3zzq3SVg,16573
130
130
  ultralytics/hub/__init__.py,sha256=ulPtceI3hqud03mvqoXccBaa1e4nveYwC9cddyuBUlo,6599
131
131
  ultralytics/hub/auth.py,sha256=5uMPzZt8aO-YsnEWADzc1qBUt9c30RTIfrGo5SWTrv4,6271
132
132
  ultralytics/hub/session.py,sha256=UeUSRbdclSBPJQfpSNGeY13gb1O2Bhzh0Aj7cXum6P4,18518
@@ -165,7 +165,7 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
165
165
  ultralytics/models/utils/loss.py,sha256=E-61TfLPc04IdeL6IlFDityDoPju-ov0ouWV_cNY4Kg,21254
166
166
  ultralytics/models/utils/ops.py,sha256=Pr77n8XW25SUEx4X3bBvXcVIbRdJPoaXJuG0KWWawRQ,15253
167
167
  ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
168
- ultralytics/models/yolo/model.py,sha256=e66CIsSLHbEeGlkEQ1r6WwVDKAoR2nc0-UoGA94z-eM,18544
168
+ ultralytics/models/yolo/model.py,sha256=50nGkmo7q9LMOBb6x15TSG2tt36wDhy02X6lH3TFDTc,18653
169
169
  ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
170
170
  ultralytics/models/yolo/classify/predict.py,sha256=FqAC2YXe25bRwedMZhF3Lw0waoY-a60xMKELhxApP9I,4149
171
171
  ultralytics/models/yolo/classify/train.py,sha256=V-hevc6X7xemnpyru84OfTRA77eNnkVSMEz16_OUvo4,10244
@@ -214,13 +214,13 @@ ultralytics/solutions/heatmap.py,sha256=hBJR_Z3Lu9JcvCaEwnd-uN_WEiXK14FDRXedgaI8
214
214
  ultralytics/solutions/instance_segmentation.py,sha256=zPMBY9ixn4YmZozBD2EyowLBadu4dOvZwk-m65EwgDk,3789
215
215
  ultralytics/solutions/object_blurrer.py,sha256=96KOAEagk4UoErlUMiIDK6j1CWs2nN1dcJ5V6pl9L-8,3992
216
216
  ultralytics/solutions/object_counter.py,sha256=zD-EYIxu_y7qCFEkv6aqV60oMCZ4q6b_kL_stXKof_A,9427
217
- ultralytics/solutions/object_cropper.py,sha256=x3gN-ihtwkJntp6EMcVWnIvVTOu1iRkP5RrX-1kwJHg,3522
217
+ ultralytics/solutions/object_cropper.py,sha256=lRKtWINAe9GDxau1Xejbjydsqg2hrpGZXPtZwTgvyKQ,3603
218
218
  ultralytics/solutions/parking_management.py,sha256=IfPUn15aelxz6YZNo9WYkVEl5IOVSw8VD0OrpKtExPE,13613
219
219
  ultralytics/solutions/queue_management.py,sha256=gTkILx4dVcsKRZXSCXtelkEjCRiDS5iznb3FnddC61c,4390
220
220
  ultralytics/solutions/region_counter.py,sha256=Ncd6_qIXmSQXUxCwQkgYc2-nI7KifQYhxPi3pOelZak,5950
221
221
  ultralytics/solutions/security_alarm.py,sha256=czEaMcy04q-iBkKqT_14d8H20CFB6zcKH_31nBGQnyw,6345
222
222
  ultralytics/solutions/similarity_search.py,sha256=c18TK0qW5AvanXU28nAX4o_WtB1SDAJStUtyLDuEBHQ,9505
223
- ultralytics/solutions/solutions.py,sha256=KuQ5M9oocygExRjKAIN0HjHNFYebENUSyw-i7ykDsO8,35903
223
+ ultralytics/solutions/solutions.py,sha256=9dTkAx1W-0oaZGwKyysXTxKCYNBEV4kThRjqsQea2VQ,36059
224
224
  ultralytics/solutions/speed_estimation.py,sha256=chg_tBuKFw3EnFiv_obNDaUXLAo-FypxC7gsDeB_VUI,5878
225
225
  ultralytics/solutions/streamlit_inference.py,sha256=JAVOCc_eNtszUHKU-rZ-iUQtA6m6d3QqCgtPfwrlcsE,12773
226
226
  ultralytics/solutions/trackzone.py,sha256=kIS94rNfL3yVPAtSbnW8F-aLMxXowQtsfKNB-jLezz8,3941
@@ -235,7 +235,7 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
235
235
  ultralytics/trackers/utils/gmc.py,sha256=9IvCf5MhBYY9ppVHykN02_oBWHmE98R8EaYFKaykdV0,14032
236
236
  ultralytics/trackers/utils/kalman_filter.py,sha256=PPmM0lwBMdT_hGojvfLoUsBUFMBBMNRAxKbMcQa3wJ0,21619
237
237
  ultralytics/trackers/utils/matching.py,sha256=uSYtywqi1lE_uNN1FwuBFPyISfDQXHMu8K5KH69nrRI,7160
238
- ultralytics/utils/__init__.py,sha256=9kEOx0Mjt_gg0QRAm-JChUvq9EcS_nPKAAThMFedM3s,59436
238
+ ultralytics/utils/__init__.py,sha256=KyczXn2SLR0g8xkCVpfNaPkhDCQ4A8vLt99teYu7mss,59437
239
239
  ultralytics/utils/autobatch.py,sha256=33m8YgggLIhltDqMXZ5OE-FGs2QiHrl2-LfgY1mI4cw,5119
240
240
  ultralytics/utils/autodevice.py,sha256=AvgXFt8c1Cg4icKh0Hbhhz8UmVQ2Wjyfdfkeb2C8zck,8855
241
241
  ultralytics/utils/benchmarks.py,sha256=btsi_B0mfLPfhE8GrsBpi79vl7SRam0YYngNFAsY8Ak,31035
@@ -266,8 +266,8 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
266
266
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
267
267
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
268
268
  ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
269
- dgenerate_ultralytics_headless-8.3.173.dist-info/METADATA,sha256=Dl1SkIXQy51wXHot5s6PEOQHwTgsq_kj1rtTIn-UUUk,38716
270
- dgenerate_ultralytics_headless-8.3.173.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
- dgenerate_ultralytics_headless-8.3.173.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
- dgenerate_ultralytics_headless-8.3.173.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
- dgenerate_ultralytics_headless-8.3.173.dist-info/RECORD,,
269
+ dgenerate_ultralytics_headless-8.3.175.dist-info/METADATA,sha256=_XCOeqAU-M0SVohm5hu97rfrYb7bC01C8WyrryxdK6Q,38716
270
+ dgenerate_ultralytics_headless-8.3.175.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
+ dgenerate_ultralytics_headless-8.3.175.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
+ dgenerate_ultralytics_headless-8.3.175.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
+ dgenerate_ultralytics_headless-8.3.175.dist-info/RECORD,,
tests/test_exports.py CHANGED
@@ -222,6 +222,20 @@ def test_export_ncnn():
222
222
  YOLO(file)(SOURCE, imgsz=32) # exported model inference
223
223
 
224
224
 
225
+ @pytest.mark.slow
226
+ @pytest.mark.parametrize(
227
+ "task, half, batch",
228
+ [ # generate all combinations except for exclusion cases
229
+ (task, half, batch) for task, half, batch in product(TASKS, [True, False], [1])
230
+ ],
231
+ )
232
+ def test_export_ncnn_matrix(task, half, batch):
233
+ """Test YOLO export to NCNN format considering various export configurations."""
234
+ file = YOLO(TASK2MODEL[task]).export(format="ncnn", imgsz=32, half=half, batch=batch)
235
+ YOLO(file)([SOURCE] * batch, imgsz=32) # exported model inference
236
+ shutil.rmtree(file, ignore_errors=True) # retry in case of potential lingering multi-threaded file usage errors
237
+
238
+
225
239
  @pytest.mark.skipif(True, reason="Test disabled as keras and tensorflow version conflicts with TFlite export.")
226
240
  @pytest.mark.skipif(not LINUX or MACOS, reason="Skipping test on Windows and Macos")
227
241
  def test_export_imx():
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.173"
3
+ __version__ = "8.3.175"
4
4
 
5
5
  import os
6
6
 
@@ -163,11 +163,9 @@ class BaseValidator:
163
163
  )
164
164
  self.device = model.device # update device
165
165
  self.args.half = model.fp16 # update half
166
- stride, pt, jit, engine = model.stride, model.pt, model.jit, model.engine
166
+ stride, pt, jit = model.stride, model.pt, model.jit
167
167
  imgsz = check_imgsz(self.args.imgsz, stride=stride)
168
- if engine:
169
- self.args.batch = model.batch_size
170
- elif not (pt or jit or getattr(model, "dynamic", False)):
168
+ if not (pt or jit or getattr(model, "dynamic", False)):
171
169
  self.args.batch = model.metadata.get("batch", 1) # export.py models default to batch-size 1
172
170
  LOGGER.info(f"Setting batch={self.args.batch} input of shape ({self.args.batch}, 3, {imgsz}, {imgsz})")
173
171
 
@@ -324,6 +324,7 @@ class YOLOE(Model):
324
324
  embeddings (torch.Tensor): Embeddings corresponding to the classes.
325
325
  """
326
326
  assert isinstance(self.model, YOLOEModel)
327
+ assert not self.is_fused(), "Model was fused during inference. set_classes() can no longer be used."
327
328
  self.model.set_classes(classes, embeddings)
328
329
  # Verify no background class is present
329
330
  assert " " not in classes
@@ -78,6 +78,7 @@ class ObjectCropper(BaseSolution):
78
78
  device=self.CFG["device"],
79
79
  verbose=False,
80
80
  )[0]
81
+ self.clss = results.boxes.cls.tolist() # required for logging only.
81
82
 
82
83
  for box in results.boxes:
83
84
  self.crop_idx += 1
@@ -1,7 +1,7 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  import math
4
- from collections import defaultdict
4
+ from collections import Counter, defaultdict
5
5
  from functools import lru_cache
6
6
  from typing import Any, Dict, List, Optional, Tuple
7
7
 
@@ -250,8 +250,10 @@ class BaseSolution:
250
250
  result.speed = {track_or_predict: track_or_predict_speed, "solution": solution_speed}
251
251
  if self.CFG["verbose"]:
252
252
  self.frame_no += 1
253
+ counts = Counter(self.clss) # Only for logging.
253
254
  LOGGER.info(
254
- f"{self.frame_no}: {result.plot_im.shape[0]}x{result.plot_im.shape[1]} {solution_speed:.1f}ms\n"
255
+ f"{self.frame_no}: {result.plot_im.shape[0]}x{result.plot_im.shape[1]} {solution_speed:.1f}ms,"
256
+ f" {', '.join([f'{v} {self.names[k]}' for k, v in counts.items()])}\n"
255
257
  f"Speed: {track_or_predict_speed:.1f}ms {track_or_predict}, "
256
258
  f"{solution_speed:.1f}ms solution per image at shape "
257
259
  f"(1, {getattr(self.model, 'ch', 3)}, {result.plot_im.shape[0]}, {result.plot_im.shape[1]})\n"
@@ -1036,7 +1036,7 @@ def get_user_config_dir(sub_dir="Ultralytics"):
1036
1036
  # GCP and AWS lambda fix, only /tmp is writeable
1037
1037
  if not is_dir_writeable(path.parent):
1038
1038
  LOGGER.warning(
1039
- f"user config directory '{path}' is not writeable, defaulting to '/tmp' or CWD."
1039
+ f"user config directory '{path}' is not writeable, defaulting to '/tmp' or CWD. "
1040
1040
  "Alternatively you can define a YOLO_CONFIG_DIR environment variable for this path."
1041
1041
  )
1042
1042
  path = Path("/tmp") / sub_dir if is_dir_writeable("/tmp") else Path().cwd() / sub_dir