ultralytics 8.1.41__py3-none-any.whl → 8.1.43__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 (33) hide show
  1. ultralytics/__init__.py +1 -1
  2. ultralytics/cfg/models/v9/yolov9c-seg.yaml +38 -0
  3. ultralytics/cfg/models/v9/yolov9c.yaml +3 -1
  4. ultralytics/cfg/models/v9/yolov9e-seg.yaml +62 -0
  5. ultralytics/cfg/models/v9/yolov9e.yaml +3 -1
  6. ultralytics/data/augment.py +12 -9
  7. ultralytics/data/dataset.py +147 -142
  8. ultralytics/data/explorer/explorer.py +4 -6
  9. ultralytics/data/explorer/gui/dash.py +3 -3
  10. ultralytics/data/explorer/utils.py +3 -2
  11. ultralytics/engine/exporter.py +3 -2
  12. ultralytics/engine/trainer.py +11 -10
  13. ultralytics/models/fastsam/prompt.py +4 -1
  14. ultralytics/models/sam/predict.py +4 -1
  15. ultralytics/models/yolo/classify/train.py +2 -1
  16. ultralytics/solutions/heatmap.py +14 -27
  17. ultralytics/solutions/object_counter.py +12 -23
  18. ultralytics/solutions/queue_management.py +187 -0
  19. ultralytics/utils/__init__.py +22 -14
  20. ultralytics/utils/benchmarks.py +1 -2
  21. ultralytics/utils/callbacks/clearml.py +4 -3
  22. ultralytics/utils/callbacks/wb.py +5 -5
  23. ultralytics/utils/checks.py +6 -9
  24. ultralytics/utils/metrics.py +3 -3
  25. ultralytics/utils/ops.py +1 -1
  26. ultralytics/utils/plotting.py +96 -37
  27. ultralytics/utils/torch_utils.py +15 -7
  28. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/METADATA +2 -1
  29. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/RECORD +33 -30
  30. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/LICENSE +0 -0
  31. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/WHEEL +0 -0
  32. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/entry_points.txt +0 -0
  33. {ultralytics-8.1.41.dist-info → ultralytics-8.1.43.dist-info}/top_level.txt +0 -0
@@ -18,15 +18,16 @@ import cv2
18
18
  import numpy as np
19
19
  import requests
20
20
  import torch
21
- from matplotlib import font_manager
22
21
 
23
22
  from ultralytics.utils import (
24
23
  ASSETS,
25
24
  AUTOINSTALL,
26
25
  LINUX,
27
26
  LOGGER,
27
+ PYTHON_VERSION,
28
28
  ONLINE,
29
29
  ROOT,
30
+ TORCHVISION_VERSION,
30
31
  USER_CONFIG_DIR,
31
32
  Retry,
32
33
  SimpleNamespace,
@@ -41,13 +42,10 @@ from ultralytics.utils import (
41
42
  is_github_action_running,
42
43
  is_jupyter,
43
44
  is_kaggle,
44
- is_online,
45
45
  is_pip_package,
46
46
  url2file,
47
47
  )
48
48
 
49
- PYTHON_VERSION = platform.python_version()
50
-
51
49
 
52
50
  def parse_requirements(file_path=ROOT.parent / "requirements.txt", package=""):
53
51
  """
@@ -304,9 +302,10 @@ def check_font(font="Arial.ttf"):
304
302
  Returns:
305
303
  file (Path): Resolved font file path.
306
304
  """
307
- name = Path(font).name
305
+ from matplotlib import font_manager
308
306
 
309
307
  # Check USER_CONFIG_DIR
308
+ name = Path(font).name
310
309
  file = USER_CONFIG_DIR / name
311
310
  if file.exists():
312
311
  return file
@@ -390,7 +389,7 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
390
389
  LOGGER.info(f"{prefix} Ultralytics requirement{'s' * (n > 1)} {pkgs} not found, attempting AutoUpdate...")
391
390
  try:
392
391
  t = time.time()
393
- assert is_online(), "AutoUpdate skipped (offline)"
392
+ assert ONLINE, "AutoUpdate skipped (offline)"
394
393
  with Retry(times=2, delay=1): # run up to 2 times with 1-second retry delay
395
394
  LOGGER.info(subprocess.check_output(f"pip install --no-cache {s} {cmds}", shell=True).decode())
396
395
  dt = time.time() - t
@@ -419,14 +418,12 @@ def check_torchvision():
419
418
  Torchvision versions.
420
419
  """
421
420
 
422
- import torchvision
423
-
424
421
  # Compatibility table
425
422
  compatibility_table = {"2.0": ["0.15"], "1.13": ["0.14"], "1.12": ["0.13"]}
426
423
 
427
424
  # Extract only the major and minor versions
428
425
  v_torch = ".".join(torch.__version__.split("+")[0].split(".")[:2])
429
- v_torchvision = ".".join(torchvision.__version__.split("+")[0].split(".")[:2])
426
+ v_torchvision = ".".join(TORCHVISION_VERSION.split("+")[0].split(".")[:2])
430
427
 
431
428
  if v_torch in compatibility_table:
432
429
  compatible_versions = compatibility_table[v_torch]
@@ -395,19 +395,19 @@ class ConfusionMatrix:
395
395
  names (tuple): Names of classes, used as labels on the plot.
396
396
  on_plot (func): An optional callback to pass plots path and data when they are rendered.
397
397
  """
398
- import seaborn as sn
398
+ import seaborn # scope for faster 'import ultralytics'
399
399
 
400
400
  array = self.matrix / ((self.matrix.sum(0).reshape(1, -1) + 1e-9) if normalize else 1) # normalize columns
401
401
  array[array < 0.005] = np.nan # don't annotate (would appear as 0.00)
402
402
 
403
403
  fig, ax = plt.subplots(1, 1, figsize=(12, 9), tight_layout=True)
404
404
  nc, nn = self.nc, len(names) # number of classes, names
405
- sn.set_theme(font_scale=1.0 if nc < 50 else 0.8) # for label size
405
+ seaborn.set_theme(font_scale=1.0 if nc < 50 else 0.8) # for label size
406
406
  labels = (0 < nn < 99) and (nn == nc) # apply names to ticklabels
407
407
  ticklabels = (list(names) + ["background"]) if labels else "auto"
408
408
  with warnings.catch_warnings():
409
409
  warnings.simplefilter("ignore") # suppress empty matrix RuntimeWarning: All-NaN slice encountered
410
- sn.heatmap(
410
+ seaborn.heatmap(
411
411
  array,
412
412
  ax=ax,
413
413
  annot=nc < 30,
ultralytics/utils/ops.py CHANGED
@@ -9,7 +9,6 @@ import cv2
9
9
  import numpy as np
10
10
  import torch
11
11
  import torch.nn.functional as F
12
- import torchvision
13
12
 
14
13
  from ultralytics.utils import LOGGER
15
14
  from ultralytics.utils.metrics import batch_probiou
@@ -206,6 +205,7 @@ def non_max_suppression(
206
205
  shape (num_boxes, 6 + num_masks) containing the kept boxes, with columns
207
206
  (x1, y1, x2, y2, confidence, class, mask1, mask2, ...).
208
207
  """
208
+ import torchvision # scope for faster 'import ultralytics'
209
209
 
210
210
  # Checks
211
211
  assert 0 <= conf_thres <= 1, f"Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0"
@@ -339,6 +339,21 @@ class Annotator:
339
339
  """Save the annotated image to 'filename'."""
340
340
  cv2.imwrite(filename, np.asarray(self.im))
341
341
 
342
+ def get_bbox_dimension(self, bbox=None):
343
+ """
344
+ Calculate the area of a bounding box.
345
+
346
+ Args:
347
+ bbox (tuple): Bounding box coordinates in the format (x_min, y_min, x_max, y_max).
348
+
349
+ Returns:
350
+ angle (degree): Degree value of angle between three points
351
+ """
352
+ x_min, y_min, x_max, y_max = bbox
353
+ width = x_max - x_min
354
+ height = y_max - y_min
355
+ return width, height, width * height
356
+
342
357
  def draw_region(self, reg_pts=None, color=(0, 255, 0), thickness=5):
343
358
  """
344
359
  Draw region line.
@@ -363,49 +378,97 @@ class Annotator:
363
378
  cv2.polylines(self.im, [points], isClosed=False, color=color, thickness=track_thickness)
364
379
  cv2.circle(self.im, (int(track[-1][0]), int(track[-1][1])), track_thickness * 2, color, -1)
365
380
 
366
- def display_counts(
367
- self, counts=None, tf=2, fontScale=0.6, line_color=(0, 0, 0), txt_color=(255, 255, 255), classwise_txtgap=55
368
- ):
381
+ def queue_counts_display(self, label, points=None, region_color=(255, 255, 255), txt_color=(0, 0, 0), fontsize=0.7):
382
+ """
383
+ Displays queue counts on an image centered at the points with customizable font size and colors.
384
+
385
+ Args:
386
+ label (str): queue counts label
387
+ points (tuple): region points for center point calculation to display text
388
+ region_color (RGB): queue region color
389
+ txt_color (RGB): text display color
390
+ fontsize (float): text fontsize
391
+ """
392
+ x_values = [point[0] for point in points]
393
+ y_values = [point[1] for point in points]
394
+ center_x = sum(x_values) // len(points)
395
+ center_y = sum(y_values) // len(points)
396
+
397
+ text_size = cv2.getTextSize(label, 0, fontScale=fontsize, thickness=self.tf)[0]
398
+ text_width = text_size[0]
399
+ text_height = text_size[1]
400
+
401
+ rect_width = text_width + 20
402
+ rect_height = text_height + 20
403
+ rect_top_left = (center_x - rect_width // 2, center_y - rect_height // 2)
404
+ rect_bottom_right = (center_x + rect_width // 2, center_y + rect_height // 2)
405
+ cv2.rectangle(self.im, rect_top_left, rect_bottom_right, region_color, -1)
406
+
407
+ text_x = center_x - text_width // 2
408
+ text_y = center_y + text_height // 2
409
+
410
+ # Draw text
411
+ cv2.putText(
412
+ self.im,
413
+ label,
414
+ (text_x, text_y),
415
+ 0,
416
+ fontScale=fontsize,
417
+ color=txt_color,
418
+ thickness=self.tf,
419
+ lineType=cv2.LINE_AA,
420
+ )
421
+
422
+ def display_counts(self, counts=None, count_bg_color=(0, 0, 0), count_txt_color=(255, 255, 255)):
369
423
  """
370
- Display counts on im0.
424
+ Display counts on im0 with text background and border.
371
425
 
372
426
  Args:
373
427
  counts (str): objects count data
374
- tf (int): text thickness for display
375
- fontScale (float): text fontsize for display
376
- line_color (RGB Color): counts highlighter color
377
- txt_color (RGB Color): counts display color
378
- classwise_txtgap (int): Gap between each class count data
428
+ count_bg_color (RGB Color): counts highlighter color
429
+ count_txt_color (RGB Color): counts display color
379
430
  """
380
431
 
381
- tl = tf or round(0.002 * (self.im.shape[0] + self.im.shape[1]) / 2) + 1
432
+ tl = self.tf or round(0.002 * (self.im.shape[0] + self.im.shape[1]) / 2) + 1
382
433
  tf = max(tl - 1, 1)
383
434
 
384
- t_sizes = [cv2.getTextSize(str(count), 0, fontScale=0.8, thickness=tf)[0] for count in counts]
435
+ t_sizes = [cv2.getTextSize(str(count), 0, fontScale=self.sf, thickness=self.tf)[0] for count in counts]
385
436
 
386
437
  max_text_width = max([size[0] for size in t_sizes])
387
438
  max_text_height = max([size[1] for size in t_sizes])
388
439
 
389
- text_x = self.im.shape[1] - max_text_width - 20
390
- text_y = classwise_txtgap
440
+ text_x = self.im.shape[1] - int(self.im.shape[1] * 0.025 + max_text_width)
441
+ text_y = int(self.im.shape[0] * 0.025)
442
+
443
+ # Calculate dynamic gap between each count value based on the width of the image
444
+ dynamic_gap = max(1, self.im.shape[1] // 100) * tf
391
445
 
392
446
  for i, count in enumerate(counts):
393
447
  text_x_pos = text_x
394
- text_y_pos = text_y + i * classwise_txtgap
448
+ text_y_pos = text_y + i * dynamic_gap # Adjust vertical position with dynamic gap
449
+
450
+ # Draw the border
451
+ cv2.rectangle(
452
+ self.im,
453
+ (text_x_pos - (10 * tf), text_y_pos - (10 * tf)),
454
+ (text_x_pos + max_text_width + (10 * tf), text_y_pos + max_text_height + (10 * tf)),
455
+ count_bg_color,
456
+ -1,
457
+ )
395
458
 
459
+ # Draw the count text
396
460
  cv2.putText(
397
461
  self.im,
398
462
  str(count),
399
- (text_x_pos, text_y_pos),
400
- cv2.FONT_HERSHEY_SIMPLEX,
401
- fontScale=fontScale,
402
- color=txt_color,
403
- thickness=tf,
463
+ (text_x_pos, text_y_pos + max_text_height),
464
+ 0,
465
+ fontScale=self.sf,
466
+ color=count_txt_color,
467
+ thickness=self.tf,
404
468
  lineType=cv2.LINE_AA,
405
469
  )
406
470
 
407
- line_y_pos = text_y_pos + max_text_height + 5
408
- cv2.line(self.im, (text_x_pos, line_y_pos), (text_x_pos + max_text_width, line_y_pos), line_color, tf)
471
+ text_y_pos += tf * max_text_height
409
472
 
410
473
  @staticmethod
411
474
  def estimate_pose_angle(a, b, c):
@@ -556,30 +619,26 @@ class Annotator:
556
619
  line_color (RGB): Distance line color.
557
620
  centroid_color (RGB): Bounding box centroid color.
558
621
  """
559
- (text_width_m, text_height_m), _ = cv2.getTextSize(
560
- f"Distance M: {distance_m:.2f}m", cv2.FONT_HERSHEY_SIMPLEX, 0.8, 2
561
- )
622
+ (text_width_m, text_height_m), _ = cv2.getTextSize(f"Distance M: {distance_m:.2f}m", 0, 0.8, 2)
562
623
  cv2.rectangle(self.im, (15, 25), (15 + text_width_m + 10, 25 + text_height_m + 20), (255, 255, 255), -1)
563
624
  cv2.putText(
564
625
  self.im,
565
626
  f"Distance M: {distance_m:.2f}m",
566
627
  (20, 50),
567
- cv2.FONT_HERSHEY_SIMPLEX,
628
+ 0,
568
629
  0.8,
569
630
  (0, 0, 0),
570
631
  2,
571
632
  cv2.LINE_AA,
572
633
  )
573
634
 
574
- (text_width_mm, text_height_mm), _ = cv2.getTextSize(
575
- f"Distance MM: {distance_mm:.2f}mm", cv2.FONT_HERSHEY_SIMPLEX, 0.8, 2
576
- )
635
+ (text_width_mm, text_height_mm), _ = cv2.getTextSize(f"Distance MM: {distance_mm:.2f}mm", 0, 0.8, 2)
577
636
  cv2.rectangle(self.im, (15, 75), (15 + text_width_mm + 10, 75 + text_height_mm + 20), (255, 255, 255), -1)
578
637
  cv2.putText(
579
638
  self.im,
580
639
  f"Distance MM: {distance_mm:.2f}mm",
581
640
  (20, 100),
582
- cv2.FONT_HERSHEY_SIMPLEX,
641
+ 0,
583
642
  0.8,
584
643
  (0, 0, 0),
585
644
  2,
@@ -612,8 +671,8 @@ class Annotator:
612
671
  @plt_settings()
613
672
  def plot_labels(boxes, cls, names=(), save_dir=Path(""), on_plot=None):
614
673
  """Plot training labels including class histograms and box statistics."""
615
- import pandas as pd
616
- import seaborn as sn
674
+ import pandas # scope for faster 'import ultralytics'
675
+ import seaborn # scope for faster 'import ultralytics'
617
676
 
618
677
  # Filter matplotlib>=3.7.2 warning and Seaborn use_inf and is_categorical FutureWarnings
619
678
  warnings.filterwarnings("ignore", category=UserWarning, message="The figure layout has changed to tight")
@@ -623,10 +682,10 @@ def plot_labels(boxes, cls, names=(), save_dir=Path(""), on_plot=None):
623
682
  LOGGER.info(f"Plotting labels to {save_dir / 'labels.jpg'}... ")
624
683
  nc = int(cls.max() + 1) # number of classes
625
684
  boxes = boxes[:1000000] # limit to 1M boxes
626
- x = pd.DataFrame(boxes, columns=["x", "y", "width", "height"])
685
+ x = pandas.DataFrame(boxes, columns=["x", "y", "width", "height"])
627
686
 
628
687
  # Seaborn correlogram
629
- sn.pairplot(x, corner=True, diag_kind="auto", kind="hist", diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9))
688
+ seaborn.pairplot(x, corner=True, diag_kind="auto", kind="hist", diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9))
630
689
  plt.savefig(save_dir / "labels_correlogram.jpg", dpi=200)
631
690
  plt.close()
632
691
 
@@ -641,8 +700,8 @@ def plot_labels(boxes, cls, names=(), save_dir=Path(""), on_plot=None):
641
700
  ax[0].set_xticklabels(list(names.values()), rotation=90, fontsize=10)
642
701
  else:
643
702
  ax[0].set_xlabel("classes")
644
- sn.histplot(x, x="x", y="y", ax=ax[2], bins=50, pmax=0.9)
645
- sn.histplot(x, x="width", y="height", ax=ax[3], bins=50, pmax=0.9)
703
+ seaborn.histplot(x, x="x", y="y", ax=ax[2], bins=50, pmax=0.9)
704
+ seaborn.histplot(x, x="width", y="height", ax=ax[3], bins=50, pmax=0.9)
646
705
 
647
706
  # Rectangles
648
707
  boxes[:, 0:2] = 0.5 # center
@@ -874,7 +933,7 @@ def plot_results(file="path/to/results.csv", dir="", segment=False, pose=False,
874
933
  plot_results('path/to/results.csv', segment=True)
875
934
  ```
876
935
  """
877
- import pandas as pd
936
+ import pandas as pd # scope for faster 'import ultralytics'
878
937
  from scipy.ndimage import gaussian_filter1d
879
938
 
880
939
  save_dir = Path(file).parent if file else Path(dir)
@@ -960,7 +1019,7 @@ def plot_tune_results(csv_file="tune_results.csv"):
960
1019
  >>> plot_tune_results('path/to/tune_results.csv')
961
1020
  """
962
1021
 
963
- import pandas as pd
1022
+ import pandas as pd # scope for faster 'import ultralytics'
964
1023
  from scipy.ndimage import gaussian_filter1d
965
1024
 
966
1025
  # Scatter plots for each hyperparameter
@@ -14,10 +14,17 @@ import torch
14
14
  import torch.distributed as dist
15
15
  import torch.nn as nn
16
16
  import torch.nn.functional as F
17
- import torchvision
18
17
 
19
- from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, __version__
20
- from ultralytics.utils.checks import PYTHON_VERSION, check_version
18
+ from ultralytics.utils import (
19
+ DEFAULT_CFG_DICT,
20
+ DEFAULT_CFG_KEYS,
21
+ LOGGER,
22
+ PYTHON_VERSION,
23
+ TORCHVISION_VERSION,
24
+ colorstr,
25
+ __version__,
26
+ )
27
+ from ultralytics.utils.checks import check_version
21
28
 
22
29
  try:
23
30
  import thop
@@ -28,9 +35,9 @@ except ImportError:
28
35
  TORCH_1_9 = check_version(torch.__version__, "1.9.0")
29
36
  TORCH_1_13 = check_version(torch.__version__, "1.13.0")
30
37
  TORCH_2_0 = check_version(torch.__version__, "2.0.0")
31
- TORCHVISION_0_10 = check_version(torchvision.__version__, "0.10.0")
32
- TORCHVISION_0_11 = check_version(torchvision.__version__, "0.11.0")
33
- TORCHVISION_0_13 = check_version(torchvision.__version__, "0.13.0")
38
+ TORCHVISION_0_10 = check_version(TORCHVISION_VERSION, "0.10.0")
39
+ TORCHVISION_0_11 = check_version(TORCHVISION_VERSION, "0.11.0")
40
+ TORCHVISION_0_13 = check_version(TORCHVISION_VERSION, "0.13.0")
34
41
 
35
42
 
36
43
  @contextmanager
@@ -614,8 +621,9 @@ class EarlyStopping:
614
621
  self.possible_stop = delta >= (self.patience - 1) # possible stop may occur next epoch
615
622
  stop = delta >= self.patience # stop training if patience exceeded
616
623
  if stop:
624
+ prefix = colorstr("EarlyStopping: ")
617
625
  LOGGER.info(
618
- f"Stopping training early as no improvement observed in last {self.patience} epochs. "
626
+ f"{prefix}Training stopped early as no improvement observed in last {self.patience} epochs. "
619
627
  f"Best results observed at epoch {self.best_epoch}, best model saved as best.pt.\n"
620
628
  f"To update EarlyStopping(patience={self.patience}) pass a new patience value, "
621
629
  f"i.e. `patience=300` or use `patience=0` to disable EarlyStopping."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.41
3
+ Version: 8.1.43
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
@@ -63,6 +63,7 @@ Requires-Dist: streamlit ; extra == 'explorer'
63
63
  Provides-Extra: export
64
64
  Requires-Dist: onnx >=1.12.0 ; extra == 'export'
65
65
  Requires-Dist: openvino >=2024.0.0 ; extra == 'export'
66
+ Requires-Dist: numpy ==1.23.5 ; (platform_machine == "aarch64") and extra == 'export'
66
67
  Requires-Dist: coremltools >=7.0 ; (platform_system != "Windows" and python_version <= "3.11") and extra == 'export'
67
68
  Requires-Dist: tensorflow <=2.13.1 ; (python_version <= "3.11") and extra == 'export'
68
69
  Requires-Dist: tensorflowjs >=3.9.0 ; (python_version <= "3.11") and extra == 'export'
@@ -1,4 +1,4 @@
1
- ultralytics/__init__.py,sha256=lFvHnsBspb8aDTRHlGUm58PT7hhIa8sou9hVr7MGudg,625
1
+ ultralytics/__init__.py,sha256=FBbnfpAzM9BX-E4VHPNi41TwzSDIIB8hLVnS2DWnkHk,625
2
2
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
3
3
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
4
4
  ultralytics/cfg/__init__.py,sha256=ugSQqHCg31bAE9rwhVrnLMNzKLShr9JxDFcN6kBTbUk,21316
@@ -56,31 +56,33 @@ ultralytics/cfg/models/v8/yolov8-seg.yaml,sha256=fN85m_aDMCH4oTJ3z-ft98Pdh6dk0pZ
56
56
  ultralytics/cfg/models/v8/yolov8-world.yaml,sha256=RXTp_tgix8dbnVHprapxiK2aax7M2qIfmuR-aAve4sU,2019
57
57
  ultralytics/cfg/models/v8/yolov8-worldv2.yaml,sha256=fvGVUxvlBOjN6LUiiaiGsnjK5ZKjwYGWxgkJ49hGmMg,1956
58
58
  ultralytics/cfg/models/v8/yolov8.yaml,sha256=VjSe_V2Gn9ZpJrwTtz0A6_6IMp6UuugNiR7aEShR5rc,1889
59
- ultralytics/cfg/models/v9/yolov9c.yaml,sha256=alDTdFdlbcVQrZqpLsMzlOfOAMcQrnKXZPDSE72JUOg,1166
60
- ultralytics/cfg/models/v9/yolov9e.yaml,sha256=kUZWXfVY3jKNkgI2i-_vfIREgu72nJe8uUzPuMXaxa0,2121
59
+ ultralytics/cfg/models/v9/yolov9c-seg.yaml,sha256=Q0FnO3-ff-JepwP9gY51dhXiN8CMiyJLWjeEIWNhiuQ,1270
60
+ ultralytics/cfg/models/v9/yolov9c.yaml,sha256=04C3zUJK56X727s3mKDtZCw4b4hM6Tcq8Qq_2w0pIBg,1257
61
+ ultralytics/cfg/models/v9/yolov9e-seg.yaml,sha256=J137yzM0OWtF0CV39IG7RaIWrlT44MT7KwfdnPKkBcU,2230
62
+ ultralytics/cfg/models/v9/yolov9e.yaml,sha256=glFAVjWU1iz440LjRTXLfoeq9O4mPfT0U6U67HN-KYU,2213
61
63
  ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q2KYnVudo,883
62
64
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
63
65
  ultralytics/data/__init__.py,sha256=bGJ8oEBheIj8tQ2q3d7JqiVJUT4Ft9lXkDXOvBUj6Q0,637
64
66
  ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
65
- ultralytics/data/augment.py,sha256=tU1HGE7Dm-cjPvXfKyNpThzYCGO54RgcN3WR0SgjfpU,57388
67
+ ultralytics/data/augment.py,sha256=o2hmQS0Y8lustycENbA2lTJcokTDYPM_HIs_4yfbW5M,57476
66
68
  ultralytics/data/base.py,sha256=8DwF1_H0GIdTbF6iSm-763TK3ez3El9aZVix0h-X-c0,13470
67
69
  ultralytics/data/build.py,sha256=CgUq3g3s5Kc6UXDjCkx-rfmK2biRqhGHZWY21tnJOk0,7265
68
70
  ultralytics/data/converter.py,sha256=Y0V4xuCqge55gXbXHhWZij52zx27BFAKCspyxrg_MFs,17527
69
- ultralytics/data/dataset.py,sha256=THxFiJdawrdrC9MB4Moayml70gQ6ophAa_3F5_V_jlk,22011
71
+ ultralytics/data/dataset.py,sha256=ttwKxpk6La4t4WoiXEojzYHiRJVCOLUdDB6uND3IsYc,22199
70
72
  ultralytics/data/loaders.py,sha256=2GOYHELK9nh7RlIcqUqg3kuRgWUvXT43mI2P_XOtxCA,23146
71
73
  ultralytics/data/split_dota.py,sha256=PQdkwwlFtLKhWIrbToshSekXGdgbrbYMN6hM4ujfa7o,10010
72
74
  ultralytics/data/utils.py,sha256=7zaL2N9Hp3ki1EI31NuthMVJS9uEcakDjoN-2t7Amw4,30869
73
75
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
74
- ultralytics/data/explorer/explorer.py,sha256=9i_TlOfC87m2_tL4UR6ZjRb_T_mZNCMLIYMVWtD4pkY,18782
75
- ultralytics/data/explorer/utils.py,sha256=a6ugY8rKpFM8dIRcUwRyjRkRJ-zXEwe-NiJr6CLVlus,7041
76
+ ultralytics/data/explorer/explorer.py,sha256=71_XkMopa03Lxakc3JdUaeZWQ6HMbLvvPnQoZL1HjV0,18718
77
+ ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
76
78
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
77
- ultralytics/data/explorer/gui/dash.py,sha256=a2s8oJKI8kqnWEcIyqCCzvIyvM_uZmfMaxrOdwmiq7k,10044
79
+ ultralytics/data/explorer/gui/dash.py,sha256=2oAbNroR2lfS45v53M1sRqZklLXbbj6qXqNxvplulC0,10087
78
80
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
79
- ultralytics/engine/exporter.py,sha256=ZQNF6SUj0NlgUCr9Tbj2TQJxLrgEJJPfdyo4LtL_WJA,53790
81
+ ultralytics/engine/exporter.py,sha256=NeJEldYo37wMlhMQGQxn8qRhYN1ZYOmuEnbFwCk_LNM,53835
80
82
  ultralytics/engine/model.py,sha256=tCU9z_cQhdJTwUUce3a7rSeCWkUgJO4RfHNT29pB41E,39829
81
83
  ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
82
84
  ultralytics/engine/results.py,sha256=MvrOBrBlRF7kbL-QwysMf9mIDy_lwQBTTYvy1x1FMME,30667
83
- ultralytics/engine/trainer.py,sha256=JIyEh2HYLuFJI2bGRd8OOFe9ZlmEAas72Ce-WqaKPV8,34942
85
+ ultralytics/engine/trainer.py,sha256=CBcFxiNo4opu6RSY_-zYwZiI79TY-l2BZsO5jtuTokw,34932
84
86
  ultralytics/engine/tuner.py,sha256=zttHrQkvXuUVTB7jmM4Z85GgIsQ2hjpW9YrMccrQ4wo,11829
85
87
  ultralytics/engine/validator.py,sha256=p0irfLSZa3-0TtcuGheI8kNbzPUqs_UM3TMK4VRUGK4,14645
86
88
  ultralytics/hub/__init__.py,sha256=U4j-2QPdwSDlxw6RgFYnnJXOoIzLtwke4TkY2A8q4ws,5068
@@ -91,7 +93,7 @@ ultralytics/models/__init__.py,sha256=xrzn2dcLBG6Ujxll8LtlTIblPar2gjNhAwjAQg7u8s
91
93
  ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
92
94
  ultralytics/models/fastsam/model.py,sha256=yOf-byvFxafXYTEoc9j1dYnE2XFNErRYSnroyGxkW7I,1054
93
95
  ultralytics/models/fastsam/predict.py,sha256=0WHUFrqHUNy1cTNpLKsN0FKqLKCvr7fHU6pp91_QVg0,4121
94
- ultralytics/models/fastsam/prompt.py,sha256=H-EtgJAz2I0iSEVzNEw_DdhBdELxzGZ2FnL0dvxssf0,16132
96
+ ultralytics/models/fastsam/prompt.py,sha256=v_aS-8EAPtK6ug70f_QtsMBoRAZA47_x6I_owA2rJlI,16182
95
97
  ultralytics/models/fastsam/utils.py,sha256=r-b362Wb7P2ZAlOwWckPJM6HLvg-eFDDz4wkA0ymLd0,2157
96
98
  ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
97
99
  ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
@@ -107,7 +109,7 @@ ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1x
107
109
  ultralytics/models/sam/amg.py,sha256=MsKSRS2SieZK_n-m2ICk1QpcYogl5mofcsVa-4FXYvo,7935
108
110
  ultralytics/models/sam/build.py,sha256=jJvloRbPwHvSnVWwM3pEdzpM5MdIcEHbRaqQk_S9lG8,4943
109
111
  ultralytics/models/sam/model.py,sha256=H87wexHJ84wbtfKVrZe6I-VuLlhI8h6XeNpxe0D-Sgc,4706
110
- ultralytics/models/sam/predict.py,sha256=C8dErpMefMwQvReJSvxRMaTala6OJbAckrGO3m508kI,23632
112
+ ultralytics/models/sam/predict.py,sha256=iUvpv7v2bDnWWqqJU0_Up_1bdU2054PV0h72-PmMitk,23751
111
113
  ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
112
114
  ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
113
115
  ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
@@ -121,7 +123,7 @@ ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xsk
121
123
  ultralytics/models/yolo/model.py,sha256=PJwBkdDkgyPuQBuIcAx5uDb78JwYg56nFeYMyzBY_nY,3991
122
124
  ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
123
125
  ultralytics/models/yolo/classify/predict.py,sha256=wFY4GIlWxe7idMndEw1RnDI63o53MTfiHKz0s2fOjAY,2513
124
- ultralytics/models/yolo/classify/train.py,sha256=Q5gN5Zq0mVV7DsLLBcGNhrWhoVYjJlqwTPSotbR87-8,6838
126
+ ultralytics/models/yolo/classify/train.py,sha256=9CRqtLkePo4ZkAzMTxDY4ztrNaWE34qnytYymfCEBzs,6888
125
127
  ultralytics/models/yolo/classify/val.py,sha256=EP_hjRExXgdI4xojTKvj_YeNdaz_i2CoUzorl55r0OA,4861
126
128
  ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
127
129
  ultralytics/models/yolo/detect/predict.py,sha256=_a9vH3DmKFY6eeztFTdj3nkfu_MKG6n7zb5rRKGjs9I,1510
@@ -154,8 +156,9 @@ ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQj
154
156
  ultralytics/solutions/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
155
157
  ultralytics/solutions/ai_gym.py,sha256=IZHpvmNyEQT_aqMTrA5sIjCsl3_5Zl2WG31HxGT6KV4,5696
156
158
  ultralytics/solutions/distance_calculation.py,sha256=N1QB5uDG_6sp8jD5uSwp_NTPmyP4UCqJm9G2lNrgpr8,6334
157
- ultralytics/solutions/heatmap.py,sha256=PjRI0PRhPwO1RE-NSDXlbvgCXTnGtD-HvI0HMKwUOkE,12902
158
- ultralytics/solutions/object_counter.py,sha256=LOExuFduOKJcs94pWpv27jgLAZJxHDsmxouXKVBS10s,12058
159
+ ultralytics/solutions/heatmap.py,sha256=IeUkGRYbO8I7Sca0I2kvxh8dILy1gehmbIYolFF-ppc,12276
160
+ ultralytics/solutions/object_counter.py,sha256=zi-p3yi3tIH6ydlFF6xuSS_Tw42b7Kc54aGzpXb6iH4,11557
161
+ ultralytics/solutions/queue_management.py,sha256=TBQ2dIKYtymBjhdw0Enxa22KHyH3IdXf2C-1Se21siA,6684
159
162
  ultralytics/solutions/speed_estimation.py,sha256=lvaU-F8f3V4KFVKFaNS7isIdYtMSFjh_zF9gl0Mals8,6714
160
163
  ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
161
164
  ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
@@ -166,27 +169,27 @@ ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7J
166
169
  ultralytics/trackers/utils/gmc.py,sha256=vwcPA1n5zjPaBGhCDt8ItN7rq_6Sczsjn4gsXJfRylU,13688
167
170
  ultralytics/trackers/utils/kalman_filter.py,sha256=JN1sAcfJZy8fTZxc8w3jUJnGQDKtgAL__p4nTR6RM2I,15168
168
171
  ultralytics/trackers/utils/matching.py,sha256=c_pthBfu9sWeMVYe-dSecdWcQxUey-mQT2yMVsFH3VQ,5404
169
- ultralytics/utils/__init__.py,sha256=ChS67z-V8SQDK43FWu1hfDJCLp2cLitLP4HCQtVJKY8,37539
172
+ ultralytics/utils/__init__.py,sha256=xezg5RbMpI85AOtwMt1QoHEHCmygHa1FHpytN6TxdKU,38013
170
173
  ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
171
- ultralytics/utils/benchmarks.py,sha256=fpNWdrty1ULKP3jHFrRNln_o9gIT03F4KOE5xPuy0WI,18285
172
- ultralytics/utils/checks.py,sha256=OtBD-U90qsiYGSti7xq2LlhjbtgKbye05fJ4cgCst7s,28030
174
+ ultralytics/utils/benchmarks.py,sha256=BNG0sO34_mu3fIEfMn8j-QzQ9Da6K1KujO-CxDkvsOM,18325
175
+ ultralytics/utils/checks.py,sha256=R902JZALsOonXxqk4z_6so6YEV7vymTdr0ki7zKFDoY,27987
173
176
  ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
174
177
  ultralytics/utils/downloads.py,sha256=j1S27awWiLTt1qC9l53WqH_BilM13JHLSVmQ2xFqh-4,21496
175
178
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
176
179
  ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
177
180
  ultralytics/utils/instance.py,sha256=fPClvPPtTk8VeXWiRv90DrFk1j1lTUKdYJtpZKUDDtA,15575
178
181
  ultralytics/utils/loss.py,sha256=lOFBx-lKn-aGHUIPTb1NQefXiNot07egNx7qKErChpU,32716
179
- ultralytics/utils/metrics.py,sha256=xKcQFjkrOpA5JtlC9K9F3BF40h09ejC8w0jKSbR3gCE,53473
180
- ultralytics/utils/ops.py,sha256=GFe_tx8MVKT56xelbAuQjiJ28ohpzARpD6BzGyJ1yMk,33264
182
+ ultralytics/utils/metrics.py,sha256=XPD-xP0fchR8KgCuTcihV2-n0EK1cWi3-53BWN_pLuA,53518
183
+ ultralytics/utils/ops.py,sha256=wZCWx7dm5GJNIJHyZaFJRetGcQ7prdv-anplqq9figQ,33309
181
184
  ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
182
- ultralytics/utils/plotting.py,sha256=ILz1jEpmMQxeAdEHQ-E66XEJbsyYZqWhgQpLhDNpXvk,45077
185
+ ultralytics/utils/plotting.py,sha256=hifiLd0mz2EM9Z4qPHkWbzBaIvUgI1w0ynMdD5-eYoY,47441
183
186
  ultralytics/utils/tal.py,sha256=xuIyryUjaaYHkHPG9GvBwh1xxN2Hq4y3hXOtuERehwY,16017
184
- ultralytics/utils/torch_utils.py,sha256=b6SgmqhVr8qW8S9c_XoHNbHTy9Tm52_MCl6iK6UKt0U,25759
187
+ ultralytics/utils/torch_utils.py,sha256=LAUu146TOA1x4dW6y3KIJE_5HnAMrJVI9vk6K86z4eM,25848
185
188
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
186
189
  ultralytics/utils/tuner.py,sha256=JhvBp6haKA6eqpNPpGJzzjjCmPxBx5phk9kHmt_jppw,6171
187
190
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
188
191
  ultralytics/utils/callbacks/base.py,sha256=sOe3JvyBFmRwVZ8_Q03u7JwTeOOm9CI4s9-UEhnG0xA,5777
189
- ultralytics/utils/callbacks/clearml.py,sha256=K7bDf5tS8xL4KeFMkoVDL2kKkil3f4qoKy8KfZkD854,5897
192
+ ultralytics/utils/callbacks/clearml.py,sha256=M9Fi1OfdWqcm8uVkauuX3zJIYhNh6Tp7Jo4CfA0u0nw,5923
190
193
  ultralytics/utils/callbacks/comet.py,sha256=QR3-9f0L_W7nZWWg_OEN7t8La2JotapSS-CnNYVjCdk,13744
191
194
  ultralytics/utils/callbacks/dvc.py,sha256=WIClMsuvhiiyrwRv5BsZLxjsxYNJ3Y8Vq7zN0Bthtro,5045
192
195
  ultralytics/utils/callbacks/hub.py,sha256=2xebyUL92j3OZwMmL80kdvHrMizqaaqXBe5oSXJRKdA,3621
@@ -194,10 +197,10 @@ ultralytics/utils/callbacks/mlflow.py,sha256=Wr5Kju9GFdwGJXJKvkPJDCZH6KiPF9EUxKP
194
197
  ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyzC5q7p4ipQ,3756
195
198
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
196
199
  ultralytics/utils/callbacks/tensorboard.py,sha256=hRmWjbqdA4RNaLuSZznuDcpOBW-_-_Ga0u-B8UU-7ZI,4134
197
- ultralytics/utils/callbacks/wb.py,sha256=4QI81nHdzgwhXHlmTiRxLqunvkKakLXYUhHTUY1ZeHA,6635
198
- ultralytics-8.1.41.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
199
- ultralytics-8.1.41.dist-info/METADATA,sha256=1ZvyClcBCC17dlE6SKdJsvK9xiVdo8V2Ws5Y5bR1Ovo,40330
200
- ultralytics-8.1.41.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
201
- ultralytics-8.1.41.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
202
- ultralytics-8.1.41.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
203
- ultralytics-8.1.41.dist-info/RECORD,,
200
+ ultralytics/utils/callbacks/wb.py,sha256=woCQVuZzqtM5KnwxIibcfM3sFBYojeMPnv11jrRaIQA,6674
201
+ ultralytics-8.1.43.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
202
+ ultralytics-8.1.43.dist-info/METADATA,sha256=9iXx3cJblunu8OJbUhO90LxptFAalkG7GjfSCbEuWPk,40416
203
+ ultralytics-8.1.43.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
204
+ ultralytics-8.1.43.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
205
+ ultralytics-8.1.43.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
206
+ ultralytics-8.1.43.dist-info/RECORD,,