ultralytics 8.1.34__py3-none-any.whl → 8.1.36__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 YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.1.34"
3
+ __version__ = "8.1.36"
4
4
 
5
5
  from ultralytics.data.explorer.explorer import Explorer
6
6
  from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
@@ -459,7 +459,7 @@ class Exporter:
459
459
  # Generate calibration data for integer quantization
460
460
  LOGGER.info(f"{prefix} collecting INT8 calibration images from 'data={self.args.data}'")
461
461
  data = check_det_dataset(self.args.data)
462
- dataset = YOLODataset(data["val"], data=data, imgsz=self.imgsz[0], augment=False)
462
+ dataset = YOLODataset(data["val"], data=data, task=self.model.task, imgsz=self.imgsz[0], augment=False)
463
463
  n = len(dataset)
464
464
  if n < 300:
465
465
  LOGGER.warning(f"{prefix} WARNING ⚠️ >300 images recommended for INT8 calibration, found {n} images.")
@@ -421,7 +421,7 @@ class BaseTrainer:
421
421
  self.lr = {f"lr/pg{ir}": x["lr"] for ir, x in enumerate(self.optimizer.param_groups)} # for loggers
422
422
  self.run_callbacks("on_train_epoch_end")
423
423
  if RANK in (-1, 0):
424
- final_epoch = epoch + 1 == self.epochs
424
+ final_epoch = epoch + 1 >= self.epochs
425
425
  self.ema.update_attr(self.model, include=["yaml", "nc", "args", "names", "stride", "class_weights"])
426
426
 
427
427
  # Validation
@@ -140,7 +140,8 @@ class AutoBackend(nn.Module):
140
140
  # In-memory PyTorch model
141
141
  if nn_module:
142
142
  model = weights.to(device)
143
- model = model.fuse(verbose=verbose) if fuse else model
143
+ if fuse:
144
+ model = model.fuse(verbose=verbose)
144
145
  if hasattr(model, "kpt_shape"):
145
146
  kpt_shape = model.kpt_shape # pose-only
146
147
  stride = max(int(model.stride.max()), 32) # model stride
@@ -171,10 +171,9 @@ class SPPF(nn.Module):
171
171
 
172
172
  def forward(self, x):
173
173
  """Forward pass through Ghost Convolution block."""
174
- x = self.cv1(x)
175
- y1 = self.m(x)
176
- y2 = self.m(y1)
177
- return self.cv2(torch.cat((x, y1, y2, self.m(y2)), 1))
174
+ y = [self.cv1(x)]
175
+ y.extend(self.m(y[-1]) for _ in range(3))
176
+ return self.cv2(torch.cat(y, 1))
178
177
 
179
178
 
180
179
  class C1(nn.Module):
@@ -555,40 +554,27 @@ class BNContrastiveHead(nn.Module):
555
554
  return x * self.logit_scale.exp() + self.bias
556
555
 
557
556
 
558
- class RepBottleneck(nn.Module):
557
+ class RepBottleneck(Bottleneck):
559
558
  """Rep bottleneck."""
560
559
 
561
560
  def __init__(self, c1, c2, shortcut=True, g=1, k=(3, 3), e=0.5):
562
561
  """Initializes a RepBottleneck module with customizable in/out channels, shortcut option, groups and expansion
563
562
  ratio.
564
563
  """
565
- super().__init__()
564
+ super().__init__(c1, c2, shortcut, g, k, e)
566
565
  c_ = int(c2 * e) # hidden channels
567
566
  self.cv1 = RepConv(c1, c_, k[0], 1)
568
- self.cv2 = Conv(c_, c2, k[1], 1, g=g)
569
- self.add = shortcut and c1 == c2
570
-
571
- def forward(self, x):
572
- """Forward pass through RepBottleneck layer."""
573
- return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))
574
567
 
575
568
 
576
- class RepCSP(nn.Module):
569
+ class RepCSP(C3):
577
570
  """Rep CSP Bottleneck with 3 convolutions."""
578
571
 
579
572
  def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
580
573
  """Initializes RepCSP layer with given channels, repetitions, shortcut, groups and expansion ratio."""
581
- super().__init__()
574
+ super().__init__(c1, c2, n, shortcut, g, e)
582
575
  c_ = int(c2 * e) # hidden channels
583
- self.cv1 = Conv(c1, c_, 1, 1)
584
- self.cv2 = Conv(c1, c_, 1, 1)
585
- self.cv3 = Conv(2 * c_, c2, 1) # optional act=FReLU(c2)
586
576
  self.m = nn.Sequential(*(RepBottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)))
587
577
 
588
- def forward(self, x):
589
- """Forward pass through RepCSP layer."""
590
- return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))
591
-
592
578
 
593
579
  class RepNCSPELAN4(nn.Module):
594
580
  """CSP-ELAN."""
@@ -167,7 +167,7 @@ def kpt_iou(kpt1, kpt2, area, sigma, eps=1e-7):
167
167
  d = (kpt1[:, None, :, 0] - kpt2[..., 0]).pow(2) + (kpt1[:, None, :, 1] - kpt2[..., 1]).pow(2) # (N, M, 17)
168
168
  sigma = torch.tensor(sigma, device=kpt1.device, dtype=kpt1.dtype) # (17, )
169
169
  kpt_mask = kpt1[..., 2] != 0 # (N, 17)
170
- e = d / (2 * sigma).pow(2) / (area[:, None, None] + eps) / 2 # from cocoeval
170
+ e = d / ((2 * sigma).pow(2) * (area[:, None, None] + eps) * 2) # from cocoeval
171
171
  # e = d / ((area[None, :, None] + eps) * sigma) ** 2 / 2 # from formula
172
172
  return ((-e).exp() * kpt_mask[:, None]).sum(-1) / (kpt_mask.sum(-1)[:, None] + eps)
173
173
 
@@ -402,7 +402,7 @@ class ConfusionMatrix:
402
402
 
403
403
  fig, ax = plt.subplots(1, 1, figsize=(12, 9), tight_layout=True)
404
404
  nc, nn = self.nc, len(names) # number of classes, names
405
- sn.set(font_scale=1.0 if nc < 50 else 0.8) # for label size
405
+ sn.set_theme(font_scale=1.0 if nc < 50 else 0.8) # for label size
406
406
  labels = (0 < nn < 99) and (nn == nc) # apply names to ticklabels
407
407
  ticklabels = (list(names) + ["background"]) if labels else "auto"
408
408
  with warnings.catch_warnings():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.34
3
+ Version: 8.1.36
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -1,4 +1,4 @@
1
- ultralytics/__init__.py,sha256=IMD6-azLvBn3uZcJVCpVQ8HmUsqkOnmY-Ih5trpM16M,625
1
+ ultralytics/__init__.py,sha256=6KIxAtcg1zdjEZWHZE9nPVcFVraKCEesr9iyY9ZX1Fc,625
2
2
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
3
3
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
4
4
  ultralytics/cfg/__init__.py,sha256=4DFeQcRmsOUUJtP49MezHhWKlE52mUSHI7bKFglOq4k,21273
@@ -75,11 +75,11 @@ ultralytics/data/explorer/utils.py,sha256=a6ugY8rKpFM8dIRcUwRyjRkRJ-zXEwe-NiJr6C
75
75
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
76
76
  ultralytics/data/explorer/gui/dash.py,sha256=a2s8oJKI8kqnWEcIyqCCzvIyvM_uZmfMaxrOdwmiq7k,10044
77
77
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
78
- ultralytics/engine/exporter.py,sha256=pwTQCo88Sd41NqYKx5Jp15fSqhFgaY3Z5gfLm8uzLR0,53882
78
+ ultralytics/engine/exporter.py,sha256=l7CJdjLDPbAhAXPO7VLHQ9J0DZDxB1b-EYF_wfsbPXo,53904
79
79
  ultralytics/engine/model.py,sha256=uemH3-CTwKTMbbiJnIqtReCNy-5TEK9VD737v3VIqxg,39435
80
80
  ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
81
81
  ultralytics/engine/results.py,sha256=D4wZ9OsmBrEQWCkfOeUn_oagXLqu3SxRZYlpYkDDLH8,30667
82
- ultralytics/engine/trainer.py,sha256=C04cEN9v-kvR2dIIjgAN8dBAx8XSTChlQkDxAxfwTlU,34527
82
+ ultralytics/engine/trainer.py,sha256=sQ82Y4CRr366UdfKLPF0cqFe4V7ubkJYODjvZ9xZog0,34527
83
83
  ultralytics/engine/tuner.py,sha256=zttHrQkvXuUVTB7jmM4Z85GgIsQ2hjpW9YrMccrQ4wo,11829
84
84
  ultralytics/engine/validator.py,sha256=rcmJSGrsAfj-ryQktv6-fe0hAT7Z8CLNhUUUf0VsPYI,14645
85
85
  ultralytics/hub/__init__.py,sha256=U4j-2QPdwSDlxw6RgFYnnJXOoIzLtwke4TkY2A8q4ws,5068
@@ -139,10 +139,10 @@ ultralytics/models/yolo/segment/predict.py,sha256=xtA0ZZyuh9WVpX7zZFdAeCkWnxhQ30
139
139
  ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBINBkI9K8-3sQ,2298
140
140
  ultralytics/models/yolo/segment/val.py,sha256=njiF6RWddS-HOWxVvlk5PXRw6UOgEt_HEOZVPF7rruQ,11745
141
141
  ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
142
- ultralytics/nn/autobackend.py,sha256=Z9sDchChAqJ-sSQlUNwoGHTFxFRay1-i76MNUz0qZU8,28678
142
+ ultralytics/nn/autobackend.py,sha256=gMJhT-_mwyGc5ClgmixW56hKwsW6AQUCjLBYfxzFqNU,28684
143
143
  ultralytics/nn/tasks.py,sha256=k6cl1H1hWtQXLxO_s5D6fa_DYyFzIekAMigh3lD36_A,42894
144
144
  ultralytics/nn/modules/__init__.py,sha256=Ga3MDpwX6DeI7VSH8joti5uleP4mgkQGolbe8RLZ2T8,2326
145
- ultralytics/nn/modules/block.py,sha256=n0ilrK3Vjdoc9-OwvY_Bp8Hw5N2BMHwgt-jfH4CzxFQ,25589
145
+ ultralytics/nn/modules/block.py,sha256=KTv0HG4mTqnwVxfnu4aKBcGpS5c_gLP-wlz3iAIfIrk,25075
146
146
  ultralytics/nn/modules/conv.py,sha256=ndUYNL2f9DK41y1vVbtEusMByXy-LMMsBKlcWjRQ9Z8,12722
147
147
  ultralytics/nn/modules/head.py,sha256=LonV2b7TrLx-zKhHQ2fCpKg7BfC-tUBtPlS5NNcfT_w,21728
148
148
  ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
@@ -172,7 +172,7 @@ ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,8
172
172
  ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
173
173
  ultralytics/utils/instance.py,sha256=fPClvPPtTk8VeXWiRv90DrFk1j1lTUKdYJtpZKUDDtA,15575
174
174
  ultralytics/utils/loss.py,sha256=po6fmQzz1JxfGpte6hHkwOC7ECynsceqtgbUWLXVfxw,32700
175
- ultralytics/utils/metrics.py,sha256=_9ZxwK0H6pm_LsZXyC3tY1Dm_57YGDdP3sKSMZStqU0,53465
175
+ ultralytics/utils/metrics.py,sha256=eb_3cTHyTk65nJRIb30Mr-9Q1RZ2OdKDusFPpPr4sHM,53473
176
176
  ultralytics/utils/ops.py,sha256=GFe_tx8MVKT56xelbAuQjiJ28ohpzARpD6BzGyJ1yMk,33264
177
177
  ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
178
178
  ultralytics/utils/plotting.py,sha256=YVJvEDozm1vm_Yf39jLPQ24Qst_f_lzEm-NeDjMElfQ,44705
@@ -191,9 +191,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
191
191
  ultralytics/utils/callbacks/raytune.py,sha256=6OgGNuC35F29lw8Dl_d0lue4-iBR6dqrBVQnIRQDx4E,632
192
192
  ultralytics/utils/callbacks/tensorboard.py,sha256=hRmWjbqdA4RNaLuSZznuDcpOBW-_-_Ga0u-B8UU-7ZI,4134
193
193
  ultralytics/utils/callbacks/wb.py,sha256=4QI81nHdzgwhXHlmTiRxLqunvkKakLXYUhHTUY1ZeHA,6635
194
- ultralytics-8.1.34.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
195
- ultralytics-8.1.34.dist-info/METADATA,sha256=6o1wyHfX25Agzzj4ZWF9xQaYX8aPleKXhw6pNgufjZ0,40330
196
- ultralytics-8.1.34.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
197
- ultralytics-8.1.34.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
198
- ultralytics-8.1.34.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
199
- ultralytics-8.1.34.dist-info/RECORD,,
194
+ ultralytics-8.1.36.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
195
+ ultralytics-8.1.36.dist-info/METADATA,sha256=H8F3NiSJnAwV91nLD-Vfb9uq0qYb-Ax-TZrqIV2C3vI,40330
196
+ ultralytics-8.1.36.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
197
+ ultralytics-8.1.36.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
198
+ ultralytics-8.1.36.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
199
+ ultralytics-8.1.36.dist-info/RECORD,,