ultralytics 8.3.81__py3-none-any.whl → 8.3.83__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_exports.py +0 -1
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/datasets/open-images-v7.yaml +1 -1
- ultralytics/data/augment.py +6 -13
- ultralytics/engine/exporter.py +33 -13
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/METADATA +1 -1
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/RECORD +11 -11
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/LICENSE +0 -0
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.81.dist-info → ultralytics-8.3.83.dist-info}/top_level.txt +0 -0
tests/test_exports.py
CHANGED
@@ -200,7 +200,6 @@ def test_export_paddle():
|
|
200
200
|
|
201
201
|
|
202
202
|
@pytest.mark.slow
|
203
|
-
@pytest.mark.skipif(IS_RASPBERRYPI, reason="MNN not supported on Raspberry Pi")
|
204
203
|
def test_export_mnn():
|
205
204
|
"""Test YOLO exports to MNN format (WARNING: MNN test must precede NCNN test or CI error on Windows)."""
|
206
205
|
file = YOLO(MODEL).export(format="mnn", imgsz=32)
|
ultralytics/__init__.py
CHANGED
@@ -633,6 +633,7 @@ download: |
|
|
633
633
|
import warnings
|
634
634
|
|
635
635
|
name = 'open-images-v7'
|
636
|
+
fo.config.dataset_zoo_dir = Path(SETTINGS["datasets_dir"]) / "fiftyone" / name
|
636
637
|
fraction = 1.0 # fraction of full dataset to use
|
637
638
|
LOGGER.warning('WARNING ⚠️ Open Images V7 dataset requires at least **561 GB of free space. Starting download...')
|
638
639
|
for split in 'train', 'validation': # 1743042 train, 41620 val images
|
@@ -642,7 +643,6 @@ download: |
|
|
642
643
|
dataset = foz.load_zoo_dataset(name,
|
643
644
|
split=split,
|
644
645
|
label_types=['detections'],
|
645
|
-
dataset_dir=Path(SETTINGS['datasets_dir']) / 'fiftyone' / name,
|
646
646
|
max_samples=round((1743042 if train else 41620) * fraction))
|
647
647
|
|
648
648
|
# Define classes
|
ultralytics/data/augment.py
CHANGED
@@ -1368,20 +1368,13 @@ class RandomHSV:
|
|
1368
1368
|
img = labels["img"]
|
1369
1369
|
dtype = img.dtype # uint8
|
1370
1370
|
|
1371
|
-
|
1372
|
-
# r = np.random.uniform(-1, 1, 3) * [self.hgain, self.sgain, self.vgain] + 1 # random gains
|
1373
|
-
# x = np.arange(0, 256, dtype=r.dtype)
|
1374
|
-
# lut_hue = ((x * r[0]) % 180).astype(dtype)
|
1375
|
-
# lut_sat = np.clip(x * r[1], 0, 255).astype(dtype)
|
1376
|
-
# lut_val = np.clip(x * r[2], 0, 255).astype(dtype)
|
1377
|
-
|
1378
|
-
# Fixed implementation in https://github.com/ultralytics/ultralytics/pull/19311
|
1379
|
-
r = np.random.uniform(-1, 1, 3) * (self.hgain, self.sgain, self.vgain) * (180, 255, 255) # random gains
|
1371
|
+
r = np.random.uniform(-1, 1, 3) * [self.hgain, self.sgain, self.vgain] # random gains
|
1380
1372
|
x = np.arange(0, 256, dtype=r.dtype)
|
1381
|
-
lut_hue = ((x
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1373
|
+
# lut_hue = ((x * (r[0] + 1)) % 180).astype(dtype) # original hue implementation from ultralytics<=8.3.78
|
1374
|
+
lut_hue = ((x + r[0] * 180) % 180).astype(dtype)
|
1375
|
+
lut_sat = np.clip(x * (r[1] + 1), 0, 255).astype(dtype)
|
1376
|
+
lut_val = np.clip(x * (r[2] + 1), 0, 255).astype(dtype)
|
1377
|
+
lut_sat[0] = 0 # prevent pure white changing color, introduced in 8.3.79
|
1385
1378
|
|
1386
1379
|
hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
|
1387
1380
|
im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))
|
ultralytics/engine/exporter.py
CHANGED
@@ -62,6 +62,7 @@ import shutil
|
|
62
62
|
import subprocess
|
63
63
|
import time
|
64
64
|
import warnings
|
65
|
+
from contextlib import contextmanager
|
65
66
|
from copy import deepcopy
|
66
67
|
from datetime import datetime
|
67
68
|
from pathlib import Path
|
@@ -183,6 +184,26 @@ def try_export(inner_func):
|
|
183
184
|
return outer_func
|
184
185
|
|
185
186
|
|
187
|
+
@contextmanager
|
188
|
+
def arange_patch(args):
|
189
|
+
"""
|
190
|
+
Workaround for ONNX torch.arange incompatibility with FP16.
|
191
|
+
|
192
|
+
https://github.com/pytorch/pytorch/issues/148041.
|
193
|
+
"""
|
194
|
+
if args.dynamic and args.half and args.format == "onnx":
|
195
|
+
func = torch.arange
|
196
|
+
|
197
|
+
def arange(*args, dtype=None, **kwargs):
|
198
|
+
return func(*args, **kwargs).to(dtype) # cast to dtype instead of passing dtype
|
199
|
+
|
200
|
+
torch.arange = arange # patch
|
201
|
+
yield
|
202
|
+
torch.arange = func # unpatch
|
203
|
+
else:
|
204
|
+
yield
|
205
|
+
|
206
|
+
|
186
207
|
class Exporter:
|
187
208
|
"""
|
188
209
|
A class for exporting a model.
|
@@ -263,7 +284,6 @@ class Exporter:
|
|
263
284
|
if self.args.half and onnx and self.device.type == "cpu":
|
264
285
|
LOGGER.warning("WARNING ⚠️ half=True only compatible with GPU export, i.e. use device=0")
|
265
286
|
self.args.half = False
|
266
|
-
assert not self.args.dynamic, "half=True not compatible with dynamic=True, i.e. use only one."
|
267
287
|
self.imgsz = check_imgsz(self.args.imgsz, stride=model.stride, min_dim=2) # check image size
|
268
288
|
if self.args.int8 and engine:
|
269
289
|
self.args.dynamic = True # enforce dynamic to export TensorRT INT8
|
@@ -515,7 +535,6 @@ class Exporter:
|
|
515
535
|
output_names = ["output0", "output1"] if isinstance(self.model, SegmentationModel) else ["output0"]
|
516
536
|
dynamic = self.args.dynamic
|
517
537
|
if dynamic:
|
518
|
-
self.model.cpu() # dynamic=True only compatible with cpu
|
519
538
|
dynamic = {"images": {0: "batch", 2: "height", 3: "width"}} # shape(1,3,640,640)
|
520
539
|
if isinstance(self.model, SegmentationModel):
|
521
540
|
dynamic["output0"] = {0: "batch", 2: "anchors"} # shape(1, 116, 8400)
|
@@ -533,17 +552,18 @@ class Exporter:
|
|
533
552
|
pass
|
534
553
|
check_requirements("onnxslim>=0.1.46") # Older versions has bug with OBB
|
535
554
|
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
555
|
+
with arange_patch(self.args):
|
556
|
+
torch.onnx.export(
|
557
|
+
NMSModel(self.model, self.args) if self.args.nms else self.model,
|
558
|
+
self.im,
|
559
|
+
f,
|
560
|
+
verbose=False,
|
561
|
+
opset_version=opset_version,
|
562
|
+
do_constant_folding=True, # WARNING: DNN inference with torch>=1.12 may require do_constant_folding=False
|
563
|
+
input_names=["images"],
|
564
|
+
output_names=output_names,
|
565
|
+
dynamic_axes=dynamic or None,
|
566
|
+
)
|
547
567
|
|
548
568
|
# Checks
|
549
569
|
model_onnx = onnx.load(f) # load onnx model
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.83
|
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>
|
@@ -3,11 +3,11 @@ tests/conftest.py,sha256=DE4-5JqWhsQPyDhU5hHqRevz971yPBQORs3LitLc6Fo,3010
|
|
3
3
|
tests/test_cli.py,sha256=b9pPCu6x_MejPw-G7TI3wxSZnaMmutcXW7aCzMzz4ig,5076
|
4
4
|
tests/test_cuda.py,sha256=inPe0f_L0GutDxYLbe49BPEmjMevaS9XXCWX1Lfjo2g,5971
|
5
5
|
tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
|
6
|
-
tests/test_exports.py,sha256=
|
6
|
+
tests/test_exports.py,sha256=dpUT_FXFXzFoItfZwbxkPFXgEfaVqyfYwkIQW4teL38,9223
|
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
|
10
|
+
ultralytics/__init__.py,sha256=TERJtvQQNQkjo50oixhBmtXqYJnQaq1Ykfsiphbvm48,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=C5MkWVKf71g5ajkNp1H4DLsbKkkx9iaWCV02tjoL2ds,39795
|
@@ -37,7 +37,7 @@ ultralytics/cfg/datasets/dota8.yaml,sha256=W43bp_6yUUVjs6vpogNrGI9vU7rLbEsSx6vyf
|
|
37
37
|
ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=5vue4kvPrAdd6ZyB90rZgtGUUHvSi3s_ht7jBBqX7a4,989
|
38
38
|
ultralytics/cfg/datasets/lvis.yaml,sha256=b3ViDn8gjUCaQ6YfRwUDhGgwiXstgRDehhd3B6wYii4,29721
|
39
39
|
ultralytics/cfg/datasets/medical-pills.yaml,sha256=3ho9VW8p5Hm1TuicguiL-akfC9dCZO5nwthO4sUR3k0,848
|
40
|
-
ultralytics/cfg/datasets/open-images-v7.yaml,sha256=
|
40
|
+
ultralytics/cfg/datasets/open-images-v7.yaml,sha256=d-JX1SVasyKeXfY_l7x3cjJxaat3xrIJsUf7SvdmFow,12502
|
41
41
|
ultralytics/cfg/datasets/package-seg.yaml,sha256=uechtCYfX8OrJrO5zV1-uGwbr69lUSuon1oXguEkLGg,864
|
42
42
|
ultralytics/cfg/datasets/signature.yaml,sha256=eABYny9n4w3RleR3RQmb505DiBll8R5cvcjWj8wkuf0,789
|
43
43
|
ultralytics/cfg/datasets/tiger-pose.yaml,sha256=gCQc1AX04Xfhnms4czm7R_XnT2XFL2u-t3M8Yya20ds,925
|
@@ -98,7 +98,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=D9doE5GQUe6HrAFzr7OfQFIGPFk0M_vJ0B_
|
|
98
98
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
|
99
99
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
100
100
|
ultralytics/data/annotator.py,sha256=whx_3sdKGRsECYLKyJMNGQ-d9g-f8020O6kvl5M1c_I,3067
|
101
|
-
ultralytics/data/augment.py,sha256=
|
101
|
+
ultralytics/data/augment.py,sha256=scrCrF_NUdB8gfxEqdVDTiSwkKR8FYN6bWZL_BXMKGU,120957
|
102
102
|
ultralytics/data/base.py,sha256=NTNdn-Emgx3Z2vats8i8oEe-9yosPmHd53v1A0xz0EU,15196
|
103
103
|
ultralytics/data/build.py,sha256=gOU5SNABBNxwo5012N--WhjEnLK2ewycXIryMpbHg6U,7685
|
104
104
|
ultralytics/data/converter.py,sha256=M7LvBpdYiDA_YEuef3oCXhGPFTjtyJjSbSwqn-F6d7I,24473
|
@@ -107,7 +107,7 @@ ultralytics/data/loaders.py,sha256=JOwXbz-dxgG2bx0_cQHp-olz5FleoCX8EzrUvZ77vvg,2
|
|
107
107
|
ultralytics/data/split_dota.py,sha256=YI-i2MqdiBt06W67TJnBXQHJrqTnkJDJ3zzoL0UZVro,10733
|
108
108
|
ultralytics/data/utils.py,sha256=GgsexyPYoyAz-felAuMEfI-C-aeU2jy9VlzbmVdlAQw,33839
|
109
109
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
110
|
-
ultralytics/engine/exporter.py,sha256=
|
110
|
+
ultralytics/engine/exporter.py,sha256=60uiudP9yxjpcBjP16ImXxQE_VN8FU5f9GY0moiAYpA,77454
|
111
111
|
ultralytics/engine/model.py,sha256=s8HsSBvdRgSbnKGULr7YW-ZWJKJsQpOoHd9Aih_nMt0,53427
|
112
112
|
ultralytics/engine/predictor.py,sha256=jiYDAjupOlRUpPvw9tu7or9PjXtLm-YCRiawANtWxj0,17881
|
113
113
|
ultralytics/engine/results.py,sha256=hWlO2e58BPUJ5R4Jl4iirBPaZ8BypcNu_cNQ2NHpUqM,78111
|
@@ -238,9 +238,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=waZ_bRu0-qBKujTLuqonC2gx2DkgBuVnfq
|
|
238
238
|
ultralytics/utils/callbacks/raytune.py,sha256=A_NVWjyPNf2m6iB-mbW7SMpyqM9QBvpbPa-MCMFMtdk,727
|
239
239
|
ultralytics/utils/callbacks/tensorboard.py,sha256=JHOEVlNQ5dYJPd4Z-EvqbXowuK5uA0p8wPgyyaIUQs0,4194
|
240
240
|
ultralytics/utils/callbacks/wb.py,sha256=ayhT2y62AcSOacnawshATU0rWrlSFQ77mrGgBdRl3W4,7086
|
241
|
-
ultralytics-8.3.
|
242
|
-
ultralytics-8.3.
|
243
|
-
ultralytics-8.3.
|
244
|
-
ultralytics-8.3.
|
245
|
-
ultralytics-8.3.
|
246
|
-
ultralytics-8.3.
|
241
|
+
ultralytics-8.3.83.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
242
|
+
ultralytics-8.3.83.dist-info/METADATA,sha256=u0kq8V3p-kZiX-yGFcjAHkLC_HjWf7oxuW42ce3KGsc,35168
|
243
|
+
ultralytics-8.3.83.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
244
|
+
ultralytics-8.3.83.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
245
|
+
ultralytics-8.3.83.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
246
|
+
ultralytics-8.3.83.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|