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.
- tests/test_solutions.py +6 -8
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/default.yaml +1 -1
- ultralytics/cfg/solutions/default.yaml +16 -0
- ultralytics/data/base.py +37 -5
- ultralytics/data/utils.py +3 -3
- ultralytics/engine/exporter.py +3 -4
- ultralytics/engine/trainer.py +4 -4
- ultralytics/engine/validator.py +2 -0
- ultralytics/solutions/ai_gym.py +62 -110
- ultralytics/solutions/heatmap.py +62 -228
- ultralytics/solutions/object_counter.py +105 -217
- ultralytics/solutions/solutions.py +93 -0
- ultralytics/utils/__init__.py +55 -54
- ultralytics/utils/checks.py +36 -20
- ultralytics/utils/plotting.py +50 -70
- ultralytics/utils/torch_utils.py +7 -2
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/METADATA +8 -9
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/RECORD +23 -21
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/LICENSE +0 -0
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.4.dist-info → ultralytics-8.3.6.dist-info}/top_level.txt +0 -0
ultralytics/utils/checks.py
CHANGED
|
@@ -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
|
-
|
|
598
|
+
gib = 1 << 30 # bytes per GiB
|
|
599
|
+
cuda = torch and torch.cuda.is_available()
|
|
599
600
|
check_yolo()
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
f"{
|
|
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
|
-
|
|
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
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
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):
|
ultralytics/utils/plotting.py
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
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
|
|
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
|
-
|
|
732
|
+
Draw text with a background on the image.
|
|
736
733
|
|
|
737
734
|
Args:
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
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
|
-
|
|
740
|
+
(text_width, text_height), _ = cv2.getTextSize(display_text, 0, self.sf, self.tf)
|
|
746
741
|
|
|
747
|
-
# Draw
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
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
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
(
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
)
|
|
798
|
-
|
|
799
|
-
|
|
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
|
"""
|
ultralytics/utils/torch_utils.py
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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=
|
|
11
|
-
ultralytics/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
191
|
-
ultralytics/solutions/object_counter.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
220
|
+
ultralytics/utils/plotting.py,sha256=UQMgubdCKkIcKLLIXkE6uM9dhL7NlFRka6xXgfCMFn8,61153
|
|
219
221
|
ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
|
|
220
|
-
ultralytics/utils/torch_utils.py,sha256=
|
|
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.
|
|
235
|
-
ultralytics-8.3.
|
|
236
|
-
ultralytics-8.3.
|
|
237
|
-
ultralytics-8.3.
|
|
238
|
-
ultralytics-8.3.
|
|
239
|
-
ultralytics-8.3.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|