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 +1 -1
- ultralytics/engine/exporter.py +1 -1
- ultralytics/engine/trainer.py +1 -1
- ultralytics/nn/autobackend.py +2 -1
- ultralytics/nn/modules/block.py +7 -21
- ultralytics/utils/metrics.py +2 -2
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/METADATA +1 -1
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/RECORD +12 -12
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/LICENSE +0 -0
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/WHEEL +0 -0
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.1.34.dist-info → ultralytics-8.1.36.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/engine/exporter.py
CHANGED
|
@@ -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.")
|
ultralytics/engine/trainer.py
CHANGED
|
@@ -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
|
|
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
|
ultralytics/nn/autobackend.py
CHANGED
|
@@ -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
|
-
|
|
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
|
ultralytics/nn/modules/block.py
CHANGED
|
@@ -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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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(
|
|
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(
|
|
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."""
|
ultralytics/utils/metrics.py
CHANGED
|
@@ -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)
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
195
|
-
ultralytics-8.1.
|
|
196
|
-
ultralytics-8.1.
|
|
197
|
-
ultralytics-8.1.
|
|
198
|
-
ultralytics-8.1.
|
|
199
|
-
ultralytics-8.1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|