ultralytics 8.2.48__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.
- tests/conftest.py +17 -5
- tests/test_cli.py +8 -8
- tests/test_cuda.py +5 -5
- tests/test_engine.py +5 -5
- tests/test_explorer.py +4 -4
- tests/test_exports.py +12 -24
- tests/test_integrations.py +9 -5
- tests/test_python.py +35 -39
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +156 -39
- ultralytics/data/augment.py +3 -3
- ultralytics/data/explorer/explorer.py +3 -0
- ultralytics/engine/model.py +1 -1
- ultralytics/engine/results.py +160 -68
- ultralytics/hub/session.py +2 -0
- 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/classify/train.py +7 -16
- ultralytics/models/yolo/world/train_world.py +2 -2
- ultralytics/nn/modules/block.py +1 -0
- ultralytics/nn/tasks.py +1 -1
- ultralytics/solutions/__init__.py +1 -0
- ultralytics/solutions/ai_gym.py +3 -3
- ultralytics/solutions/streamlit_inference.py +154 -0
- ultralytics/utils/__init__.py +0 -1
- ultralytics/utils/metrics.py +1 -2
- ultralytics/utils/plotting.py +3 -3
- ultralytics/utils/torch_utils.py +22 -8
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/METADATA +3 -3
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/RECORD +35 -34
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/WHEEL +1 -1
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.48.dist-info → ultralytics-8.2.50.dist-info}/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@ import torch
|
|
|
5
5
|
from ultralytics.data import ClassificationDataset, build_dataloader
|
|
6
6
|
from ultralytics.engine.trainer import BaseTrainer
|
|
7
7
|
from ultralytics.models import yolo
|
|
8
|
-
from ultralytics.nn.tasks import ClassificationModel
|
|
8
|
+
from ultralytics.nn.tasks import ClassificationModel
|
|
9
9
|
from ultralytics.utils import DEFAULT_CFG, LOGGER, RANK, colorstr
|
|
10
10
|
from ultralytics.utils.plotting import plot_images, plot_results
|
|
11
11
|
from ultralytics.utils.torch_utils import is_parallel, strip_optimizer, torch_distributed_zero_first
|
|
@@ -60,23 +60,14 @@ class ClassificationTrainer(BaseTrainer):
|
|
|
60
60
|
"""Load, create or download model for any task."""
|
|
61
61
|
import torchvision # scope for faster 'import ultralytics'
|
|
62
62
|
|
|
63
|
-
if
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if model.endswith(".pt"):
|
|
69
|
-
self.model, ckpt = attempt_load_one_weight(model, device="cpu")
|
|
70
|
-
for p in self.model.parameters():
|
|
71
|
-
p.requires_grad = True # for training
|
|
72
|
-
elif model.split(".")[-1] in {"yaml", "yml"}:
|
|
73
|
-
self.model = self.get_model(cfg=model)
|
|
74
|
-
elif model in torchvision.models.__dict__:
|
|
75
|
-
self.model = torchvision.models.__dict__[model](weights="IMAGENET1K_V1" if self.args.pretrained else None)
|
|
63
|
+
if str(self.model) in torchvision.models.__dict__:
|
|
64
|
+
self.model = torchvision.models.__dict__[self.model](
|
|
65
|
+
weights="IMAGENET1K_V1" if self.args.pretrained else None
|
|
66
|
+
)
|
|
67
|
+
ckpt = None
|
|
76
68
|
else:
|
|
77
|
-
|
|
69
|
+
ckpt = super().setup_model()
|
|
78
70
|
ClassificationModel.reshape_outputs(self.model, self.data["nc"])
|
|
79
|
-
|
|
80
71
|
return ckpt
|
|
81
72
|
|
|
82
73
|
def build_dataset(self, img_path, mode="train", batch=None):
|
|
@@ -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/modules/block.py
CHANGED
|
@@ -712,6 +712,7 @@ class RepVGGDW(torch.nn.Module):
|
|
|
712
712
|
"""RepVGGDW is a class that represents a depth wise separable convolutional block in RepVGG architecture."""
|
|
713
713
|
|
|
714
714
|
def __init__(self, ed) -> None:
|
|
715
|
+
"""Initializes RepVGGDW with depthwise separable convolutional layers for efficient processing."""
|
|
715
716
|
super().__init__()
|
|
716
717
|
self.conv = Conv(ed, ed, 7, 1, 3, g=ed, act=False)
|
|
717
718
|
self.conv1 = Conv(ed, ed, 3, 1, 1, g=ed, act=False)
|
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",
|
ultralytics/solutions/ai_gym.py
CHANGED
|
@@ -53,9 +53,9 @@ class AIGym:
|
|
|
53
53
|
|
|
54
54
|
# Check if environment supports imshow
|
|
55
55
|
self.env_check = check_imshow(warn=True)
|
|
56
|
-
self.count =
|
|
57
|
-
self.angle =
|
|
58
|
-
self.stage =
|
|
56
|
+
self.count = []
|
|
57
|
+
self.angle = []
|
|
58
|
+
self.stage = []
|
|
59
59
|
|
|
60
60
|
def start_counting(self, im0, results):
|
|
61
61
|
"""
|
|
@@ -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/__init__.py
CHANGED
ultralytics/utils/metrics.py
CHANGED
|
@@ -1172,8 +1172,6 @@ class ClassifyMetrics(SimpleClass):
|
|
|
1172
1172
|
top1 (float): The top-1 accuracy.
|
|
1173
1173
|
top5 (float): The top-5 accuracy.
|
|
1174
1174
|
speed (Dict[str, float]): A dictionary containing the time taken for each step in the pipeline.
|
|
1175
|
-
|
|
1176
|
-
Properties:
|
|
1177
1175
|
fitness (float): The fitness of the model, which is equal to top-5 accuracy.
|
|
1178
1176
|
results_dict (Dict[str, Union[float, str]]): A dictionary containing the classification metrics and fitness.
|
|
1179
1177
|
keys (List[str]): A list of keys for the results_dict.
|
|
@@ -1224,6 +1222,7 @@ class ClassifyMetrics(SimpleClass):
|
|
|
1224
1222
|
|
|
1225
1223
|
class OBBMetrics(SimpleClass):
|
|
1226
1224
|
def __init__(self, save_dir=Path("."), plot=False, on_plot=None, names=()) -> None:
|
|
1225
|
+
"""Initialize an OBBMetrics instance with directory, plotting, callback, and class names."""
|
|
1227
1226
|
self.save_dir = save_dir
|
|
1228
1227
|
self.plot = plot
|
|
1229
1228
|
self.on_plot = on_plot
|
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):
|
ultralytics/utils/torch_utils.py
CHANGED
|
@@ -7,6 +7,7 @@ import random
|
|
|
7
7
|
import time
|
|
8
8
|
from contextlib import contextmanager
|
|
9
9
|
from copy import deepcopy
|
|
10
|
+
from datetime import datetime
|
|
10
11
|
from pathlib import Path
|
|
11
12
|
from typing import Union
|
|
12
13
|
|
|
@@ -456,14 +457,17 @@ def init_seeds(seed=0, deterministic=False):
|
|
|
456
457
|
|
|
457
458
|
|
|
458
459
|
class ModelEMA:
|
|
459
|
-
"""
|
|
460
|
-
|
|
460
|
+
"""
|
|
461
|
+
Updated Exponential Moving Average (EMA) from https://github.com/rwightman/pytorch-image-models. Keeps a moving
|
|
462
|
+
average of everything in the model state_dict (parameters and buffers)
|
|
463
|
+
|
|
461
464
|
For EMA details see https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage
|
|
465
|
+
|
|
462
466
|
To disable EMA set the `enabled` attribute to `False`.
|
|
463
467
|
"""
|
|
464
468
|
|
|
465
469
|
def __init__(self, model, decay=0.9999, tau=2000, updates=0):
|
|
466
|
-
"""
|
|
470
|
+
"""Initialize EMA for 'model' with given arguments."""
|
|
467
471
|
self.ema = deepcopy(de_parallel(model)).eval() # FP32 EMA
|
|
468
472
|
self.updates = updates # number of EMA updates
|
|
469
473
|
self.decay = lambda x: decay * (1 - math.exp(-x / tau)) # decay exponential ramp (to help early epochs)
|
|
@@ -506,15 +510,25 @@ def strip_optimizer(f: Union[str, Path] = "best.pt", s: str = "") -> None:
|
|
|
506
510
|
from pathlib import Path
|
|
507
511
|
from ultralytics.utils.torch_utils import strip_optimizer
|
|
508
512
|
|
|
509
|
-
for f in Path('path/to/
|
|
513
|
+
for f in Path('path/to/model/checkpoints').rglob('*.pt'):
|
|
510
514
|
strip_optimizer(f)
|
|
511
515
|
```
|
|
512
516
|
"""
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
517
|
+
try:
|
|
518
|
+
x = torch.load(f, map_location=torch.device("cpu"))
|
|
519
|
+
assert isinstance(x, dict), "checkpoint is not a Python dictionary"
|
|
520
|
+
assert "model" in x, "'model' missing from checkpoint"
|
|
521
|
+
except Exception as e:
|
|
522
|
+
LOGGER.warning(f"WARNING ⚠️ Skipping {f}, not a valid Ultralytics model: {e}")
|
|
516
523
|
return
|
|
517
524
|
|
|
525
|
+
updates = {
|
|
526
|
+
"date": datetime.now().isoformat(),
|
|
527
|
+
"version": __version__,
|
|
528
|
+
"license": "AGPL-3.0 License (https://ultralytics.com/license)",
|
|
529
|
+
"docs": "https://docs.ultralytics.com",
|
|
530
|
+
}
|
|
531
|
+
|
|
518
532
|
# Update model
|
|
519
533
|
if x.get("ema"):
|
|
520
534
|
x["model"] = x["ema"] # replace model with EMA
|
|
@@ -535,7 +549,7 @@ def strip_optimizer(f: Union[str, Path] = "best.pt", s: str = "") -> None:
|
|
|
535
549
|
# x['model'].args = x['train_args']
|
|
536
550
|
|
|
537
551
|
# Save
|
|
538
|
-
torch.save(x, s or f)
|
|
552
|
+
torch.save({**updates, **x}, s or f, use_dill=False) # combine dicts (prefer to the right)
|
|
539
553
|
mb = os.path.getsize(s or f) / 1e6 # file size
|
|
540
554
|
LOGGER.info(f"Optimizer stripped from {f},{f' saved as {s},' if s else ''} {mb:.1f}MB")
|
|
541
555
|
|
|
@@ -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>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
tests/__init__.py,sha256=9evx3lOdKZeY1iWXvH-FkMkgf8jLucWICoabzeD6aYg,626
|
|
2
|
-
tests/conftest.py,sha256=
|
|
3
|
-
tests/test_cli.py,sha256=
|
|
4
|
-
tests/test_cuda.py,sha256=
|
|
5
|
-
tests/test_engine.py,sha256=
|
|
6
|
-
tests/test_explorer.py,sha256=
|
|
7
|
-
tests/test_exports.py,sha256=
|
|
8
|
-
tests/test_integrations.py,sha256=
|
|
9
|
-
tests/test_python.py,sha256=
|
|
10
|
-
ultralytics/__init__.py,sha256=
|
|
2
|
+
tests/conftest.py,sha256=3ZtD4VlMKK5jVJwIPCrNAcG63vywJzdLq7U2AfYR2VI,2919
|
|
3
|
+
tests/test_cli.py,sha256=KOEdoSwIwyZ_qFn02XdSy2CxtLdJsz7XnXVWmn7oc0s,5129
|
|
4
|
+
tests/test_cuda.py,sha256=uD-ddNEcBMFQmQ9iE4fIGh0EIcGwEoDEUNVCEHicaWE,5133
|
|
5
|
+
tests/test_engine.py,sha256=xW-UT9_9xZp-7-hSnbJgMw_ezTk6NqTOIiA59XZDmxA,4934
|
|
6
|
+
tests/test_explorer.py,sha256=NcxSJeB6FxwkN09hQl7nnQL--HjfHB_WcZk0mEmBNHI,2215
|
|
7
|
+
tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
|
|
8
|
+
tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
|
|
9
|
+
tests/test_python.py,sha256=80Iy-sn3qHBJ5Vg_mRbplj5CbCZNUNvikP4e2f2onnM,21728
|
|
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
|
|
@@ -92,27 +92,27 @@ ultralytics/data/loaders.py,sha256=UUL7yOmuseAG5RBVI-kLrLr42Vm4kL05Qqnc5jAmNW0,2
|
|
|
92
92
|
ultralytics/data/split_dota.py,sha256=fWezt1Bo3jiZ6AyUWdBtTUuvLamPv1t7JD-DirM9gQ8,10142
|
|
93
93
|
ultralytics/data/utils.py,sha256=zqFg4xaWU--fastZmwvZ3DxGyJQ3i4tVNLuYnqS1xxs,31044
|
|
94
94
|
ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
|
|
95
|
-
ultralytics/data/explorer/explorer.py,sha256=
|
|
95
|
+
ultralytics/data/explorer/explorer.py,sha256=YacduFQvYOgTRF0BhCZWpTEaGlhp7oRy9a49VvNysEQ,18998
|
|
96
96
|
ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
|
|
97
97
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
98
98
|
ultralytics/data/explorer/gui/dash.py,sha256=CPlFIIhf53j_YVAqealsC3AbcztdPqZxfniQcBnlKK4,10042
|
|
99
99
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
100
100
|
ultralytics/engine/exporter.py,sha256=csuukmfnqkrcJQx9Z008LrobxhIOYubSj9jkCUHN2do,58557
|
|
101
|
-
ultralytics/engine/model.py,sha256=
|
|
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
|
|
107
107
|
ultralytics/hub/__init__.py,sha256=93bqI8x8-MfDYdKkQVduuocUiQj3WGnk1nIk0li08zA,5663
|
|
108
108
|
ultralytics/hub/auth.py,sha256=FID58NE6fh7Op_B45QOpWBw1qoBN0ponL16uvyb2dZ8,5399
|
|
109
|
-
ultralytics/hub/session.py,sha256=
|
|
109
|
+
ultralytics/hub/session.py,sha256=uXkP8AayJClLUD9TP8AlJSqxm-OmTgCmTXl1TkO6jQc,16147
|
|
110
110
|
ultralytics/hub/utils.py,sha256=RpFDFp9biUK70Mswzz2o3uEu4xwQxRaStPS19U2gu0g,9721
|
|
111
111
|
ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
|
|
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
|
|
@@ -142,7 +142,7 @@ ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xsk
|
|
|
142
142
|
ultralytics/models/yolo/model.py,sha256=wOrJ6HWU9KhG7pVcgK4HdI8xe2GSShe8V4v4bJDVydM,4041
|
|
143
143
|
ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
|
|
144
144
|
ultralytics/models/yolo/classify/predict.py,sha256=wFY4GIlWxe7idMndEw1RnDI63o53MTfiHKz0s2fOjAY,2513
|
|
145
|
-
ultralytics/models/yolo/classify/train.py,sha256=
|
|
145
|
+
ultralytics/models/yolo/classify/train.py,sha256=dNAUROnrS5LAbu6EKw29n6EUEoKYQaNjALoh3mo1Mm0,6291
|
|
146
146
|
ultralytics/models/yolo/classify/val.py,sha256=MXdtWrBYVpfFuPfFPOTLKa_wBdTIA4dBZguT-EtldZ4,4909
|
|
147
147
|
ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
|
|
148
148
|
ultralytics/models/yolo/detect/predict.py,sha256=_a9vH3DmKFY6eeztFTdj3nkfu_MKG6n7zb5rRKGjs9I,1510
|
|
@@ -162,18 +162,18 @@ 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
|
-
ultralytics/nn/modules/block.py,sha256=
|
|
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=
|
|
176
|
-
ultralytics/solutions/ai_gym.py,sha256=
|
|
175
|
+
ultralytics/solutions/__init__.py,sha256=O_G9jh34NnFsHKSA8zcJH0CHtg1Q01JEiRWGwX3vGJY,631
|
|
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
|
|
179
179
|
ultralytics/solutions/heatmap.py,sha256=AHXnmXhoQ95ph74zsdrvX_Lfy3wF0SsH0MIeTixE7Qg,10386
|
|
@@ -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
|
|
@@ -190,7 +191,7 @@ ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7J
|
|
|
190
191
|
ultralytics/trackers/utils/gmc.py,sha256=-1oBNFRB-9EawJmUOT566AygLCVxJw-jsPSIOl5j_Hk,13683
|
|
191
192
|
ultralytics/trackers/utils/kalman_filter.py,sha256=0oqhk59NKEiwcJ2FXnw6_sT4bIFC6Wu5IY2B-TGxJKU,15168
|
|
192
193
|
ultralytics/trackers/utils/matching.py,sha256=UxhSGa5pN6WoYwYSBAkkt-O7xMxUR47VuUB6PfVNkb4,5404
|
|
193
|
-
ultralytics/utils/__init__.py,sha256=
|
|
194
|
+
ultralytics/utils/__init__.py,sha256=905ZnRdmTrhXao2nsCP2mV2xAshsEKk0r4aOPP4EVPQ,38490
|
|
194
195
|
ultralytics/utils/autobatch.py,sha256=gPFcREMsMHRAuTQiBnNZ9Mm1XNqmQW-uMPhveDFEQ_Y,3966
|
|
195
196
|
ultralytics/utils/benchmarks.py,sha256=tDX7wu0TpMMlEQDOFqfkjxl156ssS7Lh_5tFWIXdJfg,23549
|
|
196
197
|
ultralytics/utils/checks.py,sha256=PDY1eHlsyDVEIiKRjvb81uz2jniL1MqgP_TmXH_78KM,28379
|
|
@@ -200,12 +201,12 @@ ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,8
|
|
|
200
201
|
ultralytics/utils/files.py,sha256=TVfY0Wi5IsUc4YdsDzC0dAg-jAP5exYvwqB3VmXhDLY,6761
|
|
201
202
|
ultralytics/utils/instance.py,sha256=5daM5nkxBv9hr5QzyII8zmuFj24hHuNtcr4EMCHAtpY,15654
|
|
202
203
|
ultralytics/utils/loss.py,sha256=tAAi_l0SAtbtqT8AQSBSCvEyv342-r04H2KcSF1Yk_w,33795
|
|
203
|
-
ultralytics/utils/metrics.py,sha256=
|
|
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
|
-
ultralytics/utils/torch_utils.py,sha256=
|
|
209
|
+
ultralytics/utils/torch_utils.py,sha256=uuiXENrjF8a0PydZRfdp3bQ4oQZ9FyERXXfqGyXLCg0,27713
|
|
209
210
|
ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
|
|
210
211
|
ultralytics/utils/tuner.py,sha256=49KAadKZsUeCpwIm5Sn0grb0RPcMNI8vHGLwroDEJNI,6171
|
|
211
212
|
ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
|
|
@@ -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
|