ultralytics 8.3.4__py3-none-any.whl → 8.3.6__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.

@@ -593,20 +593,29 @@ def collect_system_info():
593
593
  import psutil
594
594
 
595
595
  from ultralytics.utils import ENVIRONMENT # scope to avoid circular import
596
- from ultralytics.utils.torch_utils import get_cpu_info
596
+ from ultralytics.utils.torch_utils import get_cpu_info, get_gpu_info
597
597
 
598
- ram_info = psutil.virtual_memory().total / (1024**3) # Convert bytes to GB
598
+ gib = 1 << 30 # bytes per GiB
599
+ cuda = torch and torch.cuda.is_available()
599
600
  check_yolo()
600
- LOGGER.info(
601
- f"\n{'OS':<20}{platform.platform()}\n"
602
- f"{'Environment':<20}{ENVIRONMENT}\n"
603
- f"{'Python':<20}{PYTHON_VERSION}\n"
604
- f"{'Install':<20}{'git' if IS_GIT_DIR else 'pip' if IS_PIP_PACKAGE else 'other'}\n"
605
- f"{'RAM':<20}{ram_info:.2f} GB\n"
606
- f"{'CPU':<20}{get_cpu_info()}\n"
607
- f"{'CUDA':<20}{torch.version.cuda if torch and torch.cuda.is_available() else None}\n"
608
- )
601
+ total, used, free = shutil.disk_usage("/")
602
+
603
+ info_dict = {
604
+ "OS": platform.platform(),
605
+ "Environment": ENVIRONMENT,
606
+ "Python": PYTHON_VERSION,
607
+ "Install": "git" if IS_GIT_DIR else "pip" if IS_PIP_PACKAGE else "other",
608
+ "RAM": f"{psutil.virtual_memory().total / gib:.2f} GB",
609
+ "Disk": f"{(total - free) / gib:.1f}/{total / gib:.1f} GB",
610
+ "CPU": get_cpu_info(),
611
+ "CPU count": os.cpu_count(),
612
+ "GPU": get_gpu_info(index=0) if cuda else None,
613
+ "GPU count": torch.cuda.device_count() if cuda else None,
614
+ "CUDA": torch.version.cuda if cuda else None,
615
+ }
616
+ LOGGER.info("\n" + "\n".join(f"{k:<20}{v}" for k, v in info_dict.items()) + "\n")
609
617
 
618
+ package_info = {}
610
619
  for r in parse_requirements(package="ultralytics"):
611
620
  try:
612
621
  current = metadata.version(r.name)
@@ -614,17 +623,24 @@ def collect_system_info():
614
623
  except metadata.PackageNotFoundError:
615
624
  current = "(not installed)"
616
625
  is_met = "❌ "
617
- LOGGER.info(f"{r.name:<20}{is_met}{current}{r.specifier}")
626
+ package_info[r.name] = f"{is_met}{current}{r.specifier}"
627
+ LOGGER.info(f"{r.name:<20}{package_info[r.name]}")
628
+
629
+ info_dict["Package Info"] = package_info
618
630
 
619
631
  if is_github_action_running():
620
- LOGGER.info(
621
- f"\nRUNNER_OS: {os.getenv('RUNNER_OS')}\n"
622
- f"GITHUB_EVENT_NAME: {os.getenv('GITHUB_EVENT_NAME')}\n"
623
- f"GITHUB_WORKFLOW: {os.getenv('GITHUB_WORKFLOW')}\n"
624
- f"GITHUB_ACTOR: {os.getenv('GITHUB_ACTOR')}\n"
625
- f"GITHUB_REPOSITORY: {os.getenv('GITHUB_REPOSITORY')}\n"
626
- f"GITHUB_REPOSITORY_OWNER: {os.getenv('GITHUB_REPOSITORY_OWNER')}\n"
627
- )
632
+ github_info = {
633
+ "RUNNER_OS": os.getenv("RUNNER_OS"),
634
+ "GITHUB_EVENT_NAME": os.getenv("GITHUB_EVENT_NAME"),
635
+ "GITHUB_WORKFLOW": os.getenv("GITHUB_WORKFLOW"),
636
+ "GITHUB_ACTOR": os.getenv("GITHUB_ACTOR"),
637
+ "GITHUB_REPOSITORY": os.getenv("GITHUB_REPOSITORY"),
638
+ "GITHUB_REPOSITORY_OWNER": os.getenv("GITHUB_REPOSITORY_OWNER"),
639
+ }
640
+ LOGGER.info("\n" + "\n".join(f"{k}: {v}" for k, v in github_info.items()))
641
+ info_dict["GitHub Info"] = github_info
642
+
643
+ return info_dict
628
644
 
629
645
 
630
646
  def check_amp(model):
@@ -697,14 +697,13 @@ class Annotator:
697
697
  angle = 360 - angle
698
698
  return angle
699
699
 
700
- def draw_specific_points(self, keypoints, indices=None, shape=(640, 640), radius=2, conf_thres=0.25):
700
+ def draw_specific_points(self, keypoints, indices=None, radius=2, conf_thres=0.25):
701
701
  """
702
702
  Draw specific keypoints for gym steps counting.
703
703
 
704
704
  Args:
705
705
  keypoints (list): Keypoints data to be plotted.
706
706
  indices (list, optional): Keypoint indices to be plotted. Defaults to [2, 5, 7].
707
- shape (tuple, optional): Image size for model inference. Defaults to (640, 640).
708
707
  radius (int, optional): Keypoint radius. Defaults to 2.
709
708
  conf_thres (float, optional): Confidence threshold for keypoints. Defaults to 0.25.
710
709
 
@@ -715,90 +714,71 @@ class Annotator:
715
714
  Keypoint format: [x, y] or [x, y, confidence].
716
715
  Modifies self.im in-place.
717
716
  """
718
- if indices is None:
719
- indices = [2, 5, 7]
720
- for i, k in enumerate(keypoints):
721
- if i in indices:
722
- x_coord, y_coord = k[0], k[1]
723
- if x_coord % shape[1] != 0 and y_coord % shape[0] != 0:
724
- if len(k) == 3:
725
- conf = k[2]
726
- if conf < conf_thres:
727
- continue
728
- cv2.circle(self.im, (int(x_coord), int(y_coord)), radius, (0, 255, 0), -1, lineType=cv2.LINE_AA)
717
+ indices = indices or [2, 5, 7]
718
+ points = [(int(k[0]), int(k[1])) for i, k in enumerate(keypoints) if i in indices and k[2] >= conf_thres]
719
+
720
+ # Draw lines between consecutive points
721
+ for start, end in zip(points[:-1], points[1:]):
722
+ cv2.line(self.im, start, end, (0, 255, 0), 2, lineType=cv2.LINE_AA)
723
+
724
+ # Draw circles for keypoints
725
+ for pt in points:
726
+ cv2.circle(self.im, pt, radius, (0, 0, 255), -1, lineType=cv2.LINE_AA)
727
+
729
728
  return self.im
730
729
 
731
- def plot_angle_and_count_and_stage(
732
- self, angle_text, count_text, stage_text, center_kpt, color=(104, 31, 17), txt_color=(255, 255, 255)
733
- ):
730
+ def plot_workout_information(self, display_text, position, color=(104, 31, 17), txt_color=(255, 255, 255)):
734
731
  """
735
- Plot the pose angle, count value and step stage.
732
+ Draw text with a background on the image.
736
733
 
737
734
  Args:
738
- angle_text (str): angle value for workout monitoring
739
- count_text (str): counts value for workout monitoring
740
- stage_text (str): stage decision for workout monitoring
741
- center_kpt (list): centroid pose index for workout monitoring
742
- color (tuple): text background color for workout monitoring
743
- txt_color (tuple): text foreground color for workout monitoring
735
+ display_text (str): The text to be displayed.
736
+ position (tuple): Coordinates (x, y) on the image where the text will be placed.
737
+ color (tuple, optional): Text background color
738
+ txt_color (tuple, optional): Text foreground color
744
739
  """
745
- angle_text, count_text, stage_text = (f" {angle_text:.2f}", f"Steps : {count_text}", f" {stage_text}")
740
+ (text_width, text_height), _ = cv2.getTextSize(display_text, 0, self.sf, self.tf)
746
741
 
747
- # Draw angle
748
- (angle_text_width, angle_text_height), _ = cv2.getTextSize(angle_text, 0, self.sf, self.tf)
749
- angle_text_position = (int(center_kpt[0]), int(center_kpt[1]))
750
- angle_background_position = (angle_text_position[0], angle_text_position[1] - angle_text_height - 5)
751
- angle_background_size = (angle_text_width + 2 * 5, angle_text_height + 2 * 5 + (self.tf * 2))
742
+ # Draw background rectangle
752
743
  cv2.rectangle(
753
744
  self.im,
754
- angle_background_position,
755
- (
756
- angle_background_position[0] + angle_background_size[0],
757
- angle_background_position[1] + angle_background_size[1],
758
- ),
745
+ (position[0], position[1] - text_height - 5),
746
+ (position[0] + text_width + 10, position[1] - text_height - 5 + text_height + 10 + self.tf),
759
747
  color,
760
748
  -1,
761
749
  )
762
- cv2.putText(self.im, angle_text, angle_text_position, 0, self.sf, txt_color, self.tf)
763
-
764
- # Draw Counts
765
- (count_text_width, count_text_height), _ = cv2.getTextSize(count_text, 0, self.sf, self.tf)
766
- count_text_position = (angle_text_position[0], angle_text_position[1] + angle_text_height + 20)
767
- count_background_position = (
768
- angle_background_position[0],
769
- angle_background_position[1] + angle_background_size[1] + 5,
770
- )
771
- count_background_size = (count_text_width + 10, count_text_height + 10 + self.tf)
750
+ # Draw text
751
+ cv2.putText(self.im, display_text, position, 0, self.sf, txt_color, self.tf)
772
752
 
773
- cv2.rectangle(
774
- self.im,
775
- count_background_position,
776
- (
777
- count_background_position[0] + count_background_size[0],
778
- count_background_position[1] + count_background_size[1],
779
- ),
780
- color,
781
- -1,
782
- )
783
- cv2.putText(self.im, count_text, count_text_position, 0, self.sf, txt_color, self.tf)
753
+ return text_height
784
754
 
785
- # Draw Stage
786
- (stage_text_width, stage_text_height), _ = cv2.getTextSize(stage_text, 0, self.sf, self.tf)
787
- stage_text_position = (int(center_kpt[0]), int(center_kpt[1]) + angle_text_height + count_text_height + 40)
788
- stage_background_position = (stage_text_position[0], stage_text_position[1] - stage_text_height - 5)
789
- stage_background_size = (stage_text_width + 10, stage_text_height + 10)
755
+ def plot_angle_and_count_and_stage(
756
+ self, angle_text, count_text, stage_text, center_kpt, color=(104, 31, 17), txt_color=(255, 255, 255)
757
+ ):
758
+ """
759
+ Plot the pose angle, count value, and step stage.
790
760
 
791
- cv2.rectangle(
792
- self.im,
793
- stage_background_position,
794
- (
795
- stage_background_position[0] + stage_background_size[0],
796
- stage_background_position[1] + stage_background_size[1],
797
- ),
798
- color,
799
- -1,
761
+ Args:
762
+ angle_text (str): Angle value for workout monitoring
763
+ count_text (str): Counts value for workout monitoring
764
+ stage_text (str): Stage decision for workout monitoring
765
+ center_kpt (list): Centroid pose index for workout monitoring
766
+ color (tuple, optional): Text background color
767
+ txt_color (tuple, optional): Text foreground color
768
+ """
769
+ # Format text
770
+ angle_text, count_text, stage_text = f" {angle_text:.2f}", f"Steps : {count_text}", f" {stage_text}"
771
+
772
+ # Draw angle, count and stage text
773
+ angle_height = self.plot_workout_information(
774
+ angle_text, (int(center_kpt[0]), int(center_kpt[1])), color, txt_color
775
+ )
776
+ count_height = self.plot_workout_information(
777
+ count_text, (int(center_kpt[0]), int(center_kpt[1]) + angle_height + 20), color, txt_color
778
+ )
779
+ self.plot_workout_information(
780
+ stage_text, (int(center_kpt[0]), int(center_kpt[1]) + angle_height + count_height + 40), color, txt_color
800
781
  )
801
- cv2.putText(self.im, stage_text, stage_text_position, 0, self.sf, txt_color, self.tf)
802
782
 
803
783
  def seg_bbox(self, mask, mask_color=(255, 0, 255), label=None, txt_color=(255, 255, 255)):
804
784
  """
@@ -123,6 +123,12 @@ def get_cpu_info():
123
123
  return PERSISTENT_CACHE.get("cpu_info", "unknown")
124
124
 
125
125
 
126
+ def get_gpu_info(index):
127
+ """Return a string with system GPU information, i.e. 'Tesla T4, 15102MiB'."""
128
+ properties = torch.cuda.get_device_properties(index)
129
+ return f"{properties.name}, {properties.total_memory / (1 << 20):.0f}MiB"
130
+
131
+
126
132
  def select_device(device="", batch=0, newline=False, verbose=True):
127
133
  """
128
134
  Selects the appropriate PyTorch device based on the provided arguments.
@@ -208,8 +214,7 @@ def select_device(device="", batch=0, newline=False, verbose=True):
208
214
  )
209
215
  space = " " * (len(s) + 1)
210
216
  for i, d in enumerate(devices):
211
- p = torch.cuda.get_device_properties(i)
212
- s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / (1 << 20):.0f}MiB)\n" # bytes to MB
217
+ s += f"{'' if i == 0 else space}CUDA:{d} ({get_gpu_info(i)})\n" # bytes to MB
213
218
  arg = "cuda:0"
214
219
  elif mps and TORCH_2_0 and torch.backends.mps.is_available():
215
220
  # Prefer MPS if available
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.4
3
+ Version: 8.3.6
4
4
  Summary: Ultralytics YOLO for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
- Author: Ayush Chaurasia
6
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
7
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
8
7
  License: AGPL-3.0
@@ -99,8 +98,8 @@ Requires-Dist: dvclive>=2.12.0; extra == "logging"
99
98
  <a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml/badge.svg" alt="Ultralytics CI"></a>
100
99
  <a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
101
100
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
102
- <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
103
- <a href="https://community.ultralytics.com"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
101
+ <a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
102
+ <a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
104
103
  <a href="https://reddit.com/r/ultralytics"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
105
104
  <br>
106
105
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
@@ -111,7 +110,7 @@ Requires-Dist: dvclive>=2.12.0; extra == "logging"
111
110
 
112
111
  [Ultralytics](https://www.ultralytics.com/) [YOLO11](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLO11 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
113
112
 
114
- We hope that the resources here will help you get the most out of YOLO. Please browse the Ultralytics <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, questions, or discussions, become a member of the Ultralytics <a href="https://ultralytics.com/discord">Discord</a>, <a href="https://reddit.com/r/ultralytics">Reddit</a> and <a href="https://community.ultralytics.com">Forums</a>!
113
+ We hope that the resources here will help you get the most out of YOLO. Please browse the Ultralytics <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, questions, or discussions, become a member of the Ultralytics <a href="https://discord.com/invite/ultralytics">Discord</a>, <a href="https://reddit.com/r/ultralytics">Reddit</a> and <a href="https://community.ultralytics.com/">Forums</a>!
115
114
 
116
115
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://www.ultralytics.com/license).
117
116
 
@@ -130,7 +129,7 @@ To request an Enterprise License please complete the form at [Ultralytics Licens
130
129
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
131
130
  <a href="https://ultralytics.com/bilibili"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-bilibili.png" width="2%" alt="Ultralytics BiliBili"></a>
132
131
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
133
- <a href="https://ultralytics.com/discord"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-discord.png" width="2%" alt="Ultralytics Discord"></a>
132
+ <a href="https://discord.com/invite/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-discord.png" width="2%" alt="Ultralytics Discord"></a>
134
133
  </div>
135
134
  </div>
136
135
 
@@ -299,7 +298,7 @@ See [OBB Docs](https://docs.ultralytics.com/tasks/obb/) for usage examples with
299
298
  Our key integrations with leading AI platforms extend the functionality of Ultralytics' offerings, enhancing tasks like dataset labeling, training, visualization, and model management. Discover how Ultralytics, in collaboration with [Roboflow](https://roboflow.com/?ref=ultralytics), ClearML, [Comet](https://bit.ly/yolov8-readme-comet), Neural Magic and [OpenVINO](https://docs.ultralytics.com/integrations/openvino/), can optimize your AI workflow.
300
299
 
301
300
  <br>
302
- <a href="https://ultralytics.com/hub" target="_blank">
301
+ <a href="https://www.ultralytics.com/hub" target="_blank">
303
302
  <img width="100%" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="Ultralytics active learning integrations"></a>
304
303
  <br>
305
304
  <br>
@@ -326,7 +325,7 @@ Our key integrations with leading AI platforms extend the functionality of Ultra
326
325
 
327
326
  Experience seamless AI with [Ultralytics HUB](https://www.ultralytics.com/hub) ⭐, the all-in-one solution for data visualization, YOLO11 🚀 model training and deployment, without any coding. Transform images into actionable insights and bring your AI visions to life with ease using our cutting-edge platform and user-friendly [Ultralytics App](https://www.ultralytics.com/app-install). Start your journey for **Free** now!
328
327
 
329
- <a href="https://ultralytics.com/hub" target="_blank">
328
+ <a href="https://www.ultralytics.com/hub" target="_blank">
330
329
  <img width="100%" src="https://github.com/ultralytics/assets/raw/main/im/ultralytics-hub.png" alt="Ultralytics HUB preview image"></a>
331
330
 
332
331
  ## <div align="center">Contribute</div>
@@ -363,5 +362,5 @@ For Ultralytics bug reports and feature requests please visit [GitHub Issues](ht
363
362
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
364
363
  <a href="https://ultralytics.com/bilibili"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-bilibili.png" width="3%" alt="Ultralytics BiliBili"></a>
365
364
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
366
- <a href="https://ultralytics.com/discord"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-discord.png" width="3%" alt="Ultralytics Discord"></a>
365
+ <a href="https://discord.com/invite/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-discord.png" width="3%" alt="Ultralytics Discord"></a>
367
366
  </div>
@@ -7,12 +7,12 @@ tests/test_explorer.py,sha256=9EeMtt4-K3-MeGnAc7NemTg3uTo-Xr6AYJlTJZJJeF8,2572
7
7
  tests/test_exports.py,sha256=fpTKEVBUGLF3WiZPNKRs-IEcIY4cfxgvgKjUNfodjww,8042
8
8
  tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
9
9
  tests/test_python.py,sha256=I1RRdCwLdrc3jX06huVxct8HX8ccQOmQgVpuEflRl0U,23560
10
- tests/test_solutions.py,sha256=eAaLf1wM7IJ6DjT7NEw6sRaeDuTX0ZgsTjrI33XFCXE,3300
11
- ultralytics/__init__.py,sha256=JkiE8I9-uPGkhvc3KD7MpGn6E2kVJQCe1o-nZlJrriQ,693
10
+ tests/test_solutions.py,sha256=GYOjUXor2pHGPFwvZrmqrxNjs9wYz4r3_XWt8DMAVaM,3132
11
+ ultralytics/__init__.py,sha256=WlkyTS3L-3ozTAF5fT2vLMSf4tQNvOaCxGsICIQf7mA,693
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
14
  ultralytics/cfg/__init__.py,sha256=62PSSAa0W4-gAEcRNKoKbcxUWBeFNs0ss2O4XJQhOPY,33145
15
- ultralytics/cfg/default.yaml,sha256=tkBn3c6duKGFyENuULkWessAqaaxo9atuOxXq3XbItM,8314
15
+ ultralytics/cfg/default.yaml,sha256=ul49zgSzTegMmc8CFeu9tXkWNvQhETdZMa9EgDNSnY4,8319
16
16
  ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
17
17
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=QVfp_Qp-4rukuicaB4qx86NxSHM8Mrzym8l_fIDo8gw,1195
18
18
  ultralytics/cfg/datasets/DOTAv1.yaml,sha256=sxe2P7nY-cCPufH3G1pymnQVtNoGH1y0ETG5CyWfK9g,1165
@@ -86,31 +86,32 @@ ultralytics/cfg/models/v9/yolov9e.yaml,sha256=dhaR47WxuLOrZWDCceS4bQG00sQdrMc8FQ
86
86
  ultralytics/cfg/models/v9/yolov9m.yaml,sha256=l6CmivzNu44sRVmkQXk4-tXflbV1nWnk5MSc8su2vhs,1311
87
87
  ultralytics/cfg/models/v9/yolov9s.yaml,sha256=lPWcu-6ub1kCBD6zIDFwthYZ3RvdJfODWKy3vEQWRjo,1291
88
88
  ultralytics/cfg/models/v9/yolov9t.yaml,sha256=qL__kr6GoefpQWP4jV0jdzwTp46bdFUcqtPRnfDbkY8,1275
89
+ ultralytics/cfg/solutions/default.yaml,sha256=H4pXUoA-IafiHL6NNNTyWXrlHAjMRqaItGK1U5amNE4,825
89
90
  ultralytics/cfg/trackers/botsort.yaml,sha256=8B0xNbnG_E-9DCUpap72PWkUgBb1AjuApEn7gHiVngE,916
90
91
  ultralytics/cfg/trackers/bytetrack.yaml,sha256=8vpTZ2x9mhRXJymoJvs1G8kTXo_HxbSwHup2FQALT3A,721
91
92
  ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
92
93
  ultralytics/data/annotator.py,sha256=PniOxH2MScWKp539vuufk69uG1JsltDB5OMCUhxn2QY,2489
93
94
  ultralytics/data/augment.py,sha256=YCLrwx1mRGeidggo_7GeINay8KdxACqREHJofZeaTHA,120430
94
- ultralytics/data/base.py,sha256=zi_1nnJb29gBqY3jrvbMCwh6RPpXhr08DQ2BQ2_dhTo,13835
95
+ ultralytics/data/base.py,sha256=ZCIhAyFfxXVp5fVnYD8mwbksNALJTayBKIR5FKGV7ZM,15168
95
96
  ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
96
97
  ultralytics/data/converter.py,sha256=DjJ0atku2aKW0iS1PZPNX8V6WTrZ-CHZT6hopE1HSjI,21385
97
98
  ultralytics/data/dataset.py,sha256=IS07ulk7rXPZ-SW_rjYF9mS-TxPXOY9bbo5jqfcwPqM,22874
98
99
  ultralytics/data/loaders.py,sha256=JF2Z_ESK6RweavOuYWejYSGJwmqINb5hNwwCb3AAf0M,24094
99
100
  ultralytics/data/split_dota.py,sha256=yOtypHoY5HvIVBKZgFXdfj2tuCLLEBnMwNfAeG94Eik,10680
100
- ultralytics/data/utils.py,sha256=GVTtZlFE8Q9RlNJ19Er_CdxenjeDbvQerU1jKOs76S4,31042
101
+ ultralytics/data/utils.py,sha256=FQhceOiQOuhyDKCeX-ovEBBr2fO7cFbcVaAUp-nk3CM,31072
101
102
  ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
102
103
  ultralytics/data/explorer/explorer.py,sha256=JWmLHHhp68h2q3vx4poBou5RYoAX3R89yihR50YLDb0,18881
103
104
  ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
104
105
  ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
105
106
  ultralytics/data/explorer/gui/dash.py,sha256=vZ476NaUH4FKU08rAJ1K9WNyKtg0soMyJJxqg176yWc,10498
106
107
  ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
107
- ultralytics/engine/exporter.py,sha256=qhuPMBjBDVj9Qaa2qJYR954a-YS4BJtVN9jJeyFzyOg,57527
108
+ ultralytics/engine/exporter.py,sha256=DeHW_T_Zd3A21BLQYV1-FnS5EcmepMOy9nrussYNieU,57505
108
109
  ultralytics/engine/model.py,sha256=TDuy9JzzyvOaq5aKVljL_MFRKBDMCFwaLo3JD_d45CU,51462
109
110
  ultralytics/engine/predictor.py,sha256=MgMWHUJdRcVCaVmOyvdy2Gjk_EyRHv-ar0SSGxQe8F4,17471
110
111
  ultralytics/engine/results.py,sha256=8RJlN8J-_9w-mrDZm9wC-DZJTPBS7v1c_r_R173QyRM,75043
111
- ultralytics/engine/trainer.py,sha256=O2xCZ6mriLfPhU2IRe8XCCyZiI5A_AknjpQw3O5bAIE,36983
112
+ ultralytics/engine/trainer.py,sha256=ZCEXUPbJG_8Hzn2mLergk3WV-41ei0LT84Tspk0le30,37147
112
113
  ultralytics/engine/tuner.py,sha256=gPqDTHH7vRB2O3YyH26m1BjVKbXxuA2XAlPRzTKFZsc,11838
113
- ultralytics/engine/validator.py,sha256=483Ad87Irk7IBlJNLu2SQAJsb7YriALTX9GIgriCmRg,14650
114
+ ultralytics/engine/validator.py,sha256=2C_qXI36Z9rLOpmS0YR8Qe3ka4p23YiH2w5ai7-XBwE,14811
114
115
  ultralytics/hub/__init__.py,sha256=3SKvZ5aRina3h94xMPQIB3D4maF62qFcyIqPPHRHNAc,5644
115
116
  ultralytics/hub/auth.py,sha256=kDLakGa2NbzvMAeXc2UdzZ65r0AH-XeM_JfsDY97WGk,5545
116
117
  ultralytics/hub/session.py,sha256=2KznO5kX14HFZ2-Ct9LoG312sdHuigQSLZb58MGvbJY,16411
@@ -184,13 +185,14 @@ ultralytics/nn/modules/head.py,sha256=x0Y8lTKFqYC4oAN1JTJ-yQ43sIXEIp35dmC14vdtQn
184
185
  ultralytics/nn/modules/transformer.py,sha256=tGiK8NmPfswwW1rbF21r5ILUkkZQ6Nk4s8j16vFBmps,18069
185
186
  ultralytics/nn/modules/utils.py,sha256=a88cKl2wz1nMVSEBiajtvaCbDBQIkESWOKTZ_WAJy90,3195
186
187
  ultralytics/solutions/__init__.py,sha256=6RDeXWO1QSaMgCq8YrWXaj2xvPw2sJwJL_a0dgjCvz0,648
187
- ultralytics/solutions/ai_gym.py,sha256=MgD_4DciCqXquM2Y6yjIIRkGWIg3rNfSuXrFqYzOCaI,4719
188
+ ultralytics/solutions/ai_gym.py,sha256=lBAkWV8vrEdKAXcBFVbugPeZZ08MOjGYTdnFlG22vKM,3772
188
189
  ultralytics/solutions/analytics.py,sha256=bGuZes11D7DNiTsHdwu6PJ0QA0vCiqMMAtZ7NyEkshY,11568
189
190
  ultralytics/solutions/distance_calculation.py,sha256=o_DAHk4JX8n2Vt7E68MX67mREOBZuy5skbXtVZ6iu_4,5228
190
- ultralytics/solutions/heatmap.py,sha256=oEVivA4KAK6z0wA5Ca_a2qTckQN8tCt9MCpsPREeNnk,10375
191
- ultralytics/solutions/object_counter.py,sha256=U66uvv_6QSol4-LY1E9JOZnYRYbek5Kz3N7Cgzh6FuA,9982
191
+ ultralytics/solutions/heatmap.py,sha256=2C4s_rVFcOc5oSWxb0pNxNoCawe4lxajpTDNFd4tVL8,3850
192
+ ultralytics/solutions/object_counter.py,sha256=uuA7B-v9u-ElyEg1xCuNRgcnxpRpEfBWCdLs2ppjzzk,5497
192
193
  ultralytics/solutions/parking_management.py,sha256=VgYyhoSEo7fnPegIhNUqnFL0jlMEevALx0QQbzJ3vGI,9049
193
194
  ultralytics/solutions/queue_management.py,sha256=yKPGc2-fN-lMpNddkxjN7xYGIJwMdoU-VIDRxQ1KPow,4869
195
+ ultralytics/solutions/solutions.py,sha256=y6A2ZelsUj9RgN0GZNFBc_01UakoByT_jLG8-FiiLyI,3461
194
196
  ultralytics/solutions/speed_estimation.py,sha256=c9OPGpDU9x6Dj4SobNc-sO90EZTPTGeKkW5u6C6Zj7g,4623
195
197
  ultralytics/solutions/streamlit_inference.py,sha256=qA2EtwUC7ADOQ8P-zs3VPyrIoRArhcZz9CxkFbH63bw,5699
196
198
  ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
@@ -202,10 +204,10 @@ ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7J
202
204
  ultralytics/trackers/utils/gmc.py,sha256=VcURuY041qGCeWUGMxHZBr10T16LtcMqyv7AmTfE1MY,14557
203
205
  ultralytics/trackers/utils/kalman_filter.py,sha256=cH9zD3fwkuezP97H9mw8cSBN7a8hHKx_Sx1j7t3oYGs,21349
204
206
  ultralytics/trackers/utils/matching.py,sha256=3Ie1WNNRZ4_q3365F03XD7Nr9juZB_08mw4yUKC3w74,7162
205
- ultralytics/utils/__init__.py,sha256=jGfv0ejbMp1hYcxeZtbcCtTIyW4UpzfdvAikyC2xubQ,48880
207
+ ultralytics/utils/__init__.py,sha256=XAfItx7avPCi7fpT7rRyQQqgjh2OwoSEkvkp01BbtYc,48760
206
208
  ultralytics/utils/autobatch.py,sha256=AXboYfNSnTGsYj5FmgGYPQd0crfkeleyms6QXQfZGQ4,4194
207
209
  ultralytics/utils/benchmarks.py,sha256=8FYp5WPzcxcDaeg8ol2sgzRBHVGYatEO7f3MrmPF6nI,25097
208
- ultralytics/utils/checks.py,sha256=tiwVY1SCf7AlDOUQDh6fJlmhQ3CxQEqLUrXRvwRBoKs,28998
210
+ ultralytics/utils/checks.py,sha256=7peQ6Ra7mgcu5Xt1XbYiMEJkO-8aYPHco7CBVRQ_oR4,29559
209
211
  ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
210
212
  ultralytics/utils/downloads.py,sha256=97JitihZqvIMS6_TX5rJAG7BI8eYHlu5g8YXlI0RkR4,21998
211
213
  ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
@@ -215,9 +217,9 @@ ultralytics/utils/loss.py,sha256=SW3FVFFp8Ki_LCT8wIdFbm6KmyPcQn3RmKNcvVAhMQI,341
215
217
  ultralytics/utils/metrics.py,sha256=UgLGudWp57uXDMlMUJy4gsz6cfVjcq7tYmHeto3TqvM,53927
216
218
  ultralytics/utils/ops.py,sha256=dsXNdyrYx_p6io6zezig9p84dxS7U-10vceHNVu2IL0,32888
217
219
  ultralytics/utils/patches.py,sha256=J-iOwIRbfUs-inBZerhnXby5tUKjYcOIyvhLTS352JE,3270
218
- ultralytics/utils/plotting.py,sha256=Sqs9Q7mhenCsFed_oyw_64wgvd0TTae9L3Lc4g2_lSI,62296
220
+ ultralytics/utils/plotting.py,sha256=UQMgubdCKkIcKLLIXkE6uM9dhL7NlFRka6xXgfCMFn8,61153
219
221
  ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
220
- ultralytics/utils/torch_utils.py,sha256=RsTzm3__J4K1OUaxqc32O9WT6azcl4hPNkDdxhEp3q4,29792
222
+ ultralytics/utils/torch_utils.py,sha256=Dji6ELzywm4yq1D4AbUhOsanmoo9-pwxx5GBlYdIgqU,29956
221
223
  ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
222
224
  ultralytics/utils/tuner.py,sha256=AtEtK6pOt9xVTyx864OpNRVxNdAxz5aKHzveiXwkD1A,6250
223
225
  ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
@@ -231,9 +233,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
231
233
  ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
232
234
  ultralytics/utils/callbacks/tensorboard.py,sha256=0kn4IR10no99UCIheojWRujgybmUHSx5fPI6Vsq6l_g,4135
233
235
  ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
234
- ultralytics-8.3.4.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
235
- ultralytics-8.3.4.dist-info/METADATA,sha256=oNkPldiv138BEelfph38kxAuGZAOiadiFH5Z2B3B6MY,34685
236
- ultralytics-8.3.4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
237
- ultralytics-8.3.4.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
238
- ultralytics-8.3.4.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
239
- ultralytics-8.3.4.dist-info/RECORD,,
236
+ ultralytics-8.3.6.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
237
+ ultralytics-8.3.6.dist-info/METADATA,sha256=8c1KpR7WhT8HlvpimiFOS4G3vd8KtQ8YxBUHYnQ_dDc,34699
238
+ ultralytics-8.3.6.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
239
+ ultralytics-8.3.6.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
240
+ ultralytics-8.3.6.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
241
+ ultralytics-8.3.6.dist-info/RECORD,,