ultralytics 8.2.49__py3-none-any.whl → 8.2.50__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +14 -3
- ultralytics/data/augment.py +3 -3
- ultralytics/engine/results.py +1 -1
- ultralytics/models/fastsam/prompt.py +1 -1
- ultralytics/models/sam/amg.py +1 -1
- ultralytics/models/sam/modules/tiny_encoder.py +1 -1
- ultralytics/models/yolo/world/train_world.py +2 -2
- ultralytics/nn/tasks.py +1 -1
- ultralytics/solutions/__init__.py +1 -0
- ultralytics/solutions/streamlit_inference.py +154 -0
- ultralytics/utils/plotting.py +3 -3
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/METADATA +3 -3
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/RECORD +18 -17
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/WHEEL +0 -0
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.49.dist-info → ultralytics-8.2.50.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
|
@@ -78,10 +78,13 @@ CLI_HELP_MSG = f"""
|
|
|
78
78
|
4. Export a YOLOv8n classification model to ONNX format at image size 224 by 128 (no TASK required)
|
|
79
79
|
yolo export model=yolov8n-cls.pt format=onnx imgsz=224,128
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
5. Explore your datasets using semantic search and SQL with a simple GUI powered by Ultralytics Explorer API
|
|
82
82
|
yolo explorer
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
|
|
84
|
+
6. Streamlit real-time object detection on your webcam with Ultralytics YOLOv8
|
|
85
|
+
yolo streamlit-predict
|
|
86
|
+
|
|
87
|
+
7. Run special commands:
|
|
85
88
|
yolo help
|
|
86
89
|
yolo checks
|
|
87
90
|
yolo version
|
|
@@ -514,6 +517,13 @@ def handle_explorer():
|
|
|
514
517
|
subprocess.run(["streamlit", "run", ROOT / "data/explorer/gui/dash.py", "--server.maxMessageSize", "2048"])
|
|
515
518
|
|
|
516
519
|
|
|
520
|
+
def handle_streamlit_inference():
|
|
521
|
+
"""Open the Ultralytics Live Inference streamlit app for real time object detection."""
|
|
522
|
+
checks.check_requirements(["streamlit", "opencv-python", "torch"])
|
|
523
|
+
LOGGER.info("💡 Loading Ultralytics Live Inference app...")
|
|
524
|
+
subprocess.run(["streamlit", "run", ROOT / "solutions/streamlit_inference.py", "--server.headless", "true"])
|
|
525
|
+
|
|
526
|
+
|
|
517
527
|
def parse_key_value_pair(pair):
|
|
518
528
|
"""Parse one 'key=value' pair and return key and value."""
|
|
519
529
|
k, v = pair.split("=", 1) # split on first '=' sign
|
|
@@ -582,6 +592,7 @@ def entrypoint(debug=""):
|
|
|
582
592
|
"login": lambda: handle_yolo_hub(args),
|
|
583
593
|
"copy-cfg": copy_default_cfg,
|
|
584
594
|
"explorer": lambda: handle_explorer(),
|
|
595
|
+
"streamlit-predict": lambda: handle_streamlit_inference(),
|
|
585
596
|
}
|
|
586
597
|
full_args_dict = {**DEFAULT_CFG_DICT, **{k: None for k in TASKS}, **{k: None for k in MODES}, **special}
|
|
587
598
|
|
ultralytics/data/augment.py
CHANGED
|
@@ -686,7 +686,7 @@ class RandomFlip:
|
|
|
686
686
|
flip_idx (array-like, optional): Index mapping for flipping keypoints, if any.
|
|
687
687
|
"""
|
|
688
688
|
assert direction in {"horizontal", "vertical"}, f"Support direction `horizontal` or `vertical`, got {direction}"
|
|
689
|
-
assert 0 <= p <= 1.0
|
|
689
|
+
assert 0 <= p <= 1.0, f"The probability should be in range [0, 1], but got {p}."
|
|
690
690
|
|
|
691
691
|
self.p = p
|
|
692
692
|
self.direction = direction
|
|
@@ -1210,7 +1210,7 @@ def classify_transforms(
|
|
|
1210
1210
|
import torchvision.transforms as T # scope for faster 'import ultralytics'
|
|
1211
1211
|
|
|
1212
1212
|
if isinstance(size, (tuple, list)):
|
|
1213
|
-
assert len(size) == 2
|
|
1213
|
+
assert len(size) == 2, f"'size' tuples must be length 2, not length {len(size)}"
|
|
1214
1214
|
scale_size = tuple(math.floor(x / crop_fraction) for x in size)
|
|
1215
1215
|
else:
|
|
1216
1216
|
scale_size = math.floor(size / crop_fraction)
|
|
@@ -1288,7 +1288,7 @@ def classify_augmentations(
|
|
|
1288
1288
|
secondary_tfl = []
|
|
1289
1289
|
disable_color_jitter = False
|
|
1290
1290
|
if auto_augment:
|
|
1291
|
-
assert isinstance(auto_augment, str)
|
|
1291
|
+
assert isinstance(auto_augment, str), f"Provided argument should be string, but got type {type(auto_augment)}"
|
|
1292
1292
|
# color jitter is typically disabled if AA/RA on,
|
|
1293
1293
|
# this allows override without breaking old hparm cfgs
|
|
1294
1294
|
disable_color_jitter = not force_color_jitter
|
ultralytics/engine/results.py
CHANGED
|
@@ -42,7 +42,7 @@ class BaseTensor(SimpleClass):
|
|
|
42
42
|
base_tensor = BaseTensor(data, orig_shape)
|
|
43
43
|
```
|
|
44
44
|
"""
|
|
45
|
-
assert isinstance(data, (torch.Tensor, np.ndarray))
|
|
45
|
+
assert isinstance(data, (torch.Tensor, np.ndarray)), "data must be torch.Tensor or np.ndarray"
|
|
46
46
|
self.data = data
|
|
47
47
|
self.orig_shape = orig_shape
|
|
48
48
|
|
|
@@ -286,7 +286,7 @@ class FastSAMPrompt:
|
|
|
286
286
|
def box_prompt(self, bbox):
|
|
287
287
|
"""Modifies the bounding box properties and calculates IoU between masks and bounding box."""
|
|
288
288
|
if self.results[0].masks is not None:
|
|
289
|
-
assert bbox[2] != 0 and bbox[3] != 0
|
|
289
|
+
assert bbox[2] != 0 and bbox[3] != 0, "Bounding box width and height should not be zero"
|
|
290
290
|
masks = self.results[0].masks.data
|
|
291
291
|
target_height, target_width = self.results[0].orig_shape
|
|
292
292
|
h = masks.shape[1]
|
ultralytics/models/sam/amg.py
CHANGED
|
@@ -133,7 +133,7 @@ def remove_small_regions(mask: np.ndarray, area_thresh: float, mode: str) -> Tup
|
|
|
133
133
|
"""Remove small disconnected regions or holes in a mask, returning the mask and a modification indicator."""
|
|
134
134
|
import cv2 # type: ignore
|
|
135
135
|
|
|
136
|
-
assert mode in {"holes", "islands"}
|
|
136
|
+
assert mode in {"holes", "islands"}, f"Provided mode {mode} is invalid"
|
|
137
137
|
correct_holes = mode == "holes"
|
|
138
138
|
working_mask = (correct_holes ^ mask).astype(np.uint8)
|
|
139
139
|
n_labels, regions, stats, _ = cv2.connectedComponentsWithStats(working_mask, 8)
|
|
@@ -261,7 +261,7 @@ class Attention(torch.nn.Module):
|
|
|
261
261
|
"""
|
|
262
262
|
super().__init__()
|
|
263
263
|
|
|
264
|
-
assert isinstance(resolution, tuple) and len(resolution) == 2
|
|
264
|
+
assert isinstance(resolution, tuple) and len(resolution) == 2, "'resolution' argument not tuple of length 2"
|
|
265
265
|
self.num_heads = num_heads
|
|
266
266
|
self.scale = key_dim**-0.5
|
|
267
267
|
self.key_dim = key_dim
|
|
@@ -72,8 +72,8 @@ class WorldTrainerFromScratch(WorldTrainer):
|
|
|
72
72
|
"""
|
|
73
73
|
final_data = {}
|
|
74
74
|
data_yaml = self.args.data
|
|
75
|
-
assert data_yaml.get("train", False) # object365.yaml
|
|
76
|
-
assert data_yaml.get("val", False) # lvis.yaml
|
|
75
|
+
assert data_yaml.get("train", False), "train dataset not found" # object365.yaml
|
|
76
|
+
assert data_yaml.get("val", False), "validation dataset not found" # lvis.yaml
|
|
77
77
|
data = {k: [check_det_dataset(d) for d in v.get("yolo_data", [])] for k, v in data_yaml.items()}
|
|
78
78
|
assert len(data["val"]) == 1, f"Only support validating on 1 dataset for now, but got {len(data['val'])}."
|
|
79
79
|
val_split = "minival" if "lvis" in data["val"][0]["val"] else "val"
|
ultralytics/nn/tasks.py
CHANGED
|
@@ -276,7 +276,7 @@ class BaseModel(nn.Module):
|
|
|
276
276
|
batch (dict): Batch to compute loss on
|
|
277
277
|
preds (torch.Tensor | List[torch.Tensor]): Predictions.
|
|
278
278
|
"""
|
|
279
|
-
if
|
|
279
|
+
if getattr(self, "criterion", None) is None:
|
|
280
280
|
self.criterion = self.init_criterion()
|
|
281
281
|
|
|
282
282
|
preds = self.forward(batch["img"]) if preds is None else preds
|
|
@@ -8,6 +8,7 @@ from .object_counter import ObjectCounter
|
|
|
8
8
|
from .parking_management import ParkingManagement, ParkingPtsSelection
|
|
9
9
|
from .queue_management import QueueManager
|
|
10
10
|
from .speed_estimation import SpeedEstimator
|
|
11
|
+
from .streamlit_inference import inference
|
|
11
12
|
|
|
12
13
|
__all__ = (
|
|
13
14
|
"AIGym",
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
|
|
3
|
+
import io
|
|
4
|
+
import time
|
|
5
|
+
|
|
6
|
+
import cv2
|
|
7
|
+
import torch
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def inference():
|
|
11
|
+
"""Runs real-time object detection on video input using Ultralytics YOLOv8 in a Streamlit application."""
|
|
12
|
+
|
|
13
|
+
# Scope imports for faster ultralytics package load speeds
|
|
14
|
+
import streamlit as st
|
|
15
|
+
|
|
16
|
+
from ultralytics import YOLO
|
|
17
|
+
|
|
18
|
+
# Hide main menu style
|
|
19
|
+
menu_style_cfg = """<style>MainMenu {visibility: hidden;}</style>"""
|
|
20
|
+
|
|
21
|
+
# Main title of streamlit application
|
|
22
|
+
main_title_cfg = """<div><h1 style="color:#FF64DA; text-align:center; font-size:40px;
|
|
23
|
+
font-family: 'Archivo', sans-serif; margin-top:-50px;margin-bottom:20px;">
|
|
24
|
+
Ultralytics YOLOv8 Streamlit Application
|
|
25
|
+
</h1></div>"""
|
|
26
|
+
|
|
27
|
+
# Subtitle of streamlit application
|
|
28
|
+
sub_title_cfg = """<div><h4 style="color:#042AFF; text-align:center;
|
|
29
|
+
font-family: 'Archivo', sans-serif; margin-top:-15px; margin-bottom:50px;">
|
|
30
|
+
Experience real-time object detection on your webcam with the power of Ultralytics YOLOv8! 🚀</h4>
|
|
31
|
+
</div>"""
|
|
32
|
+
|
|
33
|
+
# Set html page configuration
|
|
34
|
+
st.set_page_config(page_title="Ultralytics Streamlit App", layout="wide", initial_sidebar_state="auto")
|
|
35
|
+
|
|
36
|
+
# Append the custom HTML
|
|
37
|
+
st.markdown(menu_style_cfg, unsafe_allow_html=True)
|
|
38
|
+
st.markdown(main_title_cfg, unsafe_allow_html=True)
|
|
39
|
+
st.markdown(sub_title_cfg, unsafe_allow_html=True)
|
|
40
|
+
|
|
41
|
+
# Add ultralytics logo in sidebar
|
|
42
|
+
with st.sidebar:
|
|
43
|
+
logo = "https://raw.githubusercontent.com/ultralytics/assets/main/logo/Ultralytics_Logotype_Original.svg"
|
|
44
|
+
st.image(logo, width=250)
|
|
45
|
+
|
|
46
|
+
# Add elements to vertical setting menu
|
|
47
|
+
st.sidebar.title("User Configuration")
|
|
48
|
+
|
|
49
|
+
# Add video source selection dropdown
|
|
50
|
+
source = st.sidebar.selectbox(
|
|
51
|
+
"Video",
|
|
52
|
+
("webcam", "video"),
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
vid_file_name = ""
|
|
56
|
+
if source == "video":
|
|
57
|
+
vid_file = st.sidebar.file_uploader("Upload Video File", type=["mp4", "mov", "avi", "mkv"])
|
|
58
|
+
if vid_file is not None:
|
|
59
|
+
g = io.BytesIO(vid_file.read()) # BytesIO Object
|
|
60
|
+
vid_location = "ultralytics.mp4"
|
|
61
|
+
with open(vid_location, "wb") as out: # Open temporary file as bytes
|
|
62
|
+
out.write(g.read()) # Read bytes into file
|
|
63
|
+
vid_file_name = "ultralytics.mp4"
|
|
64
|
+
elif source == "webcam":
|
|
65
|
+
vid_file_name = 0
|
|
66
|
+
|
|
67
|
+
# Add dropdown menu for model selection
|
|
68
|
+
yolov8_model = st.sidebar.selectbox(
|
|
69
|
+
"Model",
|
|
70
|
+
(
|
|
71
|
+
"YOLOv8n",
|
|
72
|
+
"YOLOv8s",
|
|
73
|
+
"YOLOv8m",
|
|
74
|
+
"YOLOv8l",
|
|
75
|
+
"YOLOv8x",
|
|
76
|
+
"YOLOv8n-Seg",
|
|
77
|
+
"YOLOv8s-Seg",
|
|
78
|
+
"YOLOv8m-Seg",
|
|
79
|
+
"YOLOv8l-Seg",
|
|
80
|
+
"YOLOv8x-Seg",
|
|
81
|
+
"YOLOv8n-Pose",
|
|
82
|
+
"YOLOv8s-Pose",
|
|
83
|
+
"YOLOv8m-Pose",
|
|
84
|
+
"YOLOv8l-Pose",
|
|
85
|
+
"YOLOv8x-Pose",
|
|
86
|
+
),
|
|
87
|
+
)
|
|
88
|
+
model = YOLO(f"{yolov8_model.lower()}.pt") # Load the yolov8 model
|
|
89
|
+
class_names = list(model.names.values()) # Convert dictionary to list of class names
|
|
90
|
+
|
|
91
|
+
# Multiselect box with class names and get indices of selected classes
|
|
92
|
+
selected_classes = st.sidebar.multiselect("Classes", class_names, default=class_names[:3])
|
|
93
|
+
selected_ind = [class_names.index(option) for option in selected_classes]
|
|
94
|
+
|
|
95
|
+
if not isinstance(selected_ind, list): # Ensure selected_options is a list
|
|
96
|
+
selected_ind = list(selected_ind)
|
|
97
|
+
|
|
98
|
+
conf_thres = st.sidebar.slider("Confidence Threshold", 0.0, 1.0, 0.25, 0.01)
|
|
99
|
+
nms_thres = st.sidebar.slider("NMS Threshold", 0.0, 1.0, 0.45, 0.01)
|
|
100
|
+
|
|
101
|
+
col1, col2 = st.columns(2)
|
|
102
|
+
org_frame = col1.empty()
|
|
103
|
+
ann_frame = col2.empty()
|
|
104
|
+
|
|
105
|
+
fps_display = st.sidebar.empty() # Placeholder for FPS display
|
|
106
|
+
|
|
107
|
+
if st.sidebar.button("Start"):
|
|
108
|
+
videocapture = cv2.VideoCapture(vid_file_name) # Capture the video
|
|
109
|
+
|
|
110
|
+
if not videocapture.isOpened():
|
|
111
|
+
st.error("Could not open webcam.")
|
|
112
|
+
|
|
113
|
+
stop_button = st.button("Stop") # Button to stop the inference
|
|
114
|
+
|
|
115
|
+
prev_time = 0
|
|
116
|
+
while videocapture.isOpened():
|
|
117
|
+
success, frame = videocapture.read()
|
|
118
|
+
if not success:
|
|
119
|
+
st.warning("Failed to read frame from webcam. Please make sure the webcam is connected properly.")
|
|
120
|
+
break
|
|
121
|
+
|
|
122
|
+
curr_time = time.time()
|
|
123
|
+
fps = 1 / (curr_time - prev_time)
|
|
124
|
+
prev_time = curr_time
|
|
125
|
+
|
|
126
|
+
# Store model predictions
|
|
127
|
+
results = model(frame, conf=float(conf_thres), iou=float(nms_thres), classes=selected_ind)
|
|
128
|
+
annotated_frame = results[0].plot() # Add annotations on frame
|
|
129
|
+
|
|
130
|
+
# display frame
|
|
131
|
+
org_frame.image(frame, channels="BGR")
|
|
132
|
+
ann_frame.image(annotated_frame, channels="BGR")
|
|
133
|
+
|
|
134
|
+
if stop_button:
|
|
135
|
+
videocapture.release() # Release the capture
|
|
136
|
+
torch.cuda.empty_cache() # Clear CUDA memory
|
|
137
|
+
st.stop() # Stop streamlit app
|
|
138
|
+
|
|
139
|
+
# Display FPS in sidebar
|
|
140
|
+
fps_display.metric("FPS", f"{fps:.2f}")
|
|
141
|
+
|
|
142
|
+
# Release the capture
|
|
143
|
+
videocapture.release()
|
|
144
|
+
|
|
145
|
+
# Clear CUDA memory
|
|
146
|
+
torch.cuda.empty_cache()
|
|
147
|
+
|
|
148
|
+
# Destroy window
|
|
149
|
+
cv2.destroyAllWindows()
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# Main function call
|
|
153
|
+
if __name__ == "__main__":
|
|
154
|
+
inference()
|
ultralytics/utils/plotting.py
CHANGED
|
@@ -740,18 +740,18 @@ class Annotator:
|
|
|
740
740
|
cv2.polylines(self.im, [np.int32([mask])], isClosed=True, color=mask_color, thickness=2)
|
|
741
741
|
|
|
742
742
|
label = f"Track ID: {track_label}" if track_label else det_label
|
|
743
|
-
text_size, _ = cv2.getTextSize(label, 0,
|
|
743
|
+
text_size, _ = cv2.getTextSize(label, 0, self.sf, self.tf)
|
|
744
744
|
|
|
745
745
|
cv2.rectangle(
|
|
746
746
|
self.im,
|
|
747
747
|
(int(mask[0][0]) - text_size[0] // 2 - 10, int(mask[0][1]) - text_size[1] - 10),
|
|
748
|
-
(int(mask[0][0]) + text_size[0] // 2 +
|
|
748
|
+
(int(mask[0][0]) + text_size[0] // 2 + 10, int(mask[0][1] + 10)),
|
|
749
749
|
mask_color,
|
|
750
750
|
-1,
|
|
751
751
|
)
|
|
752
752
|
|
|
753
753
|
cv2.putText(
|
|
754
|
-
self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1])
|
|
754
|
+
self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1])), 0, self.sf, (255, 255, 255), self.tf
|
|
755
755
|
)
|
|
756
756
|
|
|
757
757
|
def plot_distance_and_line(self, distance_m, distance_mm, centroids, line_color, centroid_color):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.50
|
|
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
|
|
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material >=9.5.9 ; extra == 'dev'
|
|
|
55
55
|
Requires-Dist: mkdocstrings[python] ; extra == 'dev'
|
|
56
56
|
Requires-Dist: mkdocs-jupyter ; extra == 'dev'
|
|
57
57
|
Requires-Dist: mkdocs-redirects ; extra == 'dev'
|
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin >=0.0.49 ; extra == 'dev'
|
|
59
59
|
Provides-Extra: explorer
|
|
60
60
|
Requires-Dist: lancedb ; extra == 'explorer'
|
|
61
61
|
Requires-Dist: duckdb <=0.9.2 ; extra == 'explorer'
|
|
@@ -90,10 +90,10 @@ Requires-Dist: dvclive >=2.12.0 ; extra == 'logging'
|
|
|
90
90
|
|
|
91
91
|
<div>
|
|
92
92
|
<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>
|
|
93
|
-
<a href="https://codecov.io/github/ultralytics/ultralytics"><img src="https://codecov.io/github/ultralytics/ultralytics/branch/main/graph/badge.svg?token=HHW7IIVFVY" alt="Ultralytics Code Coverage"></a>
|
|
94
93
|
<a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLOv8 Citation"></a>
|
|
95
94
|
<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>
|
|
96
95
|
<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>
|
|
96
|
+
<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>
|
|
97
97
|
<br>
|
|
98
98
|
<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>
|
|
99
99
|
<a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
|
|
@@ -7,10 +7,10 @@ tests/test_explorer.py,sha256=NcxSJeB6FxwkN09hQl7nnQL--HjfHB_WcZk0mEmBNHI,2215
|
|
|
7
7
|
tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
|
|
8
8
|
tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
|
|
9
9
|
tests/test_python.py,sha256=80Iy-sn3qHBJ5Vg_mRbplj5CbCZNUNvikP4e2f2onnM,21728
|
|
10
|
-
ultralytics/__init__.py,sha256=
|
|
10
|
+
ultralytics/__init__.py,sha256=cz3a4wY3FLHMpesIDvftOEzTffv1X5fJlY-ITi7yhpY,694
|
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
|
13
|
-
ultralytics/cfg/__init__.py,sha256=
|
|
13
|
+
ultralytics/cfg/__init__.py,sha256=MqUsV-Mdk80dO64yY7JmplEO0Awb-25Lfx4YC9QYxhc,26210
|
|
14
14
|
ultralytics/cfg/default.yaml,sha256=xRKVF-Z9E3imXTU9OCK94kj3jGgYoo67VJQwuYlHiUU,8228
|
|
15
15
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=FyeuJT5CHq_9d4hlfAf0kpZlnbUMO0S--UJ1yIqcdKk,3134
|
|
16
16
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=YDsyFPI6F6-OQXLBM3hOXo3vADYREwZzmMQfJNdpWyM,1193
|
|
@@ -83,7 +83,7 @@ ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q
|
|
|
83
83
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
|
|
84
84
|
ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
|
|
85
85
|
ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
|
|
86
|
-
ultralytics/data/augment.py,sha256=
|
|
86
|
+
ultralytics/data/augment.py,sha256=GFvkL5s5KmKpDrJbDftUZqSDbRJpgkJVF5SXgz7gBMk,59747
|
|
87
87
|
ultralytics/data/base.py,sha256=C3teLnw97ZTbpJHT9P7yYWosAKocMzgJjRe1rxgfpls,13524
|
|
88
88
|
ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
|
|
89
89
|
ultralytics/data/converter.py,sha256=7640xKuf7LPeoTwoCvgbIXM5xbzyq72Hu2Rf2lrgjRY,17554
|
|
@@ -100,7 +100,7 @@ ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDT
|
|
|
100
100
|
ultralytics/engine/exporter.py,sha256=csuukmfnqkrcJQx9Z008LrobxhIOYubSj9jkCUHN2do,58557
|
|
101
101
|
ultralytics/engine/model.py,sha256=8qD5irabp8BF7bBZGwztCu8yAVQQp1kksYSea9EhdEo,39078
|
|
102
102
|
ultralytics/engine/predictor.py,sha256=W58kDCFH2AfoFzpGbos3k8zUEVsLunBuM8sc2B64rPY,17449
|
|
103
|
-
ultralytics/engine/results.py,sha256=
|
|
103
|
+
ultralytics/engine/results.py,sha256=APjlY9mG05QbHJb50tLHNG_REBA6pSR4r3bgb2RTHQU,35408
|
|
104
104
|
ultralytics/engine/trainer.py,sha256=K3I7HWtgt72FH91Wl8La8Wl9zgg4TN-AiYIGGWjKGKw,35447
|
|
105
105
|
ultralytics/engine/tuner.py,sha256=iZrgMmXSDpfuDu4bdFRflmAsscys2-8W8qAGxSyOVJE,11844
|
|
106
106
|
ultralytics/engine/validator.py,sha256=Y21Uo8_Zto4qjk_YqQk6k7tyfpq_Qk9cfjeXeyDRxs8,14643
|
|
@@ -112,7 +112,7 @@ ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqq
|
|
|
112
112
|
ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
|
|
113
113
|
ultralytics/models/fastsam/model.py,sha256=c7GGwaa9AXssJFwrcuytFHpPOlgSrS3n0utyf4JSL2o,1055
|
|
114
114
|
ultralytics/models/fastsam/predict.py,sha256=0WHUFrqHUNy1cTNpLKsN0FKqLKCvr7fHU6pp91_QVg0,4121
|
|
115
|
-
ultralytics/models/fastsam/prompt.py,sha256=
|
|
115
|
+
ultralytics/models/fastsam/prompt.py,sha256=_SZumoIYjZA8jML9K2bNY8UX6T5_8MTjw9Hhm_Ozdyo,15967
|
|
116
116
|
ultralytics/models/fastsam/utils.py,sha256=r-b362Wb7P2ZAlOwWckPJM6HLvg-eFDDz4wkA0ymLd0,2157
|
|
117
117
|
ultralytics/models/fastsam/val.py,sha256=ILKmw3U8FYmmQsO9wk9-bJ9Pyp_ZthJM36b61L75s3Y,1967
|
|
118
118
|
ultralytics/models/nas/__init__.py,sha256=d6-WTrYLXvbPs58ebA0-583ODi-VyzXc-t4aGIDQK6M,179
|
|
@@ -125,7 +125,7 @@ ultralytics/models/rtdetr/predict.py,sha256=-NFBAv_4VIUcXycO7wA8IH6EHXrVyOir-5PZ
|
|
|
125
125
|
ultralytics/models/rtdetr/train.py,sha256=20AFYVW9NPxw0-cp-sRdIovWidFL0IIhJRv2oZjkPlM,3685
|
|
126
126
|
ultralytics/models/rtdetr/val.py,sha256=4QQArdaGEY8rJsJuvyJ032f8GGVGdV2jURHK2EdMxyk,5566
|
|
127
127
|
ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
|
|
128
|
-
ultralytics/models/sam/amg.py,sha256=
|
|
128
|
+
ultralytics/models/sam/amg.py,sha256=He2c4nIoZ__F_pL18rRl278R8iBjWXBM2Z_vxfuVOkk,7971
|
|
129
129
|
ultralytics/models/sam/build.py,sha256=-i-vj0egQ2idBZUf3Xf-H89QeToM3ky0HTxKP_KEXTs,4944
|
|
130
130
|
ultralytics/models/sam/model.py,sha256=dkEhqJEZFuSoKubMaAjUx1U9Np49AII3nBScdH8rMBI,4707
|
|
131
131
|
ultralytics/models/sam/predict.py,sha256=BuSaqMOkpwiM5H5sWOE1CDIwEDkz8uMKV6AMRysCZk4,23614
|
|
@@ -133,7 +133,7 @@ ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz
|
|
|
133
133
|
ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
|
|
134
134
|
ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
|
|
135
135
|
ultralytics/models/sam/modules/sam.py,sha256=zC4l4kcrIQD_ekczjl2l6dgaABqqjROZxQ-FDb-itt0,2783
|
|
136
|
-
ultralytics/models/sam/modules/tiny_encoder.py,sha256=
|
|
136
|
+
ultralytics/models/sam/modules/tiny_encoder.py,sha256=rAY9JuyxUpFivFUUPVjK2aUYlsXEZ0JGKVoEWDGf0Eo,29228
|
|
137
137
|
ultralytics/models/sam/modules/transformer.py,sha256=VINZMb4xkx4IHAbJdhCq2XLDvaFBMup7RGC16DLS7OY,11164
|
|
138
138
|
ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
139
139
|
ultralytics/models/utils/loss.py,sha256=PmlKDe4xQTiYkPSCdNUabxJC7bh43zGxiKVIxsXBVGE,15135
|
|
@@ -162,17 +162,17 @@ ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBI
|
|
|
162
162
|
ultralytics/models/yolo/segment/val.py,sha256=DxEpR0FaQePlOXb19-FO4G0Nl9rWf9smtAh9eH__2g0,11806
|
|
163
163
|
ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2bmETJUhsVTBI,103
|
|
164
164
|
ultralytics/models/yolo/world/train.py,sha256=acYN2-onL69LrL4av6_hY2r5AY0urC0WViDstn7npfI,3686
|
|
165
|
-
ultralytics/models/yolo/world/train_world.py,sha256=
|
|
165
|
+
ultralytics/models/yolo/world/train_world.py,sha256=IsnCEVt6DcM9lUskCKmIN-M8MM79xLpwTRqRoAHUnZ4,4857
|
|
166
166
|
ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
|
|
167
167
|
ultralytics/nn/autobackend.py,sha256=stqN66L8iloqKxBBYaAespsj2ZoSossouFiFf_Txi0s,31163
|
|
168
|
-
ultralytics/nn/tasks.py,sha256=
|
|
168
|
+
ultralytics/nn/tasks.py,sha256=aoQyGuFQ3GbPj42cfZDfkq5m5Q5Ec_045PW20d_-kv8,45837
|
|
169
169
|
ultralytics/nn/modules/__init__.py,sha256=mARjWk83WPYF5phXhXfPbAu2ZohtdbHdi5zzoxyMubo,2553
|
|
170
170
|
ultralytics/nn/modules/block.py,sha256=DIXowCZn_Luc5VgGQEGXi34fqeiz_bhaNT48zEzguDM,34491
|
|
171
171
|
ultralytics/nn/modules/conv.py,sha256=Ywe87IhuaS22mR2JJ9xjnW8Sb-m7WTjxuqIxV_Dv8lI,12722
|
|
172
172
|
ultralytics/nn/modules/head.py,sha256=6VV6t2OJ_t9fCdhFxzcMcirp6lonv-xSm0o2yFghZZ0,26747
|
|
173
173
|
ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
|
|
174
174
|
ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQjhU,3196
|
|
175
|
-
ultralytics/solutions/__init__.py,sha256=
|
|
175
|
+
ultralytics/solutions/__init__.py,sha256=O_G9jh34NnFsHKSA8zcJH0CHtg1Q01JEiRWGwX3vGJY,631
|
|
176
176
|
ultralytics/solutions/ai_gym.py,sha256=KQdx0RP9t9y1MqYMVlYUSn09SVJSUwKvgxPri_DhczM,4721
|
|
177
177
|
ultralytics/solutions/analytics.py,sha256=UI8HoegfIJGgvQPOt4-e9A0ss2_ofM7zzxcbKlhe66k,11572
|
|
178
178
|
ultralytics/solutions/distance_calculation.py,sha256=pSIkyytHGRAaNzIrkkNkiOnSVWU1PYvURlCIV_jRORA,6505
|
|
@@ -181,6 +181,7 @@ ultralytics/solutions/object_counter.py,sha256=IR2kvgjlaHuzfq55gtwBiGFJ7dS5-5OCF
|
|
|
181
181
|
ultralytics/solutions/parking_management.py,sha256=Bd7FU3WZ8mRBWq81Z5c8jH5WloF4jPKo8TycqU_AcEI,9786
|
|
182
182
|
ultralytics/solutions/queue_management.py,sha256=ECm6gLZplmE9Cm-zdOazHBBDcW-vvr8nx2M28fcPbts,6787
|
|
183
183
|
ultralytics/solutions/speed_estimation.py,sha256=kjqMSHGTHMZaNgTKNKWULxnJQNsvhq4WMUphMVlBjsc,6768
|
|
184
|
+
ultralytics/solutions/streamlit_inference.py,sha256=IsQMrwINV1C3YtUDhf3vXboxNNsSY3Awdnids_Nmd8k,5356
|
|
184
185
|
ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
|
|
185
186
|
ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
|
|
186
187
|
ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
|
|
@@ -203,7 +204,7 @@ ultralytics/utils/loss.py,sha256=tAAi_l0SAtbtqT8AQSBSCvEyv342-r04H2KcSF1Yk_w,337
|
|
|
203
204
|
ultralytics/utils/metrics.py,sha256=C7qFuZjwGqbsG4sggm_qfm8gVuBUwHg_Fhxj08b6NfU,53671
|
|
204
205
|
ultralytics/utils/ops.py,sha256=Jlb0YBkN_SMVT2AjKPEjxgOtgnj7i7HTBh9FEwpoprU,33509
|
|
205
206
|
ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
|
|
206
|
-
ultralytics/utils/plotting.py,sha256=
|
|
207
|
+
ultralytics/utils/plotting.py,sha256=p9IoGCqlXAs5YV28oI7l0KR_4F2sXxDDnd3EuFsLOHw,55551
|
|
207
208
|
ultralytics/utils/tal.py,sha256=xuIyryUjaaYHkHPG9GvBwh1xxN2Hq4y3hXOtuERehwY,16017
|
|
208
209
|
ultralytics/utils/torch_utils.py,sha256=uuiXENrjF8a0PydZRfdp3bQ4oQZ9FyERXXfqGyXLCg0,27713
|
|
209
210
|
ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
|
|
@@ -219,9 +220,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
|
|
|
219
220
|
ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
|
|
220
221
|
ultralytics/utils/callbacks/tensorboard.py,sha256=QEgOVhUqY9akOs5TJIwz1Rvn6l32xWLpOxlwEyWF0B8,4136
|
|
221
222
|
ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
|
|
222
|
-
ultralytics-8.2.
|
|
223
|
-
ultralytics-8.2.
|
|
224
|
-
ultralytics-8.2.
|
|
225
|
-
ultralytics-8.2.
|
|
226
|
-
ultralytics-8.2.
|
|
227
|
-
ultralytics-8.2.
|
|
223
|
+
ultralytics-8.2.50.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
224
|
+
ultralytics-8.2.50.dist-info/METADATA,sha256=G9owtFJbc_lWfEfdwUDmMu44yOF_y4O6l5r1L4vLu-4,41217
|
|
225
|
+
ultralytics-8.2.50.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
|
226
|
+
ultralytics-8.2.50.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
227
|
+
ultralytics-8.2.50.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
228
|
+
ultralytics-8.2.50.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|