ultralytics 8.3.99__py3-none-any.whl → 8.3.101__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.99"
3
+ __version__ = "8.3.101"
4
4
 
5
5
  import os
6
6
 
@@ -667,7 +667,7 @@ class Exporter:
667
667
  @try_export
668
668
  def export_paddle(self, prefix=colorstr("PaddlePaddle:")):
669
669
  """YOLO Paddle export."""
670
- check_requirements(("paddlepaddle-gpu" if torch.cuda.is_available() else "paddlepaddle<3.0.0", "x2paddle"))
670
+ check_requirements(("paddlepaddle-gpu" if torch.cuda.is_available() else "paddlepaddle>=3.0.0", "x2paddle"))
671
671
  import x2paddle # noqa
672
672
  from x2paddle.convert import pytorch2paddle # noqa
673
673
 
@@ -534,7 +534,7 @@ class Model(torch.nn.Module):
534
534
  x in ARGV for x in ("predict", "track", "mode=predict", "mode=track")
535
535
  )
536
536
 
537
- custom = {"conf": 0.25, "batch": 1, "save": is_cli, "mode": "predict"} # method defaults
537
+ custom = {"conf": 0.25, "batch": 1, "save": is_cli, "mode": "predict", "rect": True} # method defaults
538
538
  args = {**self.overrides, **custom, **kwargs} # highest priority args on the right
539
539
  prompts = args.pop("prompts", None) # for SAM-type models
540
540
 
@@ -183,7 +183,9 @@ class BasePredictor:
183
183
  same_shapes = len({x.shape for x in im}) == 1
184
184
  letterbox = LetterBox(
185
185
  self.imgsz,
186
- auto=same_shapes and (self.model.pt or (getattr(self.model, "dynamic", False) and not self.model.imx)),
186
+ auto=same_shapes
187
+ and self.args.rect
188
+ and (self.model.pt or (getattr(self.model, "dynamic", False) and not self.model.imx)),
187
189
  stride=self.model.stride,
188
190
  )
189
191
  return [letterbox(image=x) for x in im]
@@ -2,6 +2,7 @@
2
2
 
3
3
  from pathlib import Path
4
4
 
5
+ from ultralytics.data.build import load_inference_source
5
6
  from ultralytics.engine.model import Model
6
7
  from ultralytics.models import yolo
7
8
  from ultralytics.nn.tasks import (
@@ -267,7 +268,14 @@ class YOLOE(Model):
267
268
  f"{len(visual_prompts['cls'])} respectively"
268
269
  )
269
270
  self.predictor = (predictor or self._smart_load("predictor"))(
270
- overrides={"task": "segment", "mode": "predict", "save": False, "verbose": False}, _callbacks=self.callbacks
271
+ overrides={
272
+ "task": self.model.task,
273
+ "mode": "predict",
274
+ "save": False,
275
+ "verbose": refer_image is None,
276
+ "batch": 1,
277
+ },
278
+ _callbacks=self.callbacks,
271
279
  )
272
280
 
273
281
  if len(visual_prompts):
@@ -278,12 +286,19 @@ class YOLOE(Model):
278
286
  )
279
287
  self.model.model[-1].nc = num_cls
280
288
  self.model.names = [f"object{i}" for i in range(num_cls)]
281
- self.predictor.set_prompts(visual_prompts)
289
+ self.predictor.set_prompts(visual_prompts.copy())
282
290
 
283
291
  self.predictor.setup_model(model=self.model)
292
+
293
+ if refer_image is None:
294
+ dataset = load_inference_source(source)
295
+ if dataset.mode in {"video", "stream"}:
296
+ # NOTE: set the first frame as refer image for videos/streams inference
297
+ refer_image = next(iter(dataset))[1][0]
284
298
  if refer_image is not None and len(visual_prompts):
285
299
  vpe = self.predictor.get_vpe(refer_image)
286
300
  self.model.set_classes(self.model.names, vpe)
301
+ self.task = "segment" if isinstance(self.predictor, yolo.segment.SegmentationPredictor) else "detect"
287
302
  self.predictor = None # reset predictor
288
303
 
289
304
  return super().predict(source, stream, **kwargs)
@@ -435,19 +435,28 @@ class AutoBackend(nn.Module):
435
435
  # PaddlePaddle
436
436
  elif paddle:
437
437
  LOGGER.info(f"Loading {w} for PaddlePaddle inference...")
438
- check_requirements("paddlepaddle-gpu" if cuda else "paddlepaddle<3.0.0")
438
+ check_requirements("paddlepaddle-gpu" if cuda else "paddlepaddle>=3.0.0")
439
439
  import paddle.inference as pdi # noqa
440
440
 
441
441
  w = Path(w)
442
- if not w.is_file(): # if not *.pdmodel
443
- w = next(w.rglob("*.pdmodel")) # get *.pdmodel file from *_paddle_model dir
444
- config = pdi.Config(str(w), str(w.with_suffix(".pdiparams")))
442
+ model_file, params_file = None, None
443
+ if w.is_dir():
444
+ model_file = next(w.rglob("*.json"), None)
445
+ params_file = next(w.rglob("*.pdiparams"), None)
446
+ elif w.suffix == ".pdiparams":
447
+ model_file = w.with_name("model.json")
448
+ params_file = w
449
+
450
+ if not (model_file and params_file and model_file.is_file() and params_file.is_file()):
451
+ raise FileNotFoundError(f"Paddle model not found in {w}. Both .json and .pdiparams files are required.")
452
+
453
+ config = pdi.Config(str(model_file), str(params_file))
445
454
  if cuda:
446
455
  config.enable_use_gpu(memory_pool_init_size_mb=2048, device_id=0)
447
456
  predictor = pdi.create_predictor(config)
448
457
  input_handle = predictor.get_input_handle(predictor.get_input_names()[0])
449
458
  output_names = predictor.get_output_names()
450
- metadata = w.parents[1] / "metadata.yaml"
459
+ metadata = w / "metadata.yaml"
451
460
 
452
461
  # MNN
453
462
  elif mnn:
ultralytics/nn/tasks.py CHANGED
@@ -972,8 +972,8 @@ class YOLOEModel(DetectionModel):
972
972
  assert not self.training
973
973
  return vpe
974
974
  cls_pe = self.get_cls_pe(m.get_tpe(tpe), vpe).to(device=x[0].device, dtype=x[0].dtype)
975
- if len(cls_pe) != b:
976
- cls_pe = cls_pe.repeat(b, 1, 1)
975
+ if cls_pe.shape[0] != b or m.export:
976
+ cls_pe = cls_pe.expand(b, -1, -1)
977
977
  x = m(x, cls_pe)
978
978
  else:
979
979
  x = m(x) # run
@@ -126,6 +126,7 @@ def benchmark(
126
126
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 TensorFlow exports not supported by onnx2tf yet"
127
127
  if i == 11: # Paddle
128
128
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 Paddle exports not supported yet"
129
+ assert not model.task == "obb", "Paddle OBB bug https://github.com/PaddlePaddle/Paddle/issues/72024"
129
130
  assert not is_end2end, "End-to-end models not supported by PaddlePaddle yet"
130
131
  assert LINUX or MACOS, "Windows Paddle exports not supported yet"
131
132
  if i == 12: # MNN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.99
3
+ Version: 8.3.101
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>
@@ -7,7 +7,7 @@ tests/test_exports.py,sha256=ONs5zF9gVOl_sabzLmFyhp5zQ2sv3uSWzXUjoTgJPME,9242
7
7
  tests/test_integrations.py,sha256=ZgpddWHEVqiP4bGhVw8fLc2wdz0rCxuxr0FQ2dTgnIE,6067
8
8
  tests/test_python.py,sha256=Xrxx-Cul4xumA5qDCnduXOA3InfADT3jrtnEh4jpOeY,24638
9
9
  tests/test_solutions.py,sha256=4TNQZ9aH1doWujQmh4pgxqHHCU2Umk-IBXjAZg7HIqk,5135
10
- ultralytics/__init__.py,sha256=2D1sc_aHAXY2WDW9WbIGkKRC4qp8C-KtfvnoNJ-OXpA,729
10
+ ultralytics/__init__.py,sha256=EhtRGTnPR6Ul8ikA0CCjiIZbbduhnFGJ_5RZmX-mqHw,730
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=h-VYq22NA05gVibxa5eVO-pMk9OqlcaUMx2NbgklnXM,39894
@@ -111,9 +111,9 @@ ultralytics/data/loaders.py,sha256=_Gyp_BfGTZwsFdn4UnolXxdU_sAYZLIrv0L2TRI9R5g,2
111
111
  ultralytics/data/split_dota.py,sha256=p8eVGht9tABSVbf9vwvxA_AQYEva3IGHePKlMeNrn64,11872
112
112
  ultralytics/data/utils.py,sha256=aRPwIoLrCML_Kcd0dI9B6c5Ct4dvhdF36rDHtuf7Ww4,33217
113
113
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
114
- ultralytics/engine/exporter.py,sha256=5RsO8ys9pthyw4CwLEpOB4Cw4Csii3165nf94zkS36E,77744
115
- ultralytics/engine/model.py,sha256=uAqzcgn9EjmKG1lO7rwcW5sIMIwJTHHC-popARr2QSU,52902
116
- ultralytics/engine/predictor.py,sha256=ozPvmwlek6QRN5canK-BTQJI8KbBynWozF3AYN1ghE8,21626
114
+ ultralytics/engine/exporter.py,sha256=GQQLD9hbmw-SLvXFB1c0LD59E6LCciTTlfriXZUktqI,77745
115
+ ultralytics/engine/model.py,sha256=YgQKYZrPENSTvLENspg-bXI9FinzzWARfb0U-C9vH-M,52916
116
+ ultralytics/engine/predictor.py,sha256=fRUh82EJlu_6ZlIy8NFovlCcgX53UbRYSXcLljOs7Sc,21669
117
117
  ultralytics/engine/results.py,sha256=H3pFJhUjYKvVyOUqqZjfIn8vnCpl81aYNOnregMrBoQ,79716
118
118
  ultralytics/engine/trainer.py,sha256=KAeiNoH5NIRhQPIfr5AhVwDerk9dy0-QJu-FlxtG4xA,38904
119
119
  ultralytics/engine/tuner.py,sha256=GsDhrI3uWm3YYEQHpqxLCehXsUMRWrhmXFW6X4vJB3s,12205
@@ -156,7 +156,7 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
156
156
  ultralytics/models/utils/loss.py,sha256=ZI1PsYNNuVDzRnUJu4gbMDCRnHgqLxL2Xzk3EPUq-M8,17921
157
157
  ultralytics/models/utils/ops.py,sha256=2IZSNqoOKfUk3dta_l-FIklfPRC9f0gADnR9R_avun0,12706
158
158
  ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
159
- ultralytics/models/yolo/model.py,sha256=B20wWr6_z93xgBHjWU81AZhXoUXftic2odZM5y1WxPM,11660
159
+ ultralytics/models/yolo/model.py,sha256=c8KPHwaEWqoXebF1Ry-0Vhh6qEvFYxsmFGqaz-C5sg8,12259
160
160
  ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
161
161
  ultralytics/models/yolo/classify/predict.py,sha256=vKbdvlX9MhSOB3KrBOnq6XYq1l5JcGZmPVGtsmaS2m8,3525
162
162
  ultralytics/models/yolo/classify/train.py,sha256=E8dPIlDQ-l3irjdGkm5lOpKjV-DHLvj6za5UNbWaIcg,8996
@@ -186,8 +186,8 @@ ultralytics/models/yolo/yoloe/train.py,sha256=tzr1QsXcFZTV1SK2SKUl7I48zb-cvxQzLk
186
186
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=JguKB1ez8Rf7XBu_D_mWHMLJto7y7Kr2m0Tq2NwDtwU,5269
187
187
  ultralytics/models/yolo/yoloe/val.py,sha256=n-wDJprRMqqio6Ndsg_OpjNJQCPy_wIMzPMzecESzjs,8244
188
188
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
189
- ultralytics/nn/autobackend.py,sha256=xtHpnf5C435XPe9mqB3EWUu9PRMFmluDBV8Jon132zA,38312
190
- ultralytics/nn/tasks.py,sha256=HuuE-nscYYdWbyqJ2tXR_tQSQhW9C-zOpU-OXNkmb6I,62800
189
+ ultralytics/nn/autobackend.py,sha256=jqNBzu9kNHVyZgTky8dhMQLMKo8YWwuaokLCKgp-alw,38703
190
+ ultralytics/nn/tasks.py,sha256=IhwALGXXrFeNSJivzY6JT4YDg3k-trtLvR0qrJE5W9U,62818
191
191
  ultralytics/nn/text_model.py,sha256=P75y5kaWFm2MyTTLLDK9drwKLxls5yUqPZn1vIPa4gM,6391
192
192
  ultralytics/nn/modules/__init__.py,sha256=dXLtIk9rt944WfsTdpgEdWOg3HQEHdwQztuZ6WNJygs,3144
193
193
  ultralytics/nn/modules/activation.py,sha256=_DL_rQw4QmhNO0CaftNR8HRvqNnTGRbmjyD6HGbPjxw,1392
@@ -225,7 +225,7 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=A0CqOnnaKH6kr0XwuHzyHmIU6aJAj
225
225
  ultralytics/trackers/utils/matching.py,sha256=7eIufSdeN7cXuFMjvcfvz0Ldq84m4YKZl5IGxBR8IIo,7169
226
226
  ultralytics/utils/__init__.py,sha256=vkL5eXMA-1CvTJou5D16FkIdO_ANDwPUJPB4NovnMQw,50197
227
227
  ultralytics/utils/autobatch.py,sha256=KnvmNSAO_6H3ZLJ4fOFMTFbOaMlbp025LiJqrdKIz8c,4998
228
- ultralytics/utils/benchmarks.py,sha256=0lhuwA_yJ1uGYqL-yMFZrrGZQrLVp09xklKITKYHX_c,30246
228
+ ultralytics/utils/benchmarks.py,sha256=xPPj1ahKFMFX2Lc0xqkVPmn8oxfAeX2AOb-j90EEHCI,30363
229
229
  ultralytics/utils/checks.py,sha256=d30cJY1G3wBWWTlq3C3yGVmDhAUtfXa9U3nuTO4sXQo,32677
230
230
  ultralytics/utils/dist.py,sha256=seNVxWYY0_OyLYQqSEcTiRIFsk3eojSj06FvrzJCKn8,2795
231
231
  ultralytics/utils/downloads.py,sha256=4P1JIc04tTd_oz3-AHlhRSGaVtnSQPg_gYlh__U27-4,22169
@@ -252,9 +252,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=TQDHJsgAdnMtSdLeQyVTJ1zBdvuwLm-U4U
252
252
  ultralytics/utils/callbacks/raytune.py,sha256=omVZNNuzYxsZZXrF9xpbFv7R1Wjdx1j-gv0xXuZrQas,1122
253
253
  ultralytics/utils/callbacks/tensorboard.py,sha256=rnyja6LpSyixwuL0WKovgARe6RPiX8ORuknlre3VEu4,4255
254
254
  ultralytics/utils/callbacks/wb.py,sha256=AZH7-bARpHhnonnN57dvoPpfK35xBnu7rINZzHeugeg,6851
255
- ultralytics-8.3.99.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
256
- ultralytics-8.3.99.dist-info/METADATA,sha256=yVx6G25xQP960_qhXlZhJK-uhHE4IhKAPT-_R8-1MJY,37379
257
- ultralytics-8.3.99.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
258
- ultralytics-8.3.99.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
259
- ultralytics-8.3.99.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
260
- ultralytics-8.3.99.dist-info/RECORD,,
255
+ ultralytics-8.3.101.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
256
+ ultralytics-8.3.101.dist-info/METADATA,sha256=EVOcpjnnEPv2-BHatT4b81zUD96LzVKOgkdBsKQtAc8,37380
257
+ ultralytics-8.3.101.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
258
+ ultralytics-8.3.101.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
259
+ ultralytics-8.3.101.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
260
+ ultralytics-8.3.101.dist-info/RECORD,,