ultralytics 8.3.103__py3-none-any.whl → 8.3.105__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.
- tests/test_python.py +1 -1
- tests/test_solutions.py +1 -1
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +19 -17
- ultralytics/cfg/default.yaml +0 -1
- ultralytics/engine/exporter.py +5 -0
- ultralytics/models/yolo/detect/val.py +0 -16
- ultralytics/models/yolo/model.py +1 -1
- ultralytics/models/yolo/yoloe/val.py +4 -0
- ultralytics/nn/modules/head.py +7 -5
- ultralytics/solutions/object_counter.py +2 -1
- ultralytics/solutions/solutions.py +1 -3
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/METADATA +1 -1
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/RECORD +18 -18
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/licenses/LICENSE +0 -0
- {ultralytics-8.3.103.dist-info → ultralytics-8.3.105.dist-info}/top_level.txt +0 -0
tests/test_python.py
CHANGED
@@ -199,7 +199,7 @@ def test_track_stream():
|
|
199
199
|
|
200
200
|
def test_val():
|
201
201
|
"""Test the validation mode of the YOLO model."""
|
202
|
-
YOLO(MODEL).val(data="coco8.yaml", imgsz=32
|
202
|
+
YOLO(MODEL).val(data="coco8.yaml", imgsz=32)
|
203
203
|
|
204
204
|
|
205
205
|
def test_train_scratch():
|
tests/test_solutions.py
CHANGED
@@ -20,7 +20,7 @@ PARKING_VIDEO = "solution_ci_parking_demo.mp4" # only for parking management so
|
|
20
20
|
PARKING_AREAS_JSON = "solution_ci_parking_areas.json" # only for parking management solution
|
21
21
|
PARKING_MODEL = "solutions_ci_parking_model.pt" # only for parking management solution
|
22
22
|
MODEL_FILE = "yolo11n.pt" # model file used for solutions, except parking management and instance segmentation
|
23
|
-
REGION = [(
|
23
|
+
REGION = [(10, 200), (540, 200), (540, 180), (10, 180)] # for object counting, speed estimation and queue management
|
24
24
|
|
25
25
|
# Test configs for each solution : (name, class, needs_frame_count, video, kwargs)
|
26
26
|
SOLUTIONS = [
|
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
@@ -214,7 +214,6 @@ CFG_BOOL_KEYS = frozenset(
|
|
214
214
|
"overlap_mask",
|
215
215
|
"val",
|
216
216
|
"save_json",
|
217
|
-
"save_hybrid",
|
218
217
|
"half",
|
219
218
|
"dnn",
|
220
219
|
"plots",
|
@@ -437,22 +436,25 @@ def _handle_deprecation(custom: Dict) -> Dict:
|
|
437
436
|
equivalents. It also handles value conversions where necessary, such as inverting boolean values for
|
438
437
|
'hide_labels' and 'hide_conf'.
|
439
438
|
"""
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
439
|
+
deprecated_mappings = {
|
440
|
+
"boxes": ("show_boxes", lambda v: v),
|
441
|
+
"hide_labels": ("show_labels", lambda v: not bool(v)),
|
442
|
+
"hide_conf": ("show_conf", lambda v: not bool(v)),
|
443
|
+
"line_thickness": ("line_width", lambda v: v),
|
444
|
+
}
|
445
|
+
removed_keys = {"label_smoothing", "save_hybrid"}
|
446
|
+
|
447
|
+
for old_key, (new_key, transform) in deprecated_mappings.items():
|
448
|
+
if old_key not in custom:
|
449
|
+
continue
|
450
|
+
deprecation_warn(old_key, new_key)
|
451
|
+
custom[new_key] = transform(custom.pop(old_key))
|
452
|
+
|
453
|
+
for key in removed_keys:
|
454
|
+
if key not in custom:
|
455
|
+
continue
|
456
|
+
deprecation_warn(key)
|
457
|
+
custom.pop(key)
|
456
458
|
|
457
459
|
return custom
|
458
460
|
|
ultralytics/cfg/default.yaml
CHANGED
@@ -47,7 +47,6 @@ dropout: 0.0 # (float) use dropout regularization (classify train only)
|
|
47
47
|
val: True # (bool) validate/test during training
|
48
48
|
split: val # (str) dataset split to use for validation, i.e. 'val', 'test' or 'train'
|
49
49
|
save_json: False # (bool) save results to JSON file
|
50
|
-
save_hybrid: False # (bool) save hybrid version of labels (labels + additional predictions)
|
51
50
|
conf: # (float, optional) object confidence threshold for detection (default 0.25 predict, 0.001 val)
|
52
51
|
iou: 0.7 # (float) intersection over union (IoU) threshold for NMS
|
53
52
|
max_det: 300 # (int) maximum number of detections per image
|
ultralytics/engine/exporter.py
CHANGED
@@ -282,6 +282,11 @@ class Exporter:
|
|
282
282
|
dla = self.args.device.split(":")[-1]
|
283
283
|
self.args.device = "0" # update device to "0"
|
284
284
|
assert dla in {"0", "1"}, f"Expected self.args.device='dla:0' or 'dla:1, but got {self.args.device}."
|
285
|
+
if imx and self.args.device is None and torch.cuda.is_available():
|
286
|
+
LOGGER.warning(
|
287
|
+
"WARNING ⚠️ Exporting on CPU while CUDA is available, setting device=0 for faster export on GPU."
|
288
|
+
)
|
289
|
+
self.args.device = "0" # update device to "0"
|
285
290
|
self.device = select_device("cpu" if self.args.device is None else self.args.device)
|
286
291
|
|
287
292
|
# Argument compatibility checks
|
@@ -62,12 +62,6 @@ class DetectionValidator(BaseValidator):
|
|
62
62
|
self.metrics = DetMetrics(save_dir=self.save_dir)
|
63
63
|
self.iouv = torch.linspace(0.5, 0.95, 10) # IoU vector for mAP@0.5:0.95
|
64
64
|
self.niou = self.iouv.numel()
|
65
|
-
self.lb = [] # for autolabelling
|
66
|
-
if self.args.save_hybrid and self.args.task == "detect":
|
67
|
-
LOGGER.warning(
|
68
|
-
"WARNING ⚠️ 'save_hybrid=True' will append ground truth to predictions for autolabelling.\n"
|
69
|
-
"WARNING ⚠️ 'save_hybrid=True' will cause incorrect mAP.\n"
|
70
|
-
)
|
71
65
|
|
72
66
|
def preprocess(self, batch):
|
73
67
|
"""
|
@@ -84,15 +78,6 @@ class DetectionValidator(BaseValidator):
|
|
84
78
|
for k in ["batch_idx", "cls", "bboxes"]:
|
85
79
|
batch[k] = batch[k].to(self.device)
|
86
80
|
|
87
|
-
if self.args.save_hybrid and self.args.task == "detect":
|
88
|
-
height, width = batch["img"].shape[2:]
|
89
|
-
nb = len(batch["img"])
|
90
|
-
bboxes = batch["bboxes"] * torch.tensor((width, height, width, height), device=self.device)
|
91
|
-
self.lb = [
|
92
|
-
torch.cat([batch["cls"][batch["batch_idx"] == i], bboxes[batch["batch_idx"] == i]], dim=-1)
|
93
|
-
for i in range(nb)
|
94
|
-
]
|
95
|
-
|
96
81
|
return batch
|
97
82
|
|
98
83
|
def init_metrics(self, model):
|
@@ -139,7 +124,6 @@ class DetectionValidator(BaseValidator):
|
|
139
124
|
preds,
|
140
125
|
self.args.conf,
|
141
126
|
self.args.iou,
|
142
|
-
labels=self.lb,
|
143
127
|
nc=self.nc,
|
144
128
|
multi_label=True,
|
145
129
|
agnostic=self.args.single_cls or self.args.agnostic_nms,
|
ultralytics/models/yolo/model.py
CHANGED
@@ -341,7 +341,7 @@ class YOLOE(Model):
|
|
341
341
|
|
342
342
|
self.predictor.setup_model(model=self.model)
|
343
343
|
|
344
|
-
if refer_image is None and source:
|
344
|
+
if refer_image is None and source is not None:
|
345
345
|
dataset = load_inference_source(source)
|
346
346
|
if dataset.mode in {"video", "stream"}:
|
347
347
|
# NOTE: set the first frame as refer image for videos/streams inference
|
@@ -158,6 +158,10 @@ class YOLOEDetectValidator(DetectionValidator):
|
|
158
158
|
assert load_vp, "Refer data is only used for visual prompt validation."
|
159
159
|
self.device = select_device(self.args.device)
|
160
160
|
|
161
|
+
if isinstance(model, str):
|
162
|
+
from ultralytics.nn.tasks import attempt_load_weights
|
163
|
+
|
164
|
+
model = attempt_load_weights(model, device=self.device, inplace=True)
|
161
165
|
model.eval().to(self.device)
|
162
166
|
data = check_det_dataset(refer_data or self.args.data)
|
163
167
|
names = [name.split("/")[0] for name in list(data["names"].values())]
|
ultralytics/nn/modules/head.py
CHANGED
@@ -369,8 +369,8 @@ class LRPCHead(nn.Module):
|
|
369
369
|
if self.enabled:
|
370
370
|
pf_score = self.pf(cls_feat)[0, 0].flatten(0)
|
371
371
|
mask = pf_score.sigmoid() > conf
|
372
|
-
|
373
|
-
cls_feat = self.vocab(cls_feat.
|
372
|
+
cls_feat = cls_feat.flatten(2).transpose(-1, -2)
|
373
|
+
cls_feat = self.vocab(cls_feat * mask.unsqueeze(-1).int() if not conf else cls_feat[:, mask])
|
374
374
|
return (self.loc(loc_feat), cls_feat.transpose(-1, -2)), mask
|
375
375
|
else:
|
376
376
|
cls_feat = self.vocab(cls_feat)
|
@@ -478,7 +478,9 @@ class YOLOEDetect(Detect):
|
|
478
478
|
cls_feat = self.cv3[i](x[i])
|
479
479
|
loc_feat = self.cv2[i](x[i])
|
480
480
|
assert isinstance(self.lrpc[i], LRPCHead)
|
481
|
-
x[i], mask = self.lrpc[i](
|
481
|
+
x[i], mask = self.lrpc[i](
|
482
|
+
cls_feat, loc_feat, 0 if self.export and not self.dynamic else getattr(self, "conf", 0.001)
|
483
|
+
)
|
482
484
|
masks.append(mask)
|
483
485
|
shape = x[0][0].shape
|
484
486
|
if self.dynamic or self.shape != shape:
|
@@ -499,7 +501,7 @@ class YOLOEDetect(Detect):
|
|
499
501
|
dbox = self.decode_bboxes(self.dfl(box), self.anchors.unsqueeze(0)) * self.strides
|
500
502
|
|
501
503
|
mask = torch.cat(masks)
|
502
|
-
y = torch.cat((dbox[
|
504
|
+
y = torch.cat((dbox if self.export and not self.dynamic else dbox[..., mask], cls.sigmoid()), 1)
|
503
505
|
|
504
506
|
if return_mask:
|
505
507
|
return (y, mask) if self.export else ((y, x), mask)
|
@@ -560,7 +562,7 @@ class YOLOESegment(YOLOEDetect):
|
|
560
562
|
return x, mc, p
|
561
563
|
|
562
564
|
if has_lrpc:
|
563
|
-
mc = mc
|
565
|
+
mc = (mc * mask.int()) if self.export and not self.dynamic else mc[..., mask]
|
564
566
|
|
565
567
|
return (torch.cat([x, mc], 1), p) if self.export else (torch.cat([x[0], mc], 1), (x[1], mc, p))
|
566
568
|
|
@@ -45,6 +45,7 @@ class ObjectCounter(BaseSolution):
|
|
45
45
|
|
46
46
|
self.show_in = self.CFG["show_in"]
|
47
47
|
self.show_out = self.CFG["show_out"]
|
48
|
+
self.margin = self.line_width * 2 # Scales the background rectangle size to display counts properly
|
48
49
|
|
49
50
|
def count_objects(self, current_centroid, track_id, prev_position, cls):
|
50
51
|
"""
|
@@ -144,7 +145,7 @@ class ObjectCounter(BaseSolution):
|
|
144
145
|
if value["IN"] != 0 or value["OUT"] != 0
|
145
146
|
}
|
146
147
|
if labels_dict:
|
147
|
-
self.annotator.display_analytics(plot_im, labels_dict, (104, 31, 17), (255, 255, 255),
|
148
|
+
self.annotator.display_analytics(plot_im, labels_dict, (104, 31, 17), (255, 255, 255), self.margin)
|
148
149
|
|
149
150
|
def process(self, im0):
|
150
151
|
"""
|
@@ -79,9 +79,7 @@ class BaseSolution:
|
|
79
79
|
self.LOGGER.info(f"Ultralytics Solutions: ✅ {DEFAULT_SOL_DICT}")
|
80
80
|
|
81
81
|
self.region = self.CFG["region"] # Store region data for other classes usage
|
82
|
-
self.line_width = (
|
83
|
-
self.CFG["line_width"] if self.CFG["line_width"] is not None else 2
|
84
|
-
) # Store line_width for usage
|
82
|
+
self.line_width = self.CFG["line_width"] if self.CFG["line_width"] not in (None, 0) else 2 # Store line_width
|
85
83
|
|
86
84
|
# Load Model and store classes names
|
87
85
|
if self.CFG["model"] is None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.105
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -5,13 +5,13 @@ tests/test_cuda.py,sha256=0uvTF4bY_Grsd_Xgtp7TdIEgMpUqKv8_kWA82NYDl_g,6260
|
|
5
5
|
tests/test_engine.py,sha256=aGqZ8P7QO5C_nOa1b4FOyk92Ysdk5WiP-ST310Vyxys,4962
|
6
6
|
tests/test_exports.py,sha256=dhZn86LdbapW15RthQF870LGxDjC1MUZhlGdBgPmgIQ,9716
|
7
7
|
tests/test_integrations.py,sha256=ZgpddWHEVqiP4bGhVw8fLc2wdz0rCxuxr0FQ2dTgnIE,6067
|
8
|
-
tests/test_python.py,sha256=
|
9
|
-
tests/test_solutions.py,sha256=
|
10
|
-
ultralytics/__init__.py,sha256=
|
8
|
+
tests/test_python.py,sha256=ij0MV87WtbY2WVs0uP41GdVxt_p_M5Rrkldna3M5nXY,24620
|
9
|
+
tests/test_solutions.py,sha256=428CUFC-ns0GDRZWt_er1Ma8Kb1jtDgSj3cw3T2HjWE,5530
|
10
|
+
ultralytics/__init__.py,sha256=70uClMXEl0zWqRYtxBGmqsXSqZT6XKCKR-m47cxzkGA,730
|
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=
|
14
|
-
ultralytics/cfg/default.yaml,sha256=
|
13
|
+
ultralytics/cfg/__init__.py,sha256=UCUFiZg-bqJwpuLLaGgy7RvAMxD-nbcVsPLxSo8x3ZA,39821
|
14
|
+
ultralytics/cfg/default.yaml,sha256=Ia-t5xMw-GbvYhmEjFSVExZMmWZT44ifMpZic9MsnA8,8377
|
15
15
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=_xlEDIJ9XkUo0v_iNL7FW079BoSeZtKSuLteKTtGbA8,3275
|
16
16
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=SHND_CFkojxw5iQD5Mcgju2kCZIl0gW2ajuzv1cqoL0,1224
|
17
17
|
ultralytics/cfg/datasets/DOTAv1.yaml,sha256=j_DvXVQzZ4dQmf8I7oPX4v9xO3WZXztxV4Xo9VhUTsM,1194
|
@@ -111,7 +111,7 @@ ultralytics/data/loaders.py,sha256=_Gyp_BfGTZwsFdn4UnolXxdU_sAYZLIrv0L2TRI9R5g,2
|
|
111
111
|
ultralytics/data/split_dota.py,sha256=p8eVGht9tABSVbf9vwvxA_AQYEva3IGHePKlMeNrn64,11872
|
112
112
|
ultralytics/data/utils.py,sha256=aRPwIoLrCML_Kcd0dI9B6c5Ct4dvhdF36rDHtuf7Ww4,33217
|
113
113
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
114
|
-
ultralytics/engine/exporter.py,sha256=
|
114
|
+
ultralytics/engine/exporter.py,sha256=XJYeJYloVPkXyl7-kCzbYt6KqqZPpLz4-BgkUrQFlOc,78346
|
115
115
|
ultralytics/engine/model.py,sha256=YgQKYZrPENSTvLENspg-bXI9FinzzWARfb0U-C9vH-M,52916
|
116
116
|
ultralytics/engine/predictor.py,sha256=fRUh82EJlu_6ZlIy8NFovlCcgX53UbRYSXcLljOs7Sc,21669
|
117
117
|
ultralytics/engine/results.py,sha256=H3pFJhUjYKvVyOUqqZjfIn8vnCpl81aYNOnregMrBoQ,79716
|
@@ -156,7 +156,7 @@ ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXp
|
|
156
156
|
ultralytics/models/utils/loss.py,sha256=nAzhm4oMJqI3-ejAB9jXIHebTd8H_l3a8-NJcIiJEvo,19665
|
157
157
|
ultralytics/models/utils/ops.py,sha256=SuBnwwgUTqByNHpufobGLW72yO2cyfZFi14KAFWSjjw,13613
|
158
158
|
ultralytics/models/yolo/__init__.py,sha256=or0j5xvcM0usMlsFTYhNAOcQUri7reD0cD9JR5b7zDk,307
|
159
|
-
ultralytics/models/yolo/model.py,sha256=
|
159
|
+
ultralytics/models/yolo/model.py,sha256=mNsz_eqpMMxpvWgx-OF0StxGNxslIR8LQJ7QQ8DvjKw,14357
|
160
160
|
ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
|
161
161
|
ultralytics/models/yolo/classify/predict.py,sha256=JV9szginTQ9Lpob0FozhKMiEIu1vVaYg4YItuVK2AFM,4081
|
162
162
|
ultralytics/models/yolo/classify/train.py,sha256=fVGzEOtuOj_76tmBP5wBLixUDYyNh07PR8ONLYWmH3U,9711
|
@@ -164,7 +164,7 @@ ultralytics/models/yolo/classify/val.py,sha256=xk-YwSQdl_oqyCBV0OOAOcXFL6CchebFO
|
|
164
164
|
ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
|
165
165
|
ultralytics/models/yolo/detect/predict.py,sha256=KZTf2UI7O8ZmPaihqCgsb8IwwchSQTBnO8kAlv8XEMo,4376
|
166
166
|
ultralytics/models/yolo/detect/train.py,sha256=kGsSeek0qbX3tvmGAK2PEOMnNXsGwq3frllpiEdF5Vg,9527
|
167
|
-
ultralytics/models/yolo/detect/val.py,sha256=
|
167
|
+
ultralytics/models/yolo/detect/val.py,sha256=RxB1ULF13KkWW-_oeDGVYsqobO3n4EWlTY-JwNWC4j0,18449
|
168
168
|
ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
|
169
169
|
ultralytics/models/yolo/obb/predict.py,sha256=L40iamQgTY7VDn0WggG2jeJK8cVUo1qsNuFSbK67ry0,2974
|
170
170
|
ultralytics/models/yolo/obb/train.py,sha256=O1wHMrNXb2EPFQIizynjqu-B-76WyWa6755SMrzayWQ,3438
|
@@ -184,7 +184,7 @@ ultralytics/models/yolo/yoloe/__init__.py,sha256=Z9QEmbDYABkx15zFILDsFNNz1IyZ5hl
|
|
184
184
|
ultralytics/models/yolo/yoloe/predict.py,sha256=pjvQ8TKlAe_KIFo70qiNdOrSTITU3pcJ4VE_k7uJjDk,6994
|
185
185
|
ultralytics/models/yolo/yoloe/train.py,sha256=7JxJkMN9bkUGsO-RojFG2Q3yfdKhb-TXlBVJUBG65Qg,17651
|
186
186
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=JguKB1ez8Rf7XBu_D_mWHMLJto7y7Kr2m0Tq2NwDtwU,5269
|
187
|
-
ultralytics/models/yolo/yoloe/val.py,sha256=
|
187
|
+
ultralytics/models/yolo/yoloe/val.py,sha256=utdt8wZvvW9OPxO5rx8KsFlkLG0FXj0YMD7Jhyk54D8,8440
|
188
188
|
ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
|
189
189
|
ultralytics/nn/autobackend.py,sha256=Y597hrrvhHlRX5SoOiXJZXj_1ND9kHMn94V2m_saRAU,38871
|
190
190
|
ultralytics/nn/tasks.py,sha256=r9CoXW9owNK5UWH2ufM5cyG3DB5TEEIX-JmhTSECCN8,62991
|
@@ -193,7 +193,7 @@ ultralytics/nn/modules/__init__.py,sha256=dXLtIk9rt944WfsTdpgEdWOg3HQEHdwQztuZ6W
|
|
193
193
|
ultralytics/nn/modules/activation.py,sha256=PvXZkA9AzEntR575JkFORdmtcRwATyy0lje-uHA5_8w,2210
|
194
194
|
ultralytics/nn/modules/block.py,sha256=sYk0TV76s8oedhPTB29LmvhkT0H7N1gt30DqWDfX4X0,66641
|
195
195
|
ultralytics/nn/modules/conv.py,sha256=gleKBtHa-c4Fj2kyWmG31XtfuB2srWpfWqHntKCzE3c,21445
|
196
|
-
ultralytics/nn/modules/head.py,sha256
|
196
|
+
ultralytics/nn/modules/head.py,sha256=QykXSBLLnp2BUE2xuQIdNXTR-cNaeL4e_aNBMZPD1Dw,38259
|
197
197
|
ultralytics/nn/modules/transformer.py,sha256=tC80QKFaLtWZo0zVNTuORX4pOu6HVs2wS0vSM-3h5W4,28227
|
198
198
|
ultralytics/nn/modules/utils.py,sha256=rn8yTObZGkQoqVzjbZWLaHiytppG4ffjMME4Lw60glM,6092
|
199
199
|
ultralytics/solutions/__init__.py,sha256=pjNYva0qnw-4hf_tTLx_dgIfg24XrYLLp3kygPj95rs,1113
|
@@ -203,13 +203,13 @@ ultralytics/solutions/distance_calculation.py,sha256=n6bPNJ7YbPKAaHWsra6CQQtrDR0
|
|
203
203
|
ultralytics/solutions/heatmap.py,sha256=dagbZ0Vn4UdywNyiAypYW5v1uzOWf521QrkzmqyeCEc,5626
|
204
204
|
ultralytics/solutions/instance_segmentation.py,sha256=q8vXQmnoqbiExq3CVYMybkdJ7X2AZWsExUA0--3d_5w,3505
|
205
205
|
ultralytics/solutions/object_blurrer.py,sha256=9Qzs8M3YI--FoWvihMytFdtnhin6gQ0l_uy6CsdoF9U,3896
|
206
|
-
ultralytics/solutions/object_counter.py,sha256=
|
206
|
+
ultralytics/solutions/object_counter.py,sha256=QXBRBEv_a0uiOYYzsNdu0VAH62rg97v1EiSHy60O1q4,9999
|
207
207
|
ultralytics/solutions/object_cropper.py,sha256=AlIM-RnqFRogAY8JilE0KnbzFMulaIYJGPpn1nFRL5w,3386
|
208
208
|
ultralytics/solutions/parking_management.py,sha256=uojHB17GxzFgzEmCBTEW5XK2h3ONjooW6dHaveWVTcY,13294
|
209
209
|
ultralytics/solutions/queue_management.py,sha256=cUzAMMeWijowkdiuaSUZRr0S3I5MTHkCQOLjOqS0JN0,4299
|
210
210
|
ultralytics/solutions/region_counter.py,sha256=LKZuykgmnevKKzYifyeHQwQroF7tJJIPI6HVXi5mb9M,5299
|
211
211
|
ultralytics/solutions/security_alarm.py,sha256=KLP1R5qAFcmMliHfsuYNS_k-E1vGbOccLrzbmcpp4xQ,6254
|
212
|
-
ultralytics/solutions/solutions.py,sha256=
|
212
|
+
ultralytics/solutions/solutions.py,sha256=BaNvMA0svTKVgE1sFgnPpBRypHy6mlwqIUXUGzL8aMs,31742
|
213
213
|
ultralytics/solutions/speed_estimation.py,sha256=Ewx389Z8sVL7NTEV7Hc9JbRBR0NMthGiIJk7-gyzD2Q,5149
|
214
214
|
ultralytics/solutions/streamlit_inference.py,sha256=M0ppTFInqSPrdytZBLH8x-XoA7zFc7PaRQ51wHG9ppU,9846
|
215
215
|
ultralytics/solutions/trackzone.py,sha256=05XVTQVCGHFAuFNPzyv0VXKQSJKiyWkU6zkXVo4_dxw,3792
|
@@ -252,9 +252,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=XXnnKQ-MoLIexl8y2Vb0i-cCLyePE0n5BU
|
|
252
252
|
ultralytics/utils/callbacks/raytune.py,sha256=omVZNNuzYxsZZXrF9xpbFv7R1Wjdx1j-gv0xXuZrQas,1122
|
253
253
|
ultralytics/utils/callbacks/tensorboard.py,sha256=7eUX21_Ym7i6iN4euZzrqglphyl5xak1yl_-wfFshbg,5502
|
254
254
|
ultralytics/utils/callbacks/wb.py,sha256=iDRFXI4IIDm8R5OI89DMTmjs8aHLo1HRCLkOFKdaMG4,7507
|
255
|
-
ultralytics-8.3.
|
256
|
-
ultralytics-8.3.
|
257
|
-
ultralytics-8.3.
|
258
|
-
ultralytics-8.3.
|
259
|
-
ultralytics-8.3.
|
260
|
-
ultralytics-8.3.
|
255
|
+
ultralytics-8.3.105.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
256
|
+
ultralytics-8.3.105.dist-info/METADATA,sha256=HYewTGSUpFpPREiAy_L5PYIA00RbBfj5jbm7miunRc0,37355
|
257
|
+
ultralytics-8.3.105.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
258
|
+
ultralytics-8.3.105.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
259
|
+
ultralytics-8.3.105.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
260
|
+
ultralytics-8.3.105.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|