ultralytics 8.3.107__py3-none-any.whl → 8.3.108__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/__init__.py +1 -1
- ultralytics/cfg/default.yaml +0 -1
- ultralytics/data/augment.py +9 -16
- ultralytics/data/dataset.py +3 -3
- ultralytics/engine/exporter.py +33 -13
- ultralytics/engine/predictor.py +1 -1
- ultralytics/nn/autobackend.py +3 -3
- ultralytics/nn/modules/head.py +1 -1
- ultralytics/solutions/solutions.py +4 -6
- ultralytics/solutions/speed_estimation.py +1 -3
- ultralytics/utils/callbacks/comet.py +4 -4
- ultralytics/utils/callbacks/raytune.py +6 -3
- ultralytics/utils/export.py +2 -0
- ultralytics/utils/metrics.py +3 -2
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/METADATA +3 -3
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/RECORD +21 -21
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.107.dist-info → ultralytics-8.3.108.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
@@ -442,7 +442,7 @@ def _handle_deprecation(custom: Dict) -> Dict:
|
|
442
442
|
"hide_conf": ("show_conf", lambda v: not bool(v)),
|
443
443
|
"line_thickness": ("line_width", lambda v: v),
|
444
444
|
}
|
445
|
-
removed_keys = {"label_smoothing", "save_hybrid"}
|
445
|
+
removed_keys = {"label_smoothing", "save_hybrid", "crop_fraction"}
|
446
446
|
|
447
447
|
for old_key, (new_key, transform) in deprecated_mappings.items():
|
448
448
|
if old_key not in custom:
|
ultralytics/cfg/default.yaml
CHANGED
@@ -118,7 +118,6 @@ copy_paste: 0.0 # (float) segment copy-paste (probability)
|
|
118
118
|
copy_paste_mode: "flip" # (str) the method to do copy_paste augmentation (flip, mixup)
|
119
119
|
auto_augment: randaugment # (str) auto augmentation policy for classification (randaugment, autoaugment, augmix)
|
120
120
|
erasing: 0.4 # (float) probability of random erasing during classification training (0-0.9), 0 means no erasing, must be less than 1.0.
|
121
|
-
crop_fraction: 1.0 # (float) image crop fraction for classification (0.1-1), 1.0 means no crop, must be greater than 0.
|
122
121
|
|
123
122
|
# Custom config.yaml ---------------------------------------------------------------------------------------------------
|
124
123
|
cfg: # (str, optional) for overriding defaults.yaml
|
ultralytics/data/augment.py
CHANGED
@@ -21,7 +21,6 @@ from ultralytics.utils.torch_utils import TORCHVISION_0_10, TORCHVISION_0_11, TO
|
|
21
21
|
|
22
22
|
DEFAULT_MEAN = (0.0, 0.0, 0.0)
|
23
23
|
DEFAULT_STD = (1.0, 1.0, 1.0)
|
24
|
-
DEFAULT_CROP_FRACTION = 1.0
|
25
24
|
|
26
25
|
|
27
26
|
class BaseTransform:
|
@@ -2446,7 +2445,7 @@ def classify_transforms(
|
|
2446
2445
|
mean=DEFAULT_MEAN,
|
2447
2446
|
std=DEFAULT_STD,
|
2448
2447
|
interpolation="BILINEAR",
|
2449
|
-
crop_fraction
|
2448
|
+
crop_fraction=None,
|
2450
2449
|
):
|
2451
2450
|
"""
|
2452
2451
|
Creates a composition of image transforms for classification tasks.
|
@@ -2461,7 +2460,7 @@ def classify_transforms(
|
|
2461
2460
|
mean (tuple): Mean values for each RGB channel used in normalization.
|
2462
2461
|
std (tuple): Standard deviation values for each RGB channel used in normalization.
|
2463
2462
|
interpolation (str): Interpolation method of either 'NEAREST', 'BILINEAR' or 'BICUBIC'.
|
2464
|
-
crop_fraction (float):
|
2463
|
+
crop_fraction (float): Deprecated, will be removed in a future version.
|
2465
2464
|
|
2466
2465
|
Returns:
|
2467
2466
|
(torchvision.transforms.Compose): A composition of torchvision transforms.
|
@@ -2473,12 +2472,12 @@ def classify_transforms(
|
|
2473
2472
|
"""
|
2474
2473
|
import torchvision.transforms as T # scope for faster 'import ultralytics'
|
2475
2474
|
|
2476
|
-
if isinstance(size, (tuple, list))
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2475
|
+
scale_size = size if isinstance(size, (tuple, list)) and len(size) == 2 else (size, size)
|
2476
|
+
|
2477
|
+
if crop_fraction:
|
2478
|
+
raise DeprecationWarning(
|
2479
|
+
"'crop_fraction' arg of classify_transforms is deprecated, will be removed in a future version."
|
2480
|
+
)
|
2482
2481
|
|
2483
2482
|
# Aspect ratio is preserved, crops center within image, no borders are added, image is lost
|
2484
2483
|
if scale_size[0] == scale_size[1]:
|
@@ -2487,13 +2486,7 @@ def classify_transforms(
|
|
2487
2486
|
else:
|
2488
2487
|
# Resize the shortest edge to matching target dim for non-square target
|
2489
2488
|
tfl = [T.Resize(scale_size)]
|
2490
|
-
tfl.
|
2491
|
-
[
|
2492
|
-
T.CenterCrop(size),
|
2493
|
-
T.ToTensor(),
|
2494
|
-
T.Normalize(mean=torch.tensor(mean), std=torch.tensor(std)),
|
2495
|
-
]
|
2496
|
-
)
|
2489
|
+
tfl += [T.CenterCrop(size), T.ToTensor(), T.Normalize(mean=torch.tensor(mean), std=torch.tensor(std))]
|
2497
2490
|
return T.Compose(tfl)
|
2498
2491
|
|
2499
2492
|
|
ultralytics/data/dataset.py
CHANGED
@@ -295,7 +295,7 @@ class YOLODataset(BaseDataset):
|
|
295
295
|
values = list(zip(*[list(b.values()) for b in batch]))
|
296
296
|
for i, k in enumerate(keys):
|
297
297
|
value = values[i]
|
298
|
-
if k
|
298
|
+
if k in {"img", "text_feats"}:
|
299
299
|
value = torch.stack(value, 0)
|
300
300
|
elif k == "visuals":
|
301
301
|
value = torch.nn.utils.rnn.pad_sequence(value, batch_first=True)
|
@@ -396,7 +396,7 @@ class YOLOMultiModalDataset(YOLODataset):
|
|
396
396
|
texts = [v.split("/") for v in self.data["names"].values()]
|
397
397
|
category_freq = defaultdict(int)
|
398
398
|
for label in self.labels:
|
399
|
-
for c in label["cls"]: # to check
|
399
|
+
for c in label["cls"].squeeze(-1): # to check
|
400
400
|
text = texts[int(c)]
|
401
401
|
for t in text:
|
402
402
|
t = t.strip()
|
@@ -751,7 +751,7 @@ class ClassificationDataset:
|
|
751
751
|
hsv_v=args.hsv_v,
|
752
752
|
)
|
753
753
|
if augment
|
754
|
-
else classify_transforms(size=args.imgsz
|
754
|
+
else classify_transforms(size=args.imgsz)
|
755
755
|
)
|
756
756
|
|
757
757
|
def __getitem__(self, i):
|
ultralytics/engine/exporter.py
CHANGED
@@ -292,9 +292,12 @@ class Exporter:
|
|
292
292
|
# Argument compatibility checks
|
293
293
|
fmt_keys = fmts_dict["Arguments"][flags.index(True) + 1]
|
294
294
|
validate_args(fmt, self.args, fmt_keys)
|
295
|
-
if imx
|
296
|
-
|
297
|
-
|
295
|
+
if imx:
|
296
|
+
if not self.args.int8:
|
297
|
+
LOGGER.warning("WARNING ⚠️ IMX export requires int8=True, setting int8=True.")
|
298
|
+
self.args.int8 = True
|
299
|
+
if model.task != "detect":
|
300
|
+
raise ValueError("IMX export only supported for detection models.")
|
298
301
|
if not hasattr(model, "names"):
|
299
302
|
model.names = default_class_names()
|
300
303
|
model.names = check_class_names(model.names)
|
@@ -1133,14 +1136,13 @@ class Exporter:
|
|
1133
1136
|
)
|
1134
1137
|
if getattr(self.model, "end2end", False):
|
1135
1138
|
raise ValueError("IMX export is not supported for end2end models.")
|
1136
|
-
|
1137
|
-
raise ValueError("IMX export is only supported for YOLOv8n detection models")
|
1138
|
-
check_requirements(("model-compression-toolkit>=2.3.0", "sony-custom-layers>=0.3.0"))
|
1139
|
+
check_requirements(("model-compression-toolkit>=2.3.0", "sony-custom-layers>=0.3.0", "edge-mdt-tpc>=1.1.0"))
|
1139
1140
|
check_requirements("imx500-converter[pt]>=3.16.1") # Separate requirements for imx500-converter
|
1140
1141
|
|
1141
1142
|
import model_compression_toolkit as mct
|
1142
1143
|
import onnx
|
1143
|
-
from
|
1144
|
+
from edgemdt_tpc import get_target_platform_capabilities
|
1145
|
+
from sony_custom_layers.pytorch import multiclass_nms
|
1144
1146
|
|
1145
1147
|
LOGGER.info(f"\n{prefix} starting export with model_compression_toolkit {mct.__version__}...")
|
1146
1148
|
|
@@ -1151,7 +1153,7 @@ class Exporter:
|
|
1151
1153
|
java_version = int(version_match.group(1)) if version_match else 0
|
1152
1154
|
assert java_version >= 17, "Java version too old"
|
1153
1155
|
except (FileNotFoundError, subprocess.CalledProcessError, AssertionError):
|
1154
|
-
cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "
|
1156
|
+
cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-21-jre"]
|
1155
1157
|
subprocess.run(cmd, check=True)
|
1156
1158
|
|
1157
1159
|
def representative_dataset_gen(dataloader=self.get_int8_calibration_dataloader(prefix)):
|
@@ -1160,23 +1162,41 @@ class Exporter:
|
|
1160
1162
|
img = img / 255.0
|
1161
1163
|
yield [img]
|
1162
1164
|
|
1163
|
-
tpc =
|
1164
|
-
|
1165
|
-
)
|
1165
|
+
tpc = get_target_platform_capabilities(tpc_version="4.0", device_type="imx500")
|
1166
|
+
|
1167
|
+
bit_cfg = mct.core.BitWidthConfig()
|
1168
|
+
if "C2PSA" in self.model.__str__(): # YOLO11
|
1169
|
+
layer_names = ["sub", "mul_2", "add_14", "cat_21"]
|
1170
|
+
weights_memory = 2585350.2439
|
1171
|
+
n_layers = 238 # 238 layers for fused YOLO11n
|
1172
|
+
else: # YOLOv8
|
1173
|
+
layer_names = ["sub", "mul", "add_6", "cat_17"]
|
1174
|
+
weights_memory = 2550540.8
|
1175
|
+
n_layers = 168 # 168 layers for fused YOLOv8n
|
1176
|
+
|
1177
|
+
# Check if the model has the expected number of layers
|
1178
|
+
if len(list(self.model.modules())) != n_layers:
|
1179
|
+
raise ValueError("IMX export only supported for YOLOv8n and YOLO11n models.")
|
1180
|
+
|
1181
|
+
for layer_name in layer_names:
|
1182
|
+
bit_cfg.set_manual_activation_bit_width([mct.core.common.network_editors.NodeNameFilter(layer_name)], 16)
|
1166
1183
|
|
1167
1184
|
config = mct.core.CoreConfig(
|
1168
1185
|
mixed_precision_config=mct.core.MixedPrecisionQuantizationConfig(num_of_images=10),
|
1169
1186
|
quantization_config=mct.core.QuantizationConfig(concat_threshold_update=True),
|
1187
|
+
bit_width_config=bit_cfg,
|
1170
1188
|
)
|
1171
1189
|
|
1172
|
-
resource_utilization = mct.core.ResourceUtilization(weights_memory=
|
1190
|
+
resource_utilization = mct.core.ResourceUtilization(weights_memory=weights_memory)
|
1173
1191
|
|
1174
1192
|
quant_model = (
|
1175
1193
|
mct.gptq.pytorch_gradient_post_training_quantization( # Perform Gradient-Based Post Training Quantization
|
1176
1194
|
model=self.model,
|
1177
1195
|
representative_data_gen=representative_dataset_gen,
|
1178
1196
|
target_resource_utilization=resource_utilization,
|
1179
|
-
gptq_config=mct.gptq.get_pytorch_gptq_config(
|
1197
|
+
gptq_config=mct.gptq.get_pytorch_gptq_config(
|
1198
|
+
n_epochs=1000, use_hessian_based_weights=False, use_hessian_sample_attention=False
|
1199
|
+
),
|
1180
1200
|
core_config=config,
|
1181
1201
|
target_platform_capabilities=tpc,
|
1182
1202
|
)[0]
|
ultralytics/engine/predictor.py
CHANGED
ultralytics/nn/autobackend.py
CHANGED
@@ -230,9 +230,9 @@ class AutoBackend(nn.Module):
|
|
230
230
|
import mct_quantizers as mctq
|
231
231
|
from sony_custom_layers.pytorch.nms import nms_ort # noqa
|
232
232
|
|
233
|
-
|
234
|
-
|
235
|
-
)
|
233
|
+
session_options = mctq.get_ort_session_options()
|
234
|
+
session_options.enable_mem_reuse = False # fix the shape mismatch from onnxruntime
|
235
|
+
session = onnxruntime.InferenceSession(w, session_options, providers=["CPUExecutionProvider"])
|
236
236
|
task = "detect"
|
237
237
|
|
238
238
|
output_names = [x.name for x in session.get_outputs()]
|
ultralytics/nn/modules/head.py
CHANGED
@@ -370,7 +370,7 @@ class LRPCHead(nn.Module):
|
|
370
370
|
pf_score = self.pf(cls_feat)[0, 0].flatten(0)
|
371
371
|
mask = pf_score.sigmoid() > conf
|
372
372
|
cls_feat = cls_feat.flatten(2).transpose(-1, -2)
|
373
|
-
cls_feat = self.vocab(cls_feat * mask.unsqueeze(-1).int()
|
373
|
+
cls_feat = self.vocab(cls_feat[:, mask] if conf else cls_feat * mask.unsqueeze(-1).int())
|
374
374
|
return (self.loc(loc_feat), cls_feat.transpose(-1, -2)), mask
|
375
375
|
else:
|
376
376
|
cls_feat = self.vocab(cls_feat)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
2
|
|
3
|
+
import math
|
3
4
|
from collections import defaultdict
|
4
5
|
|
5
6
|
import cv2
|
@@ -347,12 +348,9 @@ class SolutionAnnotator(Annotator):
|
|
347
348
|
Returns:
|
348
349
|
(float): The angle in degrees between the three points.
|
349
350
|
"""
|
350
|
-
|
351
|
-
|
352
|
-
angle
|
353
|
-
if angle > 180.0:
|
354
|
-
angle = 360 - angle
|
355
|
-
return angle
|
351
|
+
radians = math.atan2(c[1] - b[1], c[0] - b[0]) - math.atan2(a[1] - b[1], a[0] - b[0])
|
352
|
+
angle = abs(radians * 180.0 / math.pi)
|
353
|
+
return angle if angle <= 180.0 else (360 - angle)
|
356
354
|
|
357
355
|
def draw_specific_kpts(self, keypoints, indices=None, radius=2, conf_thresh=0.25):
|
358
356
|
"""
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
from time import time
|
4
4
|
|
5
|
-
import numpy as np
|
6
|
-
|
7
5
|
from ultralytics.solutions.solutions import BaseSolution, SolutionAnnotator, SolutionResults
|
8
6
|
from ultralytics.utils.plotting import colors
|
9
7
|
|
@@ -100,7 +98,7 @@ class SpeedEstimator(BaseSolution):
|
|
100
98
|
time_difference = time() - self.trk_pt[track_id]
|
101
99
|
if time_difference > 0:
|
102
100
|
# Calculate speed based on vertical displacement and time
|
103
|
-
self.spd[track_id] =
|
101
|
+
self.spd[track_id] = abs(self.track_line[-1][1] - self.trk_pp[track_id][1]) / time_difference
|
104
102
|
|
105
103
|
# Update tracking data for next frame
|
106
104
|
self.trk_pt[track_id] = time()
|
@@ -219,9 +219,9 @@ def _format_prediction_annotations(image_path, metadata, class_label_map=None, c
|
|
219
219
|
LOGGER.debug(f"COMET WARNING: Image: {image_path} has no bounding boxes predictions")
|
220
220
|
return None
|
221
221
|
|
222
|
-
|
223
|
-
|
224
|
-
|
222
|
+
# apply the mapping that was used to map the predicted classes when the JSON was created
|
223
|
+
if class_label_map and class_map:
|
224
|
+
class_label_map = {class_map[k]: v for k, v in class_label_map.items()}
|
225
225
|
try:
|
226
226
|
# import pycotools utilities to decompress annotations for various tasks, e.g. segmentation
|
227
227
|
from pycocotools.mask import decode # noqa
|
@@ -234,7 +234,7 @@ def _format_prediction_annotations(image_path, metadata, class_label_map=None, c
|
|
234
234
|
score = _scale_confidence_score(prediction["score"])
|
235
235
|
cls_label = prediction["category_id"]
|
236
236
|
if class_label_map:
|
237
|
-
cls_label = str(class_label_map[cls_label
|
237
|
+
cls_label = str(class_label_map[cls_label])
|
238
238
|
|
239
239
|
annotation_data = {"boxes": [boxes], "label": cls_label, "score": score}
|
240
240
|
|
@@ -14,10 +14,10 @@ except (ImportError, AssertionError):
|
|
14
14
|
|
15
15
|
def on_fit_epoch_end(trainer):
|
16
16
|
"""
|
17
|
-
|
17
|
+
Reports training metrics to Ray Tune at epoch end when a Ray session is active.
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
Captures metrics from the trainer object and sends them to Ray Tune with the current epoch number,
|
20
|
+
enabling hyperparameter tuning optimization. Only executes when within an active Ray Tune session.
|
21
21
|
|
22
22
|
Args:
|
23
23
|
trainer (ultralytics.engine.trainer.BaseTrainer): The Ultralytics trainer object containing metrics and epochs.
|
@@ -25,6 +25,9 @@ def on_fit_epoch_end(trainer):
|
|
25
25
|
Examples:
|
26
26
|
>>> # Called automatically by the Ultralytics training loop
|
27
27
|
>>> on_fit_epoch_end(trainer)
|
28
|
+
|
29
|
+
References:
|
30
|
+
Ray Tune docs: https://docs.ray.io/en/latest/tune/index.html
|
28
31
|
"""
|
29
32
|
if ray.train._internal.session.get_session(): # check if Ray Tune session is active
|
30
33
|
metrics = trainer.metrics
|
ultralytics/utils/export.py
CHANGED
ultralytics/utils/metrics.py
CHANGED
@@ -9,7 +9,7 @@ import matplotlib.pyplot as plt
|
|
9
9
|
import numpy as np
|
10
10
|
import torch
|
11
11
|
|
12
|
-
from ultralytics.utils import LOGGER, SimpleClass, TryExcept, plt_settings
|
12
|
+
from ultralytics.utils import LOGGER, SimpleClass, TryExcept, checks, plt_settings
|
13
13
|
|
14
14
|
OKS_SIGMA = (
|
15
15
|
np.array([0.26, 0.25, 0.25, 0.35, 0.35, 0.79, 0.79, 0.72, 0.72, 0.62, 0.62, 1.07, 1.07, 0.87, 0.87, 0.89, 0.89])
|
@@ -561,7 +561,8 @@ def compute_ap(recall, precision):
|
|
561
561
|
method = "interp" # methods: 'continuous', 'interp'
|
562
562
|
if method == "interp":
|
563
563
|
x = np.linspace(0, 1, 101) # 101-point interp (COCO)
|
564
|
-
|
564
|
+
func = np.trapezoid if checks.check_version(np.__version__, ">=2.0") else np.trapz # np.trapz deprecated
|
565
|
+
ap = func(np.interp(x, mrec, mpre), x) # integrate
|
565
566
|
else: # 'continuous'
|
566
567
|
i = np.where(mrec[1:] != mrec[:-1])[0] # points where x-axis (recall) changes
|
567
568
|
ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) # area under curve
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.108
|
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>
|
@@ -97,7 +97,7 @@ Dynamic: license-file
|
|
97
97
|
<a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
|
98
98
|
<a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
|
99
99
|
<a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
|
100
|
-
<a href="https://reddit.com/r/ultralytics"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
|
100
|
+
<a href="https://www.reddit.com/r/ultralytics/"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
|
101
101
|
<br>
|
102
102
|
<a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
|
103
103
|
<a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
|
@@ -109,7 +109,7 @@ Dynamic: license-file
|
|
109
109
|
|
110
110
|
[Ultralytics](https://www.ultralytics.com/) creates cutting-edge, state-of-the-art (SOTA) [YOLO models](https://www.ultralytics.com/yolo) built on years of foundational research in computer vision and AI. Constantly updated for performance and flexibility, our models are **fast**, **accurate**, and **easy to use**. They excel at [object detection](https://docs.ultralytics.com/tasks/detect/), [tracking](https://docs.ultralytics.com/modes/track/), [instance segmentation](https://docs.ultralytics.com/tasks/segment/), [image classification](https://docs.ultralytics.com/tasks/classify/), and [pose estimation](https://docs.ultralytics.com/tasks/pose/) tasks.
|
111
111
|
|
112
|
-
Find detailed documentation in the [Ultralytics Docs](https://docs.ultralytics.com/). Get support via [GitHub Issues](https://github.com/ultralytics/ultralytics/issues/new/choose). Join discussions on [Discord](https://discord.com/invite/ultralytics), [Reddit](https://reddit.com/r/ultralytics), and the [Ultralytics Community Forums](https://community.ultralytics.com/)!
|
112
|
+
Find detailed documentation in the [Ultralytics Docs](https://docs.ultralytics.com/). Get support via [GitHub Issues](https://github.com/ultralytics/ultralytics/issues/new/choose). Join discussions on [Discord](https://discord.com/invite/ultralytics), [Reddit](https://www.reddit.com/r/ultralytics/), and the [Ultralytics Community Forums](https://community.ultralytics.com/)!
|
113
113
|
|
114
114
|
Request an Enterprise License for commercial use at [Ultralytics Licensing](https://www.ultralytics.com/license).
|
115
115
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
ultralytics/__init__.py,sha256=
|
1
|
+
ultralytics/__init__.py,sha256=ihzQQ3TdLAuJ4ZYoKETGLRD-wxI8Bh9DRKvuM_sU12k,730
|
2
2
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
3
3
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
4
|
-
ultralytics/cfg/__init__.py,sha256=
|
5
|
-
ultralytics/cfg/default.yaml,sha256=
|
4
|
+
ultralytics/cfg/__init__.py,sha256=HZdpo0m_8NynZLmTie2dDx-OEZH7WoM8YtALjB7lKgM,39838
|
5
|
+
ultralytics/cfg/default.yaml,sha256=6Z_HIaObLT2i9dhbskEg_PU_IfJS2fcCsffxr_RfFpU,8257
|
6
6
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
|
7
7
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
|
8
8
|
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=j_DvXVQzZ4dQmf8I7oPX4v9xO3WZXztxV4Xo9VhUTsM,1194
|
@@ -93,18 +93,18 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=D9doE5GQUe6HrAFzr7OfQFIGPFk0M_vJ0B_
|
|
93
93
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=6u-tiZlk16EqEwkNXaMrza6PAQmWj_ypgv26LGCtPDg,886
|
94
94
|
ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,644
|
95
95
|
ultralytics/data/annotator.py,sha256=VEwb11FsEZm75qlEp8XDHFGKW0_rGsEaFDaBVd771Kw,2902
|
96
|
-
ultralytics/data/augment.py,sha256=
|
96
|
+
ultralytics/data/augment.py,sha256=JsliREHEOQzjipY8iLF1TNP0nuAfix3DKV4AoB4R4fM,124738
|
97
97
|
ultralytics/data/base.py,sha256=6-8ZIp5guIlIQa4wafrpBQl6lHSSneJnQY3KpgX6y6o,18449
|
98
98
|
ultralytics/data/build.py,sha256=56pavLie6PDFEVYChMxnGQGtGsxozYZRpFqC70DRGls,9650
|
99
99
|
ultralytics/data/converter.py,sha256=eaRqru-MZR8VEP-pL8EFSrH8dC6EkqVF4oEb551FXUw,24657
|
100
|
-
ultralytics/data/dataset.py,sha256=
|
100
|
+
ultralytics/data/dataset.py,sha256=13J2f3ljQDAYx1M0MVjVwvmDJA3F-9LbOP8GS8Fb_Is,34693
|
101
101
|
ultralytics/data/loaders.py,sha256=_Gyp_BfGTZwsFdn4UnolXxdU_sAYZLIrv0L2TRI9R5g,28627
|
102
102
|
ultralytics/data/split_dota.py,sha256=p8eVGht9tABSVbf9vwvxA_AQYEva3IGHePKlMeNrn64,11872
|
103
103
|
ultralytics/data/utils.py,sha256=aRPwIoLrCML_Kcd0dI9B6c5Ct4dvhdF36rDHtuf7Ww4,33217
|
104
104
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
105
|
-
ultralytics/engine/exporter.py,sha256=
|
105
|
+
ultralytics/engine/exporter.py,sha256=eGP2x38VreRmtBzGt0iNRiow_lNxZuQbhGQ7v5YQxrU,73952
|
106
106
|
ultralytics/engine/model.py,sha256=YgQKYZrPENSTvLENspg-bXI9FinzzWARfb0U-C9vH-M,52916
|
107
|
-
ultralytics/engine/predictor.py,sha256=
|
107
|
+
ultralytics/engine/predictor.py,sha256=hXDF7d03rtVzoEQBW1tMN665-TALIyM1q7kXARJlmKM,21630
|
108
108
|
ultralytics/engine/results.py,sha256=H3pFJhUjYKvVyOUqqZjfIn8vnCpl81aYNOnregMrBoQ,79716
|
109
109
|
ultralytics/engine/trainer.py,sha256=KAeiNoH5NIRhQPIfr5AhVwDerk9dy0-QJu-FlxtG4xA,38904
|
110
110
|
ultralytics/engine/tuner.py,sha256=CW6Ys4NV6SVScXA5GQO5DeSIJWys9e_mqUg26b6NYu4,12598
|
@@ -177,14 +177,14 @@ ultralytics/models/yolo/yoloe/train.py,sha256=7JxJkMN9bkUGsO-RojFG2Q3yfdKhb-TXlB
|
|
177
177
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=JguKB1ez8Rf7XBu_D_mWHMLJto7y7Kr2m0Tq2NwDtwU,5269
|
178
178
|
ultralytics/models/yolo/yoloe/val.py,sha256=utdt8wZvvW9OPxO5rx8KsFlkLG0FXj0YMD7Jhyk54D8,8440
|
179
179
|
ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
|
180
|
-
ultralytics/nn/autobackend.py,sha256=
|
180
|
+
ultralytics/nn/autobackend.py,sha256=2vWuHB_z3F5ZlAfVM-4SRYFtDfYLQdQyo_vZRlC284Y,38971
|
181
181
|
ultralytics/nn/tasks.py,sha256=r9CoXW9owNK5UWH2ufM5cyG3DB5TEEIX-JmhTSECCN8,62991
|
182
182
|
ultralytics/nn/text_model.py,sha256=H6OiLe0FOyZY4pd7-ixRTxaBgx3lOc2GmGTmrFnoJd0,10136
|
183
183
|
ultralytics/nn/modules/__init__.py,sha256=dXLtIk9rt944WfsTdpgEdWOg3HQEHdwQztuZ6WNJygs,3144
|
184
184
|
ultralytics/nn/modules/activation.py,sha256=PvXZkA9AzEntR575JkFORdmtcRwATyy0lje-uHA5_8w,2210
|
185
185
|
ultralytics/nn/modules/block.py,sha256=sYk0TV76s8oedhPTB29LmvhkT0H7N1gt30DqWDfX4X0,66641
|
186
186
|
ultralytics/nn/modules/conv.py,sha256=gleKBtHa-c4Fj2kyWmG31XtfuB2srWpfWqHntKCzE3c,21445
|
187
|
-
ultralytics/nn/modules/head.py,sha256=
|
187
|
+
ultralytics/nn/modules/head.py,sha256=_b0O_IFino6NS25Lyk11UCtUb7q0VrZ_5Tyy-UhvI8A,38255
|
188
188
|
ultralytics/nn/modules/transformer.py,sha256=tC80QKFaLtWZo0zVNTuORX4pOu6HVs2wS0vSM-3h5W4,28227
|
189
189
|
ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
|
190
190
|
ultralytics/solutions/__init__.py,sha256=pjNYva0qnw-4hf_tTLx_dgIfg24XrYLLp3kygPj95rs,1113
|
@@ -200,8 +200,8 @@ ultralytics/solutions/parking_management.py,sha256=uojHB17GxzFgzEmCBTEW5XK2h3ONj
|
|
200
200
|
ultralytics/solutions/queue_management.py,sha256=cUzAMMeWijowkdiuaSUZRr0S3I5MTHkCQOLjOqS0JN0,4299
|
201
201
|
ultralytics/solutions/region_counter.py,sha256=LKZuykgmnevKKzYifyeHQwQroF7tJJIPI6HVXi5mb9M,5299
|
202
202
|
ultralytics/solutions/security_alarm.py,sha256=KLP1R5qAFcmMliHfsuYNS_k-E1vGbOccLrzbmcpp4xQ,6254
|
203
|
-
ultralytics/solutions/solutions.py,sha256=
|
204
|
-
ultralytics/solutions/speed_estimation.py,sha256=
|
203
|
+
ultralytics/solutions/solutions.py,sha256=km53NtztiBlxvnrPt1JeNuFrEiP3wygr5sxGiWH5b_Q,31676
|
204
|
+
ultralytics/solutions/speed_estimation.py,sha256=3UFtGXKNUy1jt6GS4wg4hvkQoQ4KkOHXjzMpmSHodx0,5126
|
205
205
|
ultralytics/solutions/streamlit_inference.py,sha256=M0ppTFInqSPrdytZBLH8x-XoA7zFc7PaRQ51wHG9ppU,9846
|
206
206
|
ultralytics/solutions/trackzone.py,sha256=05XVTQVCGHFAuFNPzyv0VXKQSJKiyWkU6zkXVo4_dxw,3792
|
207
207
|
ultralytics/solutions/vision_eye.py,sha256=cFjex7mau20Ww4Cuq9lbaAidVTByXk7nhZ0KVHqUzBY,2924
|
@@ -221,11 +221,11 @@ ultralytics/utils/checks.py,sha256=d30cJY1G3wBWWTlq3C3yGVmDhAUtfXa9U3nuTO4sXQo,3
|
|
221
221
|
ultralytics/utils/dist.py,sha256=M8svPWdrRDcSmqIBGrqIaV8yi98Z3HUhXwsauDjVlkM,4090
|
222
222
|
ultralytics/utils/downloads.py,sha256=4P1JIc04tTd_oz3-AHlhRSGaVtnSQPg_gYlh__U27-4,22169
|
223
223
|
ultralytics/utils/errors.py,sha256=vY9h2evFSrHnZdHJVVrmm8Zzw4qVDLyo9DeYW5g0dFk,1573
|
224
|
-
ultralytics/utils/export.py,sha256=
|
224
|
+
ultralytics/utils/export.py,sha256=o_Ln8fkF_XE4fXjnWJ66_O5mx5U_k30Fm8WLk7QjAdQ,8832
|
225
225
|
ultralytics/utils/files.py,sha256=0K4O1cgqRiXaDw7EQK13TqA5SME_RrvfDVQSPetNr5w,8042
|
226
226
|
ultralytics/utils/instance.py,sha256=UOEsXR9V-bXNRk6BTonASBEgeMqvzzAk4S7VdXZJUAM,18090
|
227
227
|
ultralytics/utils/loss.py,sha256=us3lwmSlIwEzoMztNjpet7Kb1r1-sMGyESykqgYPDVo,36945
|
228
|
-
ultralytics/utils/metrics.py,sha256=
|
228
|
+
ultralytics/utils/metrics.py,sha256=Jvr-fl2149LJ3STxjabg4IknToU007hUKn0QY6pKlUs,53786
|
229
229
|
ultralytics/utils/ops.py,sha256=Ag69Hvy8HxKLvewrtfQRseveboc_RGzlMYmO1B2U1Lk,34215
|
230
230
|
ultralytics/utils/patches.py,sha256=auTWwYBieowiwH7ww1FgR67JSPkKr_7-PGA1SCYXB4A,4569
|
231
231
|
ultralytics/utils/plotting.py,sha256=wAg_z9ik6Wi3XZCfKO2K6TWV1G0TcLEkjxxz2H42CX8,46703
|
@@ -236,17 +236,17 @@ ultralytics/utils/tuner.py,sha256=eX238JDALFejbx-QMEQBLoNfXQvA7GzArqgVUa1l4nI,67
|
|
236
236
|
ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
|
237
237
|
ultralytics/utils/callbacks/base.py,sha256=p8YCeYDp4GLcyHWFZxC2Wxr2IXLw_MfIE5ef1fOQcWk,6848
|
238
238
|
ultralytics/utils/callbacks/clearml.py,sha256=jxTL2QSt8Cjp_BkK2XUDPg5t2XnykMYXJFRp6B66ulA,6005
|
239
|
-
ultralytics/utils/callbacks/comet.py,sha256=
|
239
|
+
ultralytics/utils/callbacks/comet.py,sha256=1OkL671uemHf6SrED001sedIz1X0IhJBkjUg9DeACPo,22278
|
240
240
|
ultralytics/utils/callbacks/dvc.py,sha256=H_4Dm1pDmn_odCBl4enw0IlwMcbCZ2sLGfvkwoDSLJc,7547
|
241
241
|
ultralytics/utils/callbacks/hub.py,sha256=dPSeSStRE1x-WYyqrUghCp_VtBxNZ5-Bmb4wW2KYV2Y,4073
|
242
242
|
ultralytics/utils/callbacks/mlflow.py,sha256=olMilfFKKLb9X53sJxFCn-AHnbcvTmXwtU_CVqSqzeE,5434
|
243
243
|
ultralytics/utils/callbacks/neptune.py,sha256=XXnnKQ-MoLIexl8y2Vb0i-cCLyePE0n5BUy_KoXPmG0,4680
|
244
|
-
ultralytics/utils/callbacks/raytune.py,sha256=
|
244
|
+
ultralytics/utils/callbacks/raytune.py,sha256=A8amUGpux7dYES-L1iSeMoMXBySGWCD1aUqT7vcG-pU,1284
|
245
245
|
ultralytics/utils/callbacks/tensorboard.py,sha256=7eUX21_Ym7i6iN4euZzrqglphyl5xak1yl_-wfFshbg,5502
|
246
246
|
ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
|
247
|
-
ultralytics-8.3.
|
248
|
-
ultralytics-8.3.
|
249
|
-
ultralytics-8.3.
|
250
|
-
ultralytics-8.3.
|
251
|
-
ultralytics-8.3.
|
252
|
-
ultralytics-8.3.
|
247
|
+
ultralytics-8.3.108.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
248
|
+
ultralytics-8.3.108.dist-info/METADATA,sha256=MD-pW1ZQjH1xiuXRiomX1tSk9JOZPo6mcWrP-x0Osio,37354
|
249
|
+
ultralytics-8.3.108.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
250
|
+
ultralytics-8.3.108.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
251
|
+
ultralytics-8.3.108.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
252
|
+
ultralytics-8.3.108.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|