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.

Files changed (43) hide show
  1. ultralytics/__init__.py +1 -1
  2. ultralytics/cfg/__init__.py +1 -1
  3. ultralytics/data/converter.py +5 -2
  4. ultralytics/data/dataset.py +9 -4
  5. ultralytics/data/explorer/explorer.py +5 -2
  6. ultralytics/engine/exporter.py +17 -3
  7. ultralytics/engine/model.py +355 -81
  8. ultralytics/engine/results.py +94 -43
  9. ultralytics/engine/trainer.py +7 -3
  10. ultralytics/hub/__init__.py +6 -3
  11. ultralytics/hub/auth.py +2 -2
  12. ultralytics/hub/session.py +2 -2
  13. ultralytics/models/sam/amg.py +4 -2
  14. ultralytics/models/sam/modules/decoders.py +1 -1
  15. ultralytics/models/sam/modules/tiny_encoder.py +1 -1
  16. ultralytics/models/yolo/segment/predict.py +1 -1
  17. ultralytics/models/yolo/segment/val.py +6 -2
  18. ultralytics/nn/autobackend.py +6 -6
  19. ultralytics/nn/modules/head.py +11 -10
  20. ultralytics/nn/tasks.py +11 -2
  21. ultralytics/solutions/distance_calculation.py +5 -17
  22. ultralytics/solutions/heatmap.py +2 -1
  23. ultralytics/solutions/object_counter.py +1 -2
  24. ultralytics/solutions/speed_estimation.py +1 -1
  25. ultralytics/trackers/utils/gmc.py +10 -12
  26. ultralytics/utils/__init__.py +78 -7
  27. ultralytics/utils/benchmarks.py +1 -2
  28. ultralytics/utils/callbacks/mlflow.py +6 -2
  29. ultralytics/utils/checks.py +2 -2
  30. ultralytics/utils/loss.py +7 -2
  31. ultralytics/utils/metrics.py +4 -4
  32. ultralytics/utils/ops.py +0 -1
  33. ultralytics/utils/plotting.py +63 -5
  34. ultralytics/utils/tal.py +2 -2
  35. ultralytics/utils/torch_utils.py +2 -2
  36. ultralytics/utils/triton.py +1 -1
  37. ultralytics/utils/tuner.py +1 -1
  38. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/METADATA +4 -4
  39. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/RECORD +43 -43
  40. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/LICENSE +0 -0
  41. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/WHEEL +0 -0
  42. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/entry_points.txt +0 -0
  43. {ultralytics-8.1.6.dist-info → ultralytics-8.1.12.dist-info}/top_level.txt +0 -0
@@ -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
- """Initialize custom Ultralytics tqdm class with different default arguments."""
120
- # Set new default values (these can still be overridden when calling TQDM)
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
- Get the user config directory.
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
- YOLOv8 TryExcept class.
725
+ Ultralytics TryExcept class. Use as @TryExcept() decorator or 'with TryExcept():' context manager.
723
726
 
724
- Use as @TryExcept() decorator or 'with TryExcept():' context manager.
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.
@@ -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=SANITIZE(trainer.label_loss_items(trainer.tloss, prefix="train")), step=trainer.epoch
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
  }
@@ -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
- None
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
- """Return sum of left and right DFL losses."""
91
- # Distribution Focal Loss (DFL) proposed in Generalized Focal Loss https://ieeexplore.ieee.org/document/9792391
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
  """
@@ -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, ignored the center points(the first two columns) cause it's not needed here.
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.size(0) == 0: # Check if labels is empty
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 mAP50 at an IoU threshold of 0.5.
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 mAP50 at an IoU threshold of 0.75.
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]
@@ -329,10 +329,18 @@ class Annotator:
329
329
  """Return annotated image as array."""
330
330
  return np.asarray(self.im)
331
331
 
332
- # Object Counting Annotator
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
- """Calculate the pose angle for object
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.size(0)
60
- self.n_max_boxes = gt_bboxes.size(1)
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
@@ -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.size(0), device=conv.weight.device) if conv.bias is None else conv.bias
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.size(1), device=deconv.weight.device) if deconv.bias is None else deconv.bias
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
 
@@ -75,7 +75,7 @@ class TritonRemoteModel:
75
75
  *inputs (List[np.ndarray]): Input data to the model.
76
76
 
77
77
  Returns:
78
- List[np.ndarray]: Model outputs.
78
+ (List[np.ndarray]): Model outputs.
79
79
  """
80
80
  infer_inputs = []
81
81
  input_format = inputs[0].dtype
@@ -94,7 +94,7 @@ def run_ray_tune(
94
94
  config (dict): A dictionary of hyperparameters to use for training.
95
95
 
96
96
  Returns:
97
- None.
97
+ None
98
98
  """
99
99
  model_to_train = ray.get(model_in_store) # get the model from ray store for tuning
100
100
  model_to_train.reset_callbacks()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.6
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.40 ; extra == 'dev'
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> | Coming Soon |
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=tCssEtjYkcI-7OBbplHcjjB8m8qOBzL_VT8WjOvcAW8,596
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=ZyR73auZ5f8xgXNP7hZQNQAbd-CmDwrcVeLjVP3uric,20766
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=I2rY7uxPAFJtNQ8ApajSBTripisZhuSqQHaVeBR5pX4,16496
62
- ultralytics/data/dataset.py,sha256=waqG4WiQ8hSVo5IMydq1NvMNQ5IM2du_m0bCv1q140U,16504
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=VObECm8IUBaClQoQS_W9ctN1xKGKQVSNR0yhWiAnFeY,18642
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=tT3Egg-56KwmvgokQUNIXVpgkXj1uxuEaw6w_wpuUu8,52004
73
- ultralytics/engine/model.py,sha256=TdO-V81N-921SSjULFIS0Ry9TIqN6RJKQoNfMQlRwRw,21505
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=TWpQOBbrvJ77FPY7a9-vcSO9jxIyVCfC6s-65ZKKuAk,27614
76
- ultralytics/engine/trainer.py,sha256=xCBpfBT4YUqfW7F1sjPY0bmjOWBEnfmE3LQ1BiXPTrA,34264
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=yH_bbIOUwZsDgoxnrvv_8a96DuPNzaZaK5jejzy8r_4,5020
80
- ultralytics/hub/auth.py,sha256=92vY72MsvXdubj_CCHwsGI2UVVZxIG_MEDvIBMkxm5o,5366
81
- ultralytics/hub/session.py,sha256=nGCCueIPRQbI9EwuoJc8QcLBYYOuEFklKeY4Ix0VB0w,14226
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=w7mLxojmI50t6yPzx034WdQJUipMpEtHyvhXxFBo46A,7915
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=Axv7aPWJmGCe4APNNUky8ZK8zxPj6TpvuW5qL24Z47Y,7815
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=PRHsOHKMNfi5SLtPkJQeU49s7SDTkhmN3RHh3J2Bt24,29136
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=ycT8Z6U8N-4x94YQxM1nZc6rBWbF2-ErGmO7akMNtXM,2491
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=OPLzdhD5VFuIVjQObExwEdjR7OxDrj0hqNailh3XnkI,11709
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=42BYn6nKan5TaOjYa3sKg24RbaEWdSUVljRtqD7pyGA,27088
137
- ultralytics/nn/tasks.py,sha256=vbaN_C0BHoHnoebi74ODsR-oC-4YG3K1OAduDEcM9Z8,38370
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=WrIzLCQ71o3Bk0VlFCS6EpebCXvluah5d6Zs0C5Eo_c,19534
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=4YWM94Y5-LedFHocT9qc-CREx6GaXiLy0YlCxZRSjFs,6810
147
- ultralytics/solutions/heatmap.py,sha256=tAuLoFi3_iQZUw7qjCRu3w03eRL5Hx79-7TvksvzZwo,10838
148
- ultralytics/solutions/object_counter.py,sha256=kSurxRDScaaXL6J-5rocsT2ethGVcGYHcuiIk-VOYe0,10514
149
- ultralytics/solutions/speed_estimation.py,sha256=7zskVZzbzX5kabmGD_pw0cJrb4pucGMJQ7GW1PVF2WM,6610
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=dnCv90urvqQiVG6qsVnFQRBbu1rDQbqmJU7MucOWYyY,13949
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=WphOGqOoNGBGh5QBL6yQxS3eQIKahKkMPaUszvGXack,34272
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=YTuVrbHvgO_1xjG4lZMfvQXvdpHiq9yljw8DjdLXxDk,17563
162
- ultralytics/utils/checks.py,sha256=OfIxd2_qufJpjOWOHt3NrRquGCr5GyEUHOMvjT-PhIs,27592
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=erpbpLbt_VNOO-FItADFOjKTfwuf2A3ozECuCJiSqHM,32555
169
- ultralytics/utils/metrics.py,sha256=srIy4mfWQ9ATHYdmIfAROnDQHsKmCmBnR3mDTnYezAY,53355
170
- ultralytics/utils/ops.py,sha256=lPm7zdG1cC7nf0CWucjc5c8nbcn-PDSPdldVRigvhQ0,33047
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=nl3GZsWe4-pBNwY7V8hOtT1GKAxdmwN_kCaNb8Kk9Hc,42710
173
- ultralytics/utils/tal.py,sha256=fQ6dPFEJTVtFBFeTS_rtZMx_UsJyi80s3YfT8joCC6M,16015
174
- ultralytics/utils/torch_utils.py,sha256=Byij6JEKJeQE_G00wWpRJi0eorSo0xwXbwHJKzt_Jsk,25141
175
- ultralytics/utils/triton.py,sha256=tX3iEHFVBLJctnn9gybVk7PHk5kMkkLxwwAyfeWiT8s,3934
176
- ultralytics/utils/tuner.py,sha256=S5xet_s0K8T2pP71YVEFVGJnm0YoGDqJP0Ycr9PDlfY,6004
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=x3_au37OP23MeWNncoBFO2NIiwWRzZAQ0KdZ-Q0sRkg,4848
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.6.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
189
- ultralytics-8.1.6.dist-info/METADATA,sha256=1l7F6055CckTLLMTsUWhSYuZc-DyIsjyVGnc5-EUXsc,40204
190
- ultralytics-8.1.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
191
- ultralytics-8.1.6.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
192
- ultralytics-8.1.6.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
193
- ultralytics-8.1.6.dist-info/RECORD,,
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,,