ultralytics 8.1.6__py3-none-any.whl → 8.1.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +1 -1
- ultralytics/data/converter.py +5 -2
- ultralytics/data/dataset.py +9 -4
- ultralytics/data/explorer/explorer.py +5 -2
- ultralytics/engine/exporter.py +17 -3
- ultralytics/engine/model.py +355 -81
- ultralytics/engine/results.py +94 -43
- ultralytics/engine/trainer.py +7 -3
- ultralytics/hub/__init__.py +6 -3
- ultralytics/hub/auth.py +2 -2
- ultralytics/hub/session.py +2 -2
- ultralytics/models/sam/amg.py +4 -2
- ultralytics/models/sam/modules/decoders.py +1 -1
- ultralytics/models/sam/modules/tiny_encoder.py +1 -1
- ultralytics/models/yolo/segment/predict.py +1 -1
- ultralytics/models/yolo/segment/val.py +6 -2
- ultralytics/nn/autobackend.py +6 -6
- ultralytics/nn/modules/head.py +11 -10
- ultralytics/nn/tasks.py +11 -2
- ultralytics/solutions/distance_calculation.py +5 -17
- ultralytics/solutions/heatmap.py +2 -1
- ultralytics/solutions/object_counter.py +1 -2
- ultralytics/solutions/speed_estimation.py +1 -1
- ultralytics/trackers/utils/gmc.py +10 -12
- ultralytics/utils/__init__.py +78 -7
- ultralytics/utils/benchmarks.py +1 -2
- ultralytics/utils/callbacks/mlflow.py +6 -2
- ultralytics/utils/checks.py +2 -2
- ultralytics/utils/loss.py +7 -2
- ultralytics/utils/metrics.py +4 -4
- ultralytics/utils/ops.py +0 -1
- ultralytics/utils/plotting.py +63 -5
- ultralytics/utils/tal.py +2 -2
- ultralytics/utils/torch_utils.py +2 -2
- ultralytics/utils/triton.py +1 -1
- ultralytics/utils/tuner.py +1 -1
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/METADATA +4 -4
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/RECORD +43 -43
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/LICENSE +0 -0
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/WHEEL +0 -0
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/top_level.txt +0 -0
ultralytics/utils/__init__.py
CHANGED
|
@@ -9,6 +9,7 @@ import re
|
|
|
9
9
|
import subprocess
|
|
10
10
|
import sys
|
|
11
11
|
import threading
|
|
12
|
+
import time
|
|
12
13
|
import urllib
|
|
13
14
|
import uuid
|
|
14
15
|
from pathlib import Path
|
|
@@ -116,8 +117,11 @@ class TQDM(tqdm_original):
|
|
|
116
117
|
"""
|
|
117
118
|
|
|
118
119
|
def __init__(self, *args, **kwargs):
|
|
119
|
-
"""
|
|
120
|
-
|
|
120
|
+
"""
|
|
121
|
+
Initialize custom Ultralytics tqdm class with different default arguments.
|
|
122
|
+
|
|
123
|
+
Note these can still be overridden when calling TQDM.
|
|
124
|
+
"""
|
|
121
125
|
kwargs["disable"] = not VERBOSE or kwargs.get("disable", False) # logical 'and' with default value if passed
|
|
122
126
|
kwargs.setdefault("bar_format", TQDM_BAR_FORMAT) # override default value if passed
|
|
123
127
|
super().__init__(*args, **kwargs)
|
|
@@ -377,7 +381,7 @@ def yaml_print(yaml_file: Union[str, Path, dict]) -> None:
|
|
|
377
381
|
yaml_file: The file path of the YAML file or a YAML-formatted dictionary.
|
|
378
382
|
|
|
379
383
|
Returns:
|
|
380
|
-
None
|
|
384
|
+
(None)
|
|
381
385
|
"""
|
|
382
386
|
yaml_dict = yaml_load(yaml_file) if isinstance(yaml_file, (str, Path)) else yaml_file
|
|
383
387
|
dump = yaml.dump(yaml_dict, sort_keys=False, allow_unicode=True)
|
|
@@ -610,7 +614,7 @@ def get_ubuntu_version():
|
|
|
610
614
|
|
|
611
615
|
def get_user_config_dir(sub_dir="Ultralytics"):
|
|
612
616
|
"""
|
|
613
|
-
|
|
617
|
+
Return the appropriate config directory based on the environment operating system.
|
|
614
618
|
|
|
615
619
|
Args:
|
|
616
620
|
sub_dir (str): The name of the subdirectory to create.
|
|
@@ -618,7 +622,6 @@ def get_user_config_dir(sub_dir="Ultralytics"):
|
|
|
618
622
|
Returns:
|
|
619
623
|
(Path): The path to the user config directory.
|
|
620
624
|
"""
|
|
621
|
-
# Return the appropriate config directory for each operating system
|
|
622
625
|
if WINDOWS:
|
|
623
626
|
path = Path.home() / "AppData" / "Roaming" / sub_dir
|
|
624
627
|
elif MACOS: # macOS
|
|
@@ -719,9 +722,19 @@ def remove_colorstr(input_string):
|
|
|
719
722
|
|
|
720
723
|
class TryExcept(contextlib.ContextDecorator):
|
|
721
724
|
"""
|
|
722
|
-
|
|
725
|
+
Ultralytics TryExcept class. Use as @TryExcept() decorator or 'with TryExcept():' context manager.
|
|
723
726
|
|
|
724
|
-
|
|
727
|
+
Examples:
|
|
728
|
+
As a decorator:
|
|
729
|
+
>>> @TryExcept(msg="Error occurred in func", verbose=True)
|
|
730
|
+
>>> def func():
|
|
731
|
+
>>> # Function logic here
|
|
732
|
+
>>> pass
|
|
733
|
+
|
|
734
|
+
As a context manager:
|
|
735
|
+
>>> with TryExcept(msg="Error occurred in block", verbose=True):
|
|
736
|
+
>>> # Code block here
|
|
737
|
+
>>> pass
|
|
725
738
|
"""
|
|
726
739
|
|
|
727
740
|
def __init__(self, msg="", verbose=True):
|
|
@@ -740,6 +753,64 @@ class TryExcept(contextlib.ContextDecorator):
|
|
|
740
753
|
return True
|
|
741
754
|
|
|
742
755
|
|
|
756
|
+
class Retry(contextlib.ContextDecorator):
|
|
757
|
+
"""
|
|
758
|
+
Retry class for function execution with exponential backoff.
|
|
759
|
+
|
|
760
|
+
Can be used as a decorator or a context manager to retry a function or block of code on exceptions, up to a
|
|
761
|
+
specified number of times with an exponentially increasing delay between retries.
|
|
762
|
+
|
|
763
|
+
Examples:
|
|
764
|
+
Example usage as a decorator:
|
|
765
|
+
>>> @Retry(times=3, delay=2)
|
|
766
|
+
>>> def test_func():
|
|
767
|
+
>>> # Replace with function logic that may raise exceptions
|
|
768
|
+
>>> return True
|
|
769
|
+
|
|
770
|
+
Example usage as a context manager:
|
|
771
|
+
>>> with Retry(times=3, delay=2):
|
|
772
|
+
>>> # Replace with code block that may raise exceptions
|
|
773
|
+
>>> pass
|
|
774
|
+
"""
|
|
775
|
+
|
|
776
|
+
def __init__(self, times=3, delay=2):
|
|
777
|
+
"""Initialize Retry class with specified number of retries and delay."""
|
|
778
|
+
self.times = times
|
|
779
|
+
self.delay = delay
|
|
780
|
+
self._attempts = 0
|
|
781
|
+
|
|
782
|
+
def __call__(self, func):
|
|
783
|
+
"""Decorator implementation for Retry with exponential backoff."""
|
|
784
|
+
|
|
785
|
+
def wrapped_func(*args, **kwargs):
|
|
786
|
+
self._attempts = 0
|
|
787
|
+
while self._attempts < self.times:
|
|
788
|
+
try:
|
|
789
|
+
return func(*args, **kwargs)
|
|
790
|
+
except Exception as e:
|
|
791
|
+
self._attempts += 1
|
|
792
|
+
print(f"Retry {self._attempts}/{self.times} failed: {e}")
|
|
793
|
+
if self._attempts >= self.times:
|
|
794
|
+
raise e
|
|
795
|
+
time.sleep(self.delay * (2**self._attempts)) # exponential backoff delay
|
|
796
|
+
|
|
797
|
+
return wrapped_func
|
|
798
|
+
|
|
799
|
+
def __enter__(self):
|
|
800
|
+
"""Enter the runtime context related to this object."""
|
|
801
|
+
self._attempts = 0
|
|
802
|
+
|
|
803
|
+
def __exit__(self, exc_type, exc_value, traceback):
|
|
804
|
+
"""Exit the runtime context related to this object with exponential backoff."""
|
|
805
|
+
if exc_type is not None:
|
|
806
|
+
self._attempts += 1
|
|
807
|
+
if self._attempts < self.times:
|
|
808
|
+
print(f"Retry {self._attempts}/{self.times} failed: {exc_value}")
|
|
809
|
+
time.sleep(self.delay * (2**self._attempts)) # exponential backoff delay
|
|
810
|
+
return True # Suppresses the exception and retries
|
|
811
|
+
return False # Re-raises the exception if retries are exhausted
|
|
812
|
+
|
|
813
|
+
|
|
743
814
|
def threaded(func):
|
|
744
815
|
"""
|
|
745
816
|
Multi-threads a target function by default and returns the thread or function result.
|
ultralytics/utils/benchmarks.py
CHANGED
|
@@ -258,8 +258,7 @@ class ProfileModels:
|
|
|
258
258
|
"""Retrieves the information including number of layers, parameters, gradients and FLOPs for an ONNX model
|
|
259
259
|
file.
|
|
260
260
|
"""
|
|
261
|
-
# return (num_layers, num_params, num_gradients, num_flops)
|
|
262
|
-
return 0.0, 0.0, 0.0, 0.0
|
|
261
|
+
return 0.0, 0.0, 0.0, 0.0 # return (num_layers, num_params, num_gradients, num_flops)
|
|
263
262
|
|
|
264
263
|
def iterative_sigma_clipping(self, data, sigma=2, max_iters=3):
|
|
265
264
|
"""Applies an iterative sigma clipping algorithm to the given data times number of iterations."""
|
|
@@ -86,9 +86,12 @@ def on_train_epoch_end(trainer):
|
|
|
86
86
|
"""Log training metrics at the end of each train epoch to MLflow."""
|
|
87
87
|
if mlflow:
|
|
88
88
|
mlflow.log_metrics(
|
|
89
|
-
metrics=
|
|
89
|
+
metrics={
|
|
90
|
+
**SANITIZE(trainer.lr),
|
|
91
|
+
**SANITIZE(trainer.label_loss_items(trainer.tloss, prefix="train")),
|
|
92
|
+
},
|
|
93
|
+
step=trainer.epoch,
|
|
90
94
|
)
|
|
91
|
-
mlflow.log_metrics(metrics=SANITIZE(trainer.lr), step=trainer.epoch)
|
|
92
95
|
|
|
93
96
|
|
|
94
97
|
def on_fit_epoch_end(trainer):
|
|
@@ -115,6 +118,7 @@ def on_train_end(trainer):
|
|
|
115
118
|
callbacks = (
|
|
116
119
|
{
|
|
117
120
|
"on_pretrain_routine_end": on_pretrain_routine_end,
|
|
121
|
+
"on_train_epoch_end": on_train_epoch_end,
|
|
118
122
|
"on_fit_epoch_end": on_fit_epoch_end,
|
|
119
123
|
"on_train_end": on_train_end,
|
|
120
124
|
}
|
ultralytics/utils/checks.py
CHANGED
|
@@ -109,7 +109,7 @@ def is_ascii(s) -> bool:
|
|
|
109
109
|
s (str): String to be checked.
|
|
110
110
|
|
|
111
111
|
Returns:
|
|
112
|
-
bool: True if the string is composed only of ASCII characters, False otherwise.
|
|
112
|
+
(bool): True if the string is composed only of ASCII characters, False otherwise.
|
|
113
113
|
"""
|
|
114
114
|
# Convert list, tuple, None, etc. to string
|
|
115
115
|
s = str(s)
|
|
@@ -327,7 +327,7 @@ def check_python(minimum: str = "3.8.0") -> bool:
|
|
|
327
327
|
minimum (str): Required minimum version of python.
|
|
328
328
|
|
|
329
329
|
Returns:
|
|
330
|
-
|
|
330
|
+
(bool): Whether the installed Python version meets the minimum constraints.
|
|
331
331
|
"""
|
|
332
332
|
return check_version(platform.python_version(), minimum, name="Python ", hard=True)
|
|
333
333
|
|
ultralytics/utils/loss.py
CHANGED
|
@@ -87,8 +87,12 @@ class BboxLoss(nn.Module):
|
|
|
87
87
|
|
|
88
88
|
@staticmethod
|
|
89
89
|
def _df_loss(pred_dist, target):
|
|
90
|
-
"""
|
|
91
|
-
|
|
90
|
+
"""
|
|
91
|
+
Return sum of left and right DFL losses.
|
|
92
|
+
|
|
93
|
+
Distribution Focal Loss (DFL) proposed in Generalized Focal Loss
|
|
94
|
+
https://ieeexplore.ieee.org/document/9792391
|
|
95
|
+
"""
|
|
92
96
|
tl = target.long() # target left
|
|
93
97
|
tr = tl + 1 # target right
|
|
94
98
|
wl = tr - target # weight left
|
|
@@ -696,6 +700,7 @@ class v8OBBLoss(v8DetectionLoss):
|
|
|
696
700
|
anchor_points (torch.Tensor): Anchor points, (h*w, 2).
|
|
697
701
|
pred_dist (torch.Tensor): Predicted rotated distance, (bs, h*w, 4).
|
|
698
702
|
pred_angle (torch.Tensor): Predicted angle, (bs, h*w, 1).
|
|
703
|
+
|
|
699
704
|
Returns:
|
|
700
705
|
(torch.Tensor): Predicted rotated bounding boxes with angles, (bs, h*w, 5).
|
|
701
706
|
"""
|
ultralytics/utils/metrics.py
CHANGED
|
@@ -180,7 +180,7 @@ def _get_covariance_matrix(boxes):
|
|
|
180
180
|
Returns:
|
|
181
181
|
(torch.Tensor): Covariance metrixs corresponding to original rotated bounding boxes.
|
|
182
182
|
"""
|
|
183
|
-
# Gaussian bounding boxes,
|
|
183
|
+
# Gaussian bounding boxes, ignore the center points (the first two columns) because they are not needed here.
|
|
184
184
|
gbbs = torch.cat((torch.pow(boxes[:, 2:4], 2) / 12, boxes[:, 4:]), dim=-1)
|
|
185
185
|
a, b, c = gbbs.split(1, dim=-1)
|
|
186
186
|
return (
|
|
@@ -331,7 +331,7 @@ class ConfusionMatrix:
|
|
|
331
331
|
gt_bboxes (Array[M, 4]): Ground truth bounding boxes with xyxy format.
|
|
332
332
|
gt_cls (Array[M]): The class labels.
|
|
333
333
|
"""
|
|
334
|
-
if gt_cls.
|
|
334
|
+
if gt_cls.shape[0] == 0: # Check if labels is empty
|
|
335
335
|
if detections is not None:
|
|
336
336
|
detections = detections[detections[:, 4] > self.conf]
|
|
337
337
|
detection_classes = detections[:, 5].int()
|
|
@@ -701,7 +701,7 @@ class Metric(SimpleClass):
|
|
|
701
701
|
Returns the mean Average Precision (mAP) at an IoU threshold of 0.5.
|
|
702
702
|
|
|
703
703
|
Returns:
|
|
704
|
-
(float): The
|
|
704
|
+
(float): The mAP at an IoU threshold of 0.5.
|
|
705
705
|
"""
|
|
706
706
|
return self.all_ap[:, 0].mean() if len(self.all_ap) else 0.0
|
|
707
707
|
|
|
@@ -711,7 +711,7 @@ class Metric(SimpleClass):
|
|
|
711
711
|
Returns the mean Average Precision (mAP) at an IoU threshold of 0.75.
|
|
712
712
|
|
|
713
713
|
Returns:
|
|
714
|
-
(float): The
|
|
714
|
+
(float): The mAP at an IoU threshold of 0.75.
|
|
715
715
|
"""
|
|
716
716
|
return self.all_ap[:, 5].mean() if len(self.all_ap) else 0.0
|
|
717
717
|
|
ultralytics/utils/ops.py
CHANGED
|
@@ -75,7 +75,6 @@ def segment2box(segment, width=640, height=640):
|
|
|
75
75
|
Returns:
|
|
76
76
|
(np.ndarray): the minimum and maximum x and y values of the segment.
|
|
77
77
|
"""
|
|
78
|
-
# Convert 1 segment label to 1 box label, applying inside-image constraint, i.e. (xy1, xy2, ...) to (xyxy)
|
|
79
78
|
x, y = segment.T # segment xy
|
|
80
79
|
inside = (x >= 0) & (y >= 0) & (x <= width) & (y <= height)
|
|
81
80
|
x = x[inside]
|
ultralytics/utils/plotting.py
CHANGED
|
@@ -329,10 +329,18 @@ class Annotator:
|
|
|
329
329
|
"""Return annotated image as array."""
|
|
330
330
|
return np.asarray(self.im)
|
|
331
331
|
|
|
332
|
-
|
|
332
|
+
def show(self, title=None):
|
|
333
|
+
"""Show the annotated image."""
|
|
334
|
+
(self.im if isinstance(self.im, Image.Image) else Image.fromarray(self.im[..., ::-1])).show(title)
|
|
335
|
+
|
|
336
|
+
def save(self, filename="image.jpg"):
|
|
337
|
+
"""Save the annotated image to 'filename'."""
|
|
338
|
+
(self.im if isinstance(self.im, Image.Image) else Image.fromarray(self.im[..., ::-1])).save(filename)
|
|
339
|
+
|
|
333
340
|
def draw_region(self, reg_pts=None, color=(0, 255, 0), thickness=5):
|
|
334
341
|
"""
|
|
335
|
-
Draw region line
|
|
342
|
+
Draw region line.
|
|
343
|
+
|
|
336
344
|
Args:
|
|
337
345
|
reg_pts (list): Region Points (for line 2 points, for region 4 points)
|
|
338
346
|
color (tuple): Region Color value
|
|
@@ -342,7 +350,8 @@ class Annotator:
|
|
|
342
350
|
|
|
343
351
|
def draw_centroid_and_tracks(self, track, color=(255, 0, 255), track_thickness=2):
|
|
344
352
|
"""
|
|
345
|
-
Draw centroid point and track trails
|
|
353
|
+
Draw centroid point and track trails.
|
|
354
|
+
|
|
346
355
|
Args:
|
|
347
356
|
track (list): object tracking points for trails display
|
|
348
357
|
color (tuple): tracks line color
|
|
@@ -354,7 +363,8 @@ class Annotator:
|
|
|
354
363
|
|
|
355
364
|
def count_labels(self, counts=0, count_txt_size=2, color=(255, 255, 255), txt_color=(0, 0, 0)):
|
|
356
365
|
"""
|
|
357
|
-
Plot counts for object counter
|
|
366
|
+
Plot counts for object counter.
|
|
367
|
+
|
|
358
368
|
Args:
|
|
359
369
|
counts (int): objects counts value
|
|
360
370
|
count_txt_size (int): text size for counts display
|
|
@@ -383,11 +393,14 @@ class Annotator:
|
|
|
383
393
|
|
|
384
394
|
@staticmethod
|
|
385
395
|
def estimate_pose_angle(a, b, c):
|
|
386
|
-
"""
|
|
396
|
+
"""
|
|
397
|
+
Calculate the pose angle for object.
|
|
398
|
+
|
|
387
399
|
Args:
|
|
388
400
|
a (float) : The value of pose point a
|
|
389
401
|
b (float): The value of pose point b
|
|
390
402
|
c (float): The value o pose point c
|
|
403
|
+
|
|
391
404
|
Returns:
|
|
392
405
|
angle (degree): Degree value of angle between three points
|
|
393
406
|
"""
|
|
@@ -518,6 +531,51 @@ class Annotator:
|
|
|
518
531
|
self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1]) - 5), 0, 0.7, (255, 255, 255), 2
|
|
519
532
|
)
|
|
520
533
|
|
|
534
|
+
def plot_distance_and_line(self, distance_m, distance_mm, centroids, line_color, centroid_color):
|
|
535
|
+
"""
|
|
536
|
+
Plot the distance and line on frame.
|
|
537
|
+
|
|
538
|
+
Args:
|
|
539
|
+
distance_m (float): Distance between two bbox centroids in meters.
|
|
540
|
+
distance_mm (float): Distance between two bbox centroids in millimeters.
|
|
541
|
+
centroids (list): Bounding box centroids data.
|
|
542
|
+
line_color (RGB): Distance line color.
|
|
543
|
+
centroid_color (RGB): Bounding box centroid color.
|
|
544
|
+
"""
|
|
545
|
+
(text_width_m, text_height_m), _ = cv2.getTextSize(
|
|
546
|
+
f"Distance M: {distance_m:.2f}m", cv2.FONT_HERSHEY_SIMPLEX, 0.8, 2
|
|
547
|
+
)
|
|
548
|
+
cv2.rectangle(self.im, (15, 25), (15 + text_width_m + 10, 25 + text_height_m + 20), (255, 255, 255), -1)
|
|
549
|
+
cv2.putText(
|
|
550
|
+
self.im,
|
|
551
|
+
f"Distance M: {distance_m:.2f}m",
|
|
552
|
+
(20, 50),
|
|
553
|
+
cv2.FONT_HERSHEY_SIMPLEX,
|
|
554
|
+
0.8,
|
|
555
|
+
(0, 0, 0),
|
|
556
|
+
2,
|
|
557
|
+
cv2.LINE_AA,
|
|
558
|
+
)
|
|
559
|
+
|
|
560
|
+
(text_width_mm, text_height_mm), _ = cv2.getTextSize(
|
|
561
|
+
f"Distance MM: {distance_mm:.2f}mm", cv2.FONT_HERSHEY_SIMPLEX, 0.8, 2
|
|
562
|
+
)
|
|
563
|
+
cv2.rectangle(self.im, (15, 75), (15 + text_width_mm + 10, 75 + text_height_mm + 20), (255, 255, 255), -1)
|
|
564
|
+
cv2.putText(
|
|
565
|
+
self.im,
|
|
566
|
+
f"Distance MM: {distance_mm:.2f}mm",
|
|
567
|
+
(20, 100),
|
|
568
|
+
cv2.FONT_HERSHEY_SIMPLEX,
|
|
569
|
+
0.8,
|
|
570
|
+
(0, 0, 0),
|
|
571
|
+
2,
|
|
572
|
+
cv2.LINE_AA,
|
|
573
|
+
)
|
|
574
|
+
|
|
575
|
+
cv2.line(self.im, centroids[0], centroids[1], line_color, 3)
|
|
576
|
+
cv2.circle(self.im, centroids[0], 6, centroid_color, -1)
|
|
577
|
+
cv2.circle(self.im, centroids[1], 6, centroid_color, -1)
|
|
578
|
+
|
|
521
579
|
def visioneye(self, box, center_point, color=(235, 219, 11), pin_color=(255, 0, 255), thickness=2, pins_radius=10):
|
|
522
580
|
"""
|
|
523
581
|
Function for pinpoint human-vision eye mapping and plotting.
|
ultralytics/utils/tal.py
CHANGED
|
@@ -56,8 +56,8 @@ class TaskAlignedAssigner(nn.Module):
|
|
|
56
56
|
fg_mask (Tensor): shape(bs, num_total_anchors)
|
|
57
57
|
target_gt_idx (Tensor): shape(bs, num_total_anchors)
|
|
58
58
|
"""
|
|
59
|
-
self.bs = pd_scores.
|
|
60
|
-
self.n_max_boxes = gt_bboxes.
|
|
59
|
+
self.bs = pd_scores.shape[0]
|
|
60
|
+
self.n_max_boxes = gt_bboxes.shape[1]
|
|
61
61
|
|
|
62
62
|
if self.n_max_boxes == 0:
|
|
63
63
|
device = gt_bboxes.device
|
ultralytics/utils/torch_utils.py
CHANGED
|
@@ -190,7 +190,7 @@ def fuse_conv_and_bn(conv, bn):
|
|
|
190
190
|
fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape))
|
|
191
191
|
|
|
192
192
|
# Prepare spatial bias
|
|
193
|
-
b_conv = torch.zeros(conv.weight.
|
|
193
|
+
b_conv = torch.zeros(conv.weight.shape[0], device=conv.weight.device) if conv.bias is None else conv.bias
|
|
194
194
|
b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))
|
|
195
195
|
fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn)
|
|
196
196
|
|
|
@@ -221,7 +221,7 @@ def fuse_deconv_and_bn(deconv, bn):
|
|
|
221
221
|
fuseddconv.weight.copy_(torch.mm(w_bn, w_deconv).view(fuseddconv.weight.shape))
|
|
222
222
|
|
|
223
223
|
# Prepare spatial bias
|
|
224
|
-
b_conv = torch.zeros(deconv.weight.
|
|
224
|
+
b_conv = torch.zeros(deconv.weight.shape[1], device=deconv.weight.device) if deconv.bias is None else deconv.bias
|
|
225
225
|
b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))
|
|
226
226
|
fuseddconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn)
|
|
227
227
|
|
ultralytics/utils/triton.py
CHANGED
ultralytics/utils/tuner.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.12
|
|
4
4
|
Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
6
6
|
Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
@@ -51,11 +51,11 @@ Requires-Dist: pre-commit ; extra == 'dev'
|
|
|
51
51
|
Requires-Dist: pytest ; extra == 'dev'
|
|
52
52
|
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
53
53
|
Requires-Dist: coverage[toml] ; extra == 'dev'
|
|
54
|
-
Requires-Dist: mkdocs-material ; extra == 'dev'
|
|
54
|
+
Requires-Dist: mkdocs-material >=9.5.9 ; extra == 'dev'
|
|
55
55
|
Requires-Dist: mkdocstrings[python] ; extra == 'dev'
|
|
56
56
|
Requires-Dist: mkdocs-jupyter ; extra == 'dev'
|
|
57
57
|
Requires-Dist: mkdocs-redirects ; extra == 'dev'
|
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.43 ; extra == 'dev'
|
|
59
59
|
Provides-Extra: explorer
|
|
60
60
|
Requires-Dist: lancedb ; extra == 'explorer'
|
|
61
61
|
Requires-Dist: duckdb ; extra == 'explorer'
|
|
@@ -187,7 +187,7 @@ Ultralytics provides interactive notebooks for YOLOv8, covering training, valida
|
|
|
187
187
|
| <a href="https://docs.ultralytics.com/modes/track/">YOLOv8 Multi-Object Tracking in Videos</a> | <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/object_tracking.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a> | <a href="https://youtu.be/hHyHmOtmEgs"><center><img width=30% src="https://raw.githubusercontent.com/ultralytics/assets/main/social/logo-social-youtube-rect.png" alt="Ultralytics Youtube Video"></center></a> |
|
|
188
188
|
| <a href="https://docs.ultralytics.com/guides/object-counting/">YOLOv8 Object Counting in Videos</a> | <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/object_counting.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a> | <a href="https://youtu.be/Ag2e-5_NpS0"><center><img width=30% src="https://raw.githubusercontent.com/ultralytics/assets/main/social/logo-social-youtube-rect.png" alt="Ultralytics Youtube Video"></center></a> |
|
|
189
189
|
| <a href="https://docs.ultralytics.com/guides/heatmaps/">YOLOv8 Heatmaps in Videos</a> | <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/heatmaps.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a> | <a href="https://youtu.be/4ezde5-nZZw"><center><img width=30% src="https://raw.githubusercontent.com/ultralytics/assets/main/social/logo-social-youtube-rect.png" alt="Ultralytics Youtube Video"></center></a> |
|
|
190
|
-
| <a href="https://docs.ultralytics.com/datasets/explorer/">Ultralytics Datasets Explorer with SQL and OpenAI Integration 🚀 New</a> | <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/docs/en/datasets/explorer/explorer.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a> |
|
|
190
|
+
| <a href="https://docs.ultralytics.com/datasets/explorer/">Ultralytics Datasets Explorer with SQL and OpenAI Integration 🚀 New</a> | <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/docs/en/datasets/explorer/explorer.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a> | <a href="https://youtu.be/3VryynorQeo"><center><img width=30% src="https://raw.githubusercontent.com/ultralytics/assets/main/social/logo-social-youtube-rect.png" alt="Ultralytics Youtube Video"></center></a> |
|
|
191
191
|
|
|
192
192
|
## <div align="center">Models</div>
|
|
193
193
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
ultralytics/__init__.py,sha256
|
|
1
|
+
ultralytics/__init__.py,sha256=-gWdBTB5ISYbDj7dtT3PyZixNrf8Li_QOTU4MP_gPK0,597
|
|
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=
|
|
4
|
+
ultralytics/cfg/__init__.py,sha256=OZe3OfyNAeT1lRI7uJVM_Lla91mxGYgJMxrwyT7VP6o,20768
|
|
5
5
|
ultralytics/cfg/default.yaml,sha256=Ihuy6Dziu-qm9dZ1qRSu7lrJB8sF3U8yTXPiZ9aKXlM,8091
|
|
6
6
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
|
|
7
7
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=YDsyFPI6F6-OQXLBM3hOXo3vADYREwZzmMQfJNdpWyM,1193
|
|
@@ -58,27 +58,27 @@ ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM
|
|
|
58
58
|
ultralytics/data/augment.py,sha256=ORotqUN-qulkHxzoW5hFF_CZDlBhuaqGgAsiPUVIf4I,52000
|
|
59
59
|
ultralytics/data/base.py,sha256=XcgBVEr-9wl58Ka-5gJUMg43LXsBQ6PiCKdHWZTdvEI,13216
|
|
60
60
|
ultralytics/data/build.py,sha256=GuWEGrBr7sYtVOMD00TcJoooq3DYhqOKRvYUKGrGK9w,6293
|
|
61
|
-
ultralytics/data/converter.py,sha256=
|
|
62
|
-
ultralytics/data/dataset.py,sha256=
|
|
61
|
+
ultralytics/data/converter.py,sha256=lLoZ3ga_sJyLB2CKLUU6fIiYrK21gXP5jWJZr4k5X8s,16499
|
|
62
|
+
ultralytics/data/dataset.py,sha256=f_rF53K_4GLpQDPxT1hvbKHFkBs0HBbEurJyn5wpIsE,16526
|
|
63
63
|
ultralytics/data/loaders.py,sha256=8nFTCTZ9fSn2TX1ALq0BE0CmmqHvKte_CscxsnAVWEQ,21910
|
|
64
64
|
ultralytics/data/split_dota.py,sha256=1q2FZC0SE4deRpXUSbKTbUAjX9VeejUIFM2DBLF8Cco,9961
|
|
65
65
|
ultralytics/data/utils.py,sha256=DHP14WwUF7uFPOpdUkH-gEC8Dgzl1E0Z_DXiLHx-gPE,29509
|
|
66
66
|
ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
|
|
67
|
-
ultralytics/data/explorer/explorer.py,sha256=
|
|
67
|
+
ultralytics/data/explorer/explorer.py,sha256=JnYFZWCqotKGm4dTIT-r8QKNkK9RPNrWcBJoglQN_AE,18688
|
|
68
68
|
ultralytics/data/explorer/utils.py,sha256=a6ugY8rKpFM8dIRcUwRyjRkRJ-zXEwe-NiJr6CLVlus,7041
|
|
69
69
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
70
70
|
ultralytics/data/explorer/gui/dash.py,sha256=3Vi-k2LpUis-WHZ81Qnzlj71wpTCr4A8YxjUl0-v8T4,10042
|
|
71
71
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
72
|
-
ultralytics/engine/exporter.py,sha256=
|
|
73
|
-
ultralytics/engine/model.py,sha256=
|
|
72
|
+
ultralytics/engine/exporter.py,sha256=IP5b0jtwpOjs7CGI1rR4J6DTmqHoA22uXx7eJM93q5c,52576
|
|
73
|
+
ultralytics/engine/model.py,sha256=hDAtM-E-5qZx6HMu7wQPo7L7Os8wr4eMZyf-l3llGhI,37636
|
|
74
74
|
ultralytics/engine/predictor.py,sha256=95ujaUYbDtui-s4hloGmJ0yVm9IC05Ck5dyoyNTk0BU,17832
|
|
75
|
-
ultralytics/engine/results.py,sha256=
|
|
76
|
-
ultralytics/engine/trainer.py,sha256=
|
|
75
|
+
ultralytics/engine/results.py,sha256=CXtasTKBYdf_x3rfSQ6ExplE6F-f3eGL4XyUPXmFrfQ,30014
|
|
76
|
+
ultralytics/engine/trainer.py,sha256=3JQBpdDtnZTli2zz-czZrYv5ttnYMBJhiJD3ZhcelJM,34306
|
|
77
77
|
ultralytics/engine/tuner.py,sha256=yJTecrgsZbeE4XC8iJWoUA_DKACUnDSt8N1V_PTeCcc,11758
|
|
78
78
|
ultralytics/engine/validator.py,sha256=znVY4997-pMzx23FP_JpQczIEvWT5jp-sIEovYXI6RQ,14576
|
|
79
|
-
ultralytics/hub/__init__.py,sha256=
|
|
80
|
-
ultralytics/hub/auth.py,sha256=
|
|
81
|
-
ultralytics/hub/session.py,sha256=
|
|
79
|
+
ultralytics/hub/__init__.py,sha256=e-pUvDu3PUDcrWfWfBUbcUTm0DTbVLagFHsjmrum9Xs,5035
|
|
80
|
+
ultralytics/hub/auth.py,sha256=TnNNy685THzmFji3yDo2s3QIAjSEQySglZoX5LI30do,5370
|
|
81
|
+
ultralytics/hub/session.py,sha256=J5IVdjVbsWf5tm_RM4dtW7wel3xwkS5SCVBBt1knjwM,14226
|
|
82
82
|
ultralytics/hub/utils.py,sha256=rfUfr1gI_gN2hq6A8AzCejep6DBvsElBIqz-BFzZoRc,9736
|
|
83
83
|
ultralytics/models/__init__.py,sha256=-i1eeXMAglo0zMRGG3phmdoJNO7OJQZgyj8j0t7eiDE,173
|
|
84
84
|
ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
|
|
@@ -97,15 +97,15 @@ ultralytics/models/rtdetr/predict.py,sha256=pmjUlcUTqxoBNa5tW_EuFjh7ldXSm99Qnk5M
|
|
|
97
97
|
ultralytics/models/rtdetr/train.py,sha256=HdSC2x22Rks6qKNI7EGa6nWMZPhi_7VdQrbcayxk0ec,3684
|
|
98
98
|
ultralytics/models/rtdetr/val.py,sha256=sE99MGrq5rSyIN8dNBpJVTe9b__Ax9NyS8MYccQGDPs,5401
|
|
99
99
|
ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
|
|
100
|
-
ultralytics/models/sam/amg.py,sha256=
|
|
100
|
+
ultralytics/models/sam/amg.py,sha256=MsKSRS2SieZK_n-m2ICk1QpcYogl5mofcsVa-4FXYvo,7935
|
|
101
101
|
ultralytics/models/sam/build.py,sha256=jJvloRbPwHvSnVWwM3pEdzpM5MdIcEHbRaqQk_S9lG8,4943
|
|
102
102
|
ultralytics/models/sam/model.py,sha256=yLIjB00UZ6WDkcRBXtUmwmu8gTIsKyTdKsLAxI1SeoM,4706
|
|
103
103
|
ultralytics/models/sam/predict.py,sha256=C8dErpMefMwQvReJSvxRMaTala6OJbAckrGO3m508kI,23632
|
|
104
104
|
ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
105
|
-
ultralytics/models/sam/modules/decoders.py,sha256=
|
|
105
|
+
ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
|
|
106
106
|
ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
|
|
107
107
|
ultralytics/models/sam/modules/sam.py,sha256=zC4l4kcrIQD_ekczjl2l6dgaABqqjROZxQ-FDb-itt0,2783
|
|
108
|
-
ultralytics/models/sam/modules/tiny_encoder.py,sha256=
|
|
108
|
+
ultralytics/models/sam/modules/tiny_encoder.py,sha256=cPMmQDJA3BkM0yF97BdGLHkHig-8HPH7dYiOhaZi_ZI,29135
|
|
109
109
|
ultralytics/models/sam/modules/transformer.py,sha256=-wboK4gNKOJMP8J8ACN2JoK-xze40NZG696HsxdYObs,11170
|
|
110
110
|
ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
111
111
|
ultralytics/models/utils/loss.py,sha256=IMzcnDwwkgO9F6GDKVxrDdVdhUX_7d9uY4tX-AgtT0g,15134
|
|
@@ -129,65 +129,65 @@ ultralytics/models/yolo/pose/predict.py,sha256=illk4qyZvybc_XMo9TKT54FIkizx91MYv
|
|
|
129
129
|
ultralytics/models/yolo/pose/train.py,sha256=ki8bkT8WfIFjTKf1ofeRDqeIqmk6A8a7AFog7nM-otM,2926
|
|
130
130
|
ultralytics/models/yolo/pose/val.py,sha256=w_VIKzGcj_0CRNObPqk0NnDOfRN-xl2C6uwpFOkJH3Q,10607
|
|
131
131
|
ultralytics/models/yolo/segment/__init__.py,sha256=mSbKOE8BnHL7PL2nCOVG7dRM7CI6hJezFPPwZFjEmy8,247
|
|
132
|
-
ultralytics/models/yolo/segment/predict.py,sha256=
|
|
132
|
+
ultralytics/models/yolo/segment/predict.py,sha256=xtA0ZZyuh9WVpX7zZFdAeCkWnxhQ30ADEzSud_H6N7E,2491
|
|
133
133
|
ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBINBkI9K8-3sQ,2298
|
|
134
|
-
ultralytics/models/yolo/segment/val.py,sha256=
|
|
134
|
+
ultralytics/models/yolo/segment/val.py,sha256=njiF6RWddS-HOWxVvlk5PXRw6UOgEt_HEOZVPF7rruQ,11745
|
|
135
135
|
ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
|
|
136
|
-
ultralytics/nn/autobackend.py,sha256=
|
|
137
|
-
ultralytics/nn/tasks.py,sha256=
|
|
136
|
+
ultralytics/nn/autobackend.py,sha256=xxCZ0xBoXOJh8ajbhpi8I4jwF1B-7NcVtMXCuhOIoG0,27069
|
|
137
|
+
ultralytics/nn/tasks.py,sha256=fgnTEZ4g8jOp2XnvcrSGSDcVh0ifKs-o16Lt-NPCF5Y,38765
|
|
138
138
|
ultralytics/nn/modules/__init__.py,sha256=ejmeNK9L-yGUX3pGr_1-HlPcCdrf7XPLFVZ3OR0mmno,1954
|
|
139
139
|
ultralytics/nn/modules/block.py,sha256=1bi5rRzHNTg10VlRdpRP_xjTJHEIfMQ1FY2nIgHKmws,14488
|
|
140
140
|
ultralytics/nn/modules/conv.py,sha256=ndUYNL2f9DK41y1vVbtEusMByXy-LMMsBKlcWjRQ9Z8,12722
|
|
141
|
-
ultralytics/nn/modules/head.py,sha256=
|
|
141
|
+
ultralytics/nn/modules/head.py,sha256=X1xLqdONY-kRkM60WaiYfMZEnRUe6CX_zqtOyAzifmQ,19535
|
|
142
142
|
ultralytics/nn/modules/transformer.py,sha256=TgDpTjSkk1_-9IrIjm8bebcG5fSO9GVb5Onz0cdR21Q,17910
|
|
143
143
|
ultralytics/nn/modules/utils.py,sha256=6CCeDy6GGkDM7XjGm4FCtVpXoEuICIPCsruI8etNS3g,3197
|
|
144
144
|
ultralytics/solutions/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
145
145
|
ultralytics/solutions/ai_gym.py,sha256=d3XRr-u0vIp1Bi9mAwDzGkxBztnhWU_ak5e8XR2J31s,6006
|
|
146
|
-
ultralytics/solutions/distance_calculation.py,sha256=
|
|
147
|
-
ultralytics/solutions/heatmap.py,sha256=
|
|
148
|
-
ultralytics/solutions/object_counter.py,sha256=
|
|
149
|
-
ultralytics/solutions/speed_estimation.py,sha256=
|
|
146
|
+
ultralytics/solutions/distance_calculation.py,sha256=EQ5QIXuSLm5KcRtMD-wB3MbRwPo55vhrEmt3Rf49PPs,6328
|
|
147
|
+
ultralytics/solutions/heatmap.py,sha256=nOoAcXkJd1bhw8SNbqVTweVwIKrgdrZeUhMrvkNPhes,10928
|
|
148
|
+
ultralytics/solutions/object_counter.py,sha256=ON4Az1FX9lkiUwdvRddA-5NL0b47s1r9IaLfd2Qg_VU,10474
|
|
149
|
+
ultralytics/solutions/speed_estimation.py,sha256=TWSkFugyOvLgzfN9ywBT9pXmMvuVRbTc6L24GCtqgx8,6614
|
|
150
150
|
ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
|
|
151
151
|
ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
|
|
152
152
|
ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
|
|
153
153
|
ultralytics/trackers/byte_tracker.py,sha256=AQWpI-msOewPqPLnhvMTO_8Pk565IEd_ny6VvQQgMwk,18871
|
|
154
154
|
ultralytics/trackers/track.py,sha256=dl4qu2t3f_ZCUJqJqnrxDDXWfbpPdRFZVE8WGkcRFMg,3091
|
|
155
155
|
ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
156
|
-
ultralytics/trackers/utils/gmc.py,sha256=
|
|
156
|
+
ultralytics/trackers/utils/gmc.py,sha256=TvFYzqOSeYjXgt6M1b7BmlzrU4Srl34PFAuR_sZs6hY,13638
|
|
157
157
|
ultralytics/trackers/utils/kalman_filter.py,sha256=JN1sAcfJZy8fTZxc8w3jUJnGQDKtgAL__p4nTR6RM2I,15168
|
|
158
158
|
ultralytics/trackers/utils/matching.py,sha256=c_pthBfu9sWeMVYe-dSecdWcQxUey-mQT2yMVsFH3VQ,5404
|
|
159
|
-
ultralytics/utils/__init__.py,sha256=
|
|
159
|
+
ultralytics/utils/__init__.py,sha256=iCP2iY1J4ZQ15fT6_uMOIWvAf19F1ZWBWlEKXGqSSBA,36882
|
|
160
160
|
ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
|
|
161
|
-
ultralytics/utils/benchmarks.py,sha256=
|
|
162
|
-
ultralytics/utils/checks.py,sha256=
|
|
161
|
+
ultralytics/utils/benchmarks.py,sha256=D_Lu03WkIv5c7B7BOz8_jsWRK5dLoxkae6LaNDbmI18,17556
|
|
162
|
+
ultralytics/utils/checks.py,sha256=oouDmoCYCho0GTYgJHA9pg73Lk-z_hQ7-rK8tO-bydM,27665
|
|
163
163
|
ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
|
|
164
164
|
ultralytics/utils/downloads.py,sha256=S4b_DUjZcSKWXWSVoGuSOYXt9aS_NzFz0NtkFOTHHoM,21189
|
|
165
165
|
ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
|
|
166
166
|
ultralytics/utils/files.py,sha256=V1cD9sC3hGd5uNVdOa4uZGySGjnsXC6Lh7mjqI_UDxo,5275
|
|
167
167
|
ultralytics/utils/instance.py,sha256=fPClvPPtTk8VeXWiRv90DrFk1j1lTUKdYJtpZKUDDtA,15575
|
|
168
|
-
ultralytics/utils/loss.py,sha256=
|
|
169
|
-
ultralytics/utils/metrics.py,sha256=
|
|
170
|
-
ultralytics/utils/ops.py,sha256=
|
|
168
|
+
ultralytics/utils/loss.py,sha256=af2_eFPSR8S2t7dIh3H24WFkMYkN6mvreDEnOiYeAQc,32581
|
|
169
|
+
ultralytics/utils/metrics.py,sha256=ViQzjq9t9dVlK1Owz_jtLb7ybTImNd38RLYKrm4rXx8,53358
|
|
170
|
+
ultralytics/utils/ops.py,sha256=RxnsheSa_mDWaCm0gCKNTRz7baTKIMQfy38Z2FP4e-o,32936
|
|
171
171
|
ultralytics/utils/patches.py,sha256=2iMWzwBpAjTt0UzaPzFO5JPVoKklUhftuo_3H7xBoDc,2659
|
|
172
|
-
ultralytics/utils/plotting.py,sha256=
|
|
173
|
-
ultralytics/utils/tal.py,sha256=
|
|
174
|
-
ultralytics/utils/torch_utils.py,sha256=
|
|
175
|
-
ultralytics/utils/triton.py,sha256=
|
|
176
|
-
ultralytics/utils/tuner.py,sha256=
|
|
172
|
+
ultralytics/utils/plotting.py,sha256=YDDHCuPO82gQNQpp-ZxlV5A5QUlatj2MBlqV5DZlVXc,44819
|
|
173
|
+
ultralytics/utils/tal.py,sha256=5ZLwIt-8atPzZQk0uj0w_YFsSRqQV-NfpESUQ945P1s,16017
|
|
174
|
+
ultralytics/utils/torch_utils.py,sha256=79VbjnMxNV_xXLrJjXhYP9eXfSJmJPeyH4hZItKfkKc,25143
|
|
175
|
+
ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
|
|
176
|
+
ultralytics/utils/tuner.py,sha256=mMa3PT5zvpHsTfKgOvFlRhDpogdCD1qSdNBVmU5Xop4,6003
|
|
177
177
|
ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
|
|
178
178
|
ultralytics/utils/callbacks/base.py,sha256=sOe3JvyBFmRwVZ8_Q03u7JwTeOOm9CI4s9-UEhnG0xA,5777
|
|
179
179
|
ultralytics/utils/callbacks/clearml.py,sha256=K7bDf5tS8xL4KeFMkoVDL2kKkil3f4qoKy8KfZkD854,5897
|
|
180
180
|
ultralytics/utils/callbacks/comet.py,sha256=9mLgOprENliphnxfd8iTwtkdhS6eR7J7-q4YWaHL0So,13744
|
|
181
181
|
ultralytics/utils/callbacks/dvc.py,sha256=WIClMsuvhiiyrwRv5BsZLxjsxYNJ3Y8Vq7zN0Bthtro,5045
|
|
182
182
|
ultralytics/utils/callbacks/hub.py,sha256=11L-5KK46HvB8uPouGupzZhwjfTpvKOM3L95zXTAjF0,3402
|
|
183
|
-
ultralytics/utils/callbacks/mlflow.py,sha256=
|
|
183
|
+
ultralytics/utils/callbacks/mlflow.py,sha256=JckTC8e8VPfpJTxNbPWuSINP62Y8VeNlAEn27oOMvFo,4909
|
|
184
184
|
ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyzC5q7p4ipQ,3756
|
|
185
185
|
ultralytics/utils/callbacks/raytune.py,sha256=6OgGNuC35F29lw8Dl_d0lue4-iBR6dqrBVQnIRQDx4E,632
|
|
186
186
|
ultralytics/utils/callbacks/tensorboard.py,sha256=fyhgBgcTmEIifBqxBJkoMZ6yQNBGhSLQBAsy770-RtA,4038
|
|
187
187
|
ultralytics/utils/callbacks/wb.py,sha256=03ACY2YwpTRigD0ZQH7_zlpwMdGw0lt23zX4d5Zaz28,6650
|
|
188
|
-
ultralytics-8.1.
|
|
189
|
-
ultralytics-8.1.
|
|
190
|
-
ultralytics-8.1.
|
|
191
|
-
ultralytics-8.1.
|
|
192
|
-
ultralytics-8.1.
|
|
193
|
-
ultralytics-8.1.
|
|
188
|
+
ultralytics-8.1.12.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
189
|
+
ultralytics-8.1.12.dist-info/METADATA,sha256=RklTJHR3iSnRq2UCuzTZYgbI5FOaUQa4LsJOP3u7G60,40213
|
|
190
|
+
ultralytics-8.1.12.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
191
|
+
ultralytics-8.1.12.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
192
|
+
ultralytics-8.1.12.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
193
|
+
ultralytics-8.1.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|