ultralytics 8.3.145__py3-none-any.whl → 8.3.147__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/__init__.py +3 -0
- tests/test_cli.py +2 -7
- tests/test_python.py +55 -18
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +0 -1
- ultralytics/cfg/datasets/coco8-grayscale.yaml +103 -0
- ultralytics/data/augment.py +2 -2
- ultralytics/engine/model.py +4 -4
- ultralytics/engine/validator.py +1 -1
- ultralytics/models/nas/model.py +0 -8
- ultralytics/models/yolo/classify/val.py +5 -9
- ultralytics/models/yolo/detect/val.py +8 -17
- ultralytics/models/yolo/obb/val.py +24 -17
- ultralytics/models/yolo/pose/val.py +19 -14
- ultralytics/models/yolo/segment/val.py +52 -44
- ultralytics/nn/tasks.py +3 -0
- ultralytics/solutions/analytics.py +17 -9
- ultralytics/solutions/object_counter.py +2 -4
- ultralytics/trackers/bot_sort.py +4 -2
- ultralytics/utils/__init__.py +2 -3
- ultralytics/utils/benchmarks.py +15 -15
- ultralytics/utils/checks.py +10 -5
- ultralytics/utils/downloads.py +1 -0
- ultralytics/utils/metrics.py +52 -33
- ultralytics/utils/plotting.py +10 -7
- ultralytics/utils/torch_utils.py +2 -2
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/METADATA +1 -1
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/RECORD +32 -31
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/WHEEL +1 -1
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.145.dist-info → ultralytics-8.3.147.dist-info}/top_level.txt +0 -0
ultralytics/utils/metrics.py
CHANGED
@@ -309,7 +309,7 @@ def smooth_bce(eps: float = 0.1) -> Tuple[float, float]:
|
|
309
309
|
return 1.0 - 0.5 * eps, 0.5 * eps
|
310
310
|
|
311
311
|
|
312
|
-
class ConfusionMatrix:
|
312
|
+
class ConfusionMatrix(DataExportMixin):
|
313
313
|
"""
|
314
314
|
A class for calculating and updating a confusion matrix for object detection and classification tasks.
|
315
315
|
|
@@ -321,7 +321,7 @@ class ConfusionMatrix:
|
|
321
321
|
iou_thres (float): The Intersection over Union threshold.
|
322
322
|
"""
|
323
323
|
|
324
|
-
def __init__(self, nc: int, conf: float = 0.25, iou_thres: float = 0.45, task: str = "detect"):
|
324
|
+
def __init__(self, nc: int, conf: float = 0.25, iou_thres: float = 0.45, names: tuple = (), task: str = "detect"):
|
325
325
|
"""
|
326
326
|
Initialize a ConfusionMatrix instance.
|
327
327
|
|
@@ -329,11 +329,13 @@ class ConfusionMatrix:
|
|
329
329
|
nc (int): Number of classes.
|
330
330
|
conf (float, optional): Confidence threshold for detections.
|
331
331
|
iou_thres (float, optional): IoU threshold for matching detections to ground truth.
|
332
|
+
names (tuple, optional): Names of classes, used as labels on the plot.
|
332
333
|
task (str, optional): Type of task, either 'detect' or 'classify'.
|
333
334
|
"""
|
334
335
|
self.task = task
|
335
336
|
self.matrix = np.zeros((nc + 1, nc + 1)) if self.task == "detect" else np.zeros((nc, nc))
|
336
337
|
self.nc = nc # number of classes
|
338
|
+
self.names = list(names) # name of classes
|
337
339
|
self.conf = 0.25 if conf in {None, 0.001} else conf # apply 0.25 if default val conf is passed
|
338
340
|
self.iou_thres = iou_thres
|
339
341
|
|
@@ -426,14 +428,13 @@ class ConfusionMatrix:
|
|
426
428
|
|
427
429
|
@TryExcept(msg="ConfusionMatrix plot failure")
|
428
430
|
@plt_settings()
|
429
|
-
def plot(self, normalize: bool = True, save_dir: str = "",
|
431
|
+
def plot(self, normalize: bool = True, save_dir: str = "", on_plot=None):
|
430
432
|
"""
|
431
433
|
Plot the confusion matrix using matplotlib and save it to a file.
|
432
434
|
|
433
435
|
Args:
|
434
436
|
normalize (bool, optional): Whether to normalize the confusion matrix.
|
435
437
|
save_dir (str, optional): Directory where the plot will be saved.
|
436
|
-
names (tuple, optional): Names of classes, used as labels on the plot.
|
437
438
|
on_plot (callable, optional): An optional callback to pass plots path and data when they are rendered.
|
438
439
|
"""
|
439
440
|
import matplotlib.pyplot as plt # scope for faster 'import ultralytics'
|
@@ -441,18 +442,17 @@ class ConfusionMatrix:
|
|
441
442
|
array = self.matrix / ((self.matrix.sum(0).reshape(1, -1) + 1e-9) if normalize else 1) # normalize columns
|
442
443
|
array[array < 0.005] = np.nan # don't annotate (would appear as 0.00)
|
443
444
|
|
444
|
-
names = list(names)
|
445
445
|
fig, ax = plt.subplots(1, 1, figsize=(12, 9))
|
446
446
|
if self.nc >= 100: # downsample for large class count
|
447
447
|
k = max(2, self.nc // 60) # step size for downsampling, always > 1
|
448
448
|
keep_idx = slice(None, None, k) # create slice instead of array
|
449
|
-
names = names[keep_idx] # slice class names
|
449
|
+
self.names = self.names[keep_idx] # slice class names
|
450
450
|
array = array[keep_idx, :][:, keep_idx] # slice matrix rows and cols
|
451
451
|
n = (self.nc + k - 1) // k # number of retained classes
|
452
452
|
nc = nn = n if self.task == "classify" else n + 1 # adjust for background if needed
|
453
453
|
else:
|
454
454
|
nc = nn = self.nc if self.task == "classify" else self.nc + 1
|
455
|
-
ticklabels = (names + ["background"]) if (0 < nn < 99) and (nn == nc) else "auto"
|
455
|
+
ticklabels = (self.names + ["background"]) if (0 < nn < 99) and (nn == nc) else "auto"
|
456
456
|
xy_ticks = np.arange(len(ticklabels))
|
457
457
|
tick_fontsize = max(6, 15 - 0.1 * nc) # Minimum size is 6
|
458
458
|
label_fontsize = max(6, 12 - 0.1 * nc)
|
@@ -505,6 +505,26 @@ class ConfusionMatrix:
|
|
505
505
|
for i in range(self.matrix.shape[0]):
|
506
506
|
LOGGER.info(" ".join(map(str, self.matrix[i])))
|
507
507
|
|
508
|
+
def summary(self, **kwargs):
|
509
|
+
"""Returns summary of the confusion matrix for export in different formats CSV, XML, HTML."""
|
510
|
+
import re
|
511
|
+
|
512
|
+
names = self.names if self.task == "classify" else self.names + ["background"]
|
513
|
+
clean_names, seen = [], set()
|
514
|
+
for name in names:
|
515
|
+
clean_name = re.sub(r"[^a-zA-Z0-9_]", "_", name)
|
516
|
+
original_clean = clean_name
|
517
|
+
counter = 1
|
518
|
+
while clean_name.lower() in seen:
|
519
|
+
clean_name = f"{original_clean}_{counter}"
|
520
|
+
counter += 1
|
521
|
+
seen.add(clean_name.lower())
|
522
|
+
clean_names.append(clean_name)
|
523
|
+
return [
|
524
|
+
dict({"Predicted": clean_names[i]}, **{clean_names[j]: self.matrix[i, j] for j in range(len(clean_names))})
|
525
|
+
for i in range(len(clean_names))
|
526
|
+
]
|
527
|
+
|
508
528
|
|
509
529
|
def smooth(y: np.ndarray, f: float = 0.05) -> np.ndarray:
|
510
530
|
"""Box filter of fraction f."""
|
@@ -520,7 +540,7 @@ def plot_pr_curve(
|
|
520
540
|
py: np.ndarray,
|
521
541
|
ap: np.ndarray,
|
522
542
|
save_dir: Path = Path("pr_curve.png"),
|
523
|
-
names:
|
543
|
+
names: Dict[int, str] = {},
|
524
544
|
on_plot=None,
|
525
545
|
):
|
526
546
|
"""
|
@@ -531,7 +551,7 @@ def plot_pr_curve(
|
|
531
551
|
py (np.ndarray): Y values for the PR curve.
|
532
552
|
ap (np.ndarray): Average precision values.
|
533
553
|
save_dir (Path, optional): Path to save the plot.
|
534
|
-
names (
|
554
|
+
names (Dict[int, str], optional): Dictionary mapping class indices to class names.
|
535
555
|
on_plot (callable, optional): Function to call after plot is saved.
|
536
556
|
"""
|
537
557
|
import matplotlib.pyplot as plt # scope for faster 'import ultralytics'
|
@@ -563,7 +583,7 @@ def plot_mc_curve(
|
|
563
583
|
px: np.ndarray,
|
564
584
|
py: np.ndarray,
|
565
585
|
save_dir: Path = Path("mc_curve.png"),
|
566
|
-
names:
|
586
|
+
names: Dict[int, str] = {},
|
567
587
|
xlabel: str = "Confidence",
|
568
588
|
ylabel: str = "Metric",
|
569
589
|
on_plot=None,
|
@@ -575,7 +595,7 @@ def plot_mc_curve(
|
|
575
595
|
px (np.ndarray): X values for the metric-confidence curve.
|
576
596
|
py (np.ndarray): Y values for the metric-confidence curve.
|
577
597
|
save_dir (Path, optional): Path to save the plot.
|
578
|
-
names (
|
598
|
+
names (Dict[int, str], optional): Dictionary mapping class indices to class names.
|
579
599
|
xlabel (str, optional): X-axis label.
|
580
600
|
ylabel (str, optional): Y-axis label.
|
581
601
|
on_plot (callable, optional): Function to call after plot is saved.
|
@@ -645,7 +665,7 @@ def ap_per_class(
|
|
645
665
|
plot: bool = False,
|
646
666
|
on_plot=None,
|
647
667
|
save_dir: Path = Path(),
|
648
|
-
names:
|
668
|
+
names: Dict[int, str] = {},
|
649
669
|
eps: float = 1e-16,
|
650
670
|
prefix: str = "",
|
651
671
|
) -> Tuple:
|
@@ -660,7 +680,7 @@ def ap_per_class(
|
|
660
680
|
plot (bool, optional): Whether to plot PR curves or not.
|
661
681
|
on_plot (callable, optional): A callback to pass plots path and data when they are rendered.
|
662
682
|
save_dir (Path, optional): Directory to save the PR curves.
|
663
|
-
names (
|
683
|
+
names (Dict[int, str], optional): Dictionary of class names to plot PR curves.
|
664
684
|
eps (float, optional): A small value to avoid division by zero.
|
665
685
|
prefix (str, optional): A prefix string for saving the plot files.
|
666
686
|
|
@@ -720,8 +740,7 @@ def ap_per_class(
|
|
720
740
|
|
721
741
|
# Compute F1 (harmonic mean of precision and recall)
|
722
742
|
f1_curve = 2 * p_curve * r_curve / (p_curve + r_curve + eps)
|
723
|
-
names = [
|
724
|
-
names = dict(enumerate(names)) # to dict
|
743
|
+
names = {i: names[k] for i, k in enumerate(unique_classes) if k in names} # dict: only classes that have data
|
725
744
|
if plot:
|
726
745
|
plot_pr_curve(x, prec_values, ap, save_dir / f"{prefix}PR_curve.png", names, on_plot=on_plot)
|
727
746
|
plot_mc_curve(x, f1_curve, save_dir / f"{prefix}F1_curve.png", names, ylabel="F1", on_plot=on_plot)
|
@@ -915,20 +934,20 @@ class DetMetrics(SimpleClass, DataExportMixin):
|
|
915
934
|
Attributes:
|
916
935
|
save_dir (Path): A path to the directory where the output plots will be saved.
|
917
936
|
plot (bool): A flag that indicates whether to plot precision-recall curves for each class.
|
918
|
-
names (
|
937
|
+
names (Dict[int, str]): A dictionary of class names.
|
919
938
|
box (Metric): An instance of the Metric class for storing detection results.
|
920
|
-
speed (
|
939
|
+
speed (Dict[str, float]): A dictionary for storing execution times of different parts of the detection process.
|
921
940
|
task (str): The task type, set to 'detect'.
|
922
941
|
"""
|
923
942
|
|
924
|
-
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names:
|
943
|
+
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names: Dict[int, str] = {}) -> None:
|
925
944
|
"""
|
926
945
|
Initialize a DetMetrics instance with a save directory, plot flag, and class names.
|
927
946
|
|
928
947
|
Args:
|
929
948
|
save_dir (Path, optional): Directory to save plots.
|
930
949
|
plot (bool, optional): Whether to plot precision-recall curves.
|
931
|
-
names (
|
950
|
+
names (Dict[int, str], optional): Dictionary of class names.
|
932
951
|
"""
|
933
952
|
self.save_dir = save_dir
|
934
953
|
self.plot = plot
|
@@ -1033,21 +1052,21 @@ class SegmentMetrics(SimpleClass, DataExportMixin):
|
|
1033
1052
|
Attributes:
|
1034
1053
|
save_dir (Path): Path to the directory where the output plots should be saved.
|
1035
1054
|
plot (bool): Whether to save the detection and segmentation plots.
|
1036
|
-
names (
|
1037
|
-
box (Metric): An instance of the Metric class
|
1055
|
+
names (Dict[int, str]): Dictionary of class names.
|
1056
|
+
box (Metric): An instance of the Metric class for storing detection results.
|
1038
1057
|
seg (Metric): An instance of the Metric class to calculate mask segmentation metrics.
|
1039
|
-
speed (
|
1058
|
+
speed (Dict[str, float]): A dictionary for storing execution times of different parts of the detection process.
|
1040
1059
|
task (str): The task type, set to 'segment'.
|
1041
1060
|
"""
|
1042
1061
|
|
1043
|
-
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names:
|
1062
|
+
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names: Dict[int, str] = {}) -> None:
|
1044
1063
|
"""
|
1045
1064
|
Initialize a SegmentMetrics instance with a save directory, plot flag, and class names.
|
1046
1065
|
|
1047
1066
|
Args:
|
1048
1067
|
save_dir (Path, optional): Directory to save plots.
|
1049
1068
|
plot (bool, optional): Whether to plot precision-recall curves.
|
1050
|
-
names (
|
1069
|
+
names (Dict[int, str], optional): Dictionary of class names.
|
1051
1070
|
"""
|
1052
1071
|
self.save_dir = save_dir
|
1053
1072
|
self.plot = plot
|
@@ -1196,10 +1215,10 @@ class PoseMetrics(SegmentMetrics):
|
|
1196
1215
|
Attributes:
|
1197
1216
|
save_dir (Path): Path to the directory where the output plots should be saved.
|
1198
1217
|
plot (bool): Whether to save the detection and pose plots.
|
1199
|
-
names (
|
1200
|
-
box (Metric): An instance of the Metric class to calculate box detection metrics.
|
1218
|
+
names (Dict[int, str]): Dictionary of class names.
|
1201
1219
|
pose (Metric): An instance of the Metric class to calculate pose metrics.
|
1202
|
-
|
1220
|
+
box (Metric): An instance of the Metric class for storing detection results.
|
1221
|
+
speed (Dict[str, float]): A dictionary for storing execution times of different parts of the detection process.
|
1203
1222
|
task (str): The task type, set to 'pose'.
|
1204
1223
|
|
1205
1224
|
Methods:
|
@@ -1212,14 +1231,14 @@ class PoseMetrics(SegmentMetrics):
|
|
1212
1231
|
results_dict: Return the dictionary containing all the detection and segmentation metrics and fitness score.
|
1213
1232
|
"""
|
1214
1233
|
|
1215
|
-
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names:
|
1234
|
+
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names: Dict[int, str] = {}) -> None:
|
1216
1235
|
"""
|
1217
1236
|
Initialize the PoseMetrics class with directory path, class names, and plotting options.
|
1218
1237
|
|
1219
1238
|
Args:
|
1220
1239
|
save_dir (Path, optional): Directory to save plots.
|
1221
1240
|
plot (bool, optional): Whether to plot precision-recall curves.
|
1222
|
-
names (
|
1241
|
+
names (Dict[int, str], optional): Dictionary of class names.
|
1223
1242
|
"""
|
1224
1243
|
super().__init__(save_dir, plot, names)
|
1225
1244
|
self.save_dir = save_dir
|
@@ -1420,23 +1439,23 @@ class OBBMetrics(SimpleClass, DataExportMixin):
|
|
1420
1439
|
Attributes:
|
1421
1440
|
save_dir (Path): Path to the directory where the output plots should be saved.
|
1422
1441
|
plot (bool): Whether to save the detection plots.
|
1423
|
-
names (
|
1442
|
+
names (Dict[int, str]): Dictionary of class names.
|
1424
1443
|
box (Metric): An instance of the Metric class for storing detection results.
|
1425
|
-
speed (
|
1444
|
+
speed (Dict[str, float]): A dictionary for storing execution times of different parts of the detection process.
|
1426
1445
|
task (str): The task type, set to 'obb'.
|
1427
1446
|
|
1428
1447
|
References:
|
1429
1448
|
https://arxiv.org/pdf/2106.06072.pdf
|
1430
1449
|
"""
|
1431
1450
|
|
1432
|
-
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names:
|
1451
|
+
def __init__(self, save_dir: Path = Path("."), plot: bool = False, names: Dict[int, str] = {}) -> None:
|
1433
1452
|
"""
|
1434
1453
|
Initialize an OBBMetrics instance with directory, plotting, and class names.
|
1435
1454
|
|
1436
1455
|
Args:
|
1437
1456
|
save_dir (Path, optional): Directory to save plots.
|
1438
1457
|
plot (bool, optional): Whether to plot precision-recall curves.
|
1439
|
-
names (
|
1458
|
+
names (Dict[int, str], optional): Dictionary of class names.
|
1440
1459
|
"""
|
1441
1460
|
self.save_dir = save_dir
|
1442
1461
|
self.plot = plot
|
ultralytics/utils/plotting.py
CHANGED
@@ -201,6 +201,11 @@ class Annotator:
|
|
201
201
|
input_is_pil = isinstance(im, Image.Image)
|
202
202
|
self.pil = pil or non_ascii or input_is_pil
|
203
203
|
self.lw = line_width or max(round(sum(im.size if input_is_pil else im.shape) / 2 * 0.003), 2)
|
204
|
+
if not input_is_pil:
|
205
|
+
if im.shape[2] == 1: # handle grayscale
|
206
|
+
im = cv2.cvtColor(im, cv2.COLOR_GRAY2BGR)
|
207
|
+
elif im.shape[2] > 3: # multispectral
|
208
|
+
im = np.ascontiguousarray(im[..., :3])
|
204
209
|
if self.pil: # use PIL
|
205
210
|
self.im = im if input_is_pil else Image.fromarray(im)
|
206
211
|
if self.im.mode not in {"RGB", "RGBA"}: # multispectral
|
@@ -216,10 +221,6 @@ class Annotator:
|
|
216
221
|
if check_version(pil_version, "9.2.0"):
|
217
222
|
self.font.getsize = lambda x: self.font.getbbox(x)[2:4] # text width, height
|
218
223
|
else: # use cv2
|
219
|
-
if im.shape[2] == 1: # handle grayscale
|
220
|
-
im = cv2.cvtColor(im, cv2.COLOR_GRAY2BGR)
|
221
|
-
elif im.shape[2] > 3: # multispectral
|
222
|
-
im = np.ascontiguousarray(im[..., :3])
|
223
224
|
assert im.data.contiguous, "Image not contiguous. Apply np.ascontiguousarray(im) to Annotator input images."
|
224
225
|
self.im = im if im.flags.writeable else im.copy()
|
225
226
|
self.tf = max(self.lw - 1, 1) # font thickness
|
@@ -644,7 +645,7 @@ def save_one_box(
|
|
644
645
|
gain (float, optional): A multiplicative factor to increase the size of the bounding box.
|
645
646
|
pad (int, optional): The number of pixels to add to the width and height of the bounding box.
|
646
647
|
square (bool, optional): If True, the bounding box will be transformed into a square.
|
647
|
-
BGR (bool, optional): If True, the image will be
|
648
|
+
BGR (bool, optional): If True, the image will be returned in BGR format, otherwise in RGB.
|
648
649
|
save (bool, optional): If True, the cropped image will be saved to disk.
|
649
650
|
|
650
651
|
Returns:
|
@@ -664,12 +665,14 @@ def save_one_box(
|
|
664
665
|
b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad
|
665
666
|
xyxy = ops.xywh2xyxy(b).long()
|
666
667
|
xyxy = ops.clip_boxes(xyxy, im.shape)
|
667
|
-
|
668
|
+
grayscale = im.shape[2] == 1 # grayscale image
|
669
|
+
crop = im[int(xyxy[0, 1]) : int(xyxy[0, 3]), int(xyxy[0, 0]) : int(xyxy[0, 2]), :: (1 if BGR or grayscale else -1)]
|
668
670
|
if save:
|
669
671
|
file.parent.mkdir(parents=True, exist_ok=True) # make directory
|
670
672
|
f = str(increment_path(file).with_suffix(".jpg"))
|
671
673
|
# cv2.imwrite(f, crop) # save BGR, https://github.com/ultralytics/yolov5/issues/7007 chroma subsampling issue
|
672
|
-
|
674
|
+
crop = crop.squeeze(-1) if grayscale else crop[..., ::-1] if BGR else crop
|
675
|
+
Image.fromarray(crop).save(f, quality=95, subsampling=0) # save RGB
|
673
676
|
return crop
|
674
677
|
|
675
678
|
|
ultralytics/utils/torch_utils.py
CHANGED
@@ -10,7 +10,7 @@ from contextlib import contextmanager
|
|
10
10
|
from copy import deepcopy
|
11
11
|
from datetime import datetime
|
12
12
|
from pathlib import Path
|
13
|
-
from typing import Union
|
13
|
+
from typing import Any, Dict, Union
|
14
14
|
|
15
15
|
import numpy as np
|
16
16
|
import torch
|
@@ -704,7 +704,7 @@ class ModelEMA:
|
|
704
704
|
copy_attr(self.ema, model, include, exclude)
|
705
705
|
|
706
706
|
|
707
|
-
def strip_optimizer(f: Union[str, Path] = "best.pt", s: str = "", updates:
|
707
|
+
def strip_optimizer(f: Union[str, Path] = "best.pt", s: str = "", updates: Dict[str, Any] = None) -> Dict[str, Any]:
|
708
708
|
"""
|
709
709
|
Strip optimizer from 'f' to finalize training, optionally save as 's'.
|
710
710
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.147
|
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>
|
@@ -1,16 +1,16 @@
|
|
1
|
-
tests/__init__.py,sha256=
|
1
|
+
tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
|
2
2
|
tests/conftest.py,sha256=JjgKSs36ZaGmmtqGmAapmFSoFF1YwyV3IZsOgqt2IVM,2593
|
3
|
-
tests/test_cli.py,sha256=
|
3
|
+
tests/test_cli.py,sha256=Kpfxq_RlbKK1Z8xNScDUbre6GB7neZhXZAYGI1tiDS8,5660
|
4
4
|
tests/test_cuda.py,sha256=-nQsfF3lGfqLm6cIeu_BCiXqLj7HzpL7R1GzPEc6z2I,8128
|
5
5
|
tests/test_engine.py,sha256=Jpt2KVrltrEgh2-3Ykouz-2Z_2fza0eymL5ectRXadM,4922
|
6
6
|
tests/test_exports.py,sha256=HmMKOTCia9ZDC0VYc_EPmvBTM5LM5eeI1NF_pKjLpd8,9677
|
7
7
|
tests/test_integrations.py,sha256=cQfgueFhEZ8Xs-tF0uiIEhvn0DlhOH-Wqrx96LXp3D0,6303
|
8
|
-
tests/test_python.py,sha256=
|
8
|
+
tests/test_python.py,sha256=_7xc7mqQxw3OsLhAdx-P85u9sqkfIXVhIloxmhBXph4,27800
|
9
9
|
tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=W3mbuR6Ig3pjncyYQLi3jsgDcXLijQ3MQEDEvaRagQ8,730
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
13
|
-
ultralytics/cfg/__init__.py,sha256=
|
13
|
+
ultralytics/cfg/__init__.py,sha256=H19EalaxuIa44J_nVBrNxMj8EAPmlZl3ecbX0-xK8y8,39600
|
14
14
|
ultralytics/cfg/default.yaml,sha256=oFG6llJO-Py5H-cR9qs-7FieJamroDLwpbrkhmfROOM,8307
|
15
15
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
|
16
16
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
|
@@ -29,6 +29,7 @@ ultralytics/cfg/datasets/coco-pose.yaml,sha256=NHdgSsGkHS0-X636p2-hExTJGdoWUSP1T
|
|
29
29
|
ultralytics/cfg/datasets/coco.yaml,sha256=chdzyIHLfekjOcng-G2_bpC57VUcHPjVvW8ENJfiQao,2619
|
30
30
|
ultralytics/cfg/datasets/coco128-seg.yaml,sha256=ifDPbVuuN7N2_3e8e_YBdTVcANYIOKORQMgXlsPS6D4,1995
|
31
31
|
ultralytics/cfg/datasets/coco128.yaml,sha256=udymG6qzF9Bvh_JYC7BOSXOUeA1Ia8ZmR2EzNGsY6YY,1978
|
32
|
+
ultralytics/cfg/datasets/coco8-grayscale.yaml,sha256=U3jjPUoFahLch4N11qjG1myhE5wsy2tFeC23I9w_nr0,1974
|
32
33
|
ultralytics/cfg/datasets/coco8-multispectral.yaml,sha256=h5Kbx9y3wjWUw6p8jeQVUaIs07VoQS7ZY0vMau5WGAg,2076
|
33
34
|
ultralytics/cfg/datasets/coco8-pose.yaml,sha256=yfw2_SkCZO3ttPLiI0mfjxv5gr4-CA3i0elYP5PY71k,1022
|
34
35
|
ultralytics/cfg/datasets/coco8-seg.yaml,sha256=wpfFI-GfL5asbLtFyaHLE6593jdka7waE07Am3_eg8w,1926
|
@@ -104,7 +105,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=TpRaK5kH_-QbjCQ7ekM4s_7j8I8ti3q8Hs7
|
|
104
105
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
|
105
106
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
106
107
|
ultralytics/data/annotator.py,sha256=uAgd7K-yudxiwdNqHz0ubfFg5JsfNlae4cgxdvCMyuY,3030
|
107
|
-
ultralytics/data/augment.py,sha256=
|
108
|
+
ultralytics/data/augment.py,sha256=fvYug6B0qrSSS8IYpvdju9uENnEJWCf-GNG5WqIayng,128964
|
108
109
|
ultralytics/data/base.py,sha256=mRcuehK1thNuuzQGL6D1AaZkod71oHRdYTod_zdQZQg,19688
|
109
110
|
ultralytics/data/build.py,sha256=Djz6stD1FXmFhnoUJp-MKp7geu-k3xhnvt9kfXFKGhI,11020
|
110
111
|
ultralytics/data/converter.py,sha256=oKW8ODtvFOKBx9Un8n87xUUm3b5GStU4ViIBH5UDylM,27200
|
@@ -119,12 +120,12 @@ ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz
|
|
119
120
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
120
121
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
121
122
|
ultralytics/engine/exporter.py,sha256=Ug0HvQSseQA9k4jb_CUGXKPg9w082W1cocwPxxtXgkM,73902
|
122
|
-
ultralytics/engine/model.py,sha256=
|
123
|
+
ultralytics/engine/model.py,sha256=0Yslj0TPWi25CELtVQs1dRzJyJAw9-tWTlDbC6kJ0pA,53310
|
123
124
|
ultralytics/engine/predictor.py,sha256=30fBpuwOuNT3hr8bju4coeOr-jqU_8hDYESugmowLBE,22151
|
124
125
|
ultralytics/engine/results.py,sha256=Mb8pBTOrBtQh0PQtGVbhRZ_C1VyqYFumjLggiKCRIJs,72295
|
125
126
|
ultralytics/engine/trainer.py,sha256=zZ2Lm7VJOlBX-Ya52ec3n3IlSn9_yM5fbsRIWGeGOyo,39556
|
126
127
|
ultralytics/engine/tuner.py,sha256=4ue7JbMFQp7JcWhhwCAY-b-xZsjm5VKVlPFDUTyxt_8,12789
|
127
|
-
ultralytics/engine/validator.py,sha256=
|
128
|
+
ultralytics/engine/validator.py,sha256=2YEdIn2DpPdUPjwDJDR0d0DU8BiwFmh2_502xDPGwMo,16953
|
128
129
|
ultralytics/hub/__init__.py,sha256=ulPtceI3hqud03mvqoXccBaa1e4nveYwC9cddyuBUlo,6599
|
129
130
|
ultralytics/hub/auth.py,sha256=5uMPzZt8aO-YsnEWADzc1qBUt9c30RTIfrGo5SWTrv4,6271
|
130
131
|
ultralytics/hub/session.py,sha256=UeUSRbdclSBPJQfpSNGeY13gb1O2Bhzh0Aj7cXum6P4,18518
|
@@ -137,7 +138,7 @@ ultralytics/models/fastsam/predict.py,sha256=G-o8hs8W5XmqSN5G37zi6q9FglFnZSbD6qH
|
|
137
138
|
ultralytics/models/fastsam/utils.py,sha256=yuCXB4CVjRx8lDf61DP8B6qMx7TVf7AynQvdWREeFco,884
|
138
139
|
ultralytics/models/fastsam/val.py,sha256=hDGCcQl04GA8ldDlRHUN3fri_N2Aev3Vu7-r3BftmvE,2335
|
139
140
|
ultralytics/models/nas/__init__.py,sha256=wybeHZuAXMNeXMjKTbK55FZmXJkA4K9IozDeFM9OB-s,207
|
140
|
-
ultralytics/models/nas/model.py,sha256=
|
141
|
+
ultralytics/models/nas/model.py,sha256=kQeF3mkVHLLsoTL9F32CrYITNsdbTrYF6lEgHclhKN0,3824
|
141
142
|
ultralytics/models/nas/predict.py,sha256=J4UT7nwi_h63lJ3a_gYac-Ws8wFYingZINxMqSoaX5E,2706
|
142
143
|
ultralytics/models/nas/val.py,sha256=QUTE3zuhJLVqmDGd2n7iSSk7X6jKZCRxufFkBbyxYYo,1548
|
143
144
|
ultralytics/models/rtdetr/__init__.py,sha256=_jEHmOjI_QP_nT3XJXLgYHQ6bXG4EL8Gnvn1y_eev1g,225
|
@@ -167,23 +168,23 @@ ultralytics/models/yolo/model.py,sha256=C0wInQC6rFuFOGpdAen1s2e5LIFDmqevto8uPbpm
|
|
167
168
|
ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
|
168
169
|
ultralytics/models/yolo/classify/predict.py,sha256=_GiN6muuZOBrMS1KER85FE4ktcw_Onn1bZdGvpbsGCE,4618
|
169
170
|
ultralytics/models/yolo/classify/train.py,sha256=jXErkxnsC3pBFQBrFxObF8BJyqkckcw3C_qHMSWZrsY,10312
|
170
|
-
ultralytics/models/yolo/classify/val.py,sha256=
|
171
|
+
ultralytics/models/yolo/classify/val.py,sha256=6YbsbqJA2J6Aw1kyOWj4eGGD0_--23G1Cz5p8lmYFLo,9705
|
171
172
|
ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
|
172
173
|
ultralytics/models/yolo/detect/predict.py,sha256=ySUsdIf8dw00bzWhcxN1jZwLWKPRT2M7-N7TNL3o4zo,5387
|
173
174
|
ultralytics/models/yolo/detect/train.py,sha256=qCWz0nvU-pQofa-_F7UhUoLQe-U1ExW0mvE5ZHnav4o,9818
|
174
|
-
ultralytics/models/yolo/detect/val.py,sha256=
|
175
|
+
ultralytics/models/yolo/detect/val.py,sha256=pb9CzA8qGWGjQnp4EsoK0rlQq0rmIBppCuobNJL7QSc,19126
|
175
176
|
ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
|
176
177
|
ultralytics/models/yolo/obb/predict.py,sha256=4r1eSld6TNJlk9JG56e-DX6oPL8uBBqiuztyBpxWlHE,2888
|
177
178
|
ultralytics/models/yolo/obb/train.py,sha256=bnYFAMur7Uvbw5Dc09-S2ge7B05iGX-t37Ksgc0ef6g,3921
|
178
|
-
ultralytics/models/yolo/obb/val.py,sha256=
|
179
|
+
ultralytics/models/yolo/obb/val.py,sha256=pizYmRUkSlglQnNjZi0DeZehCJE9y5CmYjs_tGLDta4,14394
|
179
180
|
ultralytics/models/yolo/pose/__init__.py,sha256=63xmuHZLNzV8I76HhVXAq4f2W0KTk8Oi9eL-Y204LyQ,227
|
180
181
|
ultralytics/models/yolo/pose/predict.py,sha256=oePbV_IVRt0xPcTiycFAIixiX7bScth0d1uOOtdeErU,3773
|
181
182
|
ultralytics/models/yolo/pose/train.py,sha256=6i1EQx-f112skBBBhCk6JIRKLjCoTEqw2ECJrc53Ku8,6862
|
182
|
-
ultralytics/models/yolo/pose/val.py,sha256=
|
183
|
+
ultralytics/models/yolo/pose/val.py,sha256=2QPhqVr90Aww2RKxuK36kGh_m3vbvWdMDhBDCb8Ho6M,19598
|
183
184
|
ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
|
184
185
|
ultralytics/models/yolo/segment/predict.py,sha256=qlprQCZn4_bpjpI08U0MU9Q9_1gpHrw_7MXwtXE1l1Y,5377
|
185
186
|
ultralytics/models/yolo/segment/train.py,sha256=026mRDOIjJ0ctMQQ2N9hRP6E5oLj2meGKO46u_MzrDk,5523
|
186
|
-
ultralytics/models/yolo/segment/val.py,sha256=
|
187
|
+
ultralytics/models/yolo/segment/val.py,sha256=KMB63KwqWF06mEwBgB7PqNdDy0qSzc0tYKPEvC1ykCg,19020
|
187
188
|
ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
|
188
189
|
ultralytics/models/yolo/world/train.py,sha256=94_hgCluzsv39JkBVDmR2gjuycYjeJC8wVrCfrjpENk,7806
|
189
190
|
ultralytics/models/yolo/world/train_world.py,sha256=YJm37ZTgr0CoE_sYrjxN45w9mICr2RMWfWZrriiHqbM,9022
|
@@ -194,7 +195,7 @@ ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYA
|
|
194
195
|
ultralytics/models/yolo/yoloe/val.py,sha256=Y0oCiqGvj8LHLrvnfPPUADSj_zNp68BVdpgcER4999E,9736
|
195
196
|
ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
|
196
197
|
ultralytics/nn/autobackend.py,sha256=uTOQyQ4v0_IZvvqAHnDsAxJv3QKe9-L2ozsZWSlZpPU,41287
|
197
|
-
ultralytics/nn/tasks.py,sha256=
|
198
|
+
ultralytics/nn/tasks.py,sha256=an91NTeEDnO1JKVcAYnN-xNpfYsUsAZncUVrFG6jLJg,72164
|
198
199
|
ultralytics/nn/text_model.py,sha256=m4jDB5bzOLOS8XNmFi9oQk-skzRHiIpJy4K-_SIARR0,13498
|
199
200
|
ultralytics/nn/modules/__init__.py,sha256=2nY0X69Z5DD5SWt6v3CUTZa5gXSzC9TQr3VTVqhyGho,3158
|
200
201
|
ultralytics/nn/modules/activation.py,sha256=75JcIMH2Cu9GTC2Uf55r_5YLpxcrXQDaVoeGQ0hlUAU,2233
|
@@ -205,13 +206,13 @@ ultralytics/nn/modules/transformer.py,sha256=PW5-6gzOP3_rZ_uAkmxvI42nU5bkrgbgLKC
|
|
205
206
|
ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
|
206
207
|
ultralytics/solutions/__init__.py,sha256=ZoeAQavTLp8aClnhZ9tbl6lxy86GxofyGvZWTx2aWkI,1209
|
207
208
|
ultralytics/solutions/ai_gym.py,sha256=A8vzdjTqOF2mFAiiy7zu3f8lzwqLJ07dk5aqZ8p-x_w,5256
|
208
|
-
ultralytics/solutions/analytics.py,sha256=
|
209
|
+
ultralytics/solutions/analytics.py,sha256=IfYlXV4vufpaOZz9h8cT1Vx9RjsqQYTCB7SbDlR0zv0,12784
|
209
210
|
ultralytics/solutions/config.py,sha256=1HZvgWPt7duDxqAaOTyu4-TOBeRJeWx5EQgUwnyyO50,5394
|
210
211
|
ultralytics/solutions/distance_calculation.py,sha256=e2Xa7dVOqiuk43JNakoxQlX48evEgZiEtxdtHTdlAsk,5931
|
211
212
|
ultralytics/solutions/heatmap.py,sha256=IVnTOyIbxKrhmnzGbkncIqPakPHeJe4nrwQkOPJ00wY,5421
|
212
213
|
ultralytics/solutions/instance_segmentation.py,sha256=HBWkCwmRa0jk84q4fhANzGpyirAtiCkAKRt0j9ED_Cw,3739
|
213
214
|
ultralytics/solutions/object_blurrer.py,sha256=UVd9EGpyb_fJXFnPg3lbnhWxY1ntHVWmIJ2ragbZ6eY,3942
|
214
|
-
ultralytics/solutions/object_counter.py,sha256=
|
215
|
+
ultralytics/solutions/object_counter.py,sha256=1iPJW_59iIw8DZedYdjw7HIQINpQtEBCd190g6TosNA,9353
|
215
216
|
ultralytics/solutions/object_cropper.py,sha256=SVB9fflB7-juZWUARpi-kndSZDVI-oXjHg4WUnOuA9A,3470
|
216
217
|
ultralytics/solutions/parking_management.py,sha256=IHWK48DZa6PwaOKUu3XTJAZCxF6WtTlCno7N8W6VR4k,13481
|
217
218
|
ultralytics/solutions/queue_management.py,sha256=_K6ugLMDfpp37S-LFV36K3QXf3vqjfxji8BPP_-6iqc,4337
|
@@ -226,31 +227,31 @@ ultralytics/solutions/vision_eye.py,sha256=LCb-2YPVvEks9e7xqZtNGftpAXNaZhEUb5yb3
|
|
226
227
|
ultralytics/solutions/templates/similarity-search.html,sha256=DPoAO-1H-KXNt_T8mGtSCsYUEi_5Nrx01p0cZfX-E8Q,3790
|
227
228
|
ultralytics/trackers/__init__.py,sha256=Zlu_Ig5osn7hqch_g5Be_e4pwZUkeeTQiesJCi0pFGI,255
|
228
229
|
ultralytics/trackers/basetrack.py,sha256=-skBFFatzgJFAPN9Frm1u1h_RDUg3WOlxG6eHQxp2Gw,4384
|
229
|
-
ultralytics/trackers/bot_sort.py,sha256=
|
230
|
+
ultralytics/trackers/bot_sort.py,sha256=knP5oo1LC45Lrato8LpcY_j4KBojQFP1lxT_NJxhEUo,12134
|
230
231
|
ultralytics/trackers/byte_tracker.py,sha256=CNS10VOGPtXXEimi0TaO88TAIcOBgo8ALF9H79iK_uQ,21633
|
231
232
|
ultralytics/trackers/track.py,sha256=EmYi42ujLP3_CKuS6CmO_9dw8Ekg7-0WWJQeYfQucv0,4804
|
232
233
|
ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
233
234
|
ultralytics/trackers/utils/gmc.py,sha256=9IvCf5MhBYY9ppVHykN02_oBWHmE98R8EaYFKaykdV0,14032
|
234
235
|
ultralytics/trackers/utils/kalman_filter.py,sha256=PPmM0lwBMdT_hGojvfLoUsBUFMBBMNRAxKbMcQa3wJ0,21619
|
235
236
|
ultralytics/trackers/utils/matching.py,sha256=uSYtywqi1lE_uNN1FwuBFPyISfDQXHMu8K5KH69nrRI,7160
|
236
|
-
ultralytics/utils/__init__.py,sha256=
|
237
|
+
ultralytics/utils/__init__.py,sha256=GYsojWuYvvSCKhUtQhzv-HmLjfUJrqZXqvu8bw7HbeU,59523
|
237
238
|
ultralytics/utils/autobatch.py,sha256=33m8YgggLIhltDqMXZ5OE-FGs2QiHrl2-LfgY1mI4cw,5119
|
238
239
|
ultralytics/utils/autodevice.py,sha256=AvgXFt8c1Cg4icKh0Hbhhz8UmVQ2Wjyfdfkeb2C8zck,8855
|
239
|
-
ultralytics/utils/benchmarks.py,sha256=
|
240
|
-
ultralytics/utils/checks.py,sha256=
|
240
|
+
ultralytics/utils/benchmarks.py,sha256=14jidnH74g_ZCChuJF5qUnQ2YugX5amGTjea9__RlJ4,30836
|
241
|
+
ultralytics/utils/checks.py,sha256=PPVmxfxoHuC4YR7i56uklCKXFAPnltzbHHCxUwERjUQ,34100
|
241
242
|
ultralytics/utils/dist.py,sha256=A9lDGtGefTjSVvVS38w86GOdbtLzNBDZuDGK0MT4PRI,4170
|
242
|
-
ultralytics/utils/downloads.py,sha256=
|
243
|
+
ultralytics/utils/downloads.py,sha256=YB6rJkcRGQfklUjZqi9dOkTiZaDSqbkGyZEFcZLQkgc,22080
|
243
244
|
ultralytics/utils/errors.py,sha256=XT9Ru7ivoBgofK6PlnyigGoa7Fmf5nEhyHtnD-8TRXI,1584
|
244
245
|
ultralytics/utils/export.py,sha256=ZmxiY5Y2MuL4iBFsLr8ykbUsnvT01DCs0Kg1w3_Ikac,9789
|
245
246
|
ultralytics/utils/files.py,sha256=ZCbLGleiF0f-PqYfaxMFAWop88w7U1hpreHXl8b2ko0,8238
|
246
247
|
ultralytics/utils/instance.py,sha256=vhqaZRGT_4K9Q3oQH5KNNK4ISOzxlf1_JjauwhuFhu0,18408
|
247
248
|
ultralytics/utils/loss.py,sha256=fbOWc3Iu0QOJiWbi-mXWA9-1otTYlehtmUsI7os7ydM,39799
|
248
|
-
ultralytics/utils/metrics.py,sha256=
|
249
|
+
ultralytics/utils/metrics.py,sha256=N-QwG-a3ox2cUYdS7-q-cOxLdwlkkZvhA2mF5UdO3jU,63020
|
249
250
|
ultralytics/utils/ops.py,sha256=Yjm397sirPt9wNlgHU2SeVEApeEeYX1msSg5cTBGN8g,34381
|
250
251
|
ultralytics/utils/patches.py,sha256=GI7NXCJ5H22FGp3sIvj5rrGfwdYNRWlxFcW-Jhjgius,5181
|
251
|
-
ultralytics/utils/plotting.py,sha256=
|
252
|
+
ultralytics/utils/plotting.py,sha256=QMwedj19XNHus5NbUY3cQI1PGDgriPhHOzGirBsxdK8,48277
|
252
253
|
ultralytics/utils/tal.py,sha256=aXawOnhn8ni65tJWIW-PYqWr_TRvltbHBjrTo7o6lDQ,20924
|
253
|
-
ultralytics/utils/torch_utils.py,sha256=
|
254
|
+
ultralytics/utils/torch_utils.py,sha256=iIAjf2g4hikzBeHvKN-EQK8QFlC_QtWWRuYQuBF2zIk,39184
|
254
255
|
ultralytics/utils/triton.py,sha256=M7qe4RztiADBJQEWQKaIQsp94ERFJ_8_DUHDR6TXEOM,5410
|
255
256
|
ultralytics/utils/tuner.py,sha256=bHr09Fz-0-t0ei55gX5wJh-obyiAQoicP7HUVM2I8qA,6826
|
256
257
|
ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
|
@@ -264,9 +265,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
|
|
264
265
|
ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
|
265
266
|
ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
|
266
267
|
ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
|
267
|
-
ultralytics-8.3.
|
268
|
-
ultralytics-8.3.
|
269
|
-
ultralytics-8.3.
|
270
|
-
ultralytics-8.3.
|
271
|
-
ultralytics-8.3.
|
272
|
-
ultralytics-8.3.
|
268
|
+
ultralytics-8.3.147.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
269
|
+
ultralytics-8.3.147.dist-info/METADATA,sha256=tgOxTCFjKc-iYOS27UzAQ-yAPXPotF9usVDa8Gd01ok,37200
|
270
|
+
ultralytics-8.3.147.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
271
|
+
ultralytics-8.3.147.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
272
|
+
ultralytics-8.3.147.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
273
|
+
ultralytics-8.3.147.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|