ultralytics 8.3.216__py3-none-any.whl → 8.3.217__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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

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.216"
3
+ __version__ = "8.3.217"
4
4
 
5
5
  import importlib
6
6
  import os
ultralytics/data/build.py CHANGED
@@ -181,7 +181,15 @@ def build_grounding(
181
181
  )
182
182
 
183
183
 
184
- def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, rank: int = -1, drop_last: bool = False):
184
+ def build_dataloader(
185
+ dataset,
186
+ batch: int,
187
+ workers: int,
188
+ shuffle: bool = True,
189
+ rank: int = -1,
190
+ drop_last: bool = False,
191
+ pin_memory: bool = True,
192
+ ):
185
193
  """
186
194
  Create and return an InfiniteDataLoader or DataLoader for training or validation.
187
195
 
@@ -192,6 +200,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
192
200
  shuffle (bool, optional): Whether to shuffle the dataset.
193
201
  rank (int, optional): Process rank in distributed training. -1 for single-GPU training.
194
202
  drop_last (bool, optional): Whether to drop the last incomplete batch.
203
+ pin_memory (bool, optional): Whether to use pinned memory for dataloader.
195
204
 
196
205
  Returns:
197
206
  (InfiniteDataLoader): A dataloader that can be used for training or validation.
@@ -214,7 +223,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
214
223
  num_workers=nw,
215
224
  sampler=sampler,
216
225
  prefetch_factor=4 if nw > 0 else None, # increase over default 2
217
- pin_memory=nd > 0,
226
+ pin_memory=nd > 0 and pin_memory,
218
227
  collate_fn=getattr(dataset, "collate_fn", None),
219
228
  worker_init_fn=seed_worker,
220
229
  generator=generator,
@@ -527,7 +527,7 @@ class Results(SimpleClass, DataExportMixin):
527
527
  """
528
528
  assert color_mode in {"instance", "class"}, f"Expected color_mode='instance' or 'class', not {color_mode}."
529
529
  if img is None and isinstance(self.orig_img, torch.Tensor):
530
- img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).to(torch.uint8).cpu().numpy()
530
+ img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).byte().cpu().numpy()
531
531
 
532
532
  names = self.names
533
533
  is_obb = self.obb is not None
@@ -300,7 +300,13 @@ class DetectionValidator(BaseValidator):
300
300
  """
301
301
  dataset = self.build_dataset(dataset_path, batch=batch_size, mode="val")
302
302
  return build_dataloader(
303
- dataset, batch_size, self.args.workers, shuffle=False, rank=-1, drop_last=self.args.compile
303
+ dataset,
304
+ batch_size,
305
+ self.args.workers,
306
+ shuffle=False,
307
+ rank=-1,
308
+ drop_last=self.args.compile,
309
+ pin_memory=self.training,
304
310
  )
305
311
 
306
312
  def plot_val_samples(self, batch: dict[str, Any], ni: int) -> None:
@@ -173,7 +173,7 @@ class SegmentationValidator(DetectionValidator):
173
173
  if gt_cls.shape[0] == 0 or preds["cls"].shape[0] == 0:
174
174
  tp_m = np.zeros((preds["cls"].shape[0], self.niou), dtype=bool)
175
175
  else:
176
- iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1))
176
+ iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1).float()) # float, uint8
177
177
  tp_m = self.match_predictions(preds["cls"], gt_cls, iou).cpu().numpy()
178
178
  tp.update({"tp_m": tp_m}) # update tp with mask IoU
179
179
  return tp
@@ -19,6 +19,7 @@ from PIL import Image
19
19
  from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML, is_jetson
20
20
  from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
21
21
  from ultralytics.utils.downloads import attempt_download_asset, is_url
22
+ from ultralytics.utils.nms import non_max_suppression
22
23
 
23
24
 
24
25
  def check_class_names(names: list | dict) -> dict[int, str]:
@@ -854,7 +855,10 @@ class AutoBackend(nn.Module):
854
855
  if any(warmup_types) and (self.device.type != "cpu" or self.triton):
855
856
  im = torch.empty(*imgsz, dtype=torch.half if self.fp16 else torch.float, device=self.device) # input
856
857
  for _ in range(2 if self.jit else 1):
857
- self.forward(im) # warmup
858
+ self.forward(im) # warmup model
859
+ warmup_boxes = torch.rand(1, 84, 16, device=self.device) # 16 boxes works best empirically
860
+ warmup_boxes[:, :4] *= imgsz[-1]
861
+ non_max_suppression(warmup_boxes) # warmup NMS
858
862
 
859
863
  @staticmethod
860
864
  def _model_type(p: str = "path/to/model.pt") -> list[bool]:
ultralytics/utils/ops.py CHANGED
@@ -557,7 +557,7 @@ def process_mask(protos, masks_in, bboxes, shape, upsample: bool = False):
557
557
  masks = crop_mask(masks, boxes=bboxes * ratios) # CHW
558
558
  if upsample:
559
559
  masks = F.interpolate(masks[None], shape, mode="bilinear")[0] # CHW
560
- return masks.gt_(0.0)
560
+ return masks.gt_(0.0).byte()
561
561
 
562
562
 
563
563
  def process_mask_native(protos, masks_in, bboxes, shape):
@@ -577,7 +577,7 @@ def process_mask_native(protos, masks_in, bboxes, shape):
577
577
  masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw)
578
578
  masks = scale_masks(masks[None], shape)[0] # CHW
579
579
  masks = crop_mask(masks, bboxes) # CHW
580
- return masks.gt_(0.0)
580
+ return masks.gt_(0.0).byte()
581
581
 
582
582
 
583
583
  def scale_masks(masks, shape, padding: bool = True):
@@ -674,7 +674,7 @@ def masks2segments(masks, strategy: str = "all"):
674
674
  from ultralytics.data.converter import merge_multi_segment
675
675
 
676
676
  segments = []
677
- for x in masks.int().cpu().numpy().astype("uint8"):
677
+ for x in masks.byte().cpu().numpy():
678
678
  c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
679
679
  if c:
680
680
  if strategy == "all": # merge and concatenate all segments
@@ -701,7 +701,7 @@ def convert_torch2numpy_batch(batch: torch.Tensor) -> np.ndarray:
701
701
  Returns:
702
702
  (np.ndarray): Output NumPy array batch with shape (Batch, Height, Width, Channels) and dtype uint8.
703
703
  """
704
- return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).to(torch.uint8).cpu().numpy()
704
+ return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).byte().cpu().numpy()
705
705
 
706
706
 
707
707
  def clean_str(s):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.216
3
+ Version: 8.3.217
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=3o-qqPrPqjD1a_U6KBvwAusZ_Wy6S1WzmuvgRRUXmcA,11099
7
7
  tests/test_integrations.py,sha256=ehRcYMpGvUI3KvgsaT1pkN1rXkr7tDSlYYMqIcXyGbg,6220
8
8
  tests/test_python.py,sha256=x2q5Wx3eOl32ymmr_4p6srz7ebO-O8zFttuerys_OWg,28083
9
9
  tests/test_solutions.py,sha256=oaTz5BttPDIeHkQh9oEaw-O73L4iYDP3Lfe82V7DeKM,13416
10
- ultralytics/__init__.py,sha256=4O9rGwsIt8uAjy51S1RIM1b1J9H4mog1w1OsM7XU058,1302
10
+ ultralytics/__init__.py,sha256=M6gKY2cB4tP1bDSZBQYox8G-dj9FA8ayvzU4rcQ8KZM,1302
11
11
  ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
@@ -109,7 +109,7 @@ ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,
109
109
  ultralytics/data/annotator.py,sha256=f15TCDEM8SuuzHiFB8oyhTy9vfywKmPTLSPAgsZQP9I,2990
110
110
  ultralytics/data/augment.py,sha256=7NsRCYu_uM6KkpU0F03NC9Ra_GQVGp2dRO1RksrrU38,132897
111
111
  ultralytics/data/base.py,sha256=gWoGFifyNe1TCwtGdGp5jzKOQ9sh4b-XrfyN0PPvRaY,19661
112
- ultralytics/data/build.py,sha256=cdhD1Z4Gv9KLi5n9OchDRBH8rfMQ1NyDja_D7DmAS00,11879
112
+ ultralytics/data/build.py,sha256=yCsXfeGK_Tm_ONUwuRimU_zI6gGr-8zI9JD0YvKS_xg,12032
113
113
  ultralytics/data/converter.py,sha256=HMJ5H7nvHkeeSYNEwcWrSDkPJykVVg3kLmTC_V8adqg,31967
114
114
  ultralytics/data/dataset.py,sha256=GL6J_fvluaF2Ck1in3W5q3Xm7lRcUd6Amgd_uu6r_FM,36772
115
115
  ultralytics/data/loaders.py,sha256=sfQ0C86uBg9QQbN3aU0W8FIjGQmMdJTQAMK4DA1bjk8,31748
@@ -124,7 +124,7 @@ ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QU
124
124
  ultralytics/engine/exporter.py,sha256=LnxviDE4kHklCYpef8IEmDOteeSibGLLjX35g9vICyw,71584
125
125
  ultralytics/engine/model.py,sha256=uX6cTFdlLllGRbz8Lr90IZGb4OrtMDIHQEg7DxUqwe8,53449
126
126
  ultralytics/engine/predictor.py,sha256=4lfw2RbBDE7939011FcSCuznscrcnMuabZtc8GXaKO4,22735
127
- ultralytics/engine/results.py,sha256=uQ_tgvdxKAg28pRgb5WCHiqx9Ktu7wYiVbwZy_IJ5bo,71499
127
+ ultralytics/engine/results.py,sha256=oHQdV_eIMvAU2qLCV7wG7iLifdfaLEgP80lDXB5ghkg,71490
128
128
  ultralytics/engine/trainer.py,sha256=URv3-BKeipw0Szl1xrnTH5cCIU3_SA10mx89GSA7Vs4,43832
129
129
  ultralytics/engine/tuner.py,sha256=8uiZ9DSYdjHmbhfiuzbMPw--1DLS3cpfZPeSzJ9dGEA,21664
130
130
  ultralytics/engine/validator.py,sha256=s7cKMqj2HgVm-GL9bUc76QBeue2jb4cKPk-uQQG5nck,16949
@@ -174,7 +174,7 @@ ultralytics/models/yolo/classify/val.py,sha256=FUTTrvIMlFxdJm8dlrsguKsDvfRdDtGNl
174
174
  ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
175
175
  ultralytics/models/yolo/detect/predict.py,sha256=Vtpqb2gHI7hv9TaBBXsnoScQ8HrSnj0PPOkEu07MwLc,5394
176
176
  ultralytics/models/yolo/detect/train.py,sha256=rnmCt0TG5bdySE2TVUsUqwyyF_LTy4dZdlACoM1MhcU,10554
177
- ultralytics/models/yolo/detect/val.py,sha256=yWzaimDaR6pvGX4hIy5ytaqKy8Qo-B7w7hJPavMmVNg,21351
177
+ ultralytics/models/yolo/detect/val.py,sha256=nNphrVbhUFs0UdLTSvxGwn33u33YQgkb2pyXBWJ3g3g,21450
178
178
  ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
179
179
  ultralytics/models/yolo/obb/predict.py,sha256=4r1eSld6TNJlk9JG56e-DX6oPL8uBBqiuztyBpxWlHE,2888
180
180
  ultralytics/models/yolo/obb/train.py,sha256=BbehrsKP0lHRV3v7rrw8wAeiDdc-szbhHAmDy0OdhoM,3461
@@ -186,7 +186,7 @@ ultralytics/models/yolo/pose/val.py,sha256=MK-GueXmXrl7eZ5WHYjJMghE4AYJTEut7AuS-
186
186
  ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
187
187
  ultralytics/models/yolo/segment/predict.py,sha256=Qf6B4v2O8usK5wHfbre4gkJjEWKidxZRhetWv4nyr6M,5470
188
188
  ultralytics/models/yolo/segment/train.py,sha256=5aPK5FDHLzbXb3R5TCpsAr1O6-8rtupOIoDokY8bSDs,3032
189
- ultralytics/models/yolo/segment/val.py,sha256=fJLDJpK1RZgeMvmtf47BjHhZ9lzX_4QfUuBzGXZqIhA,11289
189
+ ultralytics/models/yolo/segment/val.py,sha256=wly-R-1hE-6vOdhp2TTOQKJxOcYbNHKE24sUb27RhQ4,11313
190
190
  ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
191
191
  ultralytics/models/yolo/world/train.py,sha256=IBuzLgsNJEFuMaWgrhE3sqIl0vltdzxlPj9Wm0S2diI,7956
192
192
  ultralytics/models/yolo/world/train_world.py,sha256=9p9YIckrATaJjGOrpmuC8MbZX9qdoCPCEV9EGZ0sExg,9553
@@ -196,7 +196,7 @@ ultralytics/models/yolo/yoloe/train.py,sha256=qefvNNXDTOK1tO3va0kNHr8lE5QJkOlV8G
196
196
  ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
197
197
  ultralytics/models/yolo/yoloe/val.py,sha256=5Gd9EoFH0FmKKvWXBl4J7gBe9DVxIczN-s3ceHwdUDo,9458
198
198
  ultralytics/nn/__init__.py,sha256=PJgOn2phQTTBR2P3s_JWvGeGXQpvw1znsumKow4tCuE,545
199
- ultralytics/nn/autobackend.py,sha256=gDMNtTnlB_t06BvaegcPuXyo6oMP1Pi4zJIjzNWyF9g,41333
199
+ ultralytics/nn/autobackend.py,sha256=Wc3oIpaguT9GJ4BwNVhG51TUhe5f32rwqRxVhF28YK0,41614
200
200
  ultralytics/nn/tasks.py,sha256=r01JGRa9bgGdOHXycN6TSK30I_Ip4GHO9dZ8LtpkmYk,70846
201
201
  ultralytics/nn/text_model.py,sha256=pHqnKe8UueR1MuwJcIE_IvrnYIlt68QL796xjcRJs2A,15275
202
202
  ultralytics/nn/modules/__init__.py,sha256=BPMbEm1daI7Tuds3zph2_afAX7Gq1uAqK8BfiCfKTZs,3198
@@ -253,7 +253,7 @@ ultralytics/utils/logger.py,sha256=o_vH4CCgQat6_Sbmwm1sUAJ4muAgVcsUed-WqpGNQZw,1
253
253
  ultralytics/utils/loss.py,sha256=wJ0F2DpRTI9-e9adxIm2io0zcXRa0RTWFTOc7WmS1-A,39827
254
254
  ultralytics/utils/metrics.py,sha256=DC-JuakuhHfeCeLvUHb7wj1HPhuFakx00rqXicTka5Y,68834
255
255
  ultralytics/utils/nms.py,sha256=AVOmPuUTEJqmq2J6rvjq-nHNxYIyabgzHdc41siyA0w,14161
256
- ultralytics/utils/ops.py,sha256=OYntCTGzMDiABISxbu5WrIfH76PXfsfHe2s79-ZWdpU,27068
256
+ ultralytics/utils/ops.py,sha256=oJjEd1Ly9pYbQn0fO1V4OFRLr1BPJi3A7IXlXszEiVA,27058
257
257
  ultralytics/utils/patches.py,sha256=0-2G4jXCIPnMonlft-cPcjfFcOXQS6ODwUDNUwanfg4,6541
258
258
  ultralytics/utils/plotting.py,sha256=lWvjC_ojjWYca8atorCdJGlDCIph83NA7h7hlnfZx54,48342
259
259
  ultralytics/utils/tal.py,sha256=7KQYNyetfx18CNc_bvNG7BDb44CIU3DEu4qziVVvNAE,20869
@@ -275,9 +275,9 @@ ultralytics/utils/callbacks/tensorboard.py,sha256=_4nfGK1dDLn6ijpvphBDhc-AS8qhS3
275
275
  ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
276
276
  ultralytics/utils/export/__init__.py,sha256=eZg5z2I61k8H0ykQLc22HhKwFRsLxwuSlDVMuUlYXfU,10023
277
277
  ultralytics/utils/export/imx.py,sha256=Jl5nuNxqaP_bY5yrV2NypmoJSrexHE71TxR72SDdjcg,11394
278
- ultralytics-8.3.216.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
279
- ultralytics-8.3.216.dist-info/METADATA,sha256=2_oJXSwfFWG-SDVdAdwHbkywgsQ-Rsvtd1LYx3gsVSk,37667
280
- ultralytics-8.3.216.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
281
- ultralytics-8.3.216.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
282
- ultralytics-8.3.216.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
283
- ultralytics-8.3.216.dist-info/RECORD,,
278
+ ultralytics-8.3.217.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
279
+ ultralytics-8.3.217.dist-info/METADATA,sha256=M7GUBZK16TGL_KG-QQ09c7CTfMLAOLJ5lCOjpkXIpbA,37667
280
+ ultralytics-8.3.217.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
281
+ ultralytics-8.3.217.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
282
+ ultralytics-8.3.217.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
283
+ ultralytics-8.3.217.dist-info/RECORD,,