ultralytics 8.2.88__py3-none-any.whl → 8.2.90__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 +2 -1
- ultralytics/data/converter.py +2 -2
- ultralytics/engine/exporter.py +4 -1
- ultralytics/engine/trainer.py +10 -2
- ultralytics/models/yolo/classify/train.py +5 -1
- ultralytics/nn/tasks.py +2 -5
- ultralytics/solutions/object_counter.py +24 -36
- ultralytics/utils/plotting.py +4 -0
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/METADATA +1 -1
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/RECORD +14 -14
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/WHEEL +0 -0
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.88.dist-info → ultralytics-8.2.90.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
ultralytics/data/converter.py
CHANGED
|
@@ -385,7 +385,7 @@ def convert_segment_masks_to_yolo_seg(masks_dir, output_dir, classes):
|
|
|
385
385
|
continue # Skip background
|
|
386
386
|
class_index = pixel_to_class_mapping.get(value, -1)
|
|
387
387
|
if class_index == -1:
|
|
388
|
-
LOGGER.warning(f"Unknown class for pixel value {value} in file {
|
|
388
|
+
LOGGER.warning(f"Unknown class for pixel value {value} in file {mask_path}, skipping.")
|
|
389
389
|
continue
|
|
390
390
|
|
|
391
391
|
# Create a binary mask for the current class and find contours
|
|
@@ -403,7 +403,7 @@ def convert_segment_masks_to_yolo_seg(masks_dir, output_dir, classes):
|
|
|
403
403
|
yolo_format.append(round(point[1] / img_height, 6))
|
|
404
404
|
yolo_format_data.append(yolo_format)
|
|
405
405
|
# Save Ultralytics YOLO format data to file
|
|
406
|
-
output_path = Path(output_dir) / f"{
|
|
406
|
+
output_path = Path(output_dir) / f"{mask_path.stem}.txt"
|
|
407
407
|
with open(output_path, "w") as file:
|
|
408
408
|
for item in yolo_format_data:
|
|
409
409
|
line = " ".join(map(str, item))
|
ultralytics/engine/exporter.py
CHANGED
|
@@ -391,7 +391,7 @@ class Exporter:
|
|
|
391
391
|
"""YOLOv8 ONNX export."""
|
|
392
392
|
requirements = ["onnx>=1.12.0"]
|
|
393
393
|
if self.args.simplify:
|
|
394
|
-
requirements += ["onnxslim
|
|
394
|
+
requirements += ["onnxslim==0.1.32", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
|
|
395
395
|
check_requirements(requirements)
|
|
396
396
|
import onnx # noqa
|
|
397
397
|
|
|
@@ -610,6 +610,9 @@ class Exporter:
|
|
|
610
610
|
f = self.file.with_suffix(".mlmodel" if mlmodel else ".mlpackage")
|
|
611
611
|
if f.is_dir():
|
|
612
612
|
shutil.rmtree(f)
|
|
613
|
+
if self.args.nms and getattr(self.model, "end2end", False):
|
|
614
|
+
LOGGER.warning(f"{prefix} WARNING ⚠️ 'nms=True' is not available for end2end models. Forcing 'nms=False'.")
|
|
615
|
+
self.args.nms = False
|
|
613
616
|
|
|
614
617
|
bias = [0.0, 0.0, 0.0]
|
|
615
618
|
scale = 1 / 255
|
ultralytics/engine/trainer.py
CHANGED
|
@@ -28,6 +28,7 @@ from ultralytics.utils import (
|
|
|
28
28
|
DEFAULT_CFG,
|
|
29
29
|
LOCAL_RANK,
|
|
30
30
|
LOGGER,
|
|
31
|
+
MACOS,
|
|
31
32
|
RANK,
|
|
32
33
|
TQDM,
|
|
33
34
|
__version__,
|
|
@@ -453,7 +454,10 @@ class BaseTrainer:
|
|
|
453
454
|
self.stop |= epoch >= self.epochs # stop if exceeded epochs
|
|
454
455
|
self.run_callbacks("on_fit_epoch_end")
|
|
455
456
|
gc.collect()
|
|
456
|
-
|
|
457
|
+
if MACOS:
|
|
458
|
+
torch.mps.empty_cache() # clear unified memory at end of epoch, may help MPS' management of 'unlimited' virtual memoy
|
|
459
|
+
else:
|
|
460
|
+
torch.cuda.empty_cache() # clear GPU memory at end of epoch, may help reduce CUDA out of memory errors
|
|
457
461
|
|
|
458
462
|
# Early Stopping
|
|
459
463
|
if RANK != -1: # if DDP training
|
|
@@ -475,7 +479,11 @@ class BaseTrainer:
|
|
|
475
479
|
self.plot_metrics()
|
|
476
480
|
self.run_callbacks("on_train_end")
|
|
477
481
|
gc.collect()
|
|
478
|
-
|
|
482
|
+
if MACOS:
|
|
483
|
+
torch.mps.empty_cache()
|
|
484
|
+
else:
|
|
485
|
+
torch.cuda.empty_cache()
|
|
486
|
+
|
|
479
487
|
self.run_callbacks("teardown")
|
|
480
488
|
|
|
481
489
|
def read_results_csv(self):
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
|
+
from copy import copy
|
|
4
|
+
|
|
3
5
|
import torch
|
|
4
6
|
|
|
5
7
|
from ultralytics.data import ClassificationDataset, build_dataloader
|
|
@@ -107,7 +109,9 @@ class ClassificationTrainer(BaseTrainer):
|
|
|
107
109
|
def get_validator(self):
|
|
108
110
|
"""Returns an instance of ClassificationValidator for validation."""
|
|
109
111
|
self.loss_names = ["loss"]
|
|
110
|
-
return yolo.classify.ClassificationValidator(
|
|
112
|
+
return yolo.classify.ClassificationValidator(
|
|
113
|
+
self.test_loader, self.save_dir, args=copy(self.args), _callbacks=self.callbacks
|
|
114
|
+
)
|
|
111
115
|
|
|
112
116
|
def label_loss_items(self, loss_items=None, prefix="train"):
|
|
113
117
|
"""
|
ultralytics/nn/tasks.py
CHANGED
|
@@ -341,11 +341,8 @@ class DetectionModel(BaseModel):
|
|
|
341
341
|
|
|
342
342
|
def _predict_augment(self, x):
|
|
343
343
|
"""Perform augmentations on input image x and return augmented inference and train outputs."""
|
|
344
|
-
if getattr(self, "end2end", False):
|
|
345
|
-
LOGGER.warning(
|
|
346
|
-
"WARNING ⚠️ End2End model does not support 'augment=True' prediction. "
|
|
347
|
-
"Reverting to single-scale prediction."
|
|
348
|
-
)
|
|
344
|
+
if getattr(self, "end2end", False) or self.__class__.__name__ != "DetectionModel":
|
|
345
|
+
LOGGER.warning("WARNING ⚠️ Model does not support 'augment=True', reverting to single-scale prediction.")
|
|
349
346
|
return self._predict_once(x)
|
|
350
347
|
img_size = x.shape[-2:] # height, width
|
|
351
348
|
s = [1, 0.83, 0.67] # scales
|
|
@@ -19,19 +19,11 @@ class ObjectCounter:
|
|
|
19
19
|
self,
|
|
20
20
|
names,
|
|
21
21
|
reg_pts=None,
|
|
22
|
-
count_reg_color=(255, 0, 255),
|
|
23
|
-
count_txt_color=(0, 0, 0),
|
|
24
|
-
count_bg_color=(255, 255, 255),
|
|
25
22
|
line_thickness=2,
|
|
26
|
-
track_thickness=2,
|
|
27
23
|
view_img=False,
|
|
28
24
|
view_in_counts=True,
|
|
29
25
|
view_out_counts=True,
|
|
30
26
|
draw_tracks=False,
|
|
31
|
-
track_color=None,
|
|
32
|
-
region_thickness=5,
|
|
33
|
-
line_dist_thresh=15,
|
|
34
|
-
cls_txtdisplay_gap=50,
|
|
35
27
|
):
|
|
36
28
|
"""
|
|
37
29
|
Initializes the ObjectCounter with various tracking and counting parameters.
|
|
@@ -39,19 +31,11 @@ class ObjectCounter:
|
|
|
39
31
|
Args:
|
|
40
32
|
names (dict): Dictionary of class names.
|
|
41
33
|
reg_pts (list): List of points defining the counting region.
|
|
42
|
-
count_reg_color (tuple): RGB color of the counting region.
|
|
43
|
-
count_txt_color (tuple): RGB color of the count text.
|
|
44
|
-
count_bg_color (tuple): RGB color of the count text background.
|
|
45
34
|
line_thickness (int): Line thickness for bounding boxes.
|
|
46
|
-
track_thickness (int): Thickness of the track lines.
|
|
47
35
|
view_img (bool): Flag to control whether to display the video stream.
|
|
48
36
|
view_in_counts (bool): Flag to control whether to display the in counts on the video stream.
|
|
49
37
|
view_out_counts (bool): Flag to control whether to display the out counts on the video stream.
|
|
50
38
|
draw_tracks (bool): Flag to control whether to draw the object tracks.
|
|
51
|
-
track_color (tuple): RGB color of the tracks.
|
|
52
|
-
region_thickness (int): Thickness of the object counting region.
|
|
53
|
-
line_dist_thresh (int): Euclidean distance threshold for line counter.
|
|
54
|
-
cls_txtdisplay_gap (int): Display gap between each class count.
|
|
55
39
|
"""
|
|
56
40
|
# Mouse events
|
|
57
41
|
self.is_drawing = False
|
|
@@ -59,10 +43,7 @@ class ObjectCounter:
|
|
|
59
43
|
|
|
60
44
|
# Region & Line Information
|
|
61
45
|
self.reg_pts = [(20, 400), (1260, 400)] if reg_pts is None else reg_pts
|
|
62
|
-
self.line_dist_thresh = line_dist_thresh
|
|
63
46
|
self.counting_region = None
|
|
64
|
-
self.region_color = count_reg_color
|
|
65
|
-
self.region_thickness = region_thickness
|
|
66
47
|
|
|
67
48
|
# Image and annotation Information
|
|
68
49
|
self.im0 = None
|
|
@@ -72,7 +53,6 @@ class ObjectCounter:
|
|
|
72
53
|
self.view_out_counts = view_out_counts
|
|
73
54
|
|
|
74
55
|
self.names = names # Classes names
|
|
75
|
-
self.annotator = None # Annotator
|
|
76
56
|
self.window_name = "Ultralytics YOLOv8 Object Counter"
|
|
77
57
|
|
|
78
58
|
# Object counting Information
|
|
@@ -81,16 +61,10 @@ class ObjectCounter:
|
|
|
81
61
|
self.count_ids = []
|
|
82
62
|
self.class_wise_count = {}
|
|
83
63
|
self.count_txt_thickness = 0
|
|
84
|
-
self.count_txt_color = count_txt_color
|
|
85
|
-
self.count_bg_color = count_bg_color
|
|
86
|
-
self.cls_txtdisplay_gap = cls_txtdisplay_gap
|
|
87
|
-
self.fontsize = 0.6
|
|
88
64
|
|
|
89
65
|
# Tracks info
|
|
90
66
|
self.track_history = defaultdict(list)
|
|
91
|
-
self.track_thickness = track_thickness
|
|
92
67
|
self.draw_tracks = draw_tracks
|
|
93
|
-
self.track_color = track_color
|
|
94
68
|
|
|
95
69
|
# Check if environment supports imshow
|
|
96
70
|
self.env_check = check_imshow(warn=True)
|
|
@@ -107,6 +81,14 @@ class ObjectCounter:
|
|
|
107
81
|
print("Using Line Counter Now")
|
|
108
82
|
self.counting_region = LineString(self.reg_pts)
|
|
109
83
|
|
|
84
|
+
# Define the counting line segment
|
|
85
|
+
self.counting_line_segment = LineString(
|
|
86
|
+
[
|
|
87
|
+
(self.reg_pts[0][0], self.reg_pts[0][1]),
|
|
88
|
+
(self.reg_pts[1][0], self.reg_pts[1][1]),
|
|
89
|
+
]
|
|
90
|
+
)
|
|
91
|
+
|
|
110
92
|
def mouse_event_for_region(self, event, x, y, flags, params):
|
|
111
93
|
"""
|
|
112
94
|
Handles mouse events for defining and moving the counting region in a real-time video stream.
|
|
@@ -141,10 +123,10 @@ class ObjectCounter:
|
|
|
141
123
|
def extract_and_process_tracks(self, tracks):
|
|
142
124
|
"""Extracts and processes tracks for object counting in a video stream."""
|
|
143
125
|
# Annotator Init and region drawing
|
|
144
|
-
|
|
126
|
+
annotator = Annotator(self.im0, self.tf, self.names)
|
|
145
127
|
|
|
146
128
|
# Draw region or line
|
|
147
|
-
|
|
129
|
+
annotator.draw_region(reg_pts=self.reg_pts, color=(104, 0, 123), thickness=self.tf * 2)
|
|
148
130
|
|
|
149
131
|
if tracks[0].boxes.id is not None:
|
|
150
132
|
boxes = tracks[0].boxes.xyxy.cpu()
|
|
@@ -154,7 +136,7 @@ class ObjectCounter:
|
|
|
154
136
|
# Extract tracks
|
|
155
137
|
for box, track_id, cls in zip(boxes, track_ids, clss):
|
|
156
138
|
# Draw bounding box
|
|
157
|
-
|
|
139
|
+
annotator.box_label(box, label=f"{self.names[cls]}#{track_id}", color=colors(int(track_id), True))
|
|
158
140
|
|
|
159
141
|
# Store class info
|
|
160
142
|
if self.names[cls] not in self.class_wise_count:
|
|
@@ -168,10 +150,10 @@ class ObjectCounter:
|
|
|
168
150
|
|
|
169
151
|
# Draw track trails
|
|
170
152
|
if self.draw_tracks:
|
|
171
|
-
|
|
153
|
+
annotator.draw_centroid_and_tracks(
|
|
172
154
|
track_line,
|
|
173
|
-
color=
|
|
174
|
-
track_thickness=self.
|
|
155
|
+
color=colors(int(track_id), True),
|
|
156
|
+
track_thickness=self.tf,
|
|
175
157
|
)
|
|
176
158
|
|
|
177
159
|
prev_position = self.track_history[track_id][-2] if len(self.track_history[track_id]) > 1 else None
|
|
@@ -193,11 +175,17 @@ class ObjectCounter:
|
|
|
193
175
|
# Count objects using line
|
|
194
176
|
elif len(self.reg_pts) == 2:
|
|
195
177
|
if prev_position is not None and track_id not in self.count_ids:
|
|
196
|
-
|
|
197
|
-
if
|
|
178
|
+
# Check if the object's movement segment intersects the counting line
|
|
179
|
+
if LineString([(prev_position[0], prev_position[1]), (box[0], box[1])]).intersects(
|
|
180
|
+
self.counting_line_segment
|
|
181
|
+
):
|
|
198
182
|
self.count_ids.append(track_id)
|
|
199
183
|
|
|
200
|
-
|
|
184
|
+
# Determine the direction of movement (IN or OUT)
|
|
185
|
+
direction = (box[0] - prev_position[0]) * (
|
|
186
|
+
self.counting_region.centroid.x - prev_position[0]
|
|
187
|
+
)
|
|
188
|
+
if direction > 0:
|
|
201
189
|
self.in_counts += 1
|
|
202
190
|
self.class_wise_count[self.names[cls]]["IN"] += 1
|
|
203
191
|
else:
|
|
@@ -218,7 +206,7 @@ class ObjectCounter:
|
|
|
218
206
|
labels_dict[str.capitalize(key)] = f"IN {value['IN']} OUT {value['OUT']}"
|
|
219
207
|
|
|
220
208
|
if labels_dict:
|
|
221
|
-
|
|
209
|
+
annotator.display_analytics(self.im0, labels_dict, (104, 31, 17), (255, 255, 255), 10)
|
|
222
210
|
|
|
223
211
|
def display_frames(self):
|
|
224
212
|
"""Displays the current frame with annotations and regions in a window."""
|
ultralytics/utils/plotting.py
CHANGED
|
@@ -501,6 +501,10 @@ class Annotator:
|
|
|
501
501
|
"""
|
|
502
502
|
cv2.polylines(self.im, [np.array(reg_pts, dtype=np.int32)], isClosed=True, color=color, thickness=thickness)
|
|
503
503
|
|
|
504
|
+
# Draw small circles at the corner points
|
|
505
|
+
for point in reg_pts:
|
|
506
|
+
cv2.circle(self.im, (point[0], point[1]), thickness * 2, color, -1) # -1 fills the circle
|
|
507
|
+
|
|
504
508
|
def draw_centroid_and_tracks(self, track, color=(255, 0, 255), track_thickness=2):
|
|
505
509
|
"""
|
|
506
510
|
Draw centroid point and track trails.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.90
|
|
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
|
|
@@ -8,7 +8,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=08fg47DuJflumuUBto480-9VCqtEGAhQjNnQdcHs9_c,22242
|
|
10
10
|
tests/test_solutions.py,sha256=p_2edhl96Ty3jwzSf02Q2m2mTu9skc0Z-eMcUuuXfLg,3300
|
|
11
|
-
ultralytics/__init__.py,sha256=
|
|
11
|
+
ultralytics/__init__.py,sha256=OvcPdnwvaf5dMeznanPS-7uNF9Zj20mGp4j9Voi8V3E,695
|
|
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=pkB7wk0pHOA3xzKzMbS-hA0iJoPOWVNnwZJh0LuWh-w,33089
|
|
@@ -87,7 +87,7 @@ ultralytics/data/annotator.py,sha256=PniOxH2MScWKp539vuufk69uG1JsltDB5OMCUhxn2QY
|
|
|
87
87
|
ultralytics/data/augment.py,sha256=RbFhBQQrE9TazD2MmRPP60HKL3yhkRG0e0VMWbrKe3I,119270
|
|
88
88
|
ultralytics/data/base.py,sha256=HK-YZOStAkD8hVHhfBetH-Q_CWfEfuyPvv_gYwxULzY,13527
|
|
89
89
|
ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
|
|
90
|
-
ultralytics/data/converter.py,sha256=
|
|
90
|
+
ultralytics/data/converter.py,sha256=DjJ0atku2aKW0iS1PZPNX8V6WTrZ-CHZT6hopE1HSjI,21385
|
|
91
91
|
ultralytics/data/dataset.py,sha256=IS07ulk7rXPZ-SW_rjYF9mS-TxPXOY9bbo5jqfcwPqM,22874
|
|
92
92
|
ultralytics/data/loaders.py,sha256=JF2Z_ESK6RweavOuYWejYSGJwmqINb5hNwwCb3AAf0M,24094
|
|
93
93
|
ultralytics/data/split_dota.py,sha256=yOtypHoY5HvIVBKZgFXdfj2tuCLLEBnMwNfAeG94Eik,10680
|
|
@@ -98,11 +98,11 @@ ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yf
|
|
|
98
98
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
99
99
|
ultralytics/data/explorer/gui/dash.py,sha256=vZ476NaUH4FKU08rAJ1K9WNyKtg0soMyJJxqg176yWc,10498
|
|
100
100
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
101
|
-
ultralytics/engine/exporter.py,sha256=
|
|
101
|
+
ultralytics/engine/exporter.py,sha256=FjatAPlx93IpkAReST3gPjgDntGbsNuBar13PYSLMcA,57078
|
|
102
102
|
ultralytics/engine/model.py,sha256=AB9tu7kJW-QiTAp0F_J8KQJ4FijsHXcYBTaVHb7aMrg,52281
|
|
103
103
|
ultralytics/engine/predictor.py,sha256=MgMWHUJdRcVCaVmOyvdy2Gjk_EyRHv-ar0SSGxQe8F4,17471
|
|
104
104
|
ultralytics/engine/results.py,sha256=PgRcz90S7eMwlogqEvax8O1sU3CPA2tEmrAL5kSr6II,70537
|
|
105
|
-
ultralytics/engine/trainer.py,sha256=
|
|
105
|
+
ultralytics/engine/trainer.py,sha256=7QPWrOwfw2hUNzNKtvTnAM2ui8vdIEDbMn9JTLkmQ9o,36307
|
|
106
106
|
ultralytics/engine/tuner.py,sha256=gPqDTHH7vRB2O3YyH26m1BjVKbXxuA2XAlPRzTKFZsc,11838
|
|
107
107
|
ultralytics/engine/validator.py,sha256=yaUMb5efBvgFg8M24IFlmv3J-acbbSgtqLCk-mM07Wo,14623
|
|
108
108
|
ultralytics/hub/__init__.py,sha256=AM_twjV9ouUmyxh3opoPgTqDpMOd8xIOHsAKdWS2L18,5663
|
|
@@ -146,7 +146,7 @@ ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xsk
|
|
|
146
146
|
ultralytics/models/yolo/model.py,sha256=CMh3_qYCm2mdFHVyZJDMu8eFCTMD0z1ZPmM8GmwTU7E,4233
|
|
147
147
|
ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
|
|
148
148
|
ultralytics/models/yolo/classify/predict.py,sha256=0CEJ4B4fXbOMUnJy79gRvG-qdszOzTSLOb1xxkgsKek,2444
|
|
149
|
-
ultralytics/models/yolo/classify/train.py,sha256=
|
|
149
|
+
ultralytics/models/yolo/classify/train.py,sha256=THXSkQVQVBuw1QxcEVA8MtLHYYdaAEqepObJCXoLcZ8,6358
|
|
150
150
|
ultralytics/models/yolo/classify/val.py,sha256=Tzizhp3ebzPvwJejrE8tb-TuXw4MdkEI9mOANV74eXQ,4909
|
|
151
151
|
ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
|
|
152
152
|
ultralytics/models/yolo/detect/predict.py,sha256=_kY6-_wsPCt9ZOf-iwusceikAM5TV_KnjYdv2koE45A,1471
|
|
@@ -169,7 +169,7 @@ ultralytics/models/yolo/world/train.py,sha256=gaDrAmLJpg9qDtmL5evA5HsV2yb4RTRSfk
|
|
|
169
169
|
ultralytics/models/yolo/world/train_world.py,sha256=IsnCEVt6DcM9lUskCKmIN-M8MM79xLpwTRqRoAHUnZ4,4857
|
|
170
170
|
ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
|
|
171
171
|
ultralytics/nn/autobackend.py,sha256=DZTIHsp2PLs8H2-oQR9LqA-uPj8DARGonCXzRv2Pkdc,31546
|
|
172
|
-
ultralytics/nn/tasks.py,sha256=
|
|
172
|
+
ultralytics/nn/tasks.py,sha256=T1DRGKOe1hLS4fdQAONEJ5x75adBngdwYeSfmnRjnEU,46114
|
|
173
173
|
ultralytics/nn/modules/__init__.py,sha256=m8x-XRHVLWMECPeysVlv1TQenV-n8oAbK1gxnoXzLpk,2553
|
|
174
174
|
ultralytics/nn/modules/activation.py,sha256=chhn469wnRHEs5BMGNBYXwPYZc_7-urspTT8fnBd-xA,895
|
|
175
175
|
ultralytics/nn/modules/block.py,sha256=n6Xhevz8_n05UCt_vmZ7eVRiDbA_zV_TvWNBbpZe-qA,34352
|
|
@@ -182,7 +182,7 @@ ultralytics/solutions/ai_gym.py,sha256=MgD_4DciCqXquM2Y6yjIIRkGWIg3rNfSuXrFqYzOC
|
|
|
182
182
|
ultralytics/solutions/analytics.py,sha256=bGuZes11D7DNiTsHdwu6PJ0QA0vCiqMMAtZ7NyEkshY,11568
|
|
183
183
|
ultralytics/solutions/distance_calculation.py,sha256=o_DAHk4JX8n2Vt7E68MX67mREOBZuy5skbXtVZ6iu_4,5228
|
|
184
184
|
ultralytics/solutions/heatmap.py,sha256=oEVivA4KAK6z0wA5Ca_a2qTckQN8tCt9MCpsPREeNnk,10375
|
|
185
|
-
ultralytics/solutions/object_counter.py,sha256=
|
|
185
|
+
ultralytics/solutions/object_counter.py,sha256=Ed3jyXPya-wI6BDiOoDaUlqr2z0o1J6egtJr1SI59UY,9943
|
|
186
186
|
ultralytics/solutions/parking_management.py,sha256=z0-g2nehh4aA1nO71foT8Rw5pQTxKnEdcKJb1Arrd0Q,10134
|
|
187
187
|
ultralytics/solutions/queue_management.py,sha256=q617BErsU69Rm76EFTd8mzoSpPU2WqTs6_pazBQ8GMc,6773
|
|
188
188
|
ultralytics/solutions/speed_estimation.py,sha256=kjqMSHGTHMZaNgTKNKWULxnJQNsvhq4WMUphMVlBjsc,6768
|
|
@@ -209,7 +209,7 @@ ultralytics/utils/loss.py,sha256=mDHGmF-gjggAUVhI1dkCm7TtfZHCwz25XKm4M2xJKLs,339
|
|
|
209
209
|
ultralytics/utils/metrics.py,sha256=UgLGudWp57uXDMlMUJy4gsz6cfVjcq7tYmHeto3TqvM,53927
|
|
210
210
|
ultralytics/utils/ops.py,sha256=dsXNdyrYx_p6io6zezig9p84dxS7U-10vceHNVu2IL0,32888
|
|
211
211
|
ultralytics/utils/patches.py,sha256=Oo3DkP7MbXnNGvPfoFSocAkVvaPh9kwMT_9RQUfjVhI,3594
|
|
212
|
-
ultralytics/utils/plotting.py,sha256=
|
|
212
|
+
ultralytics/utils/plotting.py,sha256=Tp1vjSrzbtQc1ILlT1Frw9YzvGtOHlf8bdLAvZg7TBU,56181
|
|
213
213
|
ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
|
|
214
214
|
ultralytics/utils/torch_utils.py,sha256=NgZtDgjQkAVCAqCdFrFMSU9Fl_x3pYqaYa1mhAvOb_8,29312
|
|
215
215
|
ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
|
|
@@ -225,9 +225,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyz
|
|
|
225
225
|
ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
|
|
226
226
|
ultralytics/utils/callbacks/tensorboard.py,sha256=0kn4IR10no99UCIheojWRujgybmUHSx5fPI6Vsq6l_g,4135
|
|
227
227
|
ultralytics/utils/callbacks/wb.py,sha256=9-fjQIdLjr3b73DTE3rHO171KvbH1VweJ-bmbv-rqTw,6747
|
|
228
|
-
ultralytics-8.2.
|
|
229
|
-
ultralytics-8.2.
|
|
230
|
-
ultralytics-8.2.
|
|
231
|
-
ultralytics-8.2.
|
|
232
|
-
ultralytics-8.2.
|
|
233
|
-
ultralytics-8.2.
|
|
228
|
+
ultralytics-8.2.90.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
229
|
+
ultralytics-8.2.90.dist-info/METADATA,sha256=_IiOkEIa2-D4rX3CSuyvsFa7yTBKruLPab49ZGWFqjs,41871
|
|
230
|
+
ultralytics-8.2.90.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
|
231
|
+
ultralytics-8.2.90.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
232
|
+
ultralytics-8.2.90.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
233
|
+
ultralytics-8.2.90.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|