ultralytics 8.3.91__py3-none-any.whl → 8.3.93__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.
tests/test_python.py CHANGED
@@ -209,10 +209,13 @@ def test_train_scratch():
209
209
  model(SOURCE)
210
210
 
211
211
 
212
- def test_train_pretrained():
212
+ @pytest.mark.parametrize("scls", [False, True])
213
+ def test_train_pretrained(scls):
213
214
  """Test training of the YOLO model starting from a pre-trained checkpoint."""
214
215
  model = YOLO(WEIGHTS_DIR / "yolo11n-seg.pt")
215
- model.train(data="coco8-seg.yaml", epochs=1, imgsz=32, cache="ram", copy_paste=0.5, mixup=0.5, name=0)
216
+ model.train(
217
+ data="coco8-seg.yaml", epochs=1, imgsz=32, cache="ram", copy_paste=0.5, mixup=0.5, name=0, single_cls=scls
218
+ )
216
219
  model(SOURCE)
217
220
 
218
221
 
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.91"
3
+ __version__ = "8.3.93"
4
4
 
5
5
  import os
6
6
 
@@ -116,6 +116,7 @@ class YOLODataset(BaseDataset):
116
116
  repeat(len(self.data["names"])),
117
117
  repeat(nkpt),
118
118
  repeat(ndim),
119
+ repeat(self.single_cls),
119
120
  ),
120
121
  )
121
122
  pbar = TQDM(results, desc=desc, total=total)
ultralytics/data/utils.py CHANGED
@@ -96,7 +96,7 @@ def verify_image(args):
96
96
 
97
97
  def verify_image_label(args):
98
98
  """Verify one image-label pair."""
99
- im_file, lb_file, prefix, keypoint, num_cls, nkpt, ndim = args
99
+ im_file, lb_file, prefix, keypoint, num_cls, nkpt, ndim, single_cls = args
100
100
  # Number (missing, found, empty, corrupt), message, segments, keypoints
101
101
  nm, nf, ne, nc, msg, segments, keypoints = 0, 0, 0, 0, "", [], None
102
102
  try:
@@ -135,6 +135,8 @@ def verify_image_label(args):
135
135
  assert lb.min() >= 0, f"negative label values {lb[lb < 0]}"
136
136
 
137
137
  # All labels
138
+ if single_cls:
139
+ lb[:, 0] = 0
138
140
  max_cls = lb[:, 0].max() # max label count
139
141
  assert max_cls < num_cls, (
140
142
  f"Label class {int(max_cls)} exceeds dataset class count {num_cls}. "
@@ -1006,6 +1006,7 @@ class Exporter:
1006
1006
  "tf_keras", # required by 'onnx2tf' package
1007
1007
  "sng4onnx>=1.0.1", # required by 'onnx2tf' package
1008
1008
  "onnx_graphsurgeon>=0.3.26", # required by 'onnx2tf' package
1009
+ "ai-edge-litert>=1.2.0", # required by 'onnx2tf' package
1009
1010
  "onnx>=1.12.0",
1010
1011
  "onnx2tf>=1.26.3",
1011
1012
  "onnxslim>=0.1.31",
@@ -472,6 +472,7 @@ class Results(SimpleClass):
472
472
  save=False,
473
473
  filename=None,
474
474
  color_mode="class",
475
+ txt_color=(255, 255, 255),
475
476
  ):
476
477
  """
477
478
  Plots detection results on an input RGB image.
@@ -494,6 +495,7 @@ class Results(SimpleClass):
494
495
  save (bool): Whether to save the annotated image.
495
496
  filename (str | None): Filename to save image if save is True.
496
497
  color_mode (bool): Specify the color mode, e.g., 'instance' or 'class'. Default to 'class'.
498
+ txt_color (tuple[int, int, int]): Specify the RGB text color for classification task
497
499
 
498
500
  Returns:
499
501
  (np.ndarray): Annotated image as a numpy array.
@@ -569,7 +571,7 @@ class Results(SimpleClass):
569
571
  if pred_probs is not None and show_probs:
570
572
  text = ",\n".join(f"{names[j] if names else j} {pred_probs.data[j]:.2f}" for j in pred_probs.top5)
571
573
  x = round(self.orig_shape[0] * 0.03)
572
- annotator.text([x, x], text, txt_color=(255, 255, 255)) # TODO: allow setting colors
574
+ annotator.text([x, x], text, txt_color=txt_color)
573
575
 
574
576
  # Plot Pose results
575
577
  if self.keypoints is not None:
@@ -126,7 +126,7 @@ class HUBTrainingSession:
126
126
 
127
127
  self.model_url = f"{HUB_WEB_ROOT}/models/{self.model.id}"
128
128
  if self.model.is_trained():
129
- print(emojis(f"Loading trained HUB model {self.model_url} 🚀"))
129
+ LOGGER.info(f"Loading trained HUB model {self.model_url} 🚀")
130
130
  url = self.model.get_weights_url("best") # download URL with auth
131
131
  self.model_file = checks.check_file(url, download_dir=Path(SETTINGS["weights_dir"]) / "hub" / self.model.id)
132
132
  return
@@ -185,6 +185,8 @@ class AutoBackend(nn.Module):
185
185
 
186
186
  # TorchScript
187
187
  elif jit:
188
+ import torchvision # noqa - https://github.com/ultralytics/ultralytics/pull/19747
189
+
188
190
  LOGGER.info(f"Loading {w} for TorchScript inference...")
189
191
  extra_files = {"config.txt": ""} # model metadata
190
192
  model = torch.jit.load(w, _extra_files=extra_files, map_location=device)
@@ -281,7 +283,7 @@ class AutoBackend(nn.Module):
281
283
  elif engine:
282
284
  LOGGER.info(f"Loading {w} for TensorRT inference...")
283
285
 
284
- if IS_JETSON and PYTHON_VERSION <= "3.8.0":
286
+ if IS_JETSON and check_version(PYTHON_VERSION, "<=3.8.0"):
285
287
  # fix error: `np.bool` was a deprecated alias for the builtin `bool` for JetPack 4 with Python <= 3.8.0
286
288
  check_requirements("numpy==1.23.5")
287
289
 
@@ -947,7 +947,7 @@ class TryExcept(contextlib.ContextDecorator):
947
947
  def __exit__(self, exc_type, value, traceback):
948
948
  """Defines behavior when exiting a 'with' block, prints error message if necessary."""
949
949
  if self.verbose and value:
950
- print(emojis(f"{self.msg}{': ' if self.msg else ''}{value}"))
950
+ LOGGER.warning(f"{self.msg}{': ' if self.msg else ''}{value}")
951
951
  return True
952
952
 
953
953
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ultralytics
3
- Version: 8.3.91
3
+ Version: 8.3.93
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>
@@ -5,9 +5,9 @@ tests/test_cuda.py,sha256=0uvTF4bY_Grsd_Xgtp7TdIEgMpUqKv8_kWA82NYDl_g,6260
5
5
  tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
6
6
  tests/test_exports.py,sha256=2UIeIVJTpBAql_XYFCKcZg7OPlwlzYnaSqOKjalHuSg,9242
7
7
  tests/test_integrations.py,sha256=ZgpddWHEVqiP4bGhVw8fLc2wdz0rCxuxr0FQ2dTgnIE,6067
8
- tests/test_python.py,sha256=SZQyhwWcgXtte4VKbwf77h15D-tb0CEyiWaJpaxbkGc,22992
8
+ tests/test_python.py,sha256=qfAjIhZ8R-g6QLtAo_bSf77U_7LexVKwstZlmoze5WI,23075
9
9
  tests/test_solutions.py,sha256=xh5cPoQ8Ht0rNbdalWW8C3f0f_-asgu4aZSiMMn3yRY,5134
10
- ultralytics/__init__.py,sha256=24X8o66s-8ZyaqLudin9r4TG-ghbPgFenxLQOT333yQ,709
10
+ ultralytics/__init__.py,sha256=VX231MDgwXnhdMj5dDWrIR3lU_-nXrpn4oYwlHg9rJU,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=q5fPqB4xjhjeRO4x84lCELyWPHgO8nCi-pQyg13ESjo,39908
@@ -102,21 +102,21 @@ ultralytics/data/augment.py,sha256=wlAbsWqmDIfSB4Ys4iN354FTTnH7SmHueUH19j7JpF4,1
102
102
  ultralytics/data/base.py,sha256=kILHN-GWQnIzauJCubZsDVQisR_teql03XUBwZKGePg,18449
103
103
  ultralytics/data/build.py,sha256=56pavLie6PDFEVYChMxnGQGtGsxozYZRpFqC70DRGls,9650
104
104
  ultralytics/data/converter.py,sha256=QHCXroWL_6Mc-4DudX773V09NQVEGR1wVTOJvYJ9YIU,24657
105
- ultralytics/data/dataset.py,sha256=VX89-X8F-_yi0bWRdPBpDd837OPFCevlYikkouAgvLg,27919
105
+ ultralytics/data/dataset.py,sha256=ZytVBYRGKP6aUJpt7fDnBH_j9Sz_xABLNy1lWgNPOtM,27964
106
106
  ultralytics/data/loaders.py,sha256=_Gyp_BfGTZwsFdn4UnolXxdU_sAYZLIrv0L2TRI9R5g,28627
107
107
  ultralytics/data/split_dota.py,sha256=J3cGfIMC4K_mFYX0G0XfRwJIwe_8nMjwDlv4mvdqFgA,11872
108
- ultralytics/data/utils.py,sha256=uNLBG9rhL8JT7k8XQI3Wup3ct8e9JLWzabD6iaUFEms,33141
108
+ ultralytics/data/utils.py,sha256=aRPwIoLrCML_Kcd0dI9B6c5Ct4dvhdF36rDHtuf7Ww4,33217
109
109
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
110
- ultralytics/engine/exporter.py,sha256=bcNcmSday8YtvC8jdcIzjpk87MxcBL_mcxGMkqBX3RQ,77492
110
+ ultralytics/engine/exporter.py,sha256=_4hmCm3MmHXtmBm80uiqISNs9jn9Up7T1TG1q7vQ0T4,77566
111
111
  ultralytics/engine/model.py,sha256=5oR7GAlpCegbOj4h1y-7hKB0YIJFoRbxwA_CufWvaC8,52902
112
112
  ultralytics/engine/predictor.py,sha256=q36ByW23geuLJWiBHi4uD5Qyn4RbfgZP7zxJ_tAfPI8,21626
113
- ultralytics/engine/results.py,sha256=NdnBvWCNDyfOPe7XwSWqhBppV2GmXEMH9LBbkeJ4Vjc,79620
113
+ ultralytics/engine/results.py,sha256=rV4RG5wfZCv86Y2vVwt-J6Xx7YO20rxLebelZaHGXnk,79716
114
114
  ultralytics/engine/trainer.py,sha256=fLdNmy0FNvoOxkFNh5yc8LR82Z-h5eGaj-fYLVvqbkM,38376
115
115
  ultralytics/engine/tuner.py,sha256=W0e8jMb2GbGUBh33T_dMsWd0vvL_IEpih1Qk7FnxjGw,12205
116
116
  ultralytics/engine/validator.py,sha256=xTAssIEj_xC4cZOT9_HVHv1krxz7yROWAuID_Xt9hng,16974
117
117
  ultralytics/hub/__init__.py,sha256=NuuvSXWvCllF-Mbvet8uipHqhZF5c-Ycv4NOTByfpig,5579
118
118
  ultralytics/hub/auth.py,sha256=QShM9RGDwaNgZlNLfLg9Ui-awj55fTRRK9yFDGlwwZ8,5556
119
- ultralytics/hub/session.py,sha256=iuu3xhQ5DsFCP5udwH4qBdxXPrRhbryfqcAA9gALHqI,18733
119
+ ultralytics/hub/session.py,sha256=o-mERf4Dtx7rL__fXXQQf_88mvGf6DbU4Ogb75Jrd8g,18731
120
120
  ultralytics/hub/utils.py,sha256=V0N-K-n2cd9lJt_uyue3lsPyjx8-hVAqXauQX3oBE0w,9642
121
121
  ultralytics/hub/google/__init__.py,sha256=jnWMostygAHmZCKjPwalymkNDXQC4bj9-4K6-ay7csA,7532
122
122
  ultralytics/models/__init__.py,sha256=Dtj85wDqat2lgdtCYzGrC1Q5kPQrqk0RPcAhMmWKCXs,293
@@ -177,7 +177,7 @@ ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn
177
177
  ultralytics/models/yolo/world/train.py,sha256=0YdzItDE2iCmWRq8E9AzD9CwjQ176ZQZPHhXwoUYY7c,4876
178
178
  ultralytics/models/yolo/world/train_world.py,sha256=Cnu5AkwSVIwvmotF7OQ7Zw5nF1UWjAb8QvfSVMVMLtA,6360
179
179
  ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
180
- ultralytics/nn/autobackend.py,sha256=fQWEpjQbrxZFPdKp1RFsV93QsgnlGgbo0lEDAgRi7gA,38106
180
+ ultralytics/nn/autobackend.py,sha256=eeoWp5J4-fnnxVKWoqxMMx9OMpsv_l9bRjhtMcX55eQ,38217
181
181
  ultralytics/nn/tasks.py,sha256=bIvE-BPUUFnQAEQ7SuV9DutUlFXIBGsLG9HxB-ZONl0,52678
182
182
  ultralytics/nn/modules/__init__.py,sha256=R_qrw30VU_cgg1YyowVpzAbqh87WfYXkPZe4Og_bQqk,2951
183
183
  ultralytics/nn/modules/activation.py,sha256=_DL_rQw4QmhNO0CaftNR8HRvqNnTGRbmjyD6HGbPjxw,1392
@@ -213,7 +213,7 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
213
213
  ultralytics/trackers/utils/gmc.py,sha256=0S-RUQQMc91eX0XZJQk1zXz8cAkGXZCnOmccLLyGUp4,14500
214
214
  ultralytics/trackers/utils/kalman_filter.py,sha256=A0CqOnnaKH6kr0XwuHzyHmIU6aJAjJYxF9jVlNBKZHo,21326
215
215
  ultralytics/trackers/utils/matching.py,sha256=7eIufSdeN7cXuFMjvcfvz0Ldq84m4YKZl5IGxBR8IIo,7169
216
- ultralytics/utils/__init__.py,sha256=7C5P540yb12_-cOpZAxk9UIdpglK-eQyQDieKhLiRlU,49498
216
+ ultralytics/utils/__init__.py,sha256=wL52-seT_KeoINI5XWvtcbBi9-6vq5z3fYpP95j5mbA,49499
217
217
  ultralytics/utils/autobatch.py,sha256=KnvmNSAO_6H3ZLJ4fOFMTFbOaMlbp025LiJqrdKIz8c,4998
218
218
  ultralytics/utils/benchmarks.py,sha256=uw9cpyg0pkvb5Ri1ExDwixtqXBosacYGngLLFU1fKYA,30246
219
219
  ultralytics/utils/checks.py,sha256=nY-tBB-z8u3W0r2pJx8CPTaO1lkycTAKpH7g_Yj0cSg,32629
@@ -242,9 +242,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=TQDHJsgAdnMtSdLeQyVTJ1zBdvuwLm-U4U
242
242
  ultralytics/utils/callbacks/raytune.py,sha256=p0eGb8UACfnPzZ_bB287NjSd-UmSHF5zAFYKPwVJhj0,706
243
243
  ultralytics/utils/callbacks/tensorboard.py,sha256=rnyja6LpSyixwuL0WKovgARe6RPiX8ORuknlre3VEu4,4255
244
244
  ultralytics/utils/callbacks/wb.py,sha256=sMlA0dTcv3krDd3ppGSgw-wXIo64sPOv9RgdghAsP5k,6851
245
- ultralytics-8.3.91.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
246
- ultralytics-8.3.91.dist-info/METADATA,sha256=XfI5zPopBIEHReHKtKZgs5x8RYHrkMhwSWbg7ONT9QE,35169
247
- ultralytics-8.3.91.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
248
- ultralytics-8.3.91.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
249
- ultralytics-8.3.91.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
250
- ultralytics-8.3.91.dist-info/RECORD,,
245
+ ultralytics-8.3.93.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
246
+ ultralytics-8.3.93.dist-info/METADATA,sha256=cP3QD4sYbcx_3plv1N_Ckan_Lw9opPJzqqp7iAnof9E,35169
247
+ ultralytics-8.3.93.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
248
+ ultralytics-8.3.93.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
249
+ ultralytics-8.3.93.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
250
+ ultralytics-8.3.93.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.0.0)
2
+ Generator: setuptools (76.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5