ultralytics 8.2.62__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/models/fastsam/predict.py +18 -71
- ultralytics/models/fastsam/utils.py +0 -42
- 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/utils/downloads.py +1 -1
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/METADATA +1 -1
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/RECORD +14 -14
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/WHEEL +0 -0
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.62.dist-info → ultralytics-8.2.63.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
|
@@ -1,84 +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, orig_img, img_path) in enumerate(zip(p, orig_imgs, self.batch[0])):
|
|
75
|
-
if not len(pred): # save empty boxes
|
|
76
|
-
masks = None
|
|
77
|
-
elif self.args.retina_masks:
|
|
78
|
-
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
79
|
-
masks = ops.process_mask_native(proto[i], pred[:, 6:], pred[:, :4], orig_img.shape[:2]) # HWC
|
|
80
|
-
else:
|
|
81
|
-
masks = ops.process_mask(proto[i], pred[:, 6:], pred[:, :4], img.shape[2:], upsample=True) # HWC
|
|
82
|
-
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
|
|
83
|
-
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
|
|
84
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()
|
|
@@ -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:
|
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,7 +8,7 @@ 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
14
|
ultralytics/cfg/__init__.py,sha256=fD3Llw12sIkJo4g667t6b051je9nEpwdBLGgbbVEzHY,32973
|
|
@@ -112,9 +112,9 @@ 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
|
|
@@ -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
|
|
@@ -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
|
|
File without changes
|