ultralytics 8.1.5__py3-none-any.whl → 8.1.6__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/cfg/__init__.py +2 -1
- ultralytics/cfg/datasets/carparts-seg.yaml +43 -0
- ultralytics/cfg/datasets/crack-seg.yaml +21 -0
- ultralytics/cfg/datasets/package-seg.yaml +21 -0
- ultralytics/data/build.py +5 -6
- ultralytics/data/converter.py +2 -0
- ultralytics/data/explorer/gui/dash.py +23 -3
- ultralytics/data/loaders.py +4 -12
- ultralytics/engine/model.py +2 -2
- ultralytics/engine/predictor.py +1 -1
- ultralytics/utils/benchmarks.py +6 -2
- ultralytics/utils/ops.py +4 -4
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/METADATA +2 -2
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/RECORD +19 -16
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/LICENSE +0 -0
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/WHEEL +0 -0
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.1.5.dist-info → ultralytics-8.1.6.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
|
@@ -51,7 +51,7 @@ TASK2METRIC = {
|
|
|
51
51
|
"segment": "metrics/mAP50-95(M)",
|
|
52
52
|
"classify": "metrics/accuracy_top1",
|
|
53
53
|
"pose": "metrics/mAP50-95(P)",
|
|
54
|
-
"obb": "metrics/mAP50-95(
|
|
54
|
+
"obb": "metrics/mAP50-95(B)",
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
CLI_HELP_MSG = f"""
|
|
@@ -396,6 +396,7 @@ def handle_yolo_settings(args: List[str]) -> None:
|
|
|
396
396
|
def handle_explorer():
|
|
397
397
|
"""Open the Ultralytics Explorer GUI."""
|
|
398
398
|
checks.check_requirements("streamlit")
|
|
399
|
+
LOGGER.info(f"💡 Loading Explorer dashboard...")
|
|
399
400
|
subprocess.run(["streamlit", "run", ROOT / "data/explorer/gui/dash.py", "--server.maxMessageSize", "2048"])
|
|
400
401
|
|
|
401
402
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
# Carparts-seg dataset by Ultralytics
|
|
3
|
+
# Documentation: https://docs.ultralytics.com/datasets/segment/carparts-seg/
|
|
4
|
+
# Example usage: yolo train data=carparts-seg.yaml
|
|
5
|
+
# parent
|
|
6
|
+
# ├── ultralytics
|
|
7
|
+
# └── datasets
|
|
8
|
+
# └── carparts-seg ← downloads here (132 MB)
|
|
9
|
+
|
|
10
|
+
# 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, ..]
|
|
11
|
+
path: ../datasets/carparts-seg # dataset root dir
|
|
12
|
+
train: train/images # train images (relative to 'path') 3516 images
|
|
13
|
+
val: valid/images # val images (relative to 'path') 276 images
|
|
14
|
+
test: test/images # test images (relative to 'path') 401 images
|
|
15
|
+
|
|
16
|
+
# Classes
|
|
17
|
+
names:
|
|
18
|
+
0: back_bumper
|
|
19
|
+
1: back_door
|
|
20
|
+
2: back_glass
|
|
21
|
+
3: back_left_door
|
|
22
|
+
4: back_left_light
|
|
23
|
+
5: back_light
|
|
24
|
+
6: back_right_door
|
|
25
|
+
7: back_right_light
|
|
26
|
+
8: front_bumper
|
|
27
|
+
9: front_door
|
|
28
|
+
10: front_glass
|
|
29
|
+
11: front_left_door
|
|
30
|
+
12: front_left_light
|
|
31
|
+
13: front_light
|
|
32
|
+
14: front_right_door
|
|
33
|
+
15: front_right_light
|
|
34
|
+
16: hood
|
|
35
|
+
17: left_mirror
|
|
36
|
+
18: object
|
|
37
|
+
19: right_mirror
|
|
38
|
+
20: tailgate
|
|
39
|
+
21: trunk
|
|
40
|
+
22: wheel
|
|
41
|
+
|
|
42
|
+
# Download script/URL (optional)
|
|
43
|
+
download: https://ultralytics.com/assets/carparts-seg.zip
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
# Crack-seg dataset by Ultralytics
|
|
3
|
+
# Documentation: https://docs.ultralytics.com/datasets/segment/crack-seg/
|
|
4
|
+
# Example usage: yolo train data=crack-seg.yaml
|
|
5
|
+
# parent
|
|
6
|
+
# ├── ultralytics
|
|
7
|
+
# └── datasets
|
|
8
|
+
# └── crack-seg ← downloads here (91.2 MB)
|
|
9
|
+
|
|
10
|
+
# 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, ..]
|
|
11
|
+
path: ../datasets/crack-seg # dataset root dir
|
|
12
|
+
train: train/images # train images (relative to 'path') 3717 images
|
|
13
|
+
val: valid/images # val images (relative to 'path') 112 images
|
|
14
|
+
test: test/images # test images (relative to 'path') 200 images
|
|
15
|
+
|
|
16
|
+
# Classes
|
|
17
|
+
names:
|
|
18
|
+
0: crack
|
|
19
|
+
|
|
20
|
+
# Download script/URL (optional)
|
|
21
|
+
download: https://ultralytics.com/assets/crack-seg.zip
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
# Package-seg dataset by Ultralytics
|
|
3
|
+
# Documentation: https://docs.ultralytics.com/datasets/segment/package-seg/
|
|
4
|
+
# Example usage: yolo train data=package-seg.yaml
|
|
5
|
+
# parent
|
|
6
|
+
# ├── ultralytics
|
|
7
|
+
# └── datasets
|
|
8
|
+
# └── package-seg ← downloads here (102 MB)
|
|
9
|
+
|
|
10
|
+
# 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, ..]
|
|
11
|
+
path: ../datasets/package-seg # dataset root dir
|
|
12
|
+
train: images/train # train images (relative to 'path') 1920 images
|
|
13
|
+
val: images/val # val images (relative to 'path') 89 images
|
|
14
|
+
test: test/images # test images (relative to 'path') 188 images
|
|
15
|
+
|
|
16
|
+
# Classes
|
|
17
|
+
names:
|
|
18
|
+
0: package
|
|
19
|
+
|
|
20
|
+
# Download script/URL (optional)
|
|
21
|
+
download: https://ultralytics.com/assets/package-seg.zip
|
ultralytics/data/build.py
CHANGED
|
@@ -150,13 +150,12 @@ def check_source(source):
|
|
|
150
150
|
return source, webcam, screenshot, from_img, in_memory, tensor
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
def load_inference_source(source=None,
|
|
153
|
+
def load_inference_source(source=None, vid_stride=1, buffer=False):
|
|
154
154
|
"""
|
|
155
155
|
Loads an inference source for object detection and applies necessary transformations.
|
|
156
156
|
|
|
157
157
|
Args:
|
|
158
158
|
source (str, Path, Tensor, PIL.Image, np.ndarray): The input source for inference.
|
|
159
|
-
imgsz (int, optional): The size of the image for inference. Default is 640.
|
|
160
159
|
vid_stride (int, optional): The frame interval for video sources. Default is 1.
|
|
161
160
|
buffer (bool, optional): Determined whether stream frames will be buffered. Default is False.
|
|
162
161
|
|
|
@@ -172,13 +171,13 @@ def load_inference_source(source=None, imgsz=640, vid_stride=1, buffer=False):
|
|
|
172
171
|
elif in_memory:
|
|
173
172
|
dataset = source
|
|
174
173
|
elif webcam:
|
|
175
|
-
dataset = LoadStreams(source,
|
|
174
|
+
dataset = LoadStreams(source, vid_stride=vid_stride, buffer=buffer)
|
|
176
175
|
elif screenshot:
|
|
177
|
-
dataset = LoadScreenshots(source
|
|
176
|
+
dataset = LoadScreenshots(source)
|
|
178
177
|
elif from_img:
|
|
179
|
-
dataset = LoadPilAndNumpy(source
|
|
178
|
+
dataset = LoadPilAndNumpy(source)
|
|
180
179
|
else:
|
|
181
|
-
dataset = LoadImages(source,
|
|
180
|
+
dataset = LoadImages(source, vid_stride=vid_stride)
|
|
182
181
|
|
|
183
182
|
# Attach source types to the dataset
|
|
184
183
|
setattr(dataset, "source_type", source_type)
|
ultralytics/data/converter.py
CHANGED
|
@@ -515,6 +515,8 @@ def yolo_bbox2segment(im_dir, save_dir=None, sam_model="sam_b.pt"):
|
|
|
515
515
|
for l in tqdm(dataset.labels, total=len(dataset.labels), desc="Generating segment labels"):
|
|
516
516
|
h, w = l["shape"]
|
|
517
517
|
boxes = l["bboxes"]
|
|
518
|
+
if len(boxes) == 0: # skip empty labels
|
|
519
|
+
continue
|
|
518
520
|
boxes[:, [0, 2]] *= w
|
|
519
521
|
boxes[:, [1, 3]] *= h
|
|
520
522
|
im = cv2.imread(l["im_file"])
|
|
@@ -9,7 +9,7 @@ from ultralytics import Explorer
|
|
|
9
9
|
from ultralytics.utils import ROOT, SETTINGS
|
|
10
10
|
from ultralytics.utils.checks import check_requirements
|
|
11
11
|
|
|
12
|
-
check_requirements(("streamlit>=1.29.0", "streamlit-select>=0.
|
|
12
|
+
check_requirements(("streamlit>=1.29.0", "streamlit-select>=0.3"))
|
|
13
13
|
|
|
14
14
|
import streamlit as st
|
|
15
15
|
from streamlit_select import image_select
|
|
@@ -94,6 +94,7 @@ def find_similar_imgs(imgs):
|
|
|
94
94
|
similar = exp.get_similar(img=imgs, limit=st.session_state.get("limit"), return_type="arrow")
|
|
95
95
|
paths = similar.to_pydict()["im_file"]
|
|
96
96
|
st.session_state["imgs"] = paths
|
|
97
|
+
st.session_state["res"] = similar
|
|
97
98
|
|
|
98
99
|
|
|
99
100
|
def similarity_form(selected_imgs):
|
|
@@ -137,6 +138,7 @@ def run_sql_query():
|
|
|
137
138
|
exp = st.session_state["explorer"]
|
|
138
139
|
res = exp.sql_query(query, return_type="arrow")
|
|
139
140
|
st.session_state["imgs"] = res.to_pydict()["im_file"]
|
|
141
|
+
st.session_state["res"] = res
|
|
140
142
|
|
|
141
143
|
|
|
142
144
|
def run_ai_query():
|
|
@@ -155,6 +157,7 @@ def run_ai_query():
|
|
|
155
157
|
st.session_state["error"] = "No results found using AI generated query. Try another query or rerun it."
|
|
156
158
|
return
|
|
157
159
|
st.session_state["imgs"] = res["im_file"].to_list()
|
|
160
|
+
st.session_state["res"] = res
|
|
158
161
|
|
|
159
162
|
|
|
160
163
|
def reset_explorer():
|
|
@@ -195,7 +198,11 @@ def layout():
|
|
|
195
198
|
if st.session_state.get("error"):
|
|
196
199
|
st.error(st.session_state["error"])
|
|
197
200
|
else:
|
|
198
|
-
|
|
201
|
+
if st.session_state.get("imgs"):
|
|
202
|
+
imgs = st.session_state.get("imgs")
|
|
203
|
+
else:
|
|
204
|
+
imgs = exp.table.to_lance().to_table(columns=["im_file"]).to_pydict()["im_file"]
|
|
205
|
+
st.session_state["res"] = exp.table.to_arrow()
|
|
199
206
|
total_imgs, selected_imgs = len(imgs), []
|
|
200
207
|
with col1:
|
|
201
208
|
subcol1, subcol2, subcol3, subcol4, subcol5 = st.columns(5)
|
|
@@ -230,17 +237,30 @@ def layout():
|
|
|
230
237
|
query_form()
|
|
231
238
|
ai_query_form()
|
|
232
239
|
if total_imgs:
|
|
240
|
+
labels, boxes, masks, kpts, classes = None, None, None, None, None
|
|
241
|
+
task = exp.model.task
|
|
242
|
+
if st.session_state.get("display_labels"):
|
|
243
|
+
labels = st.session_state.get("res").to_pydict()["labels"][start_idx : start_idx + num]
|
|
244
|
+
boxes = st.session_state.get("res").to_pydict()["bboxes"][start_idx : start_idx + num]
|
|
245
|
+
masks = st.session_state.get("res").to_pydict()["masks"][start_idx : start_idx + num]
|
|
246
|
+
kpts = st.session_state.get("res").to_pydict()["keypoints"][start_idx : start_idx + num]
|
|
247
|
+
classes = st.session_state.get("res").to_pydict()["cls"][start_idx : start_idx + num]
|
|
233
248
|
imgs_displayed = imgs[start_idx : start_idx + num]
|
|
234
249
|
selected_imgs = image_select(
|
|
235
250
|
f"Total samples: {total_imgs}",
|
|
236
251
|
images=imgs_displayed,
|
|
237
252
|
use_container_width=False,
|
|
238
253
|
# indices=[i for i in range(num)] if select_all else None,
|
|
254
|
+
labels=labels,
|
|
255
|
+
classes=classes,
|
|
256
|
+
bboxes=boxes,
|
|
257
|
+
masks=masks if task == "segment" else None,
|
|
258
|
+
kpts=kpts if task == "pose" else None,
|
|
239
259
|
)
|
|
240
260
|
|
|
241
261
|
with col2:
|
|
242
262
|
similarity_form(selected_imgs)
|
|
243
|
-
|
|
263
|
+
display_labels = st.checkbox("Labels", value=False, key="display_labels")
|
|
244
264
|
utralytics_explorer_docs_callback()
|
|
245
265
|
|
|
246
266
|
|
ultralytics/data/loaders.py
CHANGED
|
@@ -38,7 +38,6 @@ class LoadStreams:
|
|
|
38
38
|
|
|
39
39
|
Attributes:
|
|
40
40
|
sources (str): The source input paths or URLs for the video streams.
|
|
41
|
-
imgsz (int): The image size for processing, defaults to 640.
|
|
42
41
|
vid_stride (int): Video frame-rate stride, defaults to 1.
|
|
43
42
|
buffer (bool): Whether to buffer input streams, defaults to False.
|
|
44
43
|
running (bool): Flag to indicate if the streaming thread is running.
|
|
@@ -60,13 +59,12 @@ class LoadStreams:
|
|
|
60
59
|
__len__: Return the length of the sources object.
|
|
61
60
|
"""
|
|
62
61
|
|
|
63
|
-
def __init__(self, sources="file.streams",
|
|
62
|
+
def __init__(self, sources="file.streams", vid_stride=1, buffer=False):
|
|
64
63
|
"""Initialize instance variables and check for consistent input stream shapes."""
|
|
65
64
|
torch.backends.cudnn.benchmark = True # faster for fixed-size inference
|
|
66
65
|
self.buffer = buffer # buffer input streams
|
|
67
66
|
self.running = True # running flag for Thread
|
|
68
67
|
self.mode = "stream"
|
|
69
|
-
self.imgsz = imgsz
|
|
70
68
|
self.vid_stride = vid_stride # video frame-rate stride
|
|
71
69
|
|
|
72
70
|
sources = Path(sources).read_text().rsplit() if os.path.isfile(sources) else [sources]
|
|
@@ -193,7 +191,6 @@ class LoadScreenshots:
|
|
|
193
191
|
|
|
194
192
|
Attributes:
|
|
195
193
|
source (str): The source input indicating which screen to capture.
|
|
196
|
-
imgsz (int): The image size for processing, defaults to 640.
|
|
197
194
|
screen (int): The screen number to capture.
|
|
198
195
|
left (int): The left coordinate for screen capture area.
|
|
199
196
|
top (int): The top coordinate for screen capture area.
|
|
@@ -210,7 +207,7 @@ class LoadScreenshots:
|
|
|
210
207
|
__next__: Captures the next screenshot and returns it.
|
|
211
208
|
"""
|
|
212
209
|
|
|
213
|
-
def __init__(self, source
|
|
210
|
+
def __init__(self, source):
|
|
214
211
|
"""Source = [screen_number left top width height] (pixels)."""
|
|
215
212
|
check_requirements("mss")
|
|
216
213
|
import mss # noqa
|
|
@@ -223,7 +220,6 @@ class LoadScreenshots:
|
|
|
223
220
|
left, top, width, height = (int(x) for x in params)
|
|
224
221
|
elif len(params) == 5:
|
|
225
222
|
self.screen, left, top, width, height = (int(x) for x in params)
|
|
226
|
-
self.imgsz = imgsz
|
|
227
223
|
self.mode = "stream"
|
|
228
224
|
self.frame = 0
|
|
229
225
|
self.sct = mss.mss()
|
|
@@ -258,7 +254,6 @@ class LoadImages:
|
|
|
258
254
|
various formats, including single image files, video files, and lists of image and video paths.
|
|
259
255
|
|
|
260
256
|
Attributes:
|
|
261
|
-
imgsz (int): Image size, defaults to 640.
|
|
262
257
|
files (list): List of image and video file paths.
|
|
263
258
|
nf (int): Total number of files (images and videos).
|
|
264
259
|
video_flag (list): Flags indicating whether a file is a video (True) or an image (False).
|
|
@@ -274,7 +269,7 @@ class LoadImages:
|
|
|
274
269
|
_new_video(path): Create a new cv2.VideoCapture object for a given video path.
|
|
275
270
|
"""
|
|
276
271
|
|
|
277
|
-
def __init__(self, path,
|
|
272
|
+
def __init__(self, path, vid_stride=1):
|
|
278
273
|
"""Initialize the Dataloader and raise FileNotFoundError if file not found."""
|
|
279
274
|
parent = None
|
|
280
275
|
if isinstance(path, str) and Path(path).suffix == ".txt": # *.txt file with img/vid/dir on each line
|
|
@@ -298,7 +293,6 @@ class LoadImages:
|
|
|
298
293
|
videos = [x for x in files if x.split(".")[-1].lower() in VID_FORMATS]
|
|
299
294
|
ni, nv = len(images), len(videos)
|
|
300
295
|
|
|
301
|
-
self.imgsz = imgsz
|
|
302
296
|
self.files = images + videos
|
|
303
297
|
self.nf = ni + nv # number of files
|
|
304
298
|
self.video_flag = [False] * ni + [True] * nv
|
|
@@ -377,7 +371,6 @@ class LoadPilAndNumpy:
|
|
|
377
371
|
Attributes:
|
|
378
372
|
paths (list): List of image paths or autogenerated filenames.
|
|
379
373
|
im0 (list): List of images stored as Numpy arrays.
|
|
380
|
-
imgsz (int): Image size, defaults to 640.
|
|
381
374
|
mode (str): Type of data being processed, defaults to 'image'.
|
|
382
375
|
bs (int): Batch size, equivalent to the length of `im0`.
|
|
383
376
|
count (int): Counter for iteration, initialized at 0 during `__iter__()`.
|
|
@@ -386,13 +379,12 @@ class LoadPilAndNumpy:
|
|
|
386
379
|
_single_check(im): Validate and format a single image to a Numpy array.
|
|
387
380
|
"""
|
|
388
381
|
|
|
389
|
-
def __init__(self, im0
|
|
382
|
+
def __init__(self, im0):
|
|
390
383
|
"""Initialize PIL and Numpy Dataloader."""
|
|
391
384
|
if not isinstance(im0, list):
|
|
392
385
|
im0 = [im0]
|
|
393
386
|
self.paths = [getattr(im, "filename", f"image{i}.jpg") for i, im in enumerate(im0)]
|
|
394
387
|
self.im0 = [self._single_check(im) for im in im0]
|
|
395
|
-
self.imgsz = imgsz
|
|
396
388
|
self.mode = "image"
|
|
397
389
|
# Generate fake paths
|
|
398
390
|
self.bs = len(self.im0)
|
ultralytics/engine/model.py
CHANGED
|
@@ -259,8 +259,8 @@ class Model(nn.Module):
|
|
|
259
259
|
x in sys.argv for x in ("predict", "track", "mode=predict", "mode=track")
|
|
260
260
|
)
|
|
261
261
|
|
|
262
|
-
custom = {"conf": 0.25, "save": is_cli} # method defaults
|
|
263
|
-
args = {**self.overrides, **custom, **kwargs
|
|
262
|
+
custom = {"conf": 0.25, "save": is_cli, "mode": "predict"} # method defaults
|
|
263
|
+
args = {**self.overrides, **custom, **kwargs} # highest priority args on the right
|
|
264
264
|
prompts = args.pop("prompts", None) # for SAM-type models
|
|
265
265
|
|
|
266
266
|
if not self.predictor:
|
ultralytics/engine/predictor.py
CHANGED
|
@@ -226,7 +226,7 @@ class BasePredictor:
|
|
|
226
226
|
else None
|
|
227
227
|
)
|
|
228
228
|
self.dataset = load_inference_source(
|
|
229
|
-
source=source,
|
|
229
|
+
source=source, vid_stride=self.args.vid_stride, buffer=self.args.stream_buffer
|
|
230
230
|
)
|
|
231
231
|
self.source_type = self.dataset.source_type
|
|
232
232
|
if not getattr(self, "stream", True) and (
|
ultralytics/utils/benchmarks.py
CHANGED
|
@@ -83,8 +83,12 @@ def benchmark(
|
|
|
83
83
|
for i, (name, format, suffix, cpu, gpu) in export_formats().iterrows(): # index, (name, format, suffix, CPU, GPU)
|
|
84
84
|
emoji, filename = "❌", None # export defaults
|
|
85
85
|
try:
|
|
86
|
-
|
|
87
|
-
if i
|
|
86
|
+
# Checks
|
|
87
|
+
if i == 9:
|
|
88
|
+
assert LINUX, "Edge TPU export only supported on Linux"
|
|
89
|
+
elif i == 7:
|
|
90
|
+
assert model.task != "obb", "TensorFlow GraphDef not supported for OBB task"
|
|
91
|
+
elif i in {5, 10}: # CoreML and TF.js
|
|
88
92
|
assert MACOS or LINUX, "export only supported on macOS and Linux"
|
|
89
93
|
if "cpu" in device.type:
|
|
90
94
|
assert cpu, "inference not supported on CPU"
|
ultralytics/utils/ops.py
CHANGED
|
@@ -362,8 +362,8 @@ def scale_image(masks, im0_shape, ratio_pad=None):
|
|
|
362
362
|
else:
|
|
363
363
|
# gain = ratio_pad[0][0]
|
|
364
364
|
pad = ratio_pad[1]
|
|
365
|
-
top, left =
|
|
366
|
-
bottom, right =
|
|
365
|
+
top, left = int(pad[1]), int(pad[0]) # y, x
|
|
366
|
+
bottom, right = int(im1_shape[0] - pad[1]), int(im1_shape[1] - pad[0])
|
|
367
367
|
|
|
368
368
|
if len(masks.shape) < 2:
|
|
369
369
|
raise ValueError(f'"len of masks shape" should be 2 or 3, but got {len(masks.shape)}')
|
|
@@ -731,8 +731,8 @@ def scale_masks(masks, shape, padding=True):
|
|
|
731
731
|
if padding:
|
|
732
732
|
pad[0] /= 2
|
|
733
733
|
pad[1] /= 2
|
|
734
|
-
top, left = (int(
|
|
735
|
-
bottom, right = (int(
|
|
734
|
+
top, left = (int(pad[1]), int(pad[0])) if padding else (0, 0) # y, x
|
|
735
|
+
bottom, right = (int(mh - pad[1]), int(mw - pad[0]))
|
|
736
736
|
masks = masks[..., top:bottom, left:right]
|
|
737
737
|
|
|
738
738
|
masks = F.interpolate(masks, shape, mode="bilinear", align_corners=False) # NCHW
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.6
|
|
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
|
|
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material ; extra == 'dev'
|
|
|
55
55
|
Requires-Dist: mkdocstrings[python] ; extra == 'dev'
|
|
56
56
|
Requires-Dist: mkdocs-jupyter ; extra == 'dev'
|
|
57
57
|
Requires-Dist: mkdocs-redirects ; extra == 'dev'
|
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.40 ; extra == 'dev'
|
|
59
59
|
Provides-Extra: explorer
|
|
60
60
|
Requires-Dist: lancedb ; extra == 'explorer'
|
|
61
61
|
Requires-Dist: duckdb ; extra == 'explorer'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
ultralytics/__init__.py,sha256
|
|
1
|
+
ultralytics/__init__.py,sha256=tCssEtjYkcI-7OBbplHcjjB8m8qOBzL_VT8WjOvcAW8,596
|
|
2
2
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
|
3
3
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
|
4
|
-
ultralytics/cfg/__init__.py,sha256=
|
|
4
|
+
ultralytics/cfg/__init__.py,sha256=ZyR73auZ5f8xgXNP7hZQNQAbd-CmDwrcVeLjVP3uric,20766
|
|
5
5
|
ultralytics/cfg/default.yaml,sha256=Ihuy6Dziu-qm9dZ1qRSu7lrJB8sF3U8yTXPiZ9aKXlM,8091
|
|
6
6
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
|
|
7
7
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=YDsyFPI6F6-OQXLBM3hOXo3vADYREwZzmMQfJNdpWyM,1193
|
|
@@ -12,6 +12,7 @@ ultralytics/cfg/datasets/Objects365.yaml,sha256=kiiV4KLMH2mcPPRrg6cQGygnbiTrHxwt
|
|
|
12
12
|
ultralytics/cfg/datasets/SKU-110K.yaml,sha256=geRkccBRl2eKgfNYTOPYwD9mTfqktTBGiMJoE3PZEnA,2493
|
|
13
13
|
ultralytics/cfg/datasets/VOC.yaml,sha256=3-CDpjIq_s5pkbsJ9TjrYIeV24rYGuJGu4Qg6uktEZE,3655
|
|
14
14
|
ultralytics/cfg/datasets/VisDrone.yaml,sha256=NfrbjVnE48E7TPbxtF7rtQHvVBO0DchFJFEuGrG1VRU,3073
|
|
15
|
+
ultralytics/cfg/datasets/carparts-seg.yaml,sha256=pvTi3EH2j6UuG0LHoQJ7JjQv_cJoO8UKSXPptUTnl8U,1207
|
|
15
16
|
ultralytics/cfg/datasets/coco-pose.yaml,sha256=w7H-J2e87GIV_PZdRDgqEFa75ObScpBK_l85U4ZMsMo,1603
|
|
16
17
|
ultralytics/cfg/datasets/coco.yaml,sha256=xbim-GcWpvF_uwlStjbPjxXFhVfL0U_WNQI99b5gjdY,2584
|
|
17
18
|
ultralytics/cfg/datasets/coco128-seg.yaml,sha256=6wRjT1C6eXblXzzSvCjXfVSYF12pjZl7DKVDkFbdUQ0,1925
|
|
@@ -19,8 +20,10 @@ ultralytics/cfg/datasets/coco128.yaml,sha256=vPraVMUKvhJY2dnhPbsCzwAPEOw1J8P6Wyq
|
|
|
19
20
|
ultralytics/cfg/datasets/coco8-pose.yaml,sha256=MErskGM63ED7bJUNPd6Rv5nTPHR77GaqB3pgSzJ3heA,961
|
|
20
21
|
ultralytics/cfg/datasets/coco8-seg.yaml,sha256=hH0sEb_ZdtjziVg9PNNjdZADuYIbvYLD9-B2J7s7rlc,1865
|
|
21
22
|
ultralytics/cfg/datasets/coco8.yaml,sha256=yGDMRSehDIsT1h36JA-FTWZrtJRertD3tfoBLsS2Ydc,1840
|
|
23
|
+
ultralytics/cfg/datasets/crack-seg.yaml,sha256=asdmbm4UXsUDovHvsMZdhbAa97vtd3bN72EqEjfnP-0,791
|
|
22
24
|
ultralytics/cfg/datasets/dota8.yaml,sha256=HlwU4tpnUCCn7DQBXYRBGbfARNcALfCCRJnqycmHprg,1042
|
|
23
25
|
ultralytics/cfg/datasets/open-images-v7.yaml,sha256=gsN0JXLSdQglio024p6NEegNbX06kJUNuj0bh9oEi-U,12493
|
|
26
|
+
ultralytics/cfg/datasets/package-seg.yaml,sha256=t6iu8MwulLxLVT2QdeOXz2fcCRcqufGpKOXUjTg2gMA,801
|
|
24
27
|
ultralytics/cfg/datasets/tiger-pose.yaml,sha256=v2pOOrijTqdFA82nd2Jt-ZOWKNQl_qYgEqSgl4d0xWs,864
|
|
25
28
|
ultralytics/cfg/datasets/xView.yaml,sha256=rjQPRNk--jlYN9wcVTu1KbopgZIkWXhr_s1UkSdcERs,5217
|
|
26
29
|
ultralytics/cfg/models/rt-detr/rtdetr-l.yaml,sha256=Nbzi93tAJhBw69hUNBkzXaeMMWwW6tWeAsdN8ynryuU,1934
|
|
@@ -54,21 +57,21 @@ ultralytics/data/__init__.py,sha256=A3i0n-2MnNzSdYqhM8xynBO2HJNKGSXWhPvRyO0_u1I,
|
|
|
54
57
|
ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
|
|
55
58
|
ultralytics/data/augment.py,sha256=ORotqUN-qulkHxzoW5hFF_CZDlBhuaqGgAsiPUVIf4I,52000
|
|
56
59
|
ultralytics/data/base.py,sha256=XcgBVEr-9wl58Ka-5gJUMg43LXsBQ6PiCKdHWZTdvEI,13216
|
|
57
|
-
ultralytics/data/build.py,sha256=
|
|
58
|
-
ultralytics/data/converter.py,sha256=
|
|
60
|
+
ultralytics/data/build.py,sha256=GuWEGrBr7sYtVOMD00TcJoooq3DYhqOKRvYUKGrGK9w,6293
|
|
61
|
+
ultralytics/data/converter.py,sha256=I2rY7uxPAFJtNQ8ApajSBTripisZhuSqQHaVeBR5pX4,16496
|
|
59
62
|
ultralytics/data/dataset.py,sha256=waqG4WiQ8hSVo5IMydq1NvMNQ5IM2du_m0bCv1q140U,16504
|
|
60
|
-
ultralytics/data/loaders.py,sha256=
|
|
63
|
+
ultralytics/data/loaders.py,sha256=8nFTCTZ9fSn2TX1ALq0BE0CmmqHvKte_CscxsnAVWEQ,21910
|
|
61
64
|
ultralytics/data/split_dota.py,sha256=1q2FZC0SE4deRpXUSbKTbUAjX9VeejUIFM2DBLF8Cco,9961
|
|
62
65
|
ultralytics/data/utils.py,sha256=DHP14WwUF7uFPOpdUkH-gEC8Dgzl1E0Z_DXiLHx-gPE,29509
|
|
63
66
|
ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
|
|
64
67
|
ultralytics/data/explorer/explorer.py,sha256=VObECm8IUBaClQoQS_W9ctN1xKGKQVSNR0yhWiAnFeY,18642
|
|
65
68
|
ultralytics/data/explorer/utils.py,sha256=a6ugY8rKpFM8dIRcUwRyjRkRJ-zXEwe-NiJr6CLVlus,7041
|
|
66
69
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
67
|
-
ultralytics/data/explorer/gui/dash.py,sha256=
|
|
70
|
+
ultralytics/data/explorer/gui/dash.py,sha256=3Vi-k2LpUis-WHZ81Qnzlj71wpTCr4A8YxjUl0-v8T4,10042
|
|
68
71
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
69
72
|
ultralytics/engine/exporter.py,sha256=tT3Egg-56KwmvgokQUNIXVpgkXj1uxuEaw6w_wpuUu8,52004
|
|
70
|
-
ultralytics/engine/model.py,sha256=
|
|
71
|
-
ultralytics/engine/predictor.py,sha256=
|
|
73
|
+
ultralytics/engine/model.py,sha256=TdO-V81N-921SSjULFIS0Ry9TIqN6RJKQoNfMQlRwRw,21505
|
|
74
|
+
ultralytics/engine/predictor.py,sha256=95ujaUYbDtui-s4hloGmJ0yVm9IC05Ck5dyoyNTk0BU,17832
|
|
72
75
|
ultralytics/engine/results.py,sha256=TWpQOBbrvJ77FPY7a9-vcSO9jxIyVCfC6s-65ZKKuAk,27614
|
|
73
76
|
ultralytics/engine/trainer.py,sha256=xCBpfBT4YUqfW7F1sjPY0bmjOWBEnfmE3LQ1BiXPTrA,34264
|
|
74
77
|
ultralytics/engine/tuner.py,sha256=yJTecrgsZbeE4XC8iJWoUA_DKACUnDSt8N1V_PTeCcc,11758
|
|
@@ -155,7 +158,7 @@ ultralytics/trackers/utils/kalman_filter.py,sha256=JN1sAcfJZy8fTZxc8w3jUJnGQDKtg
|
|
|
155
158
|
ultralytics/trackers/utils/matching.py,sha256=c_pthBfu9sWeMVYe-dSecdWcQxUey-mQT2yMVsFH3VQ,5404
|
|
156
159
|
ultralytics/utils/__init__.py,sha256=WphOGqOoNGBGh5QBL6yQxS3eQIKahKkMPaUszvGXack,34272
|
|
157
160
|
ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
|
|
158
|
-
ultralytics/utils/benchmarks.py,sha256=
|
|
161
|
+
ultralytics/utils/benchmarks.py,sha256=YTuVrbHvgO_1xjG4lZMfvQXvdpHiq9yljw8DjdLXxDk,17563
|
|
159
162
|
ultralytics/utils/checks.py,sha256=OfIxd2_qufJpjOWOHt3NrRquGCr5GyEUHOMvjT-PhIs,27592
|
|
160
163
|
ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
|
|
161
164
|
ultralytics/utils/downloads.py,sha256=S4b_DUjZcSKWXWSVoGuSOYXt9aS_NzFz0NtkFOTHHoM,21189
|
|
@@ -164,7 +167,7 @@ ultralytics/utils/files.py,sha256=V1cD9sC3hGd5uNVdOa4uZGySGjnsXC6Lh7mjqI_UDxo,52
|
|
|
164
167
|
ultralytics/utils/instance.py,sha256=fPClvPPtTk8VeXWiRv90DrFk1j1lTUKdYJtpZKUDDtA,15575
|
|
165
168
|
ultralytics/utils/loss.py,sha256=erpbpLbt_VNOO-FItADFOjKTfwuf2A3ozECuCJiSqHM,32555
|
|
166
169
|
ultralytics/utils/metrics.py,sha256=srIy4mfWQ9ATHYdmIfAROnDQHsKmCmBnR3mDTnYezAY,53355
|
|
167
|
-
ultralytics/utils/ops.py,sha256=
|
|
170
|
+
ultralytics/utils/ops.py,sha256=lPm7zdG1cC7nf0CWucjc5c8nbcn-PDSPdldVRigvhQ0,33047
|
|
168
171
|
ultralytics/utils/patches.py,sha256=2iMWzwBpAjTt0UzaPzFO5JPVoKklUhftuo_3H7xBoDc,2659
|
|
169
172
|
ultralytics/utils/plotting.py,sha256=nl3GZsWe4-pBNwY7V8hOtT1GKAxdmwN_kCaNb8Kk9Hc,42710
|
|
170
173
|
ultralytics/utils/tal.py,sha256=fQ6dPFEJTVtFBFeTS_rtZMx_UsJyi80s3YfT8joCC6M,16015
|
|
@@ -182,9 +185,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
|
|
|
182
185
|
ultralytics/utils/callbacks/raytune.py,sha256=6OgGNuC35F29lw8Dl_d0lue4-iBR6dqrBVQnIRQDx4E,632
|
|
183
186
|
ultralytics/utils/callbacks/tensorboard.py,sha256=fyhgBgcTmEIifBqxBJkoMZ6yQNBGhSLQBAsy770-RtA,4038
|
|
184
187
|
ultralytics/utils/callbacks/wb.py,sha256=03ACY2YwpTRigD0ZQH7_zlpwMdGw0lt23zX4d5Zaz28,6650
|
|
185
|
-
ultralytics-8.1.
|
|
186
|
-
ultralytics-8.1.
|
|
187
|
-
ultralytics-8.1.
|
|
188
|
-
ultralytics-8.1.
|
|
189
|
-
ultralytics-8.1.
|
|
190
|
-
ultralytics-8.1.
|
|
188
|
+
ultralytics-8.1.6.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
189
|
+
ultralytics-8.1.6.dist-info/METADATA,sha256=1l7F6055CckTLLMTsUWhSYuZc-DyIsjyVGnc5-EUXsc,40204
|
|
190
|
+
ultralytics-8.1.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
191
|
+
ultralytics-8.1.6.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
192
|
+
ultralytics-8.1.6.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
193
|
+
ultralytics-8.1.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|