ultralytics 8.3.71__py3-none-any.whl → 8.3.73__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.71"
3
+ __version__ = "8.3.73"
4
4
 
5
5
  import os
6
6
 
@@ -386,6 +386,8 @@ class Exporter:
386
386
  "names": model.names,
387
387
  "args": {k: v for k, v in self.args if k in fmt_keys},
388
388
  } # model metadata
389
+ if dla is not None:
390
+ self.metadata["dla"] = dla # make sure `AutoBackend` uses correct dla device if it has one
389
391
  if model.task == "pose":
390
392
  self.metadata["kpt_shape"] = model.model[-1].kpt_shape
391
393
 
@@ -1544,10 +1546,10 @@ class NMSModel(torch.nn.Module):
1544
1546
  Performs inference with NMS post-processing. Supports Detect, Segment, OBB and Pose.
1545
1547
 
1546
1548
  Args:
1547
- x (torch.tensor): The preprocessed tensor with shape (N, 3, H, W).
1549
+ x (torch.Tensor): The preprocessed tensor with shape (N, 3, H, W).
1548
1550
 
1549
1551
  Returns:
1550
- out (torch.tensor): The post-processed results with shape (N, max_det, 4 + 2 + extra_shape).
1552
+ out (torch.Tensor): The post-processed results with shape (N, max_det, 4 + 2 + extra_shape).
1551
1553
  """
1552
1554
  from functools import partial
1553
1555
 
@@ -1556,8 +1558,8 @@ class NMSModel(torch.nn.Module):
1556
1558
  preds = self.model(x)
1557
1559
  pred = preds[0] if isinstance(preds, tuple) else preds
1558
1560
  pred = pred.transpose(-1, -2) # shape(1,84,6300) to shape(1,6300,84)
1559
- extra_shape = pred.shape[-1] - (4 + self.model.nc) # extras from Segment, OBB, Pose
1560
- boxes, scores, extras = pred.split([4, self.model.nc, extra_shape], dim=2)
1561
+ extra_shape = pred.shape[-1] - (4 + len(self.model.names)) # extras from Segment, OBB, Pose
1562
+ boxes, scores, extras = pred.split([4, len(self.model.names), extra_shape], dim=2)
1561
1563
  scores, classes = scores.max(dim=-1)
1562
1564
  self.args.max_det = min(pred.shape[1], self.args.max_det) # in case num_anchors < max_det
1563
1565
  # (N, max_det, 4 coords + 1 class score + 1 class label + extra_shape).
@@ -967,7 +967,7 @@ class Results(SimpleClass):
967
967
 
968
968
  # Convert results to a list of dictionaries
969
969
  data = self.summary(normalize=normalize, decimals=decimals)
970
- if not data:
970
+ if len(data) == 0:
971
971
  LOGGER.warning("⚠️ No results to save to SQL. Results dict is empty")
972
972
  return
973
973
 
@@ -977,31 +977,20 @@ class Results(SimpleClass):
977
977
 
978
978
  # Create table if it doesn't exist
979
979
  columns = (
980
- "id INTEGER PRIMARY KEY AUTOINCREMENT, class_name TEXT, confidence REAL, "
981
- "box TEXT, masks TEXT, kpts TEXT, obb TEXT"
980
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, class_name TEXT, confidence REAL, box TEXT, masks TEXT, kpts TEXT"
982
981
  )
983
982
  cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})")
984
983
 
985
984
  # Insert data into the table
986
- for i, item in enumerate(data):
987
- detect, obb = None, None # necessary to reinit these variables inside for loop to avoid duplication
988
- class_name = item.get("name")
989
- box = item.get("box", {})
990
- # Serialize the box as JSON for 'detect' and 'obb' based on key presence
991
- if all(key in box for key in ["x1", "y1", "x2", "y2"]) and not any(key in box for key in ["x3", "x4"]):
992
- detect = json.dumps(box)
993
- if all(key in box for key in ["x1", "y1", "x2", "y2", "x3", "x4"]):
994
- obb = json.dumps(box)
995
-
985
+ for item in data:
996
986
  cursor.execute(
997
- f"INSERT INTO {table_name} (class_name, confidence, box, masks, kpts, obb) VALUES (?, ?, ?, ?, ?, ?)",
987
+ f"INSERT INTO {table_name} (class_name, confidence, box, masks, kpts) VALUES (?, ?, ?, ?, ?)",
998
988
  (
999
- class_name,
989
+ item.get("name"),
1000
990
  item.get("confidence"),
1001
- detect,
1002
- json.dumps(item.get("segments", {}).get("x", [])),
1003
- json.dumps(item.get("keypoints", {}).get("x", [])),
1004
- obb,
991
+ json.dumps(item.get("box", {})),
992
+ json.dumps(item.get("segments", {})),
993
+ json.dumps(item.get("keypoints", {})),
1005
994
  ),
1006
995
  )
1007
996
 
@@ -292,13 +292,10 @@ class AutoBackend(nn.Module):
292
292
  metadata = json.loads(f.read(meta_len).decode("utf-8")) # read metadata
293
293
  except UnicodeDecodeError:
294
294
  f.seek(0) # engine file may lack embedded Ultralytics metadata
295
+ dla = metadata.get("dla", None)
296
+ if dla is not None:
297
+ runtime.DLA_core = int(dla)
295
298
  model = runtime.deserialize_cuda_engine(f.read()) # read engine
296
- if "dla" in str(device.type):
297
- dla_core = int(device.type.split(":")[1])
298
- assert dla_core in {0, 1}, (
299
- "Expected device type for inference in DLA is 'dla:0' or 'dla:1', but received '{device.type}'"
300
- )
301
- runtime.DLA_core = dla_core
302
299
 
303
300
  # Model context
304
301
  try:
ultralytics/nn/tasks.py CHANGED
@@ -484,12 +484,6 @@ class RTDETRDetectionModel(DetectionModel):
484
484
  the training and inference processes. RTDETR is an object detection and tracking model that extends from the
485
485
  DetectionModel base class.
486
486
 
487
- Attributes:
488
- cfg (str): The configuration file path or preset string. Default is 'rtdetr-l.yaml'.
489
- ch (int): Number of input channels. Default is 3 (RGB).
490
- nc (int, optional): Number of classes for object detection. Default is None.
491
- verbose (bool): Specifies if summary statistics are shown during initialization. Default is True.
492
-
493
487
  Methods:
494
488
  init_criterion: Initializes the criterion used for loss calculation.
495
489
  loss: Computes and returns the loss during training.
@@ -131,7 +131,7 @@ def check_imgsz(imgsz, stride=32, min_dim=1, max_dim=2, floor=0):
131
131
  floor (int): Minimum allowed value for image size.
132
132
 
133
133
  Returns:
134
- (List[int]): Updated image size.
134
+ (List[int] | int): Updated image size.
135
135
  """
136
136
  # Convert stride to integer if it is a tensor
137
137
  stride = int(stride.max() if isinstance(stride, torch.Tensor) else stride)
@@ -801,9 +801,8 @@ class Annotator:
801
801
  return
802
802
 
803
803
  cv2.polylines(self.im, [np.int32([mask])], isClosed=True, color=mask_color, thickness=2)
804
- text_size, _ = cv2.getTextSize(label, 0, self.sf, self.tf)
805
-
806
804
  if label:
805
+ text_size, _ = cv2.getTextSize(label, 0, self.sf, self.tf)
807
806
  cv2.rectangle(
808
807
  self.im,
809
808
  (int(mask[0][0]) - text_size[0] // 2 - 10, int(mask[0][1]) - text_size[1] - 10),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ultralytics
3
- Version: 8.3.71
3
+ Version: 8.3.73
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>
@@ -54,11 +54,10 @@ Requires-Dist: pytest; extra == "dev"
54
54
  Requires-Dist: pytest-cov; extra == "dev"
55
55
  Requires-Dist: coverage[toml]; extra == "dev"
56
56
  Requires-Dist: mkdocs>=1.6.0; extra == "dev"
57
- Requires-Dist: beautifulsoup4<=4.12.3; extra == "dev"
58
57
  Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
59
58
  Requires-Dist: mkdocstrings[python]; extra == "dev"
60
59
  Requires-Dist: mkdocs-redirects; extra == "dev"
61
- Requires-Dist: mkdocs-ultralytics-plugin>=0.1.16; extra == "dev"
60
+ Requires-Dist: mkdocs-ultralytics-plugin>=0.1.17; extra == "dev"
62
61
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
63
62
  Provides-Extra: export
64
63
  Requires-Dist: onnx>=1.12.0; extra == "export"
@@ -7,7 +7,7 @@ tests/test_exports.py,sha256=T_z_NUS9URQXv83k5XNLHTuksJ8srtzbZnWuiiQWM98,9260
7
7
  tests/test_integrations.py,sha256=p3DMnnPMKsV0Qm82JVJUIY1UZ67xRgF9E8AaL76TEHE,6154
8
8
  tests/test_python.py,sha256=tW-EFJC2rjl_DvAa8khXGWYdypseQjrLjGHhe2p9r9A,23238
9
9
  tests/test_solutions.py,sha256=aY0G3vNzXGCENG9FD76MfUp7jgzeESPsUvbvQYBUvH0,4205
10
- ultralytics/__init__.py,sha256=cXw7fZPd6KUbIp8zc9mzH4SNu8QcZfWPLb6x-iKQDn0,709
10
+ ultralytics/__init__.py,sha256=w9xoNgzXsQ-vzUz6EMJ1sJ21yzeJxXwKanndE7Nt-1Q,709
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=qP44HnFP4QcC5FQz29A-EGTuwdtxXAzPvw_IvCVmiqA,39771
@@ -102,10 +102,10 @@ ultralytics/data/loaders.py,sha256=JOwXbz-dxgG2bx0_cQHp-olz5FleoCX8EzrUvZ77vvg,2
102
102
  ultralytics/data/split_dota.py,sha256=YI-i2MqdiBt06W67TJnBXQHJrqTnkJDJ3zzoL0UZVro,10733
103
103
  ultralytics/data/utils.py,sha256=K8xyA1xHLpaeluUbqOl5fy6AWZ6nDciCBZJofjxzOuw,33841
104
104
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
105
- ultralytics/engine/exporter.py,sha256=aXUX8GZUw1CBaXYSI7OFwx1tsnl6VkgQQXb_iKi-cs8,76632
105
+ ultralytics/engine/exporter.py,sha256=14zD5klVbAqv1jh2QPmpDcGflBUlLurRhYGM-wH9hFI,76780
106
106
  ultralytics/engine/model.py,sha256=SbRt27DTUmq8S-yzog4o5EDcT4qX08EF7A8fyLzv4kQ,53275
107
107
  ultralytics/engine/predictor.py,sha256=jiYDAjupOlRUpPvw9tu7or9PjXtLm-YCRiawANtWxj0,17881
108
- ultralytics/engine/results.py,sha256=OkXecfudYauisFxJocr3TXJgUb16vYxr_TL2u-Aa0rk,78710
108
+ ultralytics/engine/results.py,sha256=fw8KG7rr5_9GFiqSlOljfNtG8-7NNVzG-MRiIpOZ9hg,78095
109
109
  ultralytics/engine/trainer.py,sha256=ZGAc6C1_LUBHDdZlr6wT6sbMtDzWa5rr7M8QVlXpBLs,37362
110
110
  ultralytics/engine/tuner.py,sha256=EUlTs7KJQ2RVABm8pihr_14M_Z2kGSzJaWH-Y9TJYDw,11976
111
111
  ultralytics/engine/validator.py,sha256=r27X8HGeDEwq7V5sFjEQH_3EnP1CyG-HcOLpFABUisU,15034
@@ -172,8 +172,8 @@ ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn
172
172
  ultralytics/models/yolo/world/train.py,sha256=6PVmQ0G-22OOPPwP_rqSobe2LM6e2b_lC7lJCdW3UIk,3714
173
173
  ultralytics/models/yolo/world/train_world.py,sha256=sCtg4Hnq9Y7amYjlQsdvTHXH8cKSooipvcXu_1Iyb2k,4885
174
174
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
175
- ultralytics/nn/autobackend.py,sha256=fe6ZiPdyE1TZ6E3odkKm_GiSrtR8kEuWZE0jC15rRpo,37580
176
- ultralytics/nn/tasks.py,sha256=n8TmXTJbyDPHT7bPkH22Gdtef8ORLz_2DFJ9lGTwJ-U,49061
175
+ ultralytics/nn/autobackend.py,sha256=Sixewlem0qeGCD18Zihli1H25j1q71957L33kpVfrVE,37365
176
+ ultralytics/nn/tasks.py,sha256=Ckg6qFHZiJjRfYimV_F6cdC0nbKmbzu-E890lWMuyBA,48696
177
177
  ultralytics/nn/modules/__init__.py,sha256=02dPoAMtpPNQdHXHmvJeWZvJ_WG6eqwH8atLdFWgcuY,2713
178
178
  ultralytics/nn/modules/activation.py,sha256=oRkhMdqlNpIxQb35pTSUeHV-h0VyLl96GOqvIZ4OvT8,923
179
179
  ultralytics/nn/modules/block.py,sha256=vQqfKIXPmEnxupdzcLDGC5FkjCNIqURfqt4CEEseuXE,43940
@@ -207,7 +207,7 @@ ultralytics/trackers/utils/matching.py,sha256=64PKHGoETwXhuZ9udE217hbjJHygLOPaYA
207
207
  ultralytics/utils/__init__.py,sha256=Ahn7Vn60HIquaBZwLWfWH4bKnm0JcpJXYxnOnY-RH-s,50010
208
208
  ultralytics/utils/autobatch.py,sha256=zc81HlAMArPASEbExty0E_zpITF8PVwin7w-xBFFZ5w,5048
209
209
  ultralytics/utils/benchmarks.py,sha256=Jn29MQ3A3CjGjY7IQKo0odY7HGmyaIm7IwckMRK345w,26718
210
- ultralytics/utils/checks.py,sha256=uCSkC3HCjynrfyQQ3uaeX-60USRjALm2NpxtS7rWwKc,31005
210
+ ultralytics/utils/checks.py,sha256=Hz7yLxQHqzYJkL3HmGy6nhHLG2eYjwH5B0BK5GXV9a4,31011
211
211
  ultralytics/utils/dist.py,sha256=fuiJQEnyyL-SighlI3hUlZPaaSreUl4Q39snF6OhQtI,2386
212
212
  ultralytics/utils/downloads.py,sha256=aUESyJOE2d7mJwbGECHWLR3RF8HVQPSwNH0cfmLGgdI,21999
213
213
  ultralytics/utils/errors.py,sha256=sXKDEd8ws3L-yIfG_-P_h86axbm37sJNha7kFBJbQMQ,844
@@ -217,7 +217,7 @@ ultralytics/utils/loss.py,sha256=paRY8K7R4pcUGJfApVzZx-m_iFzzMbHm5GgiaixfDuU,341
217
217
  ultralytics/utils/metrics.py,sha256=onGJkd4DW8DUofFFtHm9xoUCt8gcNlcCxxU-Q39IN7k,54175
218
218
  ultralytics/utils/ops.py,sha256=HJ33Z9U1_Fl2MJyiv1JKLb2hTmvQqbeNemqR0lbCZgQ,34576
219
219
  ultralytics/utils/patches.py,sha256=ARR89dP4YKq7Dd3g2eU-ukbnc2lo3BELukL_1c_d854,3298
220
- ultralytics/utils/plotting.py,sha256=cl8mctrkBMMTE976yrqDn1I8dH6IPO3ROZl99t5fo9w,62987
220
+ ultralytics/utils/plotting.py,sha256=hKji4TyxAmCXdSL264VX6dsC2AZYiL9StShI02dcAOM,62990
221
221
  ultralytics/utils/tal.py,sha256=DO-c006HEI62pcrNRpmt4lpqJPC5yu3veRDOvUuExno,18498
222
222
  ultralytics/utils/torch_utils.py,sha256=LjgZg5O9G2Qw1ZwX6axOt8QFwu3wqm0mWZHerMCy9jg,33165
223
223
  ultralytics/utils/triton.py,sha256=2L1_rZ8xCJEjexRVj75g9YU-u4tQln_DJ5N1Yr_0bSs,4071
@@ -233,9 +233,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=waZ_bRu0-qBKujTLuqonC2gx2DkgBuVnfq
233
233
  ultralytics/utils/callbacks/raytune.py,sha256=TbuZlDb721aIkh-nMozZcP2g_ttUh2cG5LUaXmept6g,728
234
234
  ultralytics/utils/callbacks/tensorboard.py,sha256=JHOEVlNQ5dYJPd4Z-EvqbXowuK5uA0p8wPgyyaIUQs0,4194
235
235
  ultralytics/utils/callbacks/wb.py,sha256=ayhT2y62AcSOacnawshATU0rWrlSFQ77mrGgBdRl3W4,7086
236
- ultralytics-8.3.71.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
- ultralytics-8.3.71.dist-info/METADATA,sha256=TqVxaW-U5gY3kedQtbmoVAoKAFnZv2YxgkciP3Xl6W4,35212
238
- ultralytics-8.3.71.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
239
- ultralytics-8.3.71.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
- ultralytics-8.3.71.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
- ultralytics-8.3.71.dist-info/RECORD,,
236
+ ultralytics-8.3.73.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
+ ultralytics-8.3.73.dist-info/METADATA,sha256=JjfVDY1CmYikQNDwKsNkGsErWwXrcTPhJKjHIDu013w,35158
238
+ ultralytics-8.3.73.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
239
+ ultralytics-8.3.73.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
+ ultralytics-8.3.73.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
+ ultralytics-8.3.73.dist-info/RECORD,,