ultralytics 8.3.51__py3-none-any.whl → 8.3.53__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.
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/solutions/default.yaml +16 -16
- ultralytics/engine/exporter.py +44 -18
- ultralytics/utils/__init__.py +14 -4
- ultralytics/utils/benchmarks.py +1 -1
- ultralytics/utils/ops.py +7 -2
- ultralytics/utils/torch_utils.py +47 -17
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/METADATA +1 -1
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/RECORD +13 -13
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/LICENSE +0 -0
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.51.dist-info → ultralytics-8.3.53.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
2
|
-
# Configuration for Ultralytics Solutions
|
2
|
+
# Configuration for Ultralytics Solutions: https://docs.ultralytics.com/solutions/
|
3
3
|
|
4
|
-
# Object counting settings
|
5
|
-
region: #
|
6
|
-
show_in: True #
|
7
|
-
show_out: True #
|
4
|
+
# Object counting settings --------------------------------------------------------------------------------------------
|
5
|
+
region: # list[tuple[int, int]] object counting, queue or speed estimation region points.
|
6
|
+
show_in: True # (bool) flag to display objects moving *into* the defined region
|
7
|
+
show_out: True # (bool) flag to display objects moving *out of* the defined region
|
8
8
|
|
9
|
-
# Heatmaps settings
|
10
|
-
colormap: #
|
9
|
+
# Heatmaps settings ----------------------------------------------------------------------------------------------------
|
10
|
+
colormap: # (int | str) colormap for heatmap, Only OPENCV supported colormaps can be used.
|
11
11
|
|
12
|
-
# Workouts monitoring settings
|
13
|
-
up_angle: 145.0 # Workouts up_angle for counts, 145.0 is default value.
|
14
|
-
down_angle: 90 # Workouts down_angle for counts, 90 is default value.
|
15
|
-
kpts: [6, 8, 10] #
|
12
|
+
# Workouts monitoring settings -----------------------------------------------------------------------------------------
|
13
|
+
up_angle: 145.0 # (float) Workouts up_angle for counts, 145.0 is default value.
|
14
|
+
down_angle: 90 # (float) Workouts down_angle for counts, 90 is default value. Y
|
15
|
+
kpts: [6, 8, 10] # (list[int]) keypoints for workouts monitoring, i.e. for pushups kpts have values of [6, 8, 10].
|
16
16
|
|
17
|
-
# Analytics settings
|
18
|
-
analytics_type: "line" #
|
19
|
-
json_file: # parking system regions file path.
|
17
|
+
# Analytics settings ---------------------------------------------------------------------------------------------------
|
18
|
+
analytics_type: "line" # (str) analytics type i.e "line", "pie", "bar" or "area" charts.
|
19
|
+
json_file: # (str) parking system regions file path.
|
20
20
|
|
21
|
-
# Security alarm system
|
22
|
-
records: 5 # Total detections count to send an email about security
|
21
|
+
# Security alarm system settings ---------------------------------------------------------------------------------------
|
22
|
+
records: 5 # (int) Total detections count to send an email about security
|
ultralytics/engine/exporter.py
CHANGED
@@ -101,23 +101,47 @@ from ultralytics.utils.torch_utils import TORCH_1_13, get_latest_opset, select_d
|
|
101
101
|
def export_formats():
|
102
102
|
"""Ultralytics YOLO export formats."""
|
103
103
|
x = [
|
104
|
-
["PyTorch", "-", ".pt", True, True],
|
105
|
-
["TorchScript", "torchscript", ".torchscript", True, True],
|
106
|
-
["ONNX", "onnx", ".onnx", True, True],
|
107
|
-
["OpenVINO", "openvino", "_openvino_model", True, False],
|
108
|
-
["TensorRT", "engine", ".engine", False, True],
|
109
|
-
["CoreML", "coreml", ".mlpackage", True, False],
|
110
|
-
["TensorFlow SavedModel", "saved_model", "_saved_model", True, True],
|
111
|
-
["TensorFlow GraphDef", "pb", ".pb", True, True],
|
112
|
-
["TensorFlow Lite", "tflite", ".tflite", True, False],
|
113
|
-
["TensorFlow Edge TPU", "edgetpu", "_edgetpu.tflite", True, False],
|
114
|
-
["TensorFlow.js", "tfjs", "_web_model", True, False],
|
115
|
-
["PaddlePaddle", "paddle", "_paddle_model", True, True],
|
116
|
-
["MNN", "mnn", ".mnn", True, True],
|
117
|
-
["NCNN", "ncnn", "_ncnn_model", True, True],
|
118
|
-
["IMX", "imx", "_imx_model", True, True],
|
104
|
+
["PyTorch", "-", ".pt", True, True, []],
|
105
|
+
["TorchScript", "torchscript", ".torchscript", True, True, ["optimize", "batch"]],
|
106
|
+
["ONNX", "onnx", ".onnx", True, True, ["half", "dynamic", "simplify", "opset", "batch"]],
|
107
|
+
["OpenVINO", "openvino", "_openvino_model", True, False, ["half", "int8", "batch"]],
|
108
|
+
["TensorRT", "engine", ".engine", False, True, ["half", "dynamic", "simplify", "int8", "batch"]],
|
109
|
+
["CoreML", "coreml", ".mlpackage", True, False, ["half", "int8", "nms", "batch"]],
|
110
|
+
["TensorFlow SavedModel", "saved_model", "_saved_model", True, True, ["keras", "int8", "batch"]],
|
111
|
+
["TensorFlow GraphDef", "pb", ".pb", True, True, ["batch"]],
|
112
|
+
["TensorFlow Lite", "tflite", ".tflite", True, False, ["half", "int8", "batch"]],
|
113
|
+
["TensorFlow Edge TPU", "edgetpu", "_edgetpu.tflite", True, False, []],
|
114
|
+
["TensorFlow.js", "tfjs", "_web_model", True, False, ["half", "int8", "batch"]],
|
115
|
+
["PaddlePaddle", "paddle", "_paddle_model", True, True, ["batch"]],
|
116
|
+
["MNN", "mnn", ".mnn", True, True, ["batch", "int8", "half"]],
|
117
|
+
["NCNN", "ncnn", "_ncnn_model", True, True, ["half", "batch"]],
|
118
|
+
["IMX", "imx", "_imx_model", True, True, ["int8"]],
|
119
119
|
]
|
120
|
-
return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU"], zip(*x)))
|
120
|
+
return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU", "Arguments"], zip(*x)))
|
121
|
+
|
122
|
+
|
123
|
+
def validate_args(format, passed_args, valid_args):
|
124
|
+
"""
|
125
|
+
Validates arguments based on format.
|
126
|
+
|
127
|
+
Args:
|
128
|
+
format (str): The export format.
|
129
|
+
passed_args (Namespace): The arguments used during export.
|
130
|
+
valid_args (dict): List of valid arguments for the format.
|
131
|
+
|
132
|
+
Raises:
|
133
|
+
AssertionError: If an argument that's not supported by the export format is used, or if format doesn't have the supported arguments listed.
|
134
|
+
"""
|
135
|
+
# Only check valid usage of these args
|
136
|
+
export_args = ["half", "int8", "dynamic", "keras", "nms", "batch"]
|
137
|
+
|
138
|
+
assert valid_args is not None, f"ERROR ❌️ valid arguments for '{format}' not listed."
|
139
|
+
custom = {"batch": 1, "data": None, "device": None} # exporter defaults
|
140
|
+
default_args = get_cfg(DEFAULT_CFG, custom)
|
141
|
+
for arg in export_args:
|
142
|
+
not_default = getattr(passed_args, arg, None) != getattr(default_args, arg, None)
|
143
|
+
if not_default:
|
144
|
+
assert arg in valid_args, f"ERROR ❌️ argument '{arg}' is not supported for format='{format}'"
|
121
145
|
|
122
146
|
|
123
147
|
def gd_outputs(gd):
|
@@ -182,7 +206,8 @@ class Exporter:
|
|
182
206
|
fmt = "engine"
|
183
207
|
if fmt in {"mlmodel", "mlpackage", "mlprogram", "apple", "ios", "coreml"}: # 'coreml' aliases
|
184
208
|
fmt = "coreml"
|
185
|
-
|
209
|
+
fmts_dict = export_formats()
|
210
|
+
fmts = tuple(fmts_dict["Argument"][1:]) # available export formats
|
186
211
|
if fmt not in fmts:
|
187
212
|
import difflib
|
188
213
|
|
@@ -224,7 +249,8 @@ class Exporter:
|
|
224
249
|
assert dla in {"0", "1"}, f"Expected self.args.device='dla:0' or 'dla:1, but got {self.args.device}."
|
225
250
|
self.device = select_device("cpu" if self.args.device is None else self.args.device)
|
226
251
|
|
227
|
-
#
|
252
|
+
# Argument compatibility checks
|
253
|
+
validate_args(fmt, self.args, fmts_dict["Arguments"][flags.index(True) + 1])
|
228
254
|
if imx and not self.args.int8:
|
229
255
|
LOGGER.warning("WARNING ⚠️ IMX only supports int8 export, setting int8=True.")
|
230
256
|
self.args.int8 = True
|
ultralytics/utils/__init__.py
CHANGED
@@ -12,12 +12,12 @@ import subprocess
|
|
12
12
|
import sys
|
13
13
|
import threading
|
14
14
|
import time
|
15
|
-
import urllib
|
16
15
|
import uuid
|
17
16
|
from pathlib import Path
|
18
17
|
from threading import Lock
|
19
18
|
from types import SimpleNamespace
|
20
19
|
from typing import Union
|
20
|
+
from urllib.parse import unquote
|
21
21
|
|
22
22
|
import cv2
|
23
23
|
import matplotlib.pyplot as plt
|
@@ -1130,7 +1130,8 @@ class JSONDict(dict):
|
|
1130
1130
|
|
1131
1131
|
def __str__(self):
|
1132
1132
|
"""Return a pretty-printed JSON string representation of the dictionary."""
|
1133
|
-
|
1133
|
+
contents = json.dumps(dict(self), indent=2, ensure_ascii=False, default=self._json_default)
|
1134
|
+
return f'JSONDict("{self.file_path}"):\n{contents}'
|
1134
1135
|
|
1135
1136
|
def update(self, *args, **kwargs):
|
1136
1137
|
"""Update the dictionary and persist changes."""
|
@@ -1238,14 +1239,23 @@ class SettingsManager(JSONDict):
|
|
1238
1239
|
f"Please change one to avoid possible issues during training. {self.help_msg}"
|
1239
1240
|
)
|
1240
1241
|
|
1242
|
+
def __setitem__(self, key, value):
|
1243
|
+
"""Updates one key: value pair."""
|
1244
|
+
self.update({key: value})
|
1245
|
+
|
1241
1246
|
def update(self, *args, **kwargs):
|
1242
1247
|
"""Updates settings, validating keys and types."""
|
1248
|
+
for arg in args:
|
1249
|
+
if isinstance(arg, dict):
|
1250
|
+
kwargs.update(arg)
|
1243
1251
|
for k, v in kwargs.items():
|
1244
1252
|
if k not in self.defaults:
|
1245
1253
|
raise KeyError(f"No Ultralytics setting '{k}'. {self.help_msg}")
|
1246
1254
|
t = type(self.defaults[k])
|
1247
1255
|
if not isinstance(v, t):
|
1248
|
-
raise TypeError(
|
1256
|
+
raise TypeError(
|
1257
|
+
f"Ultralytics setting '{k}' must be '{t.__name__}' type, not '{type(v).__name__}'. {self.help_msg}"
|
1258
|
+
)
|
1249
1259
|
super().update(*args, **kwargs)
|
1250
1260
|
|
1251
1261
|
def reset(self):
|
@@ -1265,7 +1275,7 @@ def deprecation_warn(arg, new_arg=None):
|
|
1265
1275
|
def clean_url(url):
|
1266
1276
|
"""Strip auth from URL, i.e. https://url.com/file.txt?auth -> https://url.com/file.txt."""
|
1267
1277
|
url = Path(url).as_posix().replace(":/", "://") # Pathlib turns :// -> :/, as_posix() for Windows
|
1268
|
-
return
|
1278
|
+
return unquote(url).split("?")[0] # '%2F' to '/', split https://url.com/file.txt?auth
|
1269
1279
|
|
1270
1280
|
|
1271
1281
|
def url2file(url):
|
ultralytics/utils/benchmarks.py
CHANGED
@@ -90,7 +90,7 @@ def benchmark(
|
|
90
90
|
|
91
91
|
y = []
|
92
92
|
t0 = time.time()
|
93
|
-
for i, (name, format, suffix, cpu, gpu) in enumerate(zip(*export_formats().values())):
|
93
|
+
for i, (name, format, suffix, cpu, gpu, _) in enumerate(zip(*export_formats().values())):
|
94
94
|
emoji, filename = "❌", None # export defaults
|
95
95
|
try:
|
96
96
|
# Checks
|
ultralytics/utils/ops.py
CHANGED
@@ -75,8 +75,13 @@ def segment2box(segment, width=640, height=640):
|
|
75
75
|
(np.ndarray): the minimum and maximum x and y values of the segment.
|
76
76
|
"""
|
77
77
|
x, y = segment.T # segment xy
|
78
|
-
|
79
|
-
|
78
|
+
# any 3 out of 4 sides are outside the image, clip coordinates first, https://github.com/ultralytics/ultralytics/pull/18294
|
79
|
+
if np.array([x.min() < 0, y.min() < 0, x.max() > width, y.max() > height]).sum() >= 3:
|
80
|
+
x = x.clip(0, width)
|
81
|
+
y = y.clip(0, height)
|
82
|
+
inside = (x >= 0) & (y >= 0) & (x <= width) & (y <= height)
|
83
|
+
x = x[inside]
|
84
|
+
y = y[inside]
|
80
85
|
return (
|
81
86
|
np.array([x.min(), y.min(), x.max(), y.max()], dtype=segment.dtype)
|
82
87
|
if any(x)
|
ultralytics/utils/torch_utils.py
CHANGED
@@ -617,6 +617,32 @@ def convert_optimizer_state_dict_to_fp16(state_dict):
|
|
617
617
|
return state_dict
|
618
618
|
|
619
619
|
|
620
|
+
@contextmanager
|
621
|
+
def cuda_memory_usage(device=None):
|
622
|
+
"""
|
623
|
+
Monitor and manage CUDA memory usage.
|
624
|
+
|
625
|
+
This function checks if CUDA is available and, if so, empties the CUDA cache to free up unused memory.
|
626
|
+
It then yields a dictionary containing memory usage information, which can be updated by the caller.
|
627
|
+
Finally, it updates the dictionary with the amount of memory reserved by CUDA on the specified device.
|
628
|
+
|
629
|
+
Args:
|
630
|
+
device (torch.device, optional): The CUDA device to query memory usage for. Defaults to None.
|
631
|
+
|
632
|
+
Yields:
|
633
|
+
(dict): A dictionary with a key 'memory' initialized to 0, which will be updated with the reserved memory.
|
634
|
+
"""
|
635
|
+
cuda_info = dict(memory=0)
|
636
|
+
if torch.cuda.is_available():
|
637
|
+
torch.cuda.empty_cache()
|
638
|
+
try:
|
639
|
+
yield cuda_info
|
640
|
+
finally:
|
641
|
+
cuda_info["memory"] = torch.cuda.memory_reserved(device)
|
642
|
+
else:
|
643
|
+
yield cuda_info
|
644
|
+
|
645
|
+
|
620
646
|
def profile(input, ops, n=10, device=None, max_num_obj=0):
|
621
647
|
"""
|
622
648
|
Ultralytics speed, memory and FLOPs profiler.
|
@@ -653,27 +679,31 @@ def profile(input, ops, n=10, device=None, max_num_obj=0):
|
|
653
679
|
flops = 0
|
654
680
|
|
655
681
|
try:
|
682
|
+
mem = 0
|
656
683
|
for _ in range(n):
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
684
|
+
with cuda_memory_usage(device) as cuda_info:
|
685
|
+
t[0] = time_sync()
|
686
|
+
y = m(x)
|
687
|
+
t[1] = time_sync()
|
688
|
+
try:
|
689
|
+
(sum(yi.sum() for yi in y) if isinstance(y, list) else y).sum().backward()
|
690
|
+
t[2] = time_sync()
|
691
|
+
except Exception: # no backward method
|
692
|
+
# print(e) # for debug
|
693
|
+
t[2] = float("nan")
|
694
|
+
mem += cuda_info["memory"] / 1e9 # (GB)
|
666
695
|
tf += (t[1] - t[0]) * 1000 / n # ms per op forward
|
667
696
|
tb += (t[2] - t[1]) * 1000 / n # ms per op backward
|
668
697
|
if max_num_obj: # simulate training with predictions per image grid (for AutoBatch)
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
698
|
+
with cuda_memory_usage(device) as cuda_info:
|
699
|
+
torch.randn(
|
700
|
+
x.shape[0],
|
701
|
+
max_num_obj,
|
702
|
+
int(sum((x.shape[-1] / s) * (x.shape[-2] / s) for s in m.stride.tolist())),
|
703
|
+
device=device,
|
704
|
+
dtype=torch.float32,
|
705
|
+
)
|
706
|
+
mem += cuda_info["memory"] / 1e9 # (GB)
|
677
707
|
s_in, s_out = (tuple(x.shape) if isinstance(x, torch.Tensor) else "list" for x in (x, y)) # shapes
|
678
708
|
p = sum(x.numel() for x in m.parameters()) if isinstance(m, nn.Module) else 0 # parameters
|
679
709
|
LOGGER.info(f"{p:12}{flops:12.4g}{mem:>14.3f}{tf:14.4g}{tb:14.4g}{str(s_in):>24s}{str(s_out):>24s}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.53
|
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>
|
@@ -7,7 +7,7 @@ tests/test_exports.py,sha256=1MvhcQ2qHdbJImHII-bFarcaIcm-kPlEK-OdFLxnj7o,8769
|
|
7
7
|
tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
|
8
8
|
tests/test_python.py,sha256=IfHAXqilpYxWNmIE6rAWWUSeIYS6SBO9AkXGHDGZTvA,23182
|
9
9
|
tests/test_solutions.py,sha256=HlDe-XOgBX0k1cLhRTAhhawMHk6p-5dg5xl2AIRjfdk,3790
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=kIIMpFWlMtP3bD2_KHobrs6DR7u8pD2YM-ZRZh7XiYw,681
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
13
13
|
ultralytics/cfg/__init__.py,sha256=etGrRb8t9r6R-n-00qFAmOZHXNriXEUe0zvEzCPi5oc,38921
|
@@ -86,7 +86,7 @@ ultralytics/cfg/models/v9/yolov9e.yaml,sha256=dhaR47WxuLOrZWDCceS4bQG00sQdrMc8FQ
|
|
86
86
|
ultralytics/cfg/models/v9/yolov9m.yaml,sha256=l6CmivzNu44sRVmkQXk4-tXflbV1nWnk5MSc8su2vhs,1311
|
87
87
|
ultralytics/cfg/models/v9/yolov9s.yaml,sha256=lPWcu-6ub1kCBD6zIDFwthYZ3RvdJfODWKy3vEQWRjo,1291
|
88
88
|
ultralytics/cfg/models/v9/yolov9t.yaml,sha256=qL__kr6GoefpQWP4jV0jdzwTp46bdFUcqtPRnfDbkY8,1275
|
89
|
-
ultralytics/cfg/solutions/default.yaml,sha256=
|
89
|
+
ultralytics/cfg/solutions/default.yaml,sha256=fPZqt9hYLEmFrjlujsNI3IPKcl5YJk-R2mQPHRkqfyQ,1571
|
90
90
|
ultralytics/cfg/trackers/botsort.yaml,sha256=FDIrZ3hAhRtMfDl654pt1HIexmPqlFQK-3lQ4D0tF84,918
|
91
91
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=rBWY4RjjX6PTO2o6TUJFYHVgXNZHCN5TuBuzwuPYVjA,723
|
92
92
|
ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
|
@@ -100,7 +100,7 @@ ultralytics/data/loaders.py,sha256=k1Vq7Rxv6tpsRsYuMdZeI3_f2BciAaZwhDQU8iHhVJM,2
|
|
100
100
|
ultralytics/data/split_dota.py,sha256=eFafJ7Vg52wj6KDCHFJAf1tKzyPD5YaPB8kM4VX5Aeg,10688
|
101
101
|
ultralytics/data/utils.py,sha256=bmWEIrdogj4kssZQSJdSbIF8QsJU00lo-EY-Mgcqv4M,31073
|
102
102
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
103
|
-
ultralytics/engine/exporter.py,sha256=
|
103
|
+
ultralytics/engine/exporter.py,sha256=I7SP_ftvggxca37OioYysOsD1f0c8jAhHTiKVUtlGAA,68602
|
104
104
|
ultralytics/engine/model.py,sha256=l5UiXGBa4ox9BXq0dc6eUsOvd85Q4KHUxGCwY2dfXQE,53113
|
105
105
|
ultralytics/engine/predictor.py,sha256=o1RYMFH3_uVOMCIXXakpRYpNzoD-6Bdsxryt5fuBni0,17712
|
106
106
|
ultralytics/engine/results.py,sha256=a1XFZRPwqgKDBOEAibHuT9nP2xefLiWVsMoBJbcr4iA,75058
|
@@ -202,9 +202,9 @@ ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7J
|
|
202
202
|
ultralytics/trackers/utils/gmc.py,sha256=VcURuY041qGCeWUGMxHZBr10T16LtcMqyv7AmTfE1MY,14557
|
203
203
|
ultralytics/trackers/utils/kalman_filter.py,sha256=cH9zD3fwkuezP97H9mw8cSBN7a8hHKx_Sx1j7t3oYGs,21349
|
204
204
|
ultralytics/trackers/utils/matching.py,sha256=Y94cMwo9TLd-IWFqHKp8dHSDyguS1qtOeebBMalWnJQ,7078
|
205
|
-
ultralytics/utils/__init__.py,sha256
|
205
|
+
ultralytics/utils/__init__.py,sha256=-Q71hK_mE5ED0PALDW9pOHCygWxF2SAIXwUN-5nhv2o,49505
|
206
206
|
ultralytics/utils/autobatch.py,sha256=yBkojvLhZofwwKnaA8BnEIFXp3UWt7rVmyuh-dl1Ymk,5020
|
207
|
-
ultralytics/utils/benchmarks.py,sha256=
|
207
|
+
ultralytics/utils/benchmarks.py,sha256=xFFFCPd8KISVkeDc32LZWZUBlqz6Sa1IzGUBnc1QZOM,25628
|
208
208
|
ultralytics/utils/checks.py,sha256=1Cu8k2qg_pFaoHvkiE07Ab5ZGLyZHZxFAg1IMM63CBQ,30145
|
209
209
|
ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
|
210
210
|
ultralytics/utils/downloads.py,sha256=fh7I5toTSowAOXtmx5zIzCEDREfTFG45cLIHmsDmuYw,21974
|
@@ -213,11 +213,11 @@ ultralytics/utils/files.py,sha256=uiXQSVABJRoI5ImnM6ndEBIFbECfksmWNEldBg8GnSo,82
|
|
213
213
|
ultralytics/utils/instance.py,sha256=NuTLa_XoqgmWNhxQ2JuflT22UAmEmv0UWd5BZXCjSNM,16841
|
214
214
|
ultralytics/utils/loss.py,sha256=_d2L4lIemaeAHrGHqf9q-KI7yTgHKCbIcYAF7Y-farI,34185
|
215
215
|
ultralytics/utils/metrics.py,sha256=toJlyA0W-xtChqAtIDiHISolxc_30NP33ezxWQ1rnPc,53804
|
216
|
-
ultralytics/utils/ops.py,sha256=
|
216
|
+
ultralytics/utils/ops.py,sha256=d5sLAvgqP36Pq_dMQE1DZFYhmIGUMrlrxh1czcuUfC4,33546
|
217
217
|
ultralytics/utils/patches.py,sha256=J-iOwIRbfUs-inBZerhnXby5tUKjYcOIyvhLTS352JE,3270
|
218
218
|
ultralytics/utils/plotting.py,sha256=GmBkN7e1skJK2cZ2hzKBXQCb1gayWTrA9TLHw0q07UM,62948
|
219
219
|
ultralytics/utils/tal.py,sha256=thD_AEhVmhaZqmS5szZMvpKO-RKOeZwfX1BYAhdnA0o,18470
|
220
|
-
ultralytics/utils/torch_utils.py,sha256=
|
220
|
+
ultralytics/utils/torch_utils.py,sha256=7qP0YhF5d8qCUD2XiOwXjCTOw8pje6HvX42J8oL3Ldw,33263
|
221
221
|
ultralytics/utils/triton.py,sha256=HL_gjIwMoi-WD8gJLTmemBehIto8eRz3HdK8fcROLk0,4043
|
222
222
|
ultralytics/utils/tuner.py,sha256=K09-z5k1E4ZriSKoWdwQrJ2PJ2fY1ez3-b2R6aKPTqM,6198
|
223
223
|
ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
|
@@ -231,9 +231,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=IbGQfEltamUKXJt93uSLQFn8c2rYh3DMTg
|
|
231
231
|
ultralytics/utils/callbacks/raytune.py,sha256=Ck_yFzg7UZXiDWrLHaltjQybzVWSFDfzpdrx9ZYTRfI,700
|
232
232
|
ultralytics/utils/callbacks/tensorboard.py,sha256=SHlE58Fb-sg-uZKtgy-ybIO3SAIfK55aj8kTYGA0Cyg,4167
|
233
233
|
ultralytics/utils/callbacks/wb.py,sha256=sizfTa-xI9k2pnDSP_Q9pHZEFwcl__gSFM0AcneuRpY,7058
|
234
|
-
ultralytics-8.3.
|
235
|
-
ultralytics-8.3.
|
236
|
-
ultralytics-8.3.
|
237
|
-
ultralytics-8.3.
|
238
|
-
ultralytics-8.3.
|
239
|
-
ultralytics-8.3.
|
234
|
+
ultralytics-8.3.53.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
235
|
+
ultralytics-8.3.53.dist-info/METADATA,sha256=ZyhZIwrXh4Uuvibs25BhIC6ei4X9Kz-qtBBaciS4tZc,35332
|
236
|
+
ultralytics-8.3.53.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
237
|
+
ultralytics-8.3.53.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
238
|
+
ultralytics-8.3.53.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
239
|
+
ultralytics-8.3.53.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|