ultralytics 8.2.61__py3-none-any.whl → 8.2.63__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 +154 -103
- ultralytics/data/annotator.py +16 -12
- ultralytics/data/augment.py +1478 -195
- ultralytics/data/explorer/gui/dash.py +41 -26
- ultralytics/data/loaders.py +1 -1
- ultralytics/engine/model.py +483 -176
- ultralytics/engine/results.py +1035 -256
- ultralytics/models/fastsam/predict.py +18 -73
- ultralytics/models/fastsam/utils.py +0 -42
- ultralytics/models/nas/predict.py +1 -3
- ultralytics/models/rtdetr/predict.py +4 -6
- ultralytics/models/sam/predict.py +1 -3
- ultralytics/models/yolo/classify/predict.py +1 -3
- ultralytics/models/yolo/detect/predict.py +1 -3
- ultralytics/models/yolo/pose/predict.py +1 -3
- ultralytics/models/yolo/segment/predict.py +1 -3
- ultralytics/solutions/streamlit_inference.py +5 -2
- ultralytics/utils/downloads.py +1 -1
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/METADATA +1 -1
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/RECORD +25 -25
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/WHEEL +1 -1
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.61.dist-info → ultralytics-8.2.63.dist-info}/top_level.txt +0 -0
|
@@ -1,86 +1,31 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
-
|
|
3
2
|
import torch
|
|
4
3
|
|
|
5
|
-
from ultralytics.
|
|
6
|
-
from ultralytics.
|
|
7
|
-
|
|
8
|
-
from
|
|
4
|
+
from ultralytics.models.yolo.segment import SegmentationPredictor
|
|
5
|
+
from ultralytics.utils.metrics import box_iou
|
|
6
|
+
|
|
7
|
+
from .utils import adjust_bboxes_to_image_border
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
class FastSAMPredictor(
|
|
10
|
+
class FastSAMPredictor(SegmentationPredictor):
|
|
12
11
|
"""
|
|
13
12
|
FastSAMPredictor is specialized for fast SAM (Segment Anything Model) segmentation prediction tasks in Ultralytics
|
|
14
13
|
YOLO framework.
|
|
15
14
|
|
|
16
|
-
This class extends the
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Attributes:
|
|
21
|
-
cfg (dict): Configuration parameters for prediction.
|
|
22
|
-
overrides (dict, optional): Optional parameter overrides for custom behavior.
|
|
23
|
-
_callbacks (dict, optional): Optional list of callback functions to be invoked during prediction.
|
|
15
|
+
This class extends the SegmentationPredictor, customizing the prediction pipeline specifically for fast SAM. It
|
|
16
|
+
adjusts post-processing steps to incorporate mask prediction and non-max suppression while optimizing for single-
|
|
17
|
+
class segmentation.
|
|
24
18
|
"""
|
|
25
19
|
|
|
26
|
-
def __init__(self, cfg=DEFAULT_CFG, overrides=None, _callbacks=None):
|
|
27
|
-
"""
|
|
28
|
-
Initializes the FastSAMPredictor class, inheriting from DetectionPredictor and setting the task to 'segment'.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
cfg (dict): Configuration parameters for prediction.
|
|
32
|
-
overrides (dict, optional): Optional parameter overrides for custom behavior.
|
|
33
|
-
_callbacks (dict, optional): Optional list of callback functions to be invoked during prediction.
|
|
34
|
-
"""
|
|
35
|
-
super().__init__(cfg, overrides, _callbacks)
|
|
36
|
-
self.args.task = "segment"
|
|
37
|
-
|
|
38
20
|
def postprocess(self, preds, img, orig_imgs):
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
(list): A list of Results objects, each containing processed boxes, masks, and other metadata.
|
|
50
|
-
"""
|
|
51
|
-
p = ops.non_max_suppression(
|
|
52
|
-
preds[0],
|
|
53
|
-
self.args.conf,
|
|
54
|
-
self.args.iou,
|
|
55
|
-
agnostic=self.args.agnostic_nms,
|
|
56
|
-
max_det=self.args.max_det,
|
|
57
|
-
nc=1, # set to 1 class since SAM has no class predictions
|
|
58
|
-
classes=self.args.classes,
|
|
59
|
-
)
|
|
60
|
-
full_box = torch.zeros(p[0].shape[1], device=p[0].device)
|
|
61
|
-
full_box[2], full_box[3], full_box[4], full_box[6:] = img.shape[3], img.shape[2], 1.0, 1.0
|
|
62
|
-
full_box = full_box.view(1, -1)
|
|
63
|
-
critical_iou_index = bbox_iou(full_box[0][:4], p[0][:, :4], iou_thres=0.9, image_shape=img.shape[2:])
|
|
64
|
-
if critical_iou_index.numel() != 0:
|
|
65
|
-
full_box[0][4] = p[0][critical_iou_index][:, 4]
|
|
66
|
-
full_box[0][6:] = p[0][critical_iou_index][:, 6:]
|
|
67
|
-
p[0][critical_iou_index] = full_box
|
|
68
|
-
|
|
69
|
-
if not isinstance(orig_imgs, list): # input images are a torch.Tensor, not a list
|
|
70
|
-
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
71
|
-
|
|
72
|
-
results = []
|
|
73
|
-
proto = preds[1][-1] if len(preds[1]) == 3 else preds[1] # second output is len 3 if pt, but only 1 if exported
|
|
74
|
-
for i, pred in enumerate(p):
|
|
75
|
-
orig_img = orig_imgs[i]
|
|
76
|
-
img_path = self.batch[0][i]
|
|
77
|
-
if not len(pred): # save empty boxes
|
|
78
|
-
masks = None
|
|
79
|
-
elif self.args.retina_masks:
|
|
80
|
-
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
81
|
-
masks = ops.process_mask_native(proto[i], pred[:, 6:], pred[:, :4], orig_img.shape[:2]) # HWC
|
|
82
|
-
else:
|
|
83
|
-
masks = ops.process_mask(proto[i], pred[:, 6:], pred[:, :4], img.shape[2:], upsample=True) # HWC
|
|
84
|
-
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
85
|
-
results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred[:, :6], masks=masks))
|
|
21
|
+
"""Applies box postprocess for FastSAM predictions."""
|
|
22
|
+
results = super().postprocess(preds, img, orig_imgs)
|
|
23
|
+
for result in results:
|
|
24
|
+
full_box = torch.tensor(
|
|
25
|
+
[0, 0, result.orig_shape[1], result.orig_shape[0]], device=preds[0].device, dtype=torch.float32
|
|
26
|
+
)
|
|
27
|
+
boxes = adjust_bboxes_to_image_border(result.boxes.xyxy, result.orig_shape)
|
|
28
|
+
idx = torch.nonzero(box_iou(full_box[None], boxes) > 0.9).flatten()
|
|
29
|
+
if idx.numel() != 0:
|
|
30
|
+
result.boxes.xyxy[idx] = full_box
|
|
86
31
|
return results
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
|
-
import torch
|
|
4
|
-
|
|
5
3
|
|
|
6
4
|
def adjust_bboxes_to_image_border(boxes, image_shape, threshold=20):
|
|
7
5
|
"""
|
|
@@ -25,43 +23,3 @@ def adjust_bboxes_to_image_border(boxes, image_shape, threshold=20):
|
|
|
25
23
|
boxes[boxes[:, 2] > w - threshold, 2] = w # x2
|
|
26
24
|
boxes[boxes[:, 3] > h - threshold, 3] = h # y2
|
|
27
25
|
return boxes
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def bbox_iou(box1, boxes, iou_thres=0.9, image_shape=(640, 640), raw_output=False):
|
|
31
|
-
"""
|
|
32
|
-
Compute the Intersection-Over-Union of a bounding box with respect to an array of other bounding boxes.
|
|
33
|
-
|
|
34
|
-
Args:
|
|
35
|
-
box1 (torch.Tensor): (4, )
|
|
36
|
-
boxes (torch.Tensor): (n, 4)
|
|
37
|
-
iou_thres (float): IoU threshold
|
|
38
|
-
image_shape (tuple): (height, width)
|
|
39
|
-
raw_output (bool): If True, return the raw IoU values instead of the indices
|
|
40
|
-
|
|
41
|
-
Returns:
|
|
42
|
-
high_iou_indices (torch.Tensor): Indices of boxes with IoU > thres
|
|
43
|
-
"""
|
|
44
|
-
boxes = adjust_bboxes_to_image_border(boxes, image_shape)
|
|
45
|
-
# Obtain coordinates for intersections
|
|
46
|
-
x1 = torch.max(box1[0], boxes[:, 0])
|
|
47
|
-
y1 = torch.max(box1[1], boxes[:, 1])
|
|
48
|
-
x2 = torch.min(box1[2], boxes[:, 2])
|
|
49
|
-
y2 = torch.min(box1[3], boxes[:, 3])
|
|
50
|
-
|
|
51
|
-
# Compute the area of intersection
|
|
52
|
-
intersection = (x2 - x1).clamp(0) * (y2 - y1).clamp(0)
|
|
53
|
-
|
|
54
|
-
# Compute the area of both individual boxes
|
|
55
|
-
box1_area = (box1[2] - box1[0]) * (box1[3] - box1[1])
|
|
56
|
-
box2_area = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1])
|
|
57
|
-
|
|
58
|
-
# Compute the area of union
|
|
59
|
-
union = box1_area + box2_area - intersection
|
|
60
|
-
|
|
61
|
-
# Compute the IoU
|
|
62
|
-
iou = intersection / union # Should be shape (n, )
|
|
63
|
-
if raw_output:
|
|
64
|
-
return 0 if iou.numel() == 0 else iou
|
|
65
|
-
|
|
66
|
-
# return indices of boxes with IoU > thres
|
|
67
|
-
return torch.nonzero(iou > iou_thres).flatten()
|
|
@@ -52,9 +52,7 @@ class NASPredictor(BasePredictor):
|
|
|
52
52
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
53
53
|
|
|
54
54
|
results = []
|
|
55
|
-
for
|
|
56
|
-
orig_img = orig_imgs[i]
|
|
55
|
+
for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
|
|
57
56
|
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
58
|
-
img_path = self.batch[0][i]
|
|
59
57
|
results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
|
|
60
58
|
return results
|
|
@@ -56,18 +56,16 @@ class RTDETRPredictor(BasePredictor):
|
|
|
56
56
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
57
57
|
|
|
58
58
|
results = []
|
|
59
|
-
for
|
|
59
|
+
for bbox, score, orig_img, img_path in zip(bboxes, scores, orig_imgs, self.batch[0]): # (300, 4)
|
|
60
60
|
bbox = ops.xywh2xyxy(bbox)
|
|
61
|
-
|
|
62
|
-
idx =
|
|
61
|
+
max_score, cls = score.max(-1, keepdim=True) # (300, 1)
|
|
62
|
+
idx = max_score.squeeze(-1) > self.args.conf # (300, )
|
|
63
63
|
if self.args.classes is not None:
|
|
64
64
|
idx = (cls == torch.tensor(self.args.classes, device=cls.device)).any(1) & idx
|
|
65
|
-
pred = torch.cat([bbox,
|
|
66
|
-
orig_img = orig_imgs[i]
|
|
65
|
+
pred = torch.cat([bbox, max_score, cls], dim=-1)[idx] # filter
|
|
67
66
|
oh, ow = orig_img.shape[:2]
|
|
68
67
|
pred[..., [0, 2]] *= ow
|
|
69
68
|
pred[..., [1, 3]] *= oh
|
|
70
|
-
img_path = self.batch[0][i]
|
|
71
69
|
results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
|
|
72
70
|
return results
|
|
73
71
|
|
|
@@ -372,8 +372,7 @@ class Predictor(BasePredictor):
|
|
|
372
372
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
373
373
|
|
|
374
374
|
results = []
|
|
375
|
-
for
|
|
376
|
-
orig_img = orig_imgs[i]
|
|
375
|
+
for masks, orig_img, img_path in zip([pred_masks], orig_imgs, self.batch[0]):
|
|
377
376
|
if pred_bboxes is not None:
|
|
378
377
|
pred_bboxes = ops.scale_boxes(img.shape[2:], pred_bboxes.float(), orig_img.shape, padding=False)
|
|
379
378
|
cls = torch.arange(len(pred_masks), dtype=torch.int32, device=pred_masks.device)
|
|
@@ -381,7 +380,6 @@ class Predictor(BasePredictor):
|
|
|
381
380
|
|
|
382
381
|
masks = ops.scale_masks(masks[None].float(), orig_img.shape[:2], padding=False)[0]
|
|
383
382
|
masks = masks > self.model.mask_threshold # to bool
|
|
384
|
-
img_path = self.batch[0][i]
|
|
385
383
|
results.append(Results(orig_img, path=img_path, names=names, masks=masks, boxes=pred_bboxes))
|
|
386
384
|
# Reset segment-all mode.
|
|
387
385
|
self.segment_all = False
|
|
@@ -54,8 +54,6 @@ class ClassificationPredictor(BasePredictor):
|
|
|
54
54
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
55
55
|
|
|
56
56
|
results = []
|
|
57
|
-
for
|
|
58
|
-
orig_img = orig_imgs[i]
|
|
59
|
-
img_path = self.batch[0][i]
|
|
57
|
+
for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
|
|
60
58
|
results.append(Results(orig_img, path=img_path, names=self.model.names, probs=pred))
|
|
61
59
|
return results
|
|
@@ -35,9 +35,7 @@ class DetectionPredictor(BasePredictor):
|
|
|
35
35
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
36
36
|
|
|
37
37
|
results = []
|
|
38
|
-
for
|
|
39
|
-
orig_img = orig_imgs[i]
|
|
38
|
+
for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
|
|
40
39
|
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
41
|
-
img_path = self.batch[0][i]
|
|
42
40
|
results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
|
|
43
41
|
return results
|
|
@@ -46,12 +46,10 @@ class PosePredictor(DetectionPredictor):
|
|
|
46
46
|
orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
|
|
47
47
|
|
|
48
48
|
results = []
|
|
49
|
-
for
|
|
50
|
-
orig_img = orig_imgs[i]
|
|
49
|
+
for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0]):
|
|
51
50
|
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape).round()
|
|
52
51
|
pred_kpts = pred[:, 6:].view(len(pred), *self.model.kpt_shape) if len(pred) else pred[:, 6:]
|
|
53
52
|
pred_kpts = ops.scale_coords(img.shape[2:], pred_kpts, orig_img.shape)
|
|
54
|
-
img_path = self.batch[0][i]
|
|
55
53
|
results.append(
|
|
56
54
|
Results(orig_img, path=img_path, names=self.model.names, boxes=pred[:, :6], keypoints=pred_kpts)
|
|
57
55
|
)
|
|
@@ -42,9 +42,7 @@ class SegmentationPredictor(DetectionPredictor):
|
|
|
42
42
|
|
|
43
43
|
results = []
|
|
44
44
|
proto = preds[1][-1] if isinstance(preds[1], tuple) else preds[1] # tuple if PyTorch model or array if exported
|
|
45
|
-
for i, pred in enumerate(p):
|
|
46
|
-
orig_img = orig_imgs[i]
|
|
47
|
-
img_path = self.batch[0][i]
|
|
45
|
+
for i, (pred, orig_img, img_path) in enumerate(zip(p, orig_imgs, self.batch[0])):
|
|
48
46
|
if not len(pred): # save empty boxes
|
|
49
47
|
masks = None
|
|
50
48
|
elif self.args.retina_masks:
|
|
@@ -10,7 +10,7 @@ from ultralytics.utils.checks import check_requirements
|
|
|
10
10
|
from ultralytics.utils.downloads import GITHUB_ASSETS_STEMS
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def inference():
|
|
13
|
+
def inference(model=None):
|
|
14
14
|
"""Runs real-time object detection on video input using Ultralytics YOLOv8 in a Streamlit application."""
|
|
15
15
|
check_requirements("streamlit>=1.29.0") # scope imports for faster ultralytics package load speeds
|
|
16
16
|
import streamlit as st
|
|
@@ -67,7 +67,10 @@ def inference():
|
|
|
67
67
|
vid_file_name = 0
|
|
68
68
|
|
|
69
69
|
# Add dropdown menu for model selection
|
|
70
|
-
available_models =
|
|
70
|
+
available_models = [x.replace("yolo", "YOLO") for x in GITHUB_ASSETS_STEMS if x.startswith("yolov8")]
|
|
71
|
+
if model:
|
|
72
|
+
available_models.insert(0, model)
|
|
73
|
+
|
|
71
74
|
selected_model = st.sidebar.selectbox("Model", available_models)
|
|
72
75
|
with st.spinner("Model is downloading..."):
|
|
73
76
|
model = YOLO(f"{selected_model.lower()}.pt") # Load the YOLO model
|
ultralytics/utils/downloads.py
CHANGED
|
@@ -199,7 +199,7 @@ def check_disk_space(url="https://ultralytics.com/assets/coco8.zip", path=Path.c
|
|
|
199
199
|
Check if there is sufficient disk space to download and store a file.
|
|
200
200
|
|
|
201
201
|
Args:
|
|
202
|
-
url (str, optional): The URL to the file. Defaults to 'https://
|
|
202
|
+
url (str, optional): The URL to the file. Defaults to 'https://ultralytics.com/assets/coco8.zip'.
|
|
203
203
|
path (str | Path, optional): The path or drive to check the available free space on.
|
|
204
204
|
sf (float, optional): Safety factor, the multiplier for the required free space. Defaults to 2.0.
|
|
205
205
|
hard (bool, optional): Whether to throw an error or not on insufficient disk space. Defaults to True.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.63
|
|
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
|
|
@@ -8,10 +8,10 @@ tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
|
|
|
8
8
|
tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
|
|
9
9
|
tests/test_python.py,sha256=qhtSQ7NDfBChsVUxeSwfUIkoKq0S1Z-Rd9_MP023Y5k,21794
|
|
10
10
|
tests/test_solutions.py,sha256=EACnPXbeJe2aVTOKfqMk5jclKKCWCVgFEzjpR6y7Sh8,3304
|
|
11
|
-
ultralytics/__init__.py,sha256
|
|
11
|
+
ultralytics/__init__.py,sha256=_WFzbI-3Dv4xSPA2TrlMjV3n1LrQ7moyS-ONUMEL0wU,694
|
|
12
12
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
|
13
13
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
|
14
|
-
ultralytics/cfg/__init__.py,sha256=
|
|
14
|
+
ultralytics/cfg/__init__.py,sha256=fD3Llw12sIkJo4g667t6b051je9nEpwdBLGgbbVEzHY,32973
|
|
15
15
|
ultralytics/cfg/default.yaml,sha256=xRKVF-Z9E3imXTU9OCK94kj3jGgYoo67VJQwuYlHiUU,8228
|
|
16
16
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
|
|
17
17
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=QVfp_Qp-4rukuicaB4qx86NxSHM8Mrzym8l_fIDo8gw,1195
|
|
@@ -83,25 +83,25 @@ ultralytics/cfg/models/v9/yolov9t.yaml,sha256=qL__kr6GoefpQWP4jV0jdzwTp46bdFUcqt
|
|
|
83
83
|
ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q2KYnVudo,883
|
|
84
84
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
|
|
85
85
|
ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
|
|
86
|
-
ultralytics/data/annotator.py,sha256=
|
|
87
|
-
ultralytics/data/augment.py,sha256=
|
|
86
|
+
ultralytics/data/annotator.py,sha256=1Hyu6ubrBL8KmRrt1keGn-K4XTqQdAVyIwTsQiBtzLU,2489
|
|
87
|
+
ultralytics/data/augment.py,sha256=NrcaGAB7aUbQRaggkxnBHHSKPd3GVaTxdVwcHsZs6xc,119151
|
|
88
88
|
ultralytics/data/base.py,sha256=C3teLnw97ZTbpJHT9P7yYWosAKocMzgJjRe1rxgfpls,13524
|
|
89
89
|
ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
|
|
90
90
|
ultralytics/data/converter.py,sha256=7640xKuf7LPeoTwoCvgbIXM5xbzyq72Hu2Rf2lrgjRY,17554
|
|
91
91
|
ultralytics/data/dataset.py,sha256=2m_YOw73gO_mzvitel5OKuQpbkwFTDnpPNcUIz4cayI,22579
|
|
92
|
-
ultralytics/data/loaders.py,sha256=
|
|
92
|
+
ultralytics/data/loaders.py,sha256=cAyGlSNonzYXU5eBXiDVFrDOlTeziXGyO7_UaToUGrc,24152
|
|
93
93
|
ultralytics/data/split_dota.py,sha256=fWezt1Bo3jiZ6AyUWdBtTUuvLamPv1t7JD-DirM9gQ8,10142
|
|
94
94
|
ultralytics/data/utils.py,sha256=GHmqx6e5yRfcUD2Qkwk-tQfhXCwtUMFD3Uf6d699nGo,31046
|
|
95
95
|
ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
|
|
96
96
|
ultralytics/data/explorer/explorer.py,sha256=3puHbDFgoEjiRkLzKOGc1CLTUNbqJrLrq8MeBYLeBFc,19222
|
|
97
97
|
ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
|
|
98
98
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
99
|
-
ultralytics/data/explorer/gui/dash.py,sha256=
|
|
99
|
+
ultralytics/data/explorer/gui/dash.py,sha256=vZ476NaUH4FKU08rAJ1K9WNyKtg0soMyJJxqg176yWc,10498
|
|
100
100
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
101
101
|
ultralytics/engine/exporter.py,sha256=mJqo3TbYuVcNA26rN5Fc57a1uVAqYfT1P3GSSE5k4rU,58741
|
|
102
|
-
ultralytics/engine/model.py,sha256=
|
|
102
|
+
ultralytics/engine/model.py,sha256=zeyyXy4dY3fTj0GjYeTuvJcKyNmlEX34ntSzLF3_T7E,52013
|
|
103
103
|
ultralytics/engine/predictor.py,sha256=W58kDCFH2AfoFzpGbos3k8zUEVsLunBuM8sc2B64rPY,17449
|
|
104
|
-
ultralytics/engine/results.py,sha256=
|
|
104
|
+
ultralytics/engine/results.py,sha256=oNAzSKdKxxx_5QQd9opzCevvgPhspdY5BkWxoz5bQ8E,69882
|
|
105
105
|
ultralytics/engine/trainer.py,sha256=vFdWN6I-DoAHZYmxjRDeYcc44B9i8tBtK8u6oMgyj9o,35476
|
|
106
106
|
ultralytics/engine/tuner.py,sha256=iZrgMmXSDpfuDu4bdFRflmAsscys2-8W8qAGxSyOVJE,11844
|
|
107
107
|
ultralytics/engine/validator.py,sha256=Y21Uo8_Zto4qjk_YqQk6k7tyfpq_Qk9cfjeXeyDRxs8,14643
|
|
@@ -112,24 +112,24 @@ ultralytics/hub/utils.py,sha256=tXfM3QbXBcf4Y6StgHI1pktT4OM7Ic9eF3xiBFHGlhY,9721
|
|
|
112
112
|
ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
|
|
113
113
|
ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
|
|
114
114
|
ultralytics/models/fastsam/model.py,sha256=c7GGwaa9AXssJFwrcuytFHpPOlgSrS3n0utyf4JSL2o,1055
|
|
115
|
-
ultralytics/models/fastsam/predict.py,sha256=
|
|
115
|
+
ultralytics/models/fastsam/predict.py,sha256=_bOSU75qLK1XESxl-XW1SOxriCaX7nsvl5x4exG_c4Q,1324
|
|
116
116
|
ultralytics/models/fastsam/prompt.py,sha256=4d9e1fEuGpTPWRfu3rG6HT8Bc0rtqJtRpNrlHkmkKcY,15860
|
|
117
|
-
ultralytics/models/fastsam/utils.py,sha256=
|
|
117
|
+
ultralytics/models/fastsam/utils.py,sha256=dCSm6l5yua_PTT5aNvyOvn1Q0h42Ta_NovO7sTbsBxM,715
|
|
118
118
|
ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
|
|
119
119
|
ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
|
|
120
120
|
ultralytics/models/nas/model.py,sha256=nw7574loYfJHiEQx_ttemF9gpyehvWQVVYTIH0lsTSo,2865
|
|
121
|
-
ultralytics/models/nas/predict.py,sha256=
|
|
121
|
+
ultralytics/models/nas/predict.py,sha256=uRtr9hLwkGG0w3lYDgiuqd0ataQ_RYR_BQdY0qMz5NI,2097
|
|
122
122
|
ultralytics/models/nas/val.py,sha256=tVRfUEy1vEG67O5JZQzQO0gPHjt_WWiPvRvPlg_Btgg,1669
|
|
123
123
|
ultralytics/models/rtdetr/__init__.py,sha256=AZga1C3qlGTtgpAupDW4doijq5aZlQeF8e55_DP2Uas,197
|
|
124
124
|
ultralytics/models/rtdetr/model.py,sha256=2VkppF1_581XmQ0UI7lo8fX7MqhAJPXVMr2jyMHXtbk,1988
|
|
125
|
-
ultralytics/models/rtdetr/predict.py,sha256
|
|
125
|
+
ultralytics/models/rtdetr/predict.py,sha256=GmeNiFszDajq9YNPi0jW89CqP0MRD5Gtmokh9z0JAQc,3568
|
|
126
126
|
ultralytics/models/rtdetr/train.py,sha256=20AFYVW9NPxw0-cp-sRdIovWidFL0IIhJRv2oZjkPlM,3685
|
|
127
127
|
ultralytics/models/rtdetr/val.py,sha256=4QQArdaGEY8rJsJuvyJ032f8GGVGdV2jURHK2EdMxyk,5566
|
|
128
128
|
ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
|
|
129
129
|
ultralytics/models/sam/amg.py,sha256=He2c4nIoZ__F_pL18rRl278R8iBjWXBM2Z_vxfuVOkk,7971
|
|
130
130
|
ultralytics/models/sam/build.py,sha256=-i-vj0egQ2idBZUf3Xf-H89QeToM3ky0HTxKP_KEXTs,4944
|
|
131
131
|
ultralytics/models/sam/model.py,sha256=dkEhqJEZFuSoKubMaAjUx1U9Np49AII3nBScdH8rMBI,4707
|
|
132
|
-
ultralytics/models/sam/predict.py,sha256=
|
|
132
|
+
ultralytics/models/sam/predict.py,sha256=hachjdcJ175v_oOUPmu_jG_VSe2wCbpLpi4qymUJV34,23575
|
|
133
133
|
ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
134
134
|
ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
|
|
135
135
|
ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
|
|
@@ -142,11 +142,11 @@ ultralytics/models/utils/ops.py,sha256=sn1vdwIK2LaCvxvuuP31Yw2HXEMAmQdo7KD9JVh4G
|
|
|
142
142
|
ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xskBM8gEk,247
|
|
143
143
|
ultralytics/models/yolo/model.py,sha256=wOrJ6HWU9KhG7pVcgK4HdI8xe2GSShe8V4v4bJDVydM,4041
|
|
144
144
|
ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
|
|
145
|
-
ultralytics/models/yolo/classify/predict.py,sha256=
|
|
145
|
+
ultralytics/models/yolo/classify/predict.py,sha256=L89AUwUi-G7Cj2PDsRqqJwr91pXoFue_8pXdI7KJdYY,2474
|
|
146
146
|
ultralytics/models/yolo/classify/train.py,sha256=dNAUROnrS5LAbu6EKw29n6EUEoKYQaNjALoh3mo1Mm0,6291
|
|
147
147
|
ultralytics/models/yolo/classify/val.py,sha256=MXdtWrBYVpfFuPfFPOTLKa_wBdTIA4dBZguT-EtldZ4,4909
|
|
148
148
|
ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
|
|
149
|
-
ultralytics/models/yolo/detect/predict.py,sha256=
|
|
149
|
+
ultralytics/models/yolo/detect/predict.py,sha256=HcbhWUEqF97b8IjIt_scanHvSy6vzyRgybFo08o1Eok,1471
|
|
150
150
|
ultralytics/models/yolo/detect/train.py,sha256=8Ulq1SPNLrkOqXj0Yt5zNR1c_Xl_QnOjllCdqBHUMds,6353
|
|
151
151
|
ultralytics/models/yolo/detect/val.py,sha256=WaCGB_B_TTIbeR8ZxKoC2YJrPdIgFJ-fP8EI7SoE4NA,15128
|
|
152
152
|
ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
|
|
@@ -154,11 +154,11 @@ ultralytics/models/yolo/obb/predict.py,sha256=prfDzhwuVHKF6CRwnFVBA-YFI5q7U7NEQw
|
|
|
154
154
|
ultralytics/models/yolo/obb/train.py,sha256=tWpFtcasMwWq1A_9VdbEg5pIVHwuWwmeLOyj-S4_1sY,1473
|
|
155
155
|
ultralytics/models/yolo/obb/val.py,sha256=fflxcpdAAYJBzao1TlEbNY0rWl-9irmCIdrXcAbvkQY,9303
|
|
156
156
|
ultralytics/models/yolo/pose/__init__.py,sha256=OGvxN3LqJot2h8GX1csJ1KErsHnDKsm33Ce6ZBU9Lr4,199
|
|
157
|
-
ultralytics/models/yolo/pose/predict.py,sha256=
|
|
157
|
+
ultralytics/models/yolo/pose/predict.py,sha256=jQXvcqdjgnOG1sRw7L-mVZ6HcVkE2pgnkPMo7xBYRtg,2365
|
|
158
158
|
ultralytics/models/yolo/pose/train.py,sha256=ki8bkT8WfIFjTKf1ofeRDqeIqmk6A8a7AFog7nM-otM,2926
|
|
159
159
|
ultralytics/models/yolo/pose/val.py,sha256=QnPrSnlHHN7UVoZ6tgtRjuJjwOZY8l-MEYxuQPYvJ-4,12364
|
|
160
160
|
ultralytics/models/yolo/segment/__init__.py,sha256=mSbKOE8BnHL7PL2nCOVG7dRM7CI6hJezFPPwZFjEmy8,247
|
|
161
|
-
ultralytics/models/yolo/segment/predict.py,sha256=
|
|
161
|
+
ultralytics/models/yolo/segment/predict.py,sha256=ETBXOZ4dw8i74SPRkt1xkKrpJb5ml_hacAjDNSE5LAY,2468
|
|
162
162
|
ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBINBkI9K8-3sQ,2298
|
|
163
163
|
ultralytics/models/yolo/segment/val.py,sha256=kPnlAd5aA6kHsIPp5UCsGTy-ai5kyKx2QggVGCH_H6U,14034
|
|
164
164
|
ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2bmETJUhsVTBI,103
|
|
@@ -182,7 +182,7 @@ ultralytics/solutions/object_counter.py,sha256=C80ET_-tIKv7pfshO8DFwimCieBHV4Ns7
|
|
|
182
182
|
ultralytics/solutions/parking_management.py,sha256=_cJ4kXIq4l56WVyNsq6RUVe_mv5oBy-fmt1vIyevPko,10139
|
|
183
183
|
ultralytics/solutions/queue_management.py,sha256=CxFvHwSHq8OZ5aW7x2F10jcjkGAQ3LSJ5z69zusRVbs,6781
|
|
184
184
|
ultralytics/solutions/speed_estimation.py,sha256=kjqMSHGTHMZaNgTKNKWULxnJQNsvhq4WMUphMVlBjsc,6768
|
|
185
|
-
ultralytics/solutions/streamlit_inference.py,sha256=
|
|
185
|
+
ultralytics/solutions/streamlit_inference.py,sha256=znX2pHkaAd7CfTiQn6ieguBHAnlKqlEV0rlpF-TQMTQ,5633
|
|
186
186
|
ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
|
|
187
187
|
ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
|
|
188
188
|
ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
|
|
@@ -197,7 +197,7 @@ ultralytics/utils/autobatch.py,sha256=gPFcREMsMHRAuTQiBnNZ9Mm1XNqmQW-uMPhveDFEQ_
|
|
|
197
197
|
ultralytics/utils/benchmarks.py,sha256=nsoCJx755RWAZz0D6igTrM0FM2BoQXgLCMbXaMqvZlk,23664
|
|
198
198
|
ultralytics/utils/checks.py,sha256=QIltfNxlZdMOTzXqU815MBIevMj_TKBU_VeVXqjXdOo,28411
|
|
199
199
|
ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
|
|
200
|
-
ultralytics/utils/downloads.py,sha256=
|
|
200
|
+
ultralytics/utils/downloads.py,sha256=NB9UDas5f8Rzxt_PS1vDKkSgCxcJ0R_-pjNyZ8E3OUM,21897
|
|
201
201
|
ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
|
|
202
202
|
ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
|
|
203
203
|
ultralytics/utils/instance.py,sha256=5daM5nkxBv9hr5QzyII8zmuFj24hHuNtcr4EMCHAtpY,15654
|
|
@@ -221,9 +221,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
|
|
|
221
221
|
ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
|
|
222
222
|
ultralytics/utils/callbacks/tensorboard.py,sha256=QEgOVhUqY9akOs5TJIwz1Rvn6l32xWLpOxlwEyWF0B8,4136
|
|
223
223
|
ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
|
|
224
|
-
ultralytics-8.2.
|
|
225
|
-
ultralytics-8.2.
|
|
226
|
-
ultralytics-8.2.
|
|
227
|
-
ultralytics-8.2.
|
|
228
|
-
ultralytics-8.2.
|
|
229
|
-
ultralytics-8.2.
|
|
224
|
+
ultralytics-8.2.63.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
225
|
+
ultralytics-8.2.63.dist-info/METADATA,sha256=KIk6LQCwRNLtxbVHfsToCUjqXkypVGxbVObVQOcGpI8,41217
|
|
226
|
+
ultralytics-8.2.63.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
|
|
227
|
+
ultralytics-8.2.63.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
228
|
+
ultralytics-8.2.63.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
229
|
+
ultralytics-8.2.63.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|