ultralytics 8.3.197__py3-none-any.whl → 8.3.198__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tests/test_engine.py +9 -1
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +0 -1
- ultralytics/cfg/default.yaml +96 -94
- ultralytics/cfg/trackers/botsort.yaml +16 -17
- ultralytics/cfg/trackers/bytetrack.yaml +9 -11
- ultralytics/data/augment.py +1 -1
- ultralytics/data/dataset.py +1 -1
- ultralytics/engine/exporter.py +35 -35
- ultralytics/engine/predictor.py +1 -2
- ultralytics/engine/results.py +1 -1
- ultralytics/engine/trainer.py +5 -5
- ultralytics/engine/tuner.py +54 -32
- ultralytics/models/sam/modules/decoders.py +3 -3
- ultralytics/models/sam/modules/sam.py +5 -5
- ultralytics/models/sam/predict.py +11 -11
- ultralytics/models/yolo/classify/train.py +2 -7
- ultralytics/models/yolo/classify/val.py +2 -2
- ultralytics/models/yolo/detect/predict.py +1 -1
- ultralytics/models/yolo/detect/train.py +1 -6
- ultralytics/models/yolo/detect/val.py +4 -4
- ultralytics/models/yolo/obb/val.py +3 -3
- ultralytics/models/yolo/pose/predict.py +1 -1
- ultralytics/models/yolo/pose/train.py +0 -6
- ultralytics/models/yolo/pose/val.py +2 -2
- ultralytics/models/yolo/segment/predict.py +2 -2
- ultralytics/models/yolo/segment/train.py +0 -5
- ultralytics/models/yolo/segment/val.py +9 -7
- ultralytics/models/yolo/yoloe/val.py +1 -1
- ultralytics/nn/modules/block.py +1 -1
- ultralytics/nn/tasks.py +2 -2
- ultralytics/utils/checks.py +1 -1
- ultralytics/utils/metrics.py +6 -6
- ultralytics/utils/nms.py +5 -13
- ultralytics/utils/plotting.py +22 -36
- ultralytics/utils/torch_utils.py +9 -5
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/METADATA +1 -1
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/RECORD +42 -42
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.197.dist-info → ultralytics-8.3.198.dist-info}/top_level.txt +0 -0
ultralytics/nn/tasks.py
CHANGED
@@ -766,7 +766,7 @@ class RTDETRDetectionModel(DetectionModel):
|
|
766
766
|
|
767
767
|
img = batch["img"]
|
768
768
|
# NOTE: preprocess gt_bbox and gt_labels to list.
|
769
|
-
bs =
|
769
|
+
bs = img.shape[0]
|
770
770
|
batch_idx = batch["batch_idx"]
|
771
771
|
gt_groups = [(batch_idx == i).sum().item() for i in range(bs)]
|
772
772
|
targets = {
|
@@ -923,7 +923,7 @@ class WorldModel(DetectionModel):
|
|
923
923
|
(torch.Tensor): Model's output tensor.
|
924
924
|
"""
|
925
925
|
txt_feats = (self.txt_feats if txt_feats is None else txt_feats).to(device=x.device, dtype=x.dtype)
|
926
|
-
if
|
926
|
+
if txt_feats.shape[0] != x.shape[0] or self.model[-1].export:
|
927
927
|
txt_feats = txt_feats.expand(x.shape[0], -1, -1)
|
928
928
|
ori_txt_feats = txt_feats.clone()
|
929
929
|
y, dt, embeddings = [], [], [] # outputs
|
ultralytics/utils/checks.py
CHANGED
@@ -907,7 +907,7 @@ def is_intel():
|
|
907
907
|
try:
|
908
908
|
result = subprocess.run(["xpu-smi", "discovery"], capture_output=True, text=True, timeout=5)
|
909
909
|
return "intel" in result.stdout.lower()
|
910
|
-
except
|
910
|
+
except Exception: # broad clause to capture all Intel GPU exception types
|
911
911
|
return False
|
912
912
|
|
913
913
|
|
ultralytics/utils/metrics.py
CHANGED
@@ -397,11 +397,11 @@ class ConfusionMatrix(DataExportMixin):
|
|
397
397
|
gt_cls, gt_bboxes = batch["cls"], batch["bboxes"]
|
398
398
|
if self.matches is not None: # only if visualization is enabled
|
399
399
|
self.matches = {k: defaultdict(list) for k in {"TP", "FP", "FN", "GT"}}
|
400
|
-
for i in range(
|
400
|
+
for i in range(gt_cls.shape[0]):
|
401
401
|
self._append_matches("GT", batch, i) # store GT
|
402
402
|
is_obb = gt_bboxes.shape[1] == 5 # check if boxes contains angle for OBB
|
403
403
|
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
|
404
|
-
no_pred =
|
404
|
+
no_pred = detections["cls"].shape[0] == 0
|
405
405
|
if gt_cls.shape[0] == 0: # Check if labels is empty
|
406
406
|
if not no_pred:
|
407
407
|
detections = {k: detections[k][detections["conf"] > conf] for k in detections}
|
@@ -491,13 +491,13 @@ class ConfusionMatrix(DataExportMixin):
|
|
491
491
|
for i, mtype in enumerate(["GT", "FP", "TP", "FN"]):
|
492
492
|
mbatch = self.matches[mtype]
|
493
493
|
if "conf" not in mbatch:
|
494
|
-
mbatch["conf"] = torch.tensor([1.0] *
|
495
|
-
mbatch["batch_idx"] = torch.ones(
|
494
|
+
mbatch["conf"] = torch.tensor([1.0] * mbatch["bboxes"].shape[0], device=img.device)
|
495
|
+
mbatch["batch_idx"] = torch.ones(mbatch["bboxes"].shape[0], device=img.device) * i
|
496
496
|
for k in mbatch.keys():
|
497
497
|
labels[k] += mbatch[k]
|
498
498
|
|
499
499
|
labels = {k: torch.stack(v, 0) if len(v) else v for k, v in labels.items()}
|
500
|
-
if self.task != "obb" and
|
500
|
+
if self.task != "obb" and labels["bboxes"].shape[0]:
|
501
501
|
labels["bboxes"] = xyxy2xywh(labels["bboxes"])
|
502
502
|
(save_dir / "visualizations").mkdir(parents=True, exist_ok=True)
|
503
503
|
plot_images(
|
@@ -980,7 +980,7 @@ class Metric(SimpleClass):
|
|
980
980
|
|
981
981
|
def fitness(self) -> float:
|
982
982
|
"""Return model fitness as a weighted combination of metrics."""
|
983
|
-
w = [0.0, 0.0, 0.
|
983
|
+
w = [0.0, 0.0, 0.0, 1.0] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
|
984
984
|
return (np.nan_to_num(np.array(self.mean_results())) * w).sum()
|
985
985
|
|
986
986
|
def update(self, results: tuple):
|
ultralytics/utils/nms.py
CHANGED
@@ -263,12 +263,11 @@ class TorchNMS:
|
|
263
263
|
areas = (x2 - x1) * (y2 - y1)
|
264
264
|
|
265
265
|
# Sort by scores descending
|
266
|
-
|
266
|
+
order = scores.argsort(0, descending=True)
|
267
267
|
|
268
268
|
# Pre-allocate keep list with maximum possible size
|
269
269
|
keep = torch.zeros(order.numel(), dtype=torch.int64, device=boxes.device)
|
270
270
|
keep_idx = 0
|
271
|
-
|
272
271
|
while order.numel() > 0:
|
273
272
|
i = order[0]
|
274
273
|
keep[keep_idx] = i
|
@@ -276,7 +275,6 @@ class TorchNMS:
|
|
276
275
|
|
277
276
|
if order.numel() == 1:
|
278
277
|
break
|
279
|
-
|
280
278
|
# Vectorized IoU calculation for remaining boxes
|
281
279
|
rest = order[1:]
|
282
280
|
xx1 = torch.maximum(x1[i], x1[rest])
|
@@ -288,20 +286,14 @@ class TorchNMS:
|
|
288
286
|
w = (xx2 - xx1).clamp_(min=0)
|
289
287
|
h = (yy2 - yy1).clamp_(min=0)
|
290
288
|
inter = w * h
|
291
|
-
|
292
|
-
# Early termination: skip IoU calculation if no intersection
|
289
|
+
# Early exit: skip IoU calculation if no intersection
|
293
290
|
if inter.sum() == 0:
|
294
291
|
# No overlaps with current box, keep all remaining boxes
|
295
|
-
|
296
|
-
|
297
|
-
keep_idx += remaining_count
|
298
|
-
break
|
299
|
-
|
292
|
+
order = rest
|
293
|
+
continue
|
300
294
|
iou = inter / (areas[i] + areas[rest] - inter)
|
301
|
-
|
302
295
|
# Keep boxes with IoU <= threshold
|
303
|
-
|
304
|
-
order = rest[mask]
|
296
|
+
order = rest[iou <= iou_threshold]
|
305
297
|
|
306
298
|
return keep[:keep_idx]
|
307
299
|
|
ultralytics/utils/plotting.py
CHANGED
@@ -812,14 +812,13 @@ def plot_images(
|
|
812
812
|
|
813
813
|
# Plot masks
|
814
814
|
if len(masks):
|
815
|
-
if idx.shape[0] == masks.shape[0]: # overlap_mask=False
|
815
|
+
if idx.shape[0] == masks.shape[0] and masks.max() <= 1: # overlap_mask=False
|
816
816
|
image_masks = masks[idx]
|
817
817
|
else: # overlap_mask=True
|
818
818
|
image_masks = masks[[i]] # (1, 640, 640)
|
819
819
|
nl = idx.sum()
|
820
|
-
index = np.arange(nl).reshape((nl, 1, 1))
|
821
|
-
image_masks =
|
822
|
-
image_masks = np.where(image_masks == index, 1.0, 0.0)
|
820
|
+
index = np.arange(1, nl + 1).reshape((nl, 1, 1))
|
821
|
+
image_masks = (image_masks == index).astype(np.float32)
|
823
822
|
|
824
823
|
im = np.asarray(annotator.im).copy()
|
825
824
|
for j in range(len(image_masks)):
|
@@ -847,14 +846,7 @@ def plot_images(
|
|
847
846
|
|
848
847
|
|
849
848
|
@plt_settings()
|
850
|
-
def plot_results(
|
851
|
-
file: str = "path/to/results.csv",
|
852
|
-
dir: str = "",
|
853
|
-
segment: bool = False,
|
854
|
-
pose: bool = False,
|
855
|
-
classify: bool = False,
|
856
|
-
on_plot: Callable | None = None,
|
857
|
-
):
|
849
|
+
def plot_results(file: str = "path/to/results.csv", dir: str = "", on_plot: Callable | None = None):
|
858
850
|
"""
|
859
851
|
Plot training results from a results CSV file. The function supports various types of data including segmentation,
|
860
852
|
pose estimation, and classification. Plots are saved as 'results.png' in the directory where the CSV is located.
|
@@ -862,9 +854,6 @@ def plot_results(
|
|
862
854
|
Args:
|
863
855
|
file (str, optional): Path to the CSV file containing the training results.
|
864
856
|
dir (str, optional): Directory where the CSV file is located if 'file' is not provided.
|
865
|
-
segment (bool, optional): Flag to indicate if the data is for segmentation.
|
866
|
-
pose (bool, optional): Flag to indicate if the data is for pose estimation.
|
867
|
-
classify (bool, optional): Flag to indicate if the data is for classification.
|
868
857
|
on_plot (callable, optional): Callback function to be executed after plotting. Takes filename as an argument.
|
869
858
|
|
870
859
|
Examples:
|
@@ -876,34 +865,31 @@ def plot_results(
|
|
876
865
|
from scipy.ndimage import gaussian_filter1d
|
877
866
|
|
878
867
|
save_dir = Path(file).parent if file else Path(dir)
|
879
|
-
if classify:
|
880
|
-
fig, ax = plt.subplots(2, 2, figsize=(6, 6), tight_layout=True)
|
881
|
-
index = [2, 5, 3, 4]
|
882
|
-
elif segment:
|
883
|
-
fig, ax = plt.subplots(2, 8, figsize=(18, 6), tight_layout=True)
|
884
|
-
index = [2, 3, 4, 5, 6, 7, 10, 11, 14, 15, 16, 17, 8, 9, 12, 13]
|
885
|
-
elif pose:
|
886
|
-
fig, ax = plt.subplots(2, 9, figsize=(21, 6), tight_layout=True)
|
887
|
-
index = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 9, 10, 13, 14]
|
888
|
-
else:
|
889
|
-
fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True)
|
890
|
-
index = [2, 3, 4, 5, 6, 9, 10, 11, 7, 8]
|
891
|
-
ax = ax.ravel()
|
892
868
|
files = list(save_dir.glob("results*.csv"))
|
893
869
|
assert len(files), f"No results.csv files found in {save_dir.resolve()}, nothing to plot."
|
894
|
-
|
870
|
+
|
871
|
+
loss_keys, metric_keys = [], []
|
872
|
+
for i, f in enumerate(files):
|
895
873
|
try:
|
896
874
|
data = pl.read_csv(f, infer_schema_length=None)
|
897
|
-
|
875
|
+
if i == 0:
|
876
|
+
for c in data.columns:
|
877
|
+
if "loss" in c:
|
878
|
+
loss_keys.append(c)
|
879
|
+
elif "metric" in c:
|
880
|
+
metric_keys.append(c)
|
881
|
+
loss_mid, metric_mid = len(loss_keys) // 2, len(metric_keys) // 2
|
882
|
+
columns = (
|
883
|
+
loss_keys[:loss_mid] + metric_keys[:metric_mid] + loss_keys[loss_mid:] + metric_keys[metric_mid:]
|
884
|
+
)
|
885
|
+
fig, ax = plt.subplots(2, len(columns) // 2, figsize=(len(columns) + 2, 6), tight_layout=True)
|
886
|
+
ax = ax.ravel()
|
898
887
|
x = data.select(data.columns[0]).to_numpy().flatten()
|
899
|
-
for i, j in enumerate(
|
900
|
-
y = data.select(
|
901
|
-
# y[y == 0] = np.nan # don't show zero values
|
888
|
+
for i, j in enumerate(columns):
|
889
|
+
y = data.select(j).to_numpy().flatten().astype("float")
|
902
890
|
ax[i].plot(x, y, marker=".", label=f.stem, linewidth=2, markersize=8) # actual results
|
903
891
|
ax[i].plot(x, gaussian_filter1d(y, sigma=3), ":", label="smooth", linewidth=2) # smoothing line
|
904
|
-
ax[i].set_title(
|
905
|
-
# if j in {8, 9, 10}: # share train and val loss y axes
|
906
|
-
# ax[i].get_shared_y_axes().join(ax[i], ax[i - 5])
|
892
|
+
ax[i].set_title(j, fontsize=12)
|
907
893
|
except Exception as e:
|
908
894
|
LOGGER.error(f"Plotting error for {f}: {e}")
|
909
895
|
ax[1].legend()
|
ultralytics/utils/torch_utils.py
CHANGED
@@ -1012,7 +1012,7 @@ def attempt_compile(
|
|
1012
1012
|
imgsz: int = 640,
|
1013
1013
|
use_autocast: bool = False,
|
1014
1014
|
warmup: bool = False,
|
1015
|
-
|
1015
|
+
mode: bool | str = "default",
|
1016
1016
|
) -> torch.nn.Module:
|
1017
1017
|
"""
|
1018
1018
|
Compile a model with torch.compile and optionally warm up the graph to reduce first-iteration latency.
|
@@ -1027,7 +1027,8 @@ def attempt_compile(
|
|
1027
1027
|
imgsz (int, optional): Square input size to create a dummy tensor with shape (1, 3, imgsz, imgsz) for warmup.
|
1028
1028
|
use_autocast (bool, optional): Whether to run warmup under autocast on CUDA or MPS devices.
|
1029
1029
|
warmup (bool, optional): Whether to execute a single dummy forward pass to warm up the compiled model.
|
1030
|
-
|
1030
|
+
mode (bool | str, optional): torch.compile mode. True → "default", False → no compile, or a string like
|
1031
|
+
"default", "reduce-overhead", "max-autotune".
|
1031
1032
|
|
1032
1033
|
Returns:
|
1033
1034
|
model (torch.nn.Module): Compiled model if compilation succeeds, otherwise the original unmodified model.
|
@@ -1042,13 +1043,16 @@ def attempt_compile(
|
|
1042
1043
|
>>> # Try to compile and warm up a model with a 640x640 input
|
1043
1044
|
>>> model = attempt_compile(model, device=device, imgsz=640, use_autocast=True, warmup=True)
|
1044
1045
|
"""
|
1045
|
-
if not hasattr(torch, "compile"):
|
1046
|
+
if not hasattr(torch, "compile") or not mode:
|
1046
1047
|
return model
|
1047
1048
|
|
1048
|
-
|
1049
|
+
if mode is True:
|
1050
|
+
mode = "default"
|
1051
|
+
prefix = colorstr("compile:")
|
1052
|
+
LOGGER.info(f"{prefix} starting torch.compile with '{mode}' mode...")
|
1049
1053
|
t0 = time.perf_counter()
|
1050
1054
|
try:
|
1051
|
-
model = torch.compile(model, mode=
|
1055
|
+
model = torch.compile(model, mode=mode, backend="inductor")
|
1052
1056
|
except Exception as e:
|
1053
1057
|
LOGGER.warning(f"{prefix} torch.compile failed, continuing uncompiled: {e}")
|
1054
1058
|
return model
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.198
|
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>
|
@@ -2,17 +2,17 @@ tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
|
|
2
2
|
tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
|
3
3
|
tests/test_cli.py,sha256=EMf5gTAopOnIz8VvzaM-Qb044o7D0flnUHYQ-2ffOM4,5670
|
4
4
|
tests/test_cuda.py,sha256=Z-MX1aIBQyt_fAAgKxBEznE0Mj7caSwrctW9z__NGzU,8240
|
5
|
-
tests/test_engine.py,sha256=
|
5
|
+
tests/test_engine.py,sha256=8W4_D48ZBUp-DsUlRYxHTXzougycY8yggvpbVwQDLPg,5025
|
6
6
|
tests/test_exports.py,sha256=dWuroSyqXnrc0lE-RNTf7pZoXXXEkOs31u7nhOiEHS0,10994
|
7
7
|
tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
|
8
8
|
tests/test_python.py,sha256=2V23f2-JQsO-K4p1kj0IkCRxHykGwgd0edKJzRsBgdI,27911
|
9
9
|
tests/test_solutions.py,sha256=6wJ9-lhyWSAm7zaR4D9L_DrUA3iJU1NgqmbQO6PIuvo,13211
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=CJCtY5CCo6PMK1UGpJetRmcryk-2hqIbQI0Qy7O723Q,730
|
11
11
|
ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
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=
|
15
|
-
ultralytics/cfg/default.yaml,sha256=
|
14
|
+
ultralytics/cfg/__init__.py,sha256=xX7qUxdcDgcjCKoQFEVQgzrwZodeKTF88CTKZe05d0Y,39955
|
15
|
+
ultralytics/cfg/default.yaml,sha256=awOQl-PS3Rb6prD0IjbFh0lOhKSjqEvroOmJB3W0AS0,8887
|
16
16
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=J4ItoUlE_EiYTmp1DFKYHfbqHkj8j4wUtRJQhaMIlBM,3275
|
17
17
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
|
18
18
|
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=JrDuYcQ0JU9lJlCA-dCkMNko_jaj6MAVGHjsfjeZ_u0,1181
|
@@ -103,15 +103,15 @@ ultralytics/cfg/models/v9/yolov9e.yaml,sha256=Olr2PlADpkD6N1TiVyAJEMzkrA7SbNul1n
|
|
103
103
|
ultralytics/cfg/models/v9/yolov9m.yaml,sha256=WcKQ3xRsC1JMgA42Hx4xzr4FZmtE6B3wKvqhlQxkqw8,1411
|
104
104
|
ultralytics/cfg/models/v9/yolov9s.yaml,sha256=j_v3JWaPtiuM8aKJt15Z_4HPRCoHWn_G6Z07t8CZyjk,1391
|
105
105
|
ultralytics/cfg/models/v9/yolov9t.yaml,sha256=Q8GpSXE7fumhuJiQg4a2SkuS_UmnXqp-eoZxW_C0vEo,1375
|
106
|
-
ultralytics/cfg/trackers/botsort.yaml,sha256=
|
107
|
-
ultralytics/cfg/trackers/bytetrack.yaml,sha256=
|
106
|
+
ultralytics/cfg/trackers/botsort.yaml,sha256=tRxC-qT4Wz0mLn5x7ZEwrqgGKrmTDVY7gMge-mhpe7U,1431
|
107
|
+
ultralytics/cfg/trackers/bytetrack.yaml,sha256=7LS1ObP5u7BUFcmeY6L2m3bRuPUktnpJspFKd_ElVWc,908
|
108
108
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
109
109
|
ultralytics/data/annotator.py,sha256=f15TCDEM8SuuzHiFB8oyhTy9vfywKmPTLSPAgsZQP9I,2990
|
110
|
-
ultralytics/data/augment.py,sha256=
|
110
|
+
ultralytics/data/augment.py,sha256=7NsRCYu_uM6KkpU0F03NC9Ra_GQVGp2dRO1RksrrU38,132897
|
111
111
|
ultralytics/data/base.py,sha256=gWoGFifyNe1TCwtGdGp5jzKOQ9sh4b-XrfyN0PPvRaY,19661
|
112
112
|
ultralytics/data/build.py,sha256=Bhu8E-FNSkTbz6YpNXeUBmQtN91ZtZxOCUiKYXgzV-c,11778
|
113
113
|
ultralytics/data/converter.py,sha256=N1YFD0mG7uwL12wMcuVtF2zbISBIzTsGiy1QioDTDGs,32049
|
114
|
-
ultralytics/data/dataset.py,sha256=
|
114
|
+
ultralytics/data/dataset.py,sha256=GL6J_fvluaF2Ck1in3W5q3Xm7lRcUd6Amgd_uu6r_FM,36772
|
115
115
|
ultralytics/data/loaders.py,sha256=sfQ0C86uBg9QQbN3aU0W8FIjGQmMdJTQAMK4DA1bjk8,31748
|
116
116
|
ultralytics/data/split.py,sha256=5ubnL_wsEutFQOj4I4K01L9UpZrrO_vO3HrydSLJyIY,5107
|
117
117
|
ultralytics/data/split_dota.py,sha256=Lz04qVufTvHn4cTyo3VkqoIM93rb-Ymr8uOIXeSsaJI,12910
|
@@ -121,12 +121,12 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
|
|
121
121
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
122
122
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
123
123
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
124
|
-
ultralytics/engine/exporter.py,sha256=
|
124
|
+
ultralytics/engine/exporter.py,sha256=rz0CAzezUXdQuL1UUhgSIl4-TUu5eVuB6CBA4wh7HTc,74836
|
125
125
|
ultralytics/engine/model.py,sha256=iwwaL2NR5NSwQ7R3juHzS3ds9W-CfhC_CjUcwMvcgsk,53426
|
126
|
-
ultralytics/engine/predictor.py,sha256=
|
127
|
-
ultralytics/engine/results.py,sha256=
|
128
|
-
ultralytics/engine/trainer.py,sha256=
|
129
|
-
ultralytics/engine/tuner.py,sha256=
|
126
|
+
ultralytics/engine/predictor.py,sha256=4lfw2RbBDE7939011FcSCuznscrcnMuabZtc8GXaKO4,22735
|
127
|
+
ultralytics/engine/results.py,sha256=uQ_tgvdxKAg28pRgb5WCHiqx9Ktu7wYiVbwZy_IJ5bo,71499
|
128
|
+
ultralytics/engine/trainer.py,sha256=aFGnBYH9xgS2qgZc-QdgRaiMxGOeeu27dWc31hsOAvo,41030
|
129
|
+
ultralytics/engine/tuner.py,sha256=__OaI1oS3J37iqwruojxcnCYi6L7bgXmZ3bzNvinZk4,21409
|
130
130
|
ultralytics/engine/validator.py,sha256=7tADPOXRZz0Yi7F-Z5SxcUnwytaa2MfbtuSdO8pp_l4,16966
|
131
131
|
ultralytics/hub/__init__.py,sha256=xCF02lzlPKbdmGfO3NxLuXl5Kb0MaBZp_-fAWDHZ8zw,6698
|
132
132
|
ultralytics/hub/auth.py,sha256=RIwZDWfW6vS2yGpZKR0xVl0-38itJYEFtmqY_M70bl8,6304
|
@@ -152,13 +152,13 @@ ultralytics/models/sam/__init__.py,sha256=4VtjxrbrSsqBvteaD_CwA4Nj3DdSUG1MknymtW
|
|
152
152
|
ultralytics/models/sam/amg.py,sha256=sNSBMacS5VKx4NnzdYwBPKJniMNuhpi8VzOMjitGwvo,11821
|
153
153
|
ultralytics/models/sam/build.py,sha256=JEGNXDtBtzp7VIcaYyup7Rwqf1ETSEcX1E1mqBmbMgU,12629
|
154
154
|
ultralytics/models/sam/model.py,sha256=qV8tlHQA1AHUqGkWbwtI7cLw0Rgy3a4X9S2c_wu5fh4,7237
|
155
|
-
ultralytics/models/sam/predict.py,sha256=
|
155
|
+
ultralytics/models/sam/predict.py,sha256=jjAIrwEUsNZoQyZwDCRcCwNoPTbfi1FXEkw7HP-eK40,105001
|
156
156
|
ultralytics/models/sam/modules/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
157
157
|
ultralytics/models/sam/modules/blocks.py,sha256=KATWIut_HO4E_8dGdvv5gt1_r8yUVXw1jkyN_bvRAYQ,46055
|
158
|
-
ultralytics/models/sam/modules/decoders.py,sha256=
|
158
|
+
ultralytics/models/sam/modules/decoders.py,sha256=PGNNpy1ttAy6xV_ERW1Ld3Kf9LGDG3mibOss0SeHAis,25623
|
159
159
|
ultralytics/models/sam/modules/encoders.py,sha256=VOgwSDFep_zqssESz8mNDPDdJfQmP97kHVN-MrExGnk,37326
|
160
160
|
ultralytics/models/sam/modules/memory_attention.py,sha256=BOkV6ULHc0Iiw_tHcNYosYrZ1tAXyC0DG46ktQzR91E,13638
|
161
|
-
ultralytics/models/sam/modules/sam.py,sha256=
|
161
|
+
ultralytics/models/sam/modules/sam.py,sha256=Ys9sSfRIhP3sxgZolGynpJQhJQgU6ydEW8Wb07HneYg,55624
|
162
162
|
ultralytics/models/sam/modules/tiny_encoder.py,sha256=fSxTByC7OSmHYg93KylsFayh6nPdlidRk1BORh6X-p0,42199
|
163
163
|
ultralytics/models/sam/modules/transformer.py,sha256=UdZdhGQYYPTU6R4A4Yyy-hElQLCG7nX726iTKaV977A,14958
|
164
164
|
ultralytics/models/sam/modules/utils.py,sha256=XReheR5K0jbTKYy5k_iSC1vocUndi8aBkesz-n6Pl9g,16045
|
@@ -169,24 +169,24 @@ ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR
|
|
169
169
|
ultralytics/models/yolo/model.py,sha256=b_F1AeBUgiSssRxZ-rGQVdB0a37rDG92h_03o0N29B8,18761
|
170
170
|
ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
|
171
171
|
ultralytics/models/yolo/classify/predict.py,sha256=o7pDE8xwjkHUUIIOph7ZVQZyGZyob24dYDQ460v_7R0,4149
|
172
|
-
ultralytics/models/yolo/classify/train.py,sha256=
|
173
|
-
ultralytics/models/yolo/classify/val.py,sha256=
|
172
|
+
ultralytics/models/yolo/classify/train.py,sha256=BpzPNBJ3F_cg4VqnIiDZVwdUslTTZB9FoDAywhGqbXg,9612
|
173
|
+
ultralytics/models/yolo/classify/val.py,sha256=SslmUSnOAgw1vvFQ4hFbdxuOq8dgfAgGd4D6mpZphZA,10047
|
174
174
|
ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
|
175
|
-
ultralytics/models/yolo/detect/predict.py,sha256=
|
176
|
-
ultralytics/models/yolo/detect/train.py,sha256=
|
177
|
-
ultralytics/models/yolo/detect/val.py,sha256=
|
175
|
+
ultralytics/models/yolo/detect/predict.py,sha256=Vtpqb2gHI7hv9TaBBXsnoScQ8HrSnj0PPOkEu07MwLc,5394
|
176
|
+
ultralytics/models/yolo/detect/train.py,sha256=QT_ItVx1ss6Iui8LIV4n0rY9QZKIKYTnQnFkTRo5cLo,10532
|
177
|
+
ultralytics/models/yolo/detect/val.py,sha256=xjfkgeiTRG_m-0hlAZrIyklxB6-ApCBLaC-R_Te8fP8,21329
|
178
178
|
ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
|
179
179
|
ultralytics/models/yolo/obb/predict.py,sha256=4r1eSld6TNJlk9JG56e-DX6oPL8uBBqiuztyBpxWlHE,2888
|
180
180
|
ultralytics/models/yolo/obb/train.py,sha256=BbehrsKP0lHRV3v7rrw8wAeiDdc-szbhHAmDy0OdhoM,3461
|
181
|
-
ultralytics/models/yolo/obb/val.py,sha256=
|
181
|
+
ultralytics/models/yolo/obb/val.py,sha256=9jMnBRIqPkCzY21CSiuP3LL4qpBEY-pnEgKQSi4bEJ0,14187
|
182
182
|
ultralytics/models/yolo/pose/__init__.py,sha256=63xmuHZLNzV8I76HhVXAq4f2W0KTk8Oi9eL-Y204LyQ,227
|
183
|
-
ultralytics/models/yolo/pose/predict.py,sha256=
|
184
|
-
ultralytics/models/yolo/pose/train.py,sha256=
|
185
|
-
ultralytics/models/yolo/pose/val.py,sha256=
|
183
|
+
ultralytics/models/yolo/pose/predict.py,sha256=3fgu4EKcVRKlP7fySDVsngl4ufk2f71P8SLbfRU2KgE,3747
|
184
|
+
ultralytics/models/yolo/pose/train.py,sha256=AstxnvJcoF5qnDEZSs45U2cGdMdSltX1HuSVwCZqMHQ,4712
|
185
|
+
ultralytics/models/yolo/pose/val.py,sha256=MK-GueXmXrl7eZ5WHYjJMghE4AYJTEut7AuS-G5D1gw,12650
|
186
186
|
ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
|
187
|
-
ultralytics/models/yolo/segment/predict.py,sha256=
|
188
|
-
ultralytics/models/yolo/segment/train.py,sha256=
|
189
|
-
ultralytics/models/yolo/segment/val.py,sha256=
|
187
|
+
ultralytics/models/yolo/segment/predict.py,sha256=HePes5rQ9v3iTCpn3vrIee0SsAsJuJm-X7tHA8Tixc8,5384
|
188
|
+
ultralytics/models/yolo/segment/train.py,sha256=5aPK5FDHLzbXb3R5TCpsAr1O6-8rtupOIoDokY8bSDs,3032
|
189
|
+
ultralytics/models/yolo/segment/val.py,sha256=fJLDJpK1RZgeMvmtf47BjHhZ9lzX_4QfUuBzGXZqIhA,11289
|
190
190
|
ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
|
191
191
|
ultralytics/models/yolo/world/train.py,sha256=zVPtVoBedberGkth3tPuIH665HjGNJvTMLw_wLZQM84,7870
|
192
192
|
ultralytics/models/yolo/world/train_world.py,sha256=9p9YIckrATaJjGOrpmuC8MbZX9qdoCPCEV9EGZ0sExg,9553
|
@@ -194,14 +194,14 @@ ultralytics/models/yolo/yoloe/__init__.py,sha256=6SLytdJtwu37qewf7CobG7C7Wl1m-xt
|
|
194
194
|
ultralytics/models/yolo/yoloe/predict.py,sha256=pcbAUbosr1Xc436MfQi6ah3MQ6kkPzjOcltmdA3VMDE,7124
|
195
195
|
ultralytics/models/yolo/yoloe/train.py,sha256=jcXqGm8CReOCVMFLk-1bNe0Aw5PWaaQa8xBWxtrt5TY,13571
|
196
196
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
|
197
|
-
ultralytics/models/yolo/yoloe/val.py,sha256=
|
197
|
+
ultralytics/models/yolo/yoloe/val.py,sha256=5Gd9EoFH0FmKKvWXBl4J7gBe9DVxIczN-s3ceHwdUDo,9458
|
198
198
|
ultralytics/nn/__init__.py,sha256=PJgOn2phQTTBR2P3s_JWvGeGXQpvw1znsumKow4tCuE,545
|
199
199
|
ultralytics/nn/autobackend.py,sha256=WWHIFvCI47Wpe3NCDkoUg3esjOTJ0XGEzG3luA_uG-8,41063
|
200
|
-
ultralytics/nn/tasks.py,sha256=
|
200
|
+
ultralytics/nn/tasks.py,sha256=M8l92qxDEi_-PqX2xbIrvMBi_5cSwr8wPod0BxJIZ4I,70416
|
201
201
|
ultralytics/nn/text_model.py,sha256=pHqnKe8UueR1MuwJcIE_IvrnYIlt68QL796xjcRJs2A,15275
|
202
202
|
ultralytics/nn/modules/__init__.py,sha256=BPMbEm1daI7Tuds3zph2_afAX7Gq1uAqK8BfiCfKTZs,3198
|
203
203
|
ultralytics/nn/modules/activation.py,sha256=75JcIMH2Cu9GTC2Uf55r_5YLpxcrXQDaVoeGQ0hlUAU,2233
|
204
|
-
ultralytics/nn/modules/block.py,sha256
|
204
|
+
ultralytics/nn/modules/block.py,sha256=-5RfsA_ljekL8_bQPGupSn9dVcZ8V_lVsOGlhzIW1kg,70622
|
205
205
|
ultralytics/nn/modules/conv.py,sha256=U6P1ZuzQmIf09noKwp7syuWn-M98Tly2wMWOsDT3kOI,21457
|
206
206
|
ultralytics/nn/modules/head.py,sha256=7-WuatR32jpuqR5IhwHuheAwAn_izX7e7cPOHEg7MmI,53556
|
207
207
|
ultralytics/nn/modules/transformer.py,sha256=l6NuuFF7j_bogcNULHBBdj5l6sf7MwiVEGz8XcRyTUM,31366
|
@@ -240,7 +240,7 @@ ultralytics/utils/__init__.py,sha256=whSIuj-0lV0SAp4YjOeBJZ2emP1Qa8pqLnrhRiwl2Qs
|
|
240
240
|
ultralytics/utils/autobatch.py,sha256=i6KYLLSItKP1Q2IUlTPHrZhjcxl7UOjs0Seb8bF8pvM,5124
|
241
241
|
ultralytics/utils/autodevice.py,sha256=d9yq6eEn05fdfzfpxeSECd0YEO61er5f7T-0kjLdofg,8843
|
242
242
|
ultralytics/utils/benchmarks.py,sha256=lcIr--oKK0TCjUVbvrm-NtYrnszrEMuHJC9__ziM7y8,31458
|
243
|
-
ultralytics/utils/checks.py,sha256=
|
243
|
+
ultralytics/utils/checks.py,sha256=Uigc10tev2z9pLjjdYwCYkQ4BrjKmurOX2nYd6liqvU,34510
|
244
244
|
ultralytics/utils/cpu.py,sha256=OPlVxROWhQp-kEa9EkeNRKRQ-jz0KwySu5a-h91JZjk,3634
|
245
245
|
ultralytics/utils/dist.py,sha256=g7OKPrSgjIB2wgcncSFYtFuR-uW6J0-Y1z76k4gDSz0,4170
|
246
246
|
ultralytics/utils/downloads.py,sha256=JIlHfUg-qna5aOHRJupH7d5zob2qGZtRrs86Cp3zOJs,23029
|
@@ -252,13 +252,13 @@ ultralytics/utils/git.py,sha256=DcaxKNQfCiG3cxdzuw7M6l_VXgaSVqkERQt_vl8UyXM,5512
|
|
252
252
|
ultralytics/utils/instance.py,sha256=_b_jMTECWJGzncCiTg7FtTDSSeXGnbiAhaJhIsqbn9k,19043
|
253
253
|
ultralytics/utils/logger.py,sha256=o_vH4CCgQat6_Sbmwm1sUAJ4muAgVcsUed-WqpGNQZw,15129
|
254
254
|
ultralytics/utils/loss.py,sha256=wJ0F2DpRTI9-e9adxIm2io0zcXRa0RTWFTOc7WmS1-A,39827
|
255
|
-
ultralytics/utils/metrics.py,sha256=
|
256
|
-
ultralytics/utils/nms.py,sha256=
|
255
|
+
ultralytics/utils/metrics.py,sha256=42zu-qeSvtL4JtvFDQy-7_5OJLwU4M8b5V8uRHBPFUQ,68829
|
256
|
+
ultralytics/utils/nms.py,sha256=AVOmPuUTEJqmq2J6rvjq-nHNxYIyabgzHdc41siyA0w,14161
|
257
257
|
ultralytics/utils/ops.py,sha256=PW3fgw1d18CA2ZNQZVJqUy054cJ_9tIcxd1XnA0FPgU,26905
|
258
258
|
ultralytics/utils/patches.py,sha256=0-2G4jXCIPnMonlft-cPcjfFcOXQS6ODwUDNUwanfg4,6541
|
259
|
-
ultralytics/utils/plotting.py,sha256=
|
259
|
+
ultralytics/utils/plotting.py,sha256=7nnd6Idd8h5c-IUYBQkd-ESy0v_MEME5-s_nom60geU,46931
|
260
260
|
ultralytics/utils/tal.py,sha256=LrziY_ZHz4wln3oOnqAzgyPaXKoup17Sa103BpuaQFU,20935
|
261
|
-
ultralytics/utils/torch_utils.py,sha256=
|
261
|
+
ultralytics/utils/torch_utils.py,sha256=sJe55d23vjnqte9nRipaJu6I9hdWRHdQqoUz8axEWOA,43072
|
262
262
|
ultralytics/utils/tqdm.py,sha256=ny5RIg2OTkWQ7gdaXfYaoIgR0Xn2_hNGB6tUpO2Unns,16137
|
263
263
|
ultralytics/utils/triton.py,sha256=fbMfTAUyoGiyslWtySzLZw53XmZJa7rF31CYFot0Wjs,5422
|
264
264
|
ultralytics/utils/tuner.py,sha256=9D4dSIvwwxcNSJcH2QJ92qiIVi9zu-1L7_PBZ8okDyE,6816
|
@@ -274,9 +274,9 @@ ultralytics/utils/callbacks/platform.py,sha256=a7T_8htoBB0uX1WIc392UJnhDjxkRyQMv
|
|
274
274
|
ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
|
275
275
|
ultralytics/utils/callbacks/tensorboard.py,sha256=_4nfGK1dDLn6ijpvphBDhc-AS8qhS3jjY2CAWB7SNF0,5283
|
276
276
|
ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
|
277
|
-
ultralytics-8.3.
|
278
|
-
ultralytics-8.3.
|
279
|
-
ultralytics-8.3.
|
280
|
-
ultralytics-8.3.
|
281
|
-
ultralytics-8.3.
|
282
|
-
ultralytics-8.3.
|
277
|
+
ultralytics-8.3.198.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
278
|
+
ultralytics-8.3.198.dist-info/METADATA,sha256=JQoaMCWAlO3R5TSwu5c8r9ajR_TrH_vDhuxV6XMSR9c,37667
|
279
|
+
ultralytics-8.3.198.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
280
|
+
ultralytics-8.3.198.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
281
|
+
ultralytics-8.3.198.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
282
|
+
ultralytics-8.3.198.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|