ultralytics 8.3.165__py3-none-any.whl → 8.3.167__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.
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/datasets/Argoverse.yaml +1 -1
- ultralytics/cfg/datasets/DOTAv1.5.yaml +1 -1
- ultralytics/cfg/datasets/DOTAv1.yaml +1 -1
- ultralytics/cfg/datasets/GlobalWheat2020.yaml +1 -1
- ultralytics/cfg/datasets/HomeObjects-3K.yaml +1 -1
- ultralytics/cfg/datasets/ImageNet.yaml +1 -1
- ultralytics/cfg/datasets/Objects365.yaml +1 -1
- ultralytics/cfg/datasets/SKU-110K.yaml +4 -4
- ultralytics/cfg/datasets/VOC.yaml +3 -3
- ultralytics/cfg/datasets/VisDrone.yaml +37 -30
- ultralytics/cfg/datasets/african-wildlife.yaml +1 -1
- ultralytics/cfg/datasets/brain-tumor.yaml +1 -1
- ultralytics/cfg/datasets/carparts-seg.yaml +1 -1
- ultralytics/cfg/datasets/coco-pose.yaml +1 -1
- ultralytics/cfg/datasets/coco.yaml +1 -1
- ultralytics/cfg/datasets/coco128-seg.yaml +1 -1
- ultralytics/cfg/datasets/coco128.yaml +1 -1
- ultralytics/cfg/datasets/coco8-grayscale.yaml +1 -1
- ultralytics/cfg/datasets/coco8-multispectral.yaml +1 -1
- ultralytics/cfg/datasets/coco8-pose.yaml +1 -1
- ultralytics/cfg/datasets/coco8-seg.yaml +1 -1
- ultralytics/cfg/datasets/coco8.yaml +1 -1
- ultralytics/cfg/datasets/crack-seg.yaml +1 -1
- ultralytics/cfg/datasets/dog-pose.yaml +1 -1
- ultralytics/cfg/datasets/dota8-multispectral.yaml +1 -1
- ultralytics/cfg/datasets/dota8.yaml +1 -1
- ultralytics/cfg/datasets/hand-keypoints.yaml +1 -1
- ultralytics/cfg/datasets/lvis.yaml +1 -1
- ultralytics/cfg/datasets/medical-pills.yaml +1 -1
- ultralytics/cfg/datasets/open-images-v7.yaml +1 -1
- ultralytics/cfg/datasets/package-seg.yaml +1 -1
- ultralytics/cfg/datasets/signature.yaml +1 -1
- ultralytics/cfg/datasets/tiger-pose.yaml +1 -1
- ultralytics/cfg/datasets/xView.yaml +1 -1
- ultralytics/engine/exporter.py +37 -18
- ultralytics/models/yolo/model.py +1 -5
- ultralytics/nn/autobackend.py +7 -8
- ultralytics/nn/modules/head.py +4 -6
- ultralytics/utils/metrics.py +8 -9
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/METADATA +1 -1
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/RECORD +46 -46
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.165.dist-info → ultralytics-8.3.167.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── Argoverse
|
9
|
+
# └── Argoverse ← downloads here (31.5 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: Argoverse # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── dota1.5
|
9
|
+
# └── dota1.5 ← downloads here (2GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: DOTAv1.5 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── dota1
|
9
|
+
# └── dota1 ← downloads here (2GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: DOTAv1 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── GlobalWheat2020
|
9
|
+
# └── GlobalWheat2020 ← downloads here (7.0 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: GlobalWheat2020 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── homeobjects-3K
|
9
|
+
# └── homeobjects-3K ← downloads here (390 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: homeobjects-3K # dataset root dir
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# parent
|
8
8
|
# ├── ultralytics
|
9
9
|
# └── datasets
|
10
|
-
# └── imagenet
|
10
|
+
# └── imagenet ← downloads here (144 GB)
|
11
11
|
|
12
12
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
13
13
|
path: imagenet # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── Objects365
|
9
|
+
# └── Objects365 ← downloads here (712 GB = 367G data + 345G zips)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: Objects365 # dataset root dir
|
@@ -6,13 +6,13 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── SKU-110K
|
9
|
+
# └── SKU-110K ← downloads here (13.6 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: SKU-110K # dataset root dir
|
13
|
-
train: train.txt # train images (relative to 'path')
|
14
|
-
val: val.txt # val images (relative to 'path')
|
15
|
-
test: test.txt # test images (optional)
|
13
|
+
train: train.txt # train images (relative to 'path') 8219 images
|
14
|
+
val: val.txt # val images (relative to 'path') 588 images
|
15
|
+
test: test.txt # test images (optional) 2936 images
|
16
16
|
|
17
17
|
# Classes
|
18
18
|
names:
|
@@ -6,16 +6,16 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── VOC
|
9
|
+
# └── VOC ← downloads here (2.8 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: VOC
|
13
|
-
train: # train images (relative to 'path')
|
13
|
+
train: # train images (relative to 'path') 16551 images
|
14
14
|
- images/train2012
|
15
15
|
- images/train2007
|
16
16
|
- images/val2012
|
17
17
|
- images/val2007
|
18
|
-
val: # val images (relative to 'path')
|
18
|
+
val: # val images (relative to 'path') 4952 images
|
19
19
|
- images/test2007
|
20
20
|
test: # test images (optional)
|
21
21
|
- images/test2007
|
@@ -6,13 +6,13 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── VisDrone
|
9
|
+
# └── VisDrone ← downloads here (2.3 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: VisDrone # dataset root dir
|
13
|
-
train:
|
14
|
-
val:
|
15
|
-
test:
|
13
|
+
train: images/train # train images (relative to 'path') 6471 images
|
14
|
+
val: images/val # val images (relative to 'path') 548 images
|
15
|
+
test: images/test # test-dev images (optional) 1610 images
|
16
16
|
|
17
17
|
# Classes
|
18
18
|
names:
|
@@ -31,50 +31,57 @@ names:
|
|
31
31
|
download: |
|
32
32
|
import os
|
33
33
|
from pathlib import Path
|
34
|
+
import shutil
|
34
35
|
|
35
36
|
from ultralytics.utils.downloads import download
|
36
37
|
|
37
38
|
|
38
|
-
def visdrone2yolo(dir):
|
39
|
-
"""Convert VisDrone annotations to YOLO format
|
39
|
+
def visdrone2yolo(dir, split, source_name=None):
|
40
|
+
"""Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
|
40
41
|
from PIL import Image
|
41
42
|
from tqdm import tqdm
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
(
|
50
|
-
|
51
|
-
|
52
|
-
|
44
|
+
source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
|
45
|
+
images_dir = dir / "images" / split
|
46
|
+
labels_dir = dir / "labels" / split
|
47
|
+
labels_dir.mkdir(parents=True, exist_ok=True)
|
48
|
+
|
49
|
+
# Move images to new structure
|
50
|
+
if (source_images_dir := source_dir / "images").exists():
|
51
|
+
images_dir.mkdir(parents=True, exist_ok=True)
|
52
|
+
for img in source_images_dir.glob("*.jpg"):
|
53
|
+
img.rename(images_dir / img.name)
|
54
|
+
|
55
|
+
for f in tqdm((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
|
56
|
+
img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
|
57
|
+
dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
|
53
58
|
lines = []
|
54
|
-
|
59
|
+
|
60
|
+
with open(f, encoding="utf-8") as file:
|
55
61
|
for row in [x.split(",") for x in file.read().strip().splitlines()]:
|
56
|
-
if row[4]
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
62
|
+
if row[4] != "0": # Skip ignored regions
|
63
|
+
x, y, w, h = map(int, row[:4])
|
64
|
+
cls = int(row[5]) - 1
|
65
|
+
# Convert to YOLO format
|
66
|
+
x_center, y_center = (x + w / 2) * dw, (y + h / 2) * dh
|
67
|
+
w_norm, h_norm = w * dw, h * dh
|
68
|
+
lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n")
|
61
69
|
|
62
|
-
|
63
|
-
with open(label_file, "w", encoding="utf-8") as fl:
|
64
|
-
fl.writelines(lines)
|
65
|
-
|
70
|
+
(labels_dir / f.name).write_text("".join(lines), encoding="utf-8")
|
66
71
|
|
67
72
|
|
68
|
-
# Download
|
73
|
+
# Download (ignores test-challenge split)
|
69
74
|
dir = Path(yaml["path"]) # dataset root dir
|
70
75
|
urls = [
|
71
76
|
"https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip",
|
72
77
|
"https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip",
|
73
78
|
"https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip",
|
74
|
-
"https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip",
|
79
|
+
# "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip",
|
75
80
|
]
|
76
81
|
download(urls, dir=dir, curl=True, threads=4)
|
77
82
|
|
78
83
|
# Convert
|
79
|
-
|
80
|
-
|
84
|
+
splits = {"VisDrone2019-DET-train": "train", "VisDrone2019-DET-val": "val", "VisDrone2019-DET-test-dev": "test"}
|
85
|
+
for folder, split in splits.items():
|
86
|
+
visdrone2yolo(dir, split, folder) # convert VisDrone annotations to YOLO labels
|
87
|
+
shutil.rmtree(dir / folder) # cleanup original directory
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── african-wildlife
|
9
|
+
# └── african-wildlife ← downloads here (100 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: african-wildlife # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── brain-tumor
|
9
|
+
# └── brain-tumor ← downloads here (4.21 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: brain-tumor # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── carparts-seg
|
9
|
+
# └── carparts-seg ← downloads here (133 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: carparts-seg # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco-pose
|
9
|
+
# └── coco-pose ← downloads here (20.1 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco-pose # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco
|
9
|
+
# └── coco ← downloads here (20.1 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco128-seg
|
9
|
+
# └── coco128-seg ← downloads here (7 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco128-seg # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco128
|
9
|
+
# └── coco128 ← downloads here (7 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco128 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco8-grayscale
|
9
|
+
# └── coco8-grayscale ← downloads here (1 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco8-grayscale # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco8-multispectral
|
9
|
+
# └── coco8-multispectral ← downloads here (20.2 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco8-multispectral # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco8-pose
|
9
|
+
# └── coco8-pose ← downloads here (1 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco8-pose # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco8-seg
|
9
|
+
# └── coco8-seg ← downloads here (1 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco8-seg # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── coco8
|
9
|
+
# └── coco8 ← downloads here (1 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: coco8 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── crack-seg
|
9
|
+
# └── crack-seg ← downloads here (91.6 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: crack-seg # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── dog-pose
|
9
|
+
# └── dog-pose ← downloads here (337 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: dog-pose # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── dota8-multispectral
|
9
|
+
# └── dota8-multispectral ← downloads here (37.3MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: dota8-multispectral # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── dota8
|
9
|
+
# └── dota8 ← downloads here (1MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: dota8 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── hand-keypoints
|
9
|
+
# └── hand-keypoints ← downloads here (369 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: hand-keypoints # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── lvis
|
9
|
+
# └── lvis ← downloads here (20.1 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: lvis # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── medical-pills
|
9
|
+
# └── medical-pills ← downloads here (8.19 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: medical-pills # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── open-images-v7
|
9
|
+
# └── open-images-v7 ← downloads here (561 GB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: open-images-v7 # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── package-seg
|
9
|
+
# └── package-seg ← downloads here (103 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: package-seg # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── signature
|
9
|
+
# └── signature ← downloads here (11.3 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: signature # dataset root dir
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# parent
|
7
7
|
# ├── ultralytics
|
8
8
|
# └── datasets
|
9
|
-
# └── tiger-pose
|
9
|
+
# └── tiger-pose ← downloads here (49.8 MB)
|
10
10
|
|
11
11
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
12
12
|
path: tiger-pose # dataset root dir
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# parent
|
8
8
|
# ├── ultralytics
|
9
9
|
# └── datasets
|
10
|
-
# └── xView
|
10
|
+
# └── xView ← downloads here (20.7 GB)
|
11
11
|
|
12
12
|
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
13
13
|
path: xView # dataset root dir
|
ultralytics/engine/exporter.py
CHANGED
@@ -142,7 +142,7 @@ def export_formats():
|
|
142
142
|
["PaddlePaddle", "paddle", "_paddle_model", True, True, ["batch"]],
|
143
143
|
["MNN", "mnn", ".mnn", True, True, ["batch", "half", "int8"]],
|
144
144
|
["NCNN", "ncnn", "_ncnn_model", True, True, ["batch", "half"]],
|
145
|
-
["IMX", "imx", "_imx_model", True, True, ["int8", "fraction"]],
|
145
|
+
["IMX", "imx", "_imx_model", True, True, ["int8", "fraction", "nms"]],
|
146
146
|
["RKNN", "rknn", "_rknn_model", False, False, ["batch", "name"]],
|
147
147
|
]
|
148
148
|
return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU", "Arguments"], zip(*x)))
|
@@ -313,8 +313,11 @@ class Exporter:
|
|
313
313
|
if not self.args.int8:
|
314
314
|
LOGGER.warning("IMX export requires int8=True, setting int8=True.")
|
315
315
|
self.args.int8 = True
|
316
|
-
if
|
317
|
-
|
316
|
+
if not self.args.nms:
|
317
|
+
LOGGER.warning("IMX export requires nms=True, setting nms=True.")
|
318
|
+
self.args.nms = True
|
319
|
+
if model.task not in {"detect", "pose"}:
|
320
|
+
raise ValueError("IMX export only supported for detection and pose estimation models.")
|
318
321
|
if not hasattr(model, "names"):
|
319
322
|
model.names = default_class_names()
|
320
323
|
model.names = check_class_names(model.names)
|
@@ -428,7 +431,7 @@ class Exporter:
|
|
428
431
|
|
429
432
|
y = None
|
430
433
|
for _ in range(2): # dry runs
|
431
|
-
y = NMSModel(model, self.args)(im) if self.args.nms and not coreml else model(im)
|
434
|
+
y = NMSModel(model, self.args)(im) if self.args.nms and not (coreml or imx) else model(im)
|
432
435
|
if self.args.half and onnx and self.device.type != "cpu":
|
433
436
|
im, model = im.half(), model.half() # to FP16
|
434
437
|
|
@@ -1166,15 +1169,14 @@ class Exporter:
|
|
1166
1169
|
)
|
1167
1170
|
if getattr(self.model, "end2end", False):
|
1168
1171
|
raise ValueError("IMX export is not supported for end2end models.")
|
1169
|
-
check_requirements(
|
1170
|
-
("model-compression-toolkit>=2.3.0,<2.4.1", "sony-custom-layers>=0.3.0", "edge-mdt-tpc>=1.1.0")
|
1171
|
-
)
|
1172
|
+
check_requirements(("model-compression-toolkit>=2.4.1", "sony-custom-layers>=0.3.0", "edge-mdt-tpc>=1.1.0"))
|
1172
1173
|
check_requirements("imx500-converter[pt]>=3.16.1") # Separate requirements for imx500-converter
|
1174
|
+
check_requirements("mct-quantizers>=1.6.0") # Separate for compatibility with model-compression-toolkit
|
1173
1175
|
|
1174
1176
|
import model_compression_toolkit as mct
|
1175
1177
|
import onnx
|
1176
1178
|
from edgemdt_tpc import get_target_platform_capabilities
|
1177
|
-
from sony_custom_layers.pytorch import
|
1179
|
+
from sony_custom_layers.pytorch import multiclass_nms_with_indices
|
1178
1180
|
|
1179
1181
|
LOGGER.info(f"\n{prefix} starting export with model_compression_toolkit {mct.__version__}...")
|
1180
1182
|
|
@@ -1198,13 +1200,23 @@ class Exporter:
|
|
1198
1200
|
|
1199
1201
|
bit_cfg = mct.core.BitWidthConfig()
|
1200
1202
|
if "C2PSA" in self.model.__str__(): # YOLO11
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1203
|
+
if self.model.task == "detect":
|
1204
|
+
layer_names = ["sub", "mul_2", "add_14", "cat_21"]
|
1205
|
+
weights_memory = 2585350.2439
|
1206
|
+
n_layers = 238 # 238 layers for fused YOLO11n
|
1207
|
+
elif self.model.task == "pose":
|
1208
|
+
layer_names = ["sub", "mul_2", "add_14", "cat_22", "cat_23", "mul_4", "add_15"]
|
1209
|
+
weights_memory = 2437771.67
|
1210
|
+
n_layers = 257 # 257 layers for fused YOLO11n-pose
|
1204
1211
|
else: # YOLOv8
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1212
|
+
if self.model.task == "detect":
|
1213
|
+
layer_names = ["sub", "mul", "add_6", "cat_17"]
|
1214
|
+
weights_memory = 2550540.8
|
1215
|
+
n_layers = 168 # 168 layers for fused YOLOv8n
|
1216
|
+
elif self.model.task == "pose":
|
1217
|
+
layer_names = ["add_7", "mul_2", "cat_19", "mul", "sub", "add_6", "cat_18"]
|
1218
|
+
weights_memory = 2482451.85
|
1219
|
+
n_layers = 187 # 187 layers for fused YOLO11n-pose
|
1208
1220
|
|
1209
1221
|
# Check if the model has the expected number of layers
|
1210
1222
|
if len(list(self.model.modules())) != n_layers:
|
@@ -1251,6 +1263,7 @@ class Exporter:
|
|
1251
1263
|
score_threshold: float = 0.001,
|
1252
1264
|
iou_threshold: float = 0.7,
|
1253
1265
|
max_detections: int = 300,
|
1266
|
+
task: str = "detect",
|
1254
1267
|
):
|
1255
1268
|
"""
|
1256
1269
|
Initialize NMSWrapper with PyTorch Module and NMS parameters.
|
@@ -1260,34 +1273,40 @@ class Exporter:
|
|
1260
1273
|
score_threshold (float): Score threshold for non-maximum suppression.
|
1261
1274
|
iou_threshold (float): Intersection over union threshold for non-maximum suppression.
|
1262
1275
|
max_detections (int): The number of detections to return.
|
1276
|
+
task (str): Task type, either 'detect' or 'pose'.
|
1263
1277
|
"""
|
1264
1278
|
super().__init__()
|
1265
1279
|
self.model = model
|
1266
1280
|
self.score_threshold = score_threshold
|
1267
1281
|
self.iou_threshold = iou_threshold
|
1268
1282
|
self.max_detections = max_detections
|
1283
|
+
self.task = task
|
1269
1284
|
|
1270
1285
|
def forward(self, images):
|
1271
1286
|
"""Forward pass with model inference and NMS post-processing."""
|
1272
1287
|
# model inference
|
1273
1288
|
outputs = self.model(images)
|
1274
1289
|
|
1275
|
-
boxes = outputs[0]
|
1276
|
-
|
1277
|
-
nms = multiclass_nms(
|
1290
|
+
boxes, scores = outputs[0], outputs[1]
|
1291
|
+
nms_outputs = multiclass_nms_with_indices(
|
1278
1292
|
boxes=boxes,
|
1279
1293
|
scores=scores,
|
1280
1294
|
score_threshold=self.score_threshold,
|
1281
1295
|
iou_threshold=self.iou_threshold,
|
1282
1296
|
max_detections=self.max_detections,
|
1283
1297
|
)
|
1284
|
-
|
1298
|
+
if self.task == "pose":
|
1299
|
+
kpts = outputs[2] # (bs, max_detections, kpts 17*3)
|
1300
|
+
out_kpts = torch.gather(kpts, 1, nms_outputs.indices.unsqueeze(-1).expand(-1, -1, kpts.size(-1)))
|
1301
|
+
return nms_outputs.boxes, nms_outputs.scores, nms_outputs.labels, out_kpts
|
1302
|
+
return nms_outputs
|
1285
1303
|
|
1286
1304
|
quant_model = NMSWrapper(
|
1287
1305
|
model=quant_model,
|
1288
1306
|
score_threshold=self.args.conf or 0.001,
|
1289
1307
|
iou_threshold=self.args.iou,
|
1290
1308
|
max_detections=self.args.max_det,
|
1309
|
+
task=self.model.task,
|
1291
1310
|
).to(self.device)
|
1292
1311
|
|
1293
1312
|
f = Path(str(self.file).replace(self.file.suffix, "_imx_model"))
|
ultralytics/models/yolo/model.py
CHANGED
@@ -243,10 +243,6 @@ class YOLOE(Model):
|
|
243
243
|
"""
|
244
244
|
super().__init__(model=model, task=task, verbose=verbose)
|
245
245
|
|
246
|
-
# Assign default COCO class names when there are no custom names
|
247
|
-
if not hasattr(self.model, "names"):
|
248
|
-
self.model.names = YAML.load(ROOT / "cfg/datasets/coco8.yaml").get("names")
|
249
|
-
|
250
246
|
@property
|
251
247
|
def task_map(self) -> Dict[str, Dict[str, Any]]:
|
252
248
|
"""Map head to model, validator, and predictor classes."""
|
@@ -287,7 +283,7 @@ class YOLOE(Model):
|
|
287
283
|
Examples:
|
288
284
|
>>> model = YOLOE("yoloe-11s-seg.pt")
|
289
285
|
>>> img = torch.rand(1, 3, 640, 640)
|
290
|
-
>>> visual_features =
|
286
|
+
>>> visual_features = torch.rand(1, 1, 80, 80)
|
291
287
|
>>> pe = model.get_visual_pe(img, visual_features)
|
292
288
|
"""
|
293
289
|
assert isinstance(self.model, YOLOEModel)
|
ultralytics/nn/autobackend.py
CHANGED
@@ -259,11 +259,7 @@ class AutoBackend(nn.Module):
|
|
259
259
|
session = onnxruntime.InferenceSession(w, providers=providers)
|
260
260
|
else:
|
261
261
|
check_requirements(
|
262
|
-
[
|
263
|
-
"model-compression-toolkit>=2.3.0,<2.4.1",
|
264
|
-
"sony-custom-layers[torch]>=0.3.0",
|
265
|
-
"onnxruntime-extensions",
|
266
|
-
]
|
262
|
+
["model-compression-toolkit>=2.4.1", "sony-custom-layers[torch]>=0.3.0", "onnxruntime-extensions"]
|
267
263
|
)
|
268
264
|
w = next(Path(w).glob("*.onnx"))
|
269
265
|
LOGGER.info(f"Loading {w} for ONNX IMX inference...")
|
@@ -273,7 +269,6 @@ class AutoBackend(nn.Module):
|
|
273
269
|
session_options = mctq.get_ort_session_options()
|
274
270
|
session_options.enable_mem_reuse = False # fix the shape mismatch from onnxruntime
|
275
271
|
session = onnxruntime.InferenceSession(w, session_options, providers=["CPUExecutionProvider"])
|
276
|
-
task = "detect"
|
277
272
|
|
278
273
|
output_names = [x.name for x in session.get_outputs()]
|
279
274
|
metadata = session.get_modelmeta().custom_metadata_map
|
@@ -674,8 +669,12 @@ class AutoBackend(nn.Module):
|
|
674
669
|
self.session.run_with_iobinding(self.io)
|
675
670
|
y = self.bindings
|
676
671
|
if self.imx:
|
677
|
-
|
678
|
-
|
672
|
+
if self.task == "detect":
|
673
|
+
# boxes, conf, cls
|
674
|
+
y = np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None]], axis=-1)
|
675
|
+
elif self.task == "pose":
|
676
|
+
# boxes, conf, kpts
|
677
|
+
y = np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None], y[3]], axis=-1)
|
679
678
|
|
680
679
|
# OpenVINO
|
681
680
|
elif self.xml:
|
ultralytics/nn/modules/head.py
CHANGED
@@ -178,14 +178,10 @@ class Detect(nn.Module):
|
|
178
178
|
grid_size = torch.tensor([grid_w, grid_h, grid_w, grid_h], device=box.device).reshape(1, 4, 1)
|
179
179
|
norm = self.strides / (self.stride[0] * grid_size)
|
180
180
|
dbox = self.decode_bboxes(self.dfl(box) * norm, self.anchors.unsqueeze(0) * norm[:, :2])
|
181
|
-
elif self.export and self.format == "imx":
|
182
|
-
dbox = self.decode_bboxes(
|
183
|
-
self.dfl(box) * self.strides, self.anchors.unsqueeze(0) * self.strides, xywh=False
|
184
|
-
)
|
185
|
-
return dbox.transpose(1, 2), cls.sigmoid().permute(0, 2, 1)
|
186
181
|
else:
|
187
182
|
dbox = self.decode_bboxes(self.dfl(box), self.anchors.unsqueeze(0)) * self.strides
|
188
|
-
|
183
|
+
if self.export and self.format == "imx":
|
184
|
+
return dbox.transpose(1, 2), cls.sigmoid().permute(0, 2, 1)
|
189
185
|
return torch.cat((dbox, cls.sigmoid()), 1)
|
190
186
|
|
191
187
|
def bias_init(self):
|
@@ -384,6 +380,8 @@ class Pose(Detect):
|
|
384
380
|
if self.training:
|
385
381
|
return x, kpt
|
386
382
|
pred_kpt = self.kpts_decode(bs, kpt)
|
383
|
+
if self.export and self.format == "imx":
|
384
|
+
return (*x, pred_kpt.permute(0, 2, 1))
|
387
385
|
return torch.cat([x, pred_kpt], 1) if self.export else (torch.cat([x[0], pred_kpt], 1), (x[1], kpt))
|
388
386
|
|
389
387
|
def kpts_decode(self, bs: int, kpts: torch.Tensor) -> torch.Tensor:
|
ultralytics/utils/metrics.py
CHANGED
@@ -330,7 +330,7 @@ class ConfusionMatrix(DataExportMixin):
|
|
330
330
|
"""
|
331
331
|
self.task = task
|
332
332
|
self.nc = len(names) # number of classes
|
333
|
-
self.matrix = np.zeros((self.nc
|
333
|
+
self.matrix = np.zeros((self.nc, self.nc)) if self.task == "classify" else np.zeros((self.nc + 1, self.nc + 1))
|
334
334
|
self.names = names # name of classes
|
335
335
|
|
336
336
|
def process_cls_preds(self, preds, targets):
|
@@ -360,8 +360,9 @@ class ConfusionMatrix(DataExportMixin):
|
|
360
360
|
conf (float, optional): Confidence threshold for detections.
|
361
361
|
iou_thres (float, optional): IoU threshold for matching detections to ground truth.
|
362
362
|
"""
|
363
|
-
conf = 0.25 if conf in {None, 0.001} else conf # apply 0.25 if default val conf is passed
|
364
363
|
gt_cls, gt_bboxes = batch["cls"], batch["bboxes"]
|
364
|
+
is_obb = gt_bboxes.shape[1] == 5 # check if boxes contains angle for OBB
|
365
|
+
conf = 0.25 if conf in {None, 0.01 if is_obb else 0.001} else conf # apply 0.25 if default val conf is passed
|
365
366
|
no_pred = len(detections["cls"]) == 0
|
366
367
|
if gt_cls.shape[0] == 0: # Check if labels is empty
|
367
368
|
if not no_pred:
|
@@ -380,7 +381,6 @@ class ConfusionMatrix(DataExportMixin):
|
|
380
381
|
gt_classes = gt_cls.int().tolist()
|
381
382
|
detection_classes = detections["cls"].int().tolist()
|
382
383
|
bboxes = detections["bboxes"]
|
383
|
-
is_obb = bboxes.shape[1] == 5 # check if detections contains angle for OBB
|
384
384
|
iou = batch_probiou(gt_bboxes, bboxes) if is_obb else box_iou(gt_bboxes, bboxes)
|
385
385
|
|
386
386
|
x = torch.where(iou > iou_thres)
|
@@ -422,7 +422,7 @@ class ConfusionMatrix(DataExportMixin):
|
|
422
422
|
tp = self.matrix.diagonal() # true positives
|
423
423
|
fp = self.matrix.sum(1) - tp # false positives
|
424
424
|
# fn = self.matrix.sum(0) - tp # false negatives (missed detections)
|
425
|
-
return (tp
|
425
|
+
return (tp, fp) if self.task == "classify" else (tp[:-1], fp[:-1]) # remove background class if task=detect
|
426
426
|
|
427
427
|
@TryExcept(msg="ConfusionMatrix plot failure")
|
428
428
|
@plt_settings()
|
@@ -441,16 +441,15 @@ class ConfusionMatrix(DataExportMixin):
|
|
441
441
|
array[array < 0.005] = np.nan # don't annotate (would appear as 0.00)
|
442
442
|
|
443
443
|
fig, ax = plt.subplots(1, 1, figsize=(12, 9))
|
444
|
+
names, n = self.names, self.nc
|
444
445
|
if self.nc >= 100: # downsample for large class count
|
445
446
|
k = max(2, self.nc // 60) # step size for downsampling, always > 1
|
446
447
|
keep_idx = slice(None, None, k) # create slice instead of array
|
447
|
-
|
448
|
+
names = names[keep_idx] # slice class names
|
448
449
|
array = array[keep_idx, :][:, keep_idx] # slice matrix rows and cols
|
449
450
|
n = (self.nc + k - 1) // k # number of retained classes
|
450
|
-
|
451
|
-
else
|
452
|
-
nc = nn = self.nc if self.task == "classify" else self.nc + 1
|
453
|
-
ticklabels = (self.names + ["background"]) if (0 < nn < 99) and (nn == nc) else "auto"
|
451
|
+
nc = nn = n if self.task == "classify" else n + 1 # adjust for background if needed
|
452
|
+
ticklabels = (names + ["background"]) if (0 < nn < 99) and (nn == nc) else "auto"
|
454
453
|
xy_ticks = np.arange(len(ticklabels))
|
455
454
|
tick_fontsize = max(6, 15 - 0.1 * nc) # Minimum size is 6
|
456
455
|
label_fontsize = max(6, 12 - 0.1 * nc)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.167
|
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,45 +7,45 @@ tests/test_exports.py,sha256=HmMKOTCia9ZDC0VYc_EPmvBTM5LM5eeI1NF_pKjLpd8,9677
|
|
7
7
|
tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
|
8
8
|
tests/test_python.py,sha256=JJu-69IfuUf1dLK7Ko9elyPONiQ1yu7yhapMVIAt_KI,27907
|
9
9
|
tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=25BnED8OrDgyWwAHSNTDasTO5KJyBbtsiHMkJU2cmZk,730
|
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=VIpPHImhjb0XLJquGZrG_LBGZchtOtBSXR7HYTYV2GU,39602
|
14
14
|
ultralytics/cfg/default.yaml,sha256=oFG6llJO-Py5H-cR9qs-7FieJamroDLwpbrkhmfROOM,8307
|
15
|
-
ultralytics/cfg/datasets/Argoverse.yaml,sha256=
|
16
|
-
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=
|
17
|
-
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=
|
18
|
-
ultralytics/cfg/datasets/GlobalWheat2020.yaml,sha256=
|
19
|
-
ultralytics/cfg/datasets/HomeObjects-3K.yaml,sha256=
|
20
|
-
ultralytics/cfg/datasets/ImageNet.yaml,sha256=
|
21
|
-
ultralytics/cfg/datasets/Objects365.yaml,sha256=
|
22
|
-
ultralytics/cfg/datasets/SKU-110K.yaml,sha256=
|
23
|
-
ultralytics/cfg/datasets/VOC.yaml,sha256=
|
24
|
-
ultralytics/cfg/datasets/VisDrone.yaml,sha256=
|
25
|
-
ultralytics/cfg/datasets/african-wildlife.yaml,sha256=
|
26
|
-
ultralytics/cfg/datasets/brain-tumor.yaml,sha256=
|
27
|
-
ultralytics/cfg/datasets/carparts-seg.yaml,sha256=
|
28
|
-
ultralytics/cfg/datasets/coco-pose.yaml,sha256=
|
29
|
-
ultralytics/cfg/datasets/coco.yaml,sha256=
|
30
|
-
ultralytics/cfg/datasets/coco128-seg.yaml,sha256=
|
31
|
-
ultralytics/cfg/datasets/coco128.yaml,sha256=
|
32
|
-
ultralytics/cfg/datasets/coco8-grayscale.yaml,sha256=
|
33
|
-
ultralytics/cfg/datasets/coco8-multispectral.yaml,sha256=
|
34
|
-
ultralytics/cfg/datasets/coco8-pose.yaml,sha256=
|
35
|
-
ultralytics/cfg/datasets/coco8-seg.yaml,sha256=
|
36
|
-
ultralytics/cfg/datasets/coco8.yaml,sha256=
|
37
|
-
ultralytics/cfg/datasets/crack-seg.yaml,sha256=
|
38
|
-
ultralytics/cfg/datasets/dog-pose.yaml,sha256=
|
39
|
-
ultralytics/cfg/datasets/dota8-multispectral.yaml,sha256=
|
40
|
-
ultralytics/cfg/datasets/dota8.yaml,sha256=
|
41
|
-
ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=
|
42
|
-
ultralytics/cfg/datasets/lvis.yaml,sha256=
|
43
|
-
ultralytics/cfg/datasets/medical-pills.yaml,sha256=
|
44
|
-
ultralytics/cfg/datasets/open-images-v7.yaml,sha256=
|
45
|
-
ultralytics/cfg/datasets/package-seg.yaml,sha256=
|
46
|
-
ultralytics/cfg/datasets/signature.yaml,sha256=
|
47
|
-
ultralytics/cfg/datasets/tiger-pose.yaml,sha256=
|
48
|
-
ultralytics/cfg/datasets/xView.yaml,sha256=
|
15
|
+
ultralytics/cfg/datasets/Argoverse.yaml,sha256=4SGaJio9JFUkrscHJTPnH_QSbYm48Wbk8EFwl39zntc,3262
|
16
|
+
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
|
17
|
+
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=JrDuYcQ0JU9lJlCA-dCkMNko_jaj6MAVGHjsfjeZ_u0,1181
|
18
|
+
ultralytics/cfg/datasets/GlobalWheat2020.yaml,sha256=dnr_loeYSE6Eo_f7V1yubILsMRBMRm1ozyC5r7uT-iY,2144
|
19
|
+
ultralytics/cfg/datasets/HomeObjects-3K.yaml,sha256=xEtSqEad-rtfGuIrERjjhdISggmPlvaX-315ZzKz50I,934
|
20
|
+
ultralytics/cfg/datasets/ImageNet.yaml,sha256=GvDWypLVG_H3H67Ai8IC1pvK6fwcTtF5FRhzO1OXXDU,42530
|
21
|
+
ultralytics/cfg/datasets/Objects365.yaml,sha256=vLzbT3xgpLR-bHhrHOiYyzYvDIniRdevgSyPetm8QHk,9354
|
22
|
+
ultralytics/cfg/datasets/SKU-110K.yaml,sha256=a52le1-JQ2YH6b1WLMUxVz7RkZ36YsmXgWyw0z3q9nQ,2542
|
23
|
+
ultralytics/cfg/datasets/VOC.yaml,sha256=GfJkYxN6uAiBTHOsR57L0UDi5NE9vH59A15EROrp0DU,3785
|
24
|
+
ultralytics/cfg/datasets/VisDrone.yaml,sha256=NujUSnR6gpXYdcvgg9nxmSZjPjcC9MdZ_YzMipvnuK8,3615
|
25
|
+
ultralytics/cfg/datasets/african-wildlife.yaml,sha256=SuloMp9WAZBigGC8az-VLACsFhTM76_O29yhTvUqdnU,915
|
26
|
+
ultralytics/cfg/datasets/brain-tumor.yaml,sha256=qrxPO_t9wxbn2kHFwP3vGTzSWj2ELTLelUwYL3_b6nc,800
|
27
|
+
ultralytics/cfg/datasets/carparts-seg.yaml,sha256=A4e9hM1unTY2jjZIXGiKSarF6R-Ad9R99t57OgRJ37w,1253
|
28
|
+
ultralytics/cfg/datasets/coco-pose.yaml,sha256=UYEY90XjHxTEYsUMXZXXaxzxs31zRun-PLTMRo1i334,1623
|
29
|
+
ultralytics/cfg/datasets/coco.yaml,sha256=iptVWzO1gLRPs76Mrs1Sp4yjYAR4f3AYeoUwP0r4UKw,2606
|
30
|
+
ultralytics/cfg/datasets/coco128-seg.yaml,sha256=knBS2enqHzQj5R5frU4nJdxKsFFBhq8TQ1G1JNiaz9s,1982
|
31
|
+
ultralytics/cfg/datasets/coco128.yaml,sha256=ok_dzaBUzSd0DWfe531GT_uYTEoF5mIQcgoMHZyIVIA,1965
|
32
|
+
ultralytics/cfg/datasets/coco8-grayscale.yaml,sha256=8v6G6mOzZHQNdQM1YwdTBW_lsWWkLRnAimwZBHKtJg8,1961
|
33
|
+
ultralytics/cfg/datasets/coco8-multispectral.yaml,sha256=nlU4W0d8rl1cVChthOk0NImhVDCm0voY3FrZs2D0lY0,2063
|
34
|
+
ultralytics/cfg/datasets/coco8-pose.yaml,sha256=GfSONSl-Oh4QErto91E_ws3im9ZTEYmDMaPOaSLLdV8,1009
|
35
|
+
ultralytics/cfg/datasets/coco8-seg.yaml,sha256=Ez42ZE6xHlj8lcjtMBJJP2Y460q2BuiwRfk090XnBgE,1913
|
36
|
+
ultralytics/cfg/datasets/coco8.yaml,sha256=tzrDY1KW82AHsgpCxte_yPkgMIIpNY6Pb4F46TDPxkk,1888
|
37
|
+
ultralytics/cfg/datasets/crack-seg.yaml,sha256=fqvSIq1fRXO55V_g2T92hcYAVoKBHZsSZQR7CokoPUI,837
|
38
|
+
ultralytics/cfg/datasets/dog-pose.yaml,sha256=sRU1JDtEC4nLVf2vkn7lxbp4ILWNcgE-ok96rxZv2lc,908
|
39
|
+
ultralytics/cfg/datasets/dota8-multispectral.yaml,sha256=2lMBi1Q3_pc0auK00yX80oF7oUMo0bUlwjkOrp33hvs,1216
|
40
|
+
ultralytics/cfg/datasets/dota8.yaml,sha256=5n4h_4zdrtUSkmH5DHJ-JLPvfiATcieIkgP3NeOP5nI,1060
|
41
|
+
ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=6JF2wwrfAfaVb5M_yLmXyv7iIFXtAt91FqS-Q3kJda0,990
|
42
|
+
ultralytics/cfg/datasets/lvis.yaml,sha256=nEQgUdSdBcTYW3LzdK2ba3k8SK-p7NNgZ-SoCXf5vns,29703
|
43
|
+
ultralytics/cfg/datasets/medical-pills.yaml,sha256=RK7iQFpDDkUS6EsEGqlbFjoohi3cgSsUIbsk7UItyds,792
|
44
|
+
ultralytics/cfg/datasets/open-images-v7.yaml,sha256=wK9v3OAGdHORkFdqoBi0hS0fa1b74LLroAzUSWjxEqw,12119
|
45
|
+
ultralytics/cfg/datasets/package-seg.yaml,sha256=V4uyTDWWzgft24y9HJWuELKuZ5AndAHXbanxMI6T8GU,849
|
46
|
+
ultralytics/cfg/datasets/signature.yaml,sha256=gBvU3715gVxVAafI_yaYczGX3kfEfA4BttbiMkgOXNk,774
|
47
|
+
ultralytics/cfg/datasets/tiger-pose.yaml,sha256=Y_8htA4--6hmpqHTW-Ix4t9SdaWenSSyl_FUtI2A7n8,926
|
48
|
+
ultralytics/cfg/datasets/xView.yaml,sha256=NEEGaRTvTGafckJiFD1ltFyMl0b04zOyOFu_J-PN-Ik,5340
|
49
49
|
ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml,sha256=1Ycp9qMrwpb8rq7cqht3Q-1gMN0R87U35nm2j_isdro,524
|
50
50
|
ultralytics/cfg/models/11/yolo11-cls.yaml,sha256=17l5GdN-Vst4LvafsK2-q6Li9VX9UlUcT5ClCtikweE,1412
|
51
51
|
ultralytics/cfg/models/11/yolo11-obb.yaml,sha256=3M_c06B-y8da4tunHVxQQ-iFUNLKUfofqCZTpnH5FEU,2034
|
@@ -119,7 +119,7 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
|
|
119
119
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
120
120
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
121
121
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
122
|
-
ultralytics/engine/exporter.py,sha256=
|
122
|
+
ultralytics/engine/exporter.py,sha256=m6HAaoDRDaUR4P0zue3o7bUKjnPa4QlMCjcbJtS4iCI,74926
|
123
123
|
ultralytics/engine/model.py,sha256=FmLwiKuItVNgoyXhAvesUnD3UeHBzCVzGHDrqB8J4ms,53453
|
124
124
|
ultralytics/engine/predictor.py,sha256=xxl1kdAzKrN8Y_5MQ5f92uFPeeRq1mYOl6hNlzpPjy8,22520
|
125
125
|
ultralytics/engine/results.py,sha256=QcHcbPVlLBiy_APwABr-T5K65HR8Bl1rRzxawjjP76E,71873
|
@@ -164,7 +164,7 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
|
|
164
164
|
ultralytics/models/utils/loss.py,sha256=E-61TfLPc04IdeL6IlFDityDoPju-ov0ouWV_cNY4Kg,21254
|
165
165
|
ultralytics/models/utils/ops.py,sha256=Pr77n8XW25SUEx4X3bBvXcVIbRdJPoaXJuG0KWWawRQ,15253
|
166
166
|
ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
|
167
|
-
ultralytics/models/yolo/model.py,sha256=
|
167
|
+
ultralytics/models/yolo/model.py,sha256=e66CIsSLHbEeGlkEQ1r6WwVDKAoR2nc0-UoGA94z-eM,18544
|
168
168
|
ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
|
169
169
|
ultralytics/models/yolo/classify/predict.py,sha256=FqAC2YXe25bRwedMZhF3Lw0waoY-a60xMKELhxApP9I,4149
|
170
170
|
ultralytics/models/yolo/classify/train.py,sha256=V-hevc6X7xemnpyru84OfTRA77eNnkVSMEz16_OUvo4,10244
|
@@ -194,14 +194,14 @@ ultralytics/models/yolo/yoloe/train.py,sha256=XYpQYSnSD8vi_9VSj_S5oIsNUEqm3e66vP
|
|
194
194
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
|
195
195
|
ultralytics/models/yolo/yoloe/val.py,sha256=yebPkxwKKt__cY05Zbh1YXg4_BKzzpcDc3Cv3FJ5SAA,9769
|
196
196
|
ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
|
197
|
-
ultralytics/nn/autobackend.py,sha256=
|
197
|
+
ultralytics/nn/autobackend.py,sha256=_65yU6AIpmz1vV24oSNNMPIBmywPTQQdWF0pwHDHxiU,41628
|
198
198
|
ultralytics/nn/tasks.py,sha256=jRUjYn1xz_LEa_zx6Upb0UpXvy0Bca1o5HEc7FCRgwM,72653
|
199
199
|
ultralytics/nn/text_model.py,sha256=cYwD-0el4VeToDBP4iPFOQGqyEQatJOBHrVyONL3K_s,15282
|
200
200
|
ultralytics/nn/modules/__init__.py,sha256=2nY0X69Z5DD5SWt6v3CUTZa5gXSzC9TQr3VTVqhyGho,3158
|
201
201
|
ultralytics/nn/modules/activation.py,sha256=75JcIMH2Cu9GTC2Uf55r_5YLpxcrXQDaVoeGQ0hlUAU,2233
|
202
202
|
ultralytics/nn/modules/block.py,sha256=JfOjWEgUNfwFCt-P2awhga4B7GXeDlkKVhLBp7oA-Es,70652
|
203
203
|
ultralytics/nn/modules/conv.py,sha256=eM_t0hQwvEH4rllJucqRMNq7IoipEjbTa_ELROu4ubs,21445
|
204
|
-
ultralytics/nn/modules/head.py,sha256=
|
204
|
+
ultralytics/nn/modules/head.py,sha256=WiYJ-odEWisWZKKbOuvj1dJkUky2Z6D3yCTFqiRO-B0,53450
|
205
205
|
ultralytics/nn/modules/transformer.py,sha256=PW5-6gzOP3_rZ_uAkmxvI42nU5bkrgbgLKCy5PC5px4,31415
|
206
206
|
ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
|
207
207
|
ultralytics/solutions/__init__.py,sha256=ZoeAQavTLp8aClnhZ9tbl6lxy86GxofyGvZWTx2aWkI,1209
|
@@ -246,7 +246,7 @@ ultralytics/utils/export.py,sha256=LK-wlTlyb_zIKtSvOmfmvR70RcUU9Ct9UBDt5wn9_rY,9
|
|
246
246
|
ultralytics/utils/files.py,sha256=ZCbLGleiF0f-PqYfaxMFAWop88w7U1hpreHXl8b2ko0,8238
|
247
247
|
ultralytics/utils/instance.py,sha256=dC83rHvQXciAED3rOiScFs3BOX9OI06Ey1mj9sjUKvs,19070
|
248
248
|
ultralytics/utils/loss.py,sha256=fbOWc3Iu0QOJiWbi-mXWA9-1otTYlehtmUsI7os7ydM,39799
|
249
|
-
ultralytics/utils/metrics.py,sha256=
|
249
|
+
ultralytics/utils/metrics.py,sha256=AbaYgGPEFY-IVv1_Izb0dXulSs1NEZ2-TVkO1GcP8iI,62179
|
250
250
|
ultralytics/utils/ops.py,sha256=8d60fbpntrexK3gPoLUS6mWAYGrtrQaQCOYyRJsCjuI,34521
|
251
251
|
ultralytics/utils/patches.py,sha256=tBAsNo_RyoFLL9OAzVuJmuoDLUJIPuTMByBYyblGG1A,6517
|
252
252
|
ultralytics/utils/plotting.py,sha256=LO-iR-k1UewV5vt4xXDUIirdmNEZdpfiQvLyIWqINPg,47171
|
@@ -265,9 +265,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
|
|
265
265
|
ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
|
266
266
|
ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
|
267
267
|
ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
|
268
|
-
ultralytics-8.3.
|
269
|
-
ultralytics-8.3.
|
270
|
-
ultralytics-8.3.
|
271
|
-
ultralytics-8.3.
|
272
|
-
ultralytics-8.3.
|
273
|
-
ultralytics-8.3.
|
268
|
+
ultralytics-8.3.167.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
269
|
+
ultralytics-8.3.167.dist-info/METADATA,sha256=GHOf_ArFRGBsrNgvyYN-MibqukqrWcY4ORaG0A-XOg4,37576
|
270
|
+
ultralytics-8.3.167.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
271
|
+
ultralytics-8.3.167.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
272
|
+
ultralytics-8.3.167.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
273
|
+
ultralytics-8.3.167.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|