ultralytics 8.3.48__py3-none-any.whl → 8.3.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.
- tests/test_python.py +0 -9
- ultralytics/__init__.py +1 -1
- ultralytics/data/dataset.py +4 -2
- ultralytics/engine/model.py +2 -2
- ultralytics/engine/validator.py +1 -1
- ultralytics/models/sam/modules/sam.py +3 -3
- ultralytics/models/yolo/detect/val.py +2 -3
- ultralytics/models/yolo/obb/train.py +3 -1
- ultralytics/models/yolo/obb/val.py +2 -2
- ultralytics/utils/checks.py +1 -0
- ultralytics/utils/instance.py +15 -2
- ultralytics/utils/ops.py +2 -0
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/METADATA +1 -1
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/RECORD +18 -18
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/LICENSE +0 -0
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/WHEEL +0 -0
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.3.48.dist-info → ultralytics-8.3.50.dist-info}/top_level.txt +0 -0
tests/test_python.py
CHANGED
@@ -409,15 +409,6 @@ def test_utils_torchutils():
|
|
409
409
|
time_sync()
|
410
410
|
|
411
411
|
|
412
|
-
@pytest.mark.slow
|
413
|
-
@pytest.mark.skipif(not ONLINE, reason="environment is offline")
|
414
|
-
def test_utils_downloads():
|
415
|
-
"""Test file download utilities from ultralytics.utils.downloads."""
|
416
|
-
from ultralytics.utils.downloads import get_google_drive_file_info
|
417
|
-
|
418
|
-
get_google_drive_file_info("https://drive.google.com/file/d/1cqT-cJgANNrhIHCrEufUYhQ4RqiWG_lJ/view?usp=drive_link")
|
419
|
-
|
420
|
-
|
421
412
|
def test_utils_ops():
|
422
413
|
"""Test utility operations functions for coordinate transformation and normalization."""
|
423
414
|
from ultralytics.utils.ops import (
|
ultralytics/__init__.py
CHANGED
ultralytics/data/dataset.py
CHANGED
@@ -218,8 +218,10 @@ class YOLODataset(BaseDataset):
|
|
218
218
|
# NOTE: do NOT resample oriented boxes
|
219
219
|
segment_resamples = 100 if self.use_obb else 1000
|
220
220
|
if len(segments) > 0:
|
221
|
-
#
|
222
|
-
|
221
|
+
# make sure segments interpolate correctly if original length is greater than segment_resamples
|
222
|
+
max_len = max([len(s) for s in segments])
|
223
|
+
segment_resamples = (max_len + 1) if segment_resamples < max_len else segment_resamples
|
224
|
+
# list[np.array(segment_resamples, 2)] * num_samples
|
223
225
|
segments = np.stack(resample_segments(segments, n=segment_resamples), axis=0)
|
224
226
|
else:
|
225
227
|
segments = np.zeros((0, segment_resamples, 2), dtype=np.float32)
|
ultralytics/engine/model.py
CHANGED
@@ -115,7 +115,7 @@ class Model(nn.Module):
|
|
115
115
|
self.predictor = None # reuse predictor
|
116
116
|
self.model = None # model object
|
117
117
|
self.trainer = None # trainer object
|
118
|
-
self.ckpt =
|
118
|
+
self.ckpt = {} # if loaded from *.pt
|
119
119
|
self.cfg = None # if loaded from *.yaml
|
120
120
|
self.ckpt_path = None
|
121
121
|
self.overrides = {} # overrides for trainer object
|
@@ -807,7 +807,7 @@ class Model(nn.Module):
|
|
807
807
|
# Update model and cfg after training
|
808
808
|
if RANK in {-1, 0}:
|
809
809
|
ckpt = self.trainer.best if self.trainer.best.exists() else self.trainer.last
|
810
|
-
self.model,
|
810
|
+
self.model, self.ckpt = attempt_load_one_weight(ckpt)
|
811
811
|
self.overrides = self.model.args
|
812
812
|
self.metrics = getattr(self.trainer.validator, "metrics", None) # TODO: no metrics returned by DDP
|
813
813
|
return self.metrics
|
ultralytics/engine/validator.py
CHANGED
@@ -120,7 +120,7 @@ class BaseValidator:
|
|
120
120
|
self.args.plots &= trainer.stopper.possible_stop or (trainer.epoch == trainer.epochs - 1)
|
121
121
|
model.eval()
|
122
122
|
else:
|
123
|
-
if str(self.args.model).endswith(".yaml"):
|
123
|
+
if str(self.args.model).endswith(".yaml") and model is None:
|
124
124
|
LOGGER.warning("WARNING ⚠️ validating an untrained model YAML will result in 0 mAP.")
|
125
125
|
callbacks.add_integration_callbacks(self)
|
126
126
|
model = AutoBackend(
|
@@ -685,11 +685,11 @@ class SAM2Model(torch.nn.Module):
|
|
685
685
|
if prev is None:
|
686
686
|
continue # skip padding frames
|
687
687
|
# "maskmem_features" might have been offloaded to CPU in demo use cases,
|
688
|
-
# so we load it back to
|
689
|
-
feats = prev["maskmem_features"].
|
688
|
+
# so we load it back to inference device (it's a no-op if it's already on device).
|
689
|
+
feats = prev["maskmem_features"].to(device=device, non_blocking=True)
|
690
690
|
to_cat_memory.append(feats.flatten(2).permute(2, 0, 1))
|
691
691
|
# Spatial positional encoding (it might have been offloaded to CPU in eval)
|
692
|
-
maskmem_enc = prev["maskmem_pos_enc"][-1].
|
692
|
+
maskmem_enc = prev["maskmem_pos_enc"][-1].to(device=device)
|
693
693
|
maskmem_enc = maskmem_enc.flatten(2).permute(2, 0, 1)
|
694
694
|
# Temporal positional encoding
|
695
695
|
maskmem_enc = maskmem_enc + self.maskmem_tpos_enc[self.num_maskmem - t_pos - 1]
|
@@ -74,7 +74,7 @@ class DetectionValidator(BaseValidator):
|
|
74
74
|
and (val.endswith(f"{os.sep}val2017.txt") or val.endswith(f"{os.sep}test-dev2017.txt"))
|
75
75
|
) # is COCO
|
76
76
|
self.is_lvis = isinstance(val, str) and "lvis" in val and not self.is_coco # is LVIS
|
77
|
-
self.class_map = converter.coco80_to_coco91_class() if self.is_coco else list(range(len(model.names)))
|
77
|
+
self.class_map = converter.coco80_to_coco91_class() if self.is_coco else list(range(1, len(model.names) + 1))
|
78
78
|
self.args.save_json |= self.args.val and (self.is_coco or self.is_lvis) and not self.training # run final val
|
79
79
|
self.names = model.names
|
80
80
|
self.nc = len(model.names)
|
@@ -288,8 +288,7 @@ class DetectionValidator(BaseValidator):
|
|
288
288
|
self.jdict.append(
|
289
289
|
{
|
290
290
|
"image_id": image_id,
|
291
|
-
"category_id": self.class_map[int(p[5])]
|
292
|
-
+ (1 if self.is_lvis else 0), # index starts from 1 if it's lvis
|
291
|
+
"category_id": self.class_map[int(p[5])],
|
293
292
|
"bbox": [round(x, 3) for x in b],
|
294
293
|
"score": round(p[4], 5),
|
295
294
|
}
|
@@ -39,4 +39,6 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
|
|
39
39
|
def get_validator(self):
|
40
40
|
"""Return an instance of OBBValidator for validation of YOLO model."""
|
41
41
|
self.loss_names = "box_loss", "cls_loss", "dfl_loss"
|
42
|
-
return yolo.obb.OBBValidator(
|
42
|
+
return yolo.obb.OBBValidator(
|
43
|
+
self.test_loader, save_dir=self.save_dir, args=copy(self.args), _callbacks=self.callbacks
|
44
|
+
)
|
@@ -160,7 +160,7 @@ class OBBValidator(DetectionValidator):
|
|
160
160
|
for d in data:
|
161
161
|
image_id = d["image_id"]
|
162
162
|
score = d["score"]
|
163
|
-
classname = self.names[d["category_id"]].replace(" ", "-")
|
163
|
+
classname = self.names[d["category_id"] - 1].replace(" ", "-")
|
164
164
|
p = d["poly"]
|
165
165
|
|
166
166
|
with open(f'{pred_txt / f"Task1_{classname}"}.txt', "a") as f:
|
@@ -175,7 +175,7 @@ class OBBValidator(DetectionValidator):
|
|
175
175
|
image_id = d["image_id"].split("__")[0]
|
176
176
|
pattern = re.compile(r"\d+___\d+")
|
177
177
|
x, y = (int(c) for c in re.findall(pattern, d["image_id"])[0].split("___"))
|
178
|
-
bbox, score, cls = d["rbox"], d["score"], d["category_id"]
|
178
|
+
bbox, score, cls = d["rbox"], d["score"], d["category_id"] - 1
|
179
179
|
bbox[0] += x
|
180
180
|
bbox[1] += y
|
181
181
|
bbox.extend([score, cls])
|
ultralytics/utils/checks.py
CHANGED
ultralytics/utils/instance.py
CHANGED
@@ -7,7 +7,7 @@ from typing import List
|
|
7
7
|
|
8
8
|
import numpy as np
|
9
9
|
|
10
|
-
from .ops import ltwh2xywh, ltwh2xyxy, xywh2ltwh, xywh2xyxy, xyxy2ltwh, xyxy2xywh
|
10
|
+
from .ops import ltwh2xywh, ltwh2xyxy, resample_segments, xywh2ltwh, xywh2xyxy, xyxy2ltwh, xyxy2xywh
|
11
11
|
|
12
12
|
|
13
13
|
def _ntuple(n):
|
@@ -406,7 +406,20 @@ class Instances:
|
|
406
406
|
normalized = instances_list[0].normalized
|
407
407
|
|
408
408
|
cat_boxes = np.concatenate([ins.bboxes for ins in instances_list], axis=axis)
|
409
|
-
|
409
|
+
seg_len = [b.segments.shape[1] for b in instances_list]
|
410
|
+
if len(set(seg_len)) > 1: # resample segments if there's different length
|
411
|
+
max_len = max(seg_len)
|
412
|
+
cat_segments = np.concatenate(
|
413
|
+
[
|
414
|
+
resample_segments(list(b.segments), max_len)
|
415
|
+
if len(b.segments)
|
416
|
+
else np.zeros((0, max_len, 2), dtype=np.float32) # re-generating empty segments
|
417
|
+
for b in instances_list
|
418
|
+
],
|
419
|
+
axis=axis,
|
420
|
+
)
|
421
|
+
else:
|
422
|
+
cat_segments = np.concatenate([b.segments for b in instances_list], axis=axis)
|
410
423
|
cat_keypoints = np.concatenate([b.keypoints for b in instances_list], axis=axis) if use_keypoint else None
|
411
424
|
return cls(cat_boxes, cat_segments, cat_keypoints, bbox_format, normalized)
|
412
425
|
|
ultralytics/utils/ops.py
CHANGED
@@ -624,6 +624,8 @@ def resample_segments(segments, n=1000):
|
|
624
624
|
segments (list): the resampled segments.
|
625
625
|
"""
|
626
626
|
for i, s in enumerate(segments):
|
627
|
+
if len(s) == n:
|
628
|
+
continue
|
627
629
|
s = np.concatenate((s, s[0:1, :]), axis=0)
|
628
630
|
x = np.linspace(0, len(s) - 1, n - len(s) if len(s) < n else n)
|
629
631
|
xp = np.arange(len(s))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.50
|
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,9 +5,9 @@ tests/test_cuda.py,sha256=rhHFvKNegN1ChtueKM0JhATJaJDFB377uXo2Kca5JVQ,5943
|
|
5
5
|
tests/test_engine.py,sha256=dcEcJsMQh61rDSNv7l4TIAgybLpzjVwerv9JZC_KCM8,4934
|
6
6
|
tests/test_exports.py,sha256=1MvhcQ2qHdbJImHII-bFarcaIcm-kPlEK-OdFLxnj7o,8769
|
7
7
|
tests/test_integrations.py,sha256=f5-QCUk1SU_-qn4mBCZwS3GN3tXEBIIXo4z2EhExbHw,6126
|
8
|
-
tests/test_python.py,sha256=
|
8
|
+
tests/test_python.py,sha256=IfHAXqilpYxWNmIE6rAWWUSeIYS6SBO9AkXGHDGZTvA,23182
|
9
9
|
tests/test_solutions.py,sha256=HlDe-XOgBX0k1cLhRTAhhawMHk6p-5dg5xl2AIRjfdk,3790
|
10
|
-
ultralytics/__init__.py,sha256=
|
10
|
+
ultralytics/__init__.py,sha256=G2CTePEZVd22siopgro_jZo3hyF2Bir3f7fymRE6faM,681
|
11
11
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
12
12
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
13
13
|
ultralytics/cfg/__init__.py,sha256=etGrRb8t9r6R-n-00qFAmOZHXNriXEUe0zvEzCPi5oc,38921
|
@@ -95,18 +95,18 @@ ultralytics/data/augment.py,sha256=Cfa3cufMjNMBqnzSpCFrF7IjR5B-NkpOJ6NwpVdEAWo,1
|
|
95
95
|
ultralytics/data/base.py,sha256=ZCIhAyFfxXVp5fVnYD8mwbksNALJTayBKIR5FKGV7ZM,15168
|
96
96
|
ultralytics/data/build.py,sha256=AfMmz0sHIYmwry_90tEJFRk_kz0S3SolScVXqYHiT08,7261
|
97
97
|
ultralytics/data/converter.py,sha256=RIfTXNrazwZqmTYOYoJtupDMtNzm8dxsrVp6q2m8gyg,24388
|
98
|
-
ultralytics/data/dataset.py,sha256=
|
98
|
+
ultralytics/data/dataset.py,sha256=pVNs7484LusQ3IwcEcNeGiZfNrSvhw0K5K4JT35Ljh0,23184
|
99
99
|
ultralytics/data/loaders.py,sha256=k1Vq7Rxv6tpsRsYuMdZeI3_f2BciAaZwhDQU8iHhVJM,28506
|
100
100
|
ultralytics/data/split_dota.py,sha256=eFafJ7Vg52wj6KDCHFJAf1tKzyPD5YaPB8kM4VX5Aeg,10688
|
101
101
|
ultralytics/data/utils.py,sha256=bmWEIrdogj4kssZQSJdSbIF8QsJU00lo-EY-Mgcqv4M,31073
|
102
102
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
103
103
|
ultralytics/engine/exporter.py,sha256=EMrdP8Ra5VnmNEUjustWOvgrH1C4vgwz0L0frjZRSJY,67054
|
104
|
-
ultralytics/engine/model.py,sha256
|
104
|
+
ultralytics/engine/model.py,sha256=l5UiXGBa4ox9BXq0dc6eUsOvd85Q4KHUxGCwY2dfXQE,53113
|
105
105
|
ultralytics/engine/predictor.py,sha256=o1RYMFH3_uVOMCIXXakpRYpNzoD-6Bdsxryt5fuBni0,17712
|
106
106
|
ultralytics/engine/results.py,sha256=a1XFZRPwqgKDBOEAibHuT9nP2xefLiWVsMoBJbcr4iA,75058
|
107
107
|
ultralytics/engine/trainer.py,sha256=Cd95QLJ3C4fncoOX1YgauLA9aWVYRd1G6x0Au2xX86k,37335
|
108
108
|
ultralytics/engine/tuner.py,sha256=WBj8iw1K1TK0hvanlA-wkwmfqh1SI8jEe2dGwUINeTg,11838
|
109
|
-
ultralytics/engine/validator.py,sha256=
|
109
|
+
ultralytics/engine/validator.py,sha256=fCBTYHwXAT6u4Pq-UYYZDZCwHjjB9ZWzFUdsENDt_Is,14888
|
110
110
|
ultralytics/hub/__init__.py,sha256=c6Me4E8V-P7mtzTggyPYz9FnVkqWRyPp9F-fMcyFNQ0,5632
|
111
111
|
ultralytics/hub/auth.py,sha256=pj_2NijotQpyG4_VJ6EAzNWGD93L6t-34J60yfiNZPc,5541
|
112
112
|
ultralytics/hub/session.py,sha256=2KznO5kX14HFZ2-Ct9LoG312sdHuigQSLZb58MGvbJY,16411
|
@@ -137,7 +137,7 @@ ultralytics/models/sam/modules/blocks.py,sha256=Q-KwhFbdyZhl1tjG_kP2LcQkZbzoNt61
|
|
137
137
|
ultralytics/models/sam/modules/decoders.py,sha256=mODsqnTN_CjE3H0Sh9cd8PfTnHANPjGB1bjqHxfezSg,25830
|
138
138
|
ultralytics/models/sam/modules/encoders.py,sha256=Ay3sYeUonCf6URXBdB0dDwyngovevW8hUDgULRnNIoA,34824
|
139
139
|
ultralytics/models/sam/modules/memory_attention.py,sha256=XilWBnRfH8wZxIoL2-yEk-dRypCsS0Jf_9t8WJxXKg0,9722
|
140
|
-
ultralytics/models/sam/modules/sam.py,sha256=
|
140
|
+
ultralytics/models/sam/modules/sam.py,sha256=Rmg9teVlZo-Iu5BhlBtHsmwzxJqXRGs0deAp9Ijp2-0,52725
|
141
141
|
ultralytics/models/sam/modules/tiny_encoder.py,sha256=NyzeFMLnmqwcFQFs-JBM9PCWSsYoYZ_6h59Un1DeDV0,41332
|
142
142
|
ultralytics/models/sam/modules/transformer.py,sha256=nuhF_14LGrr5uYCAP9XCXps-zlVcT4OWO0evXWDxPwI,16081
|
143
143
|
ultralytics/models/sam/modules/utils.py,sha256=Y36V6BVy6GeaAvKE8gHmoDIa-f5LjJpmSVwywNkv2yk,12315
|
@@ -153,11 +153,11 @@ ultralytics/models/yolo/classify/val.py,sha256=YEmgxOLhSsUdQXAV9CetxX8cgVaqaxKZy
|
|
153
153
|
ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
|
154
154
|
ultralytics/models/yolo/detect/predict.py,sha256=-uZFLutxGYZX47RANcaxC-LFStRbv0nBv_8-ypadQoI,1471
|
155
155
|
ultralytics/models/yolo/detect/train.py,sha256=LKCcQTAsXm3-TPK2zkE1YJhbAcS65qhY2-MSlj-kB4w,6710
|
156
|
-
ultralytics/models/yolo/detect/val.py,sha256=
|
156
|
+
ultralytics/models/yolo/detect/val.py,sha256=MV7U81vqj8tR8NYdeexFqRK2lxXwcRclvRqzRfeLJGM,15066
|
157
157
|
ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
|
158
158
|
ultralytics/models/yolo/obb/predict.py,sha256=VxpKCKV5dWnOr0GyV1rJGH5SzzRouCYW_8T26xJ8MU8,2037
|
159
|
-
ultralytics/models/yolo/obb/train.py,sha256=
|
160
|
-
ultralytics/models/yolo/obb/val.py,sha256=
|
159
|
+
ultralytics/models/yolo/obb/train.py,sha256=vN7p_ec8rHhA0AeKvVUNzaSGG4O30UGlMh6Qk7bCkhQ,1522
|
160
|
+
ultralytics/models/yolo/obb/val.py,sha256=ARha7rJmf12wM1neVi7VX6ejorXrjUMNUpx9dDvRmYU,9337
|
161
161
|
ultralytics/models/yolo/pose/__init__.py,sha256=OGvxN3LqJot2h8GX1csJ1KErsHnDKsm33Ce6ZBU9Lr4,199
|
162
162
|
ultralytics/models/yolo/pose/predict.py,sha256=cpTe4vTI3etnGCgyMcvxbF0cMNetiWXUwhsipEFX-KQ,2365
|
163
163
|
ultralytics/models/yolo/pose/train.py,sha256=mUC1GaYmRBTvXQsL-uNdcdANoIXdeGGBRdgOKkqRIRI,2926
|
@@ -204,15 +204,15 @@ ultralytics/trackers/utils/matching.py,sha256=Y94cMwo9TLd-IWFqHKp8dHSDyguS1qtOee
|
|
204
204
|
ultralytics/utils/__init__.py,sha256=_KUqXbKcFgN11_ZLGrpQuPNOdSbIGhuv_IBGUPw9jX0,49203
|
205
205
|
ultralytics/utils/autobatch.py,sha256=nt0nSNNhrQqvtaxeNBBYpU2OkZnI3ihNEAa3jF4pybo,4594
|
206
206
|
ultralytics/utils/benchmarks.py,sha256=Ub--iTq2hL_oHkG2R3HXmZXQ6qcBC-P9MabUv60bMLE,25625
|
207
|
-
ultralytics/utils/checks.py,sha256=
|
207
|
+
ultralytics/utils/checks.py,sha256=1Cu8k2qg_pFaoHvkiE07Ab5ZGLyZHZxFAg1IMM63CBQ,30145
|
208
208
|
ultralytics/utils/dist.py,sha256=NDFga-uKxkBX2zLxFHSene_cCiGQJoyOeCXcN9JIOIk,2358
|
209
209
|
ultralytics/utils/downloads.py,sha256=fh7I5toTSowAOXtmx5zIzCEDREfTFG45cLIHmsDmuYw,21974
|
210
210
|
ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
|
211
211
|
ultralytics/utils/files.py,sha256=uiXQSVABJRoI5ImnM6ndEBIFbECfksmWNEldBg8GnSo,8224
|
212
|
-
ultralytics/utils/instance.py,sha256=
|
212
|
+
ultralytics/utils/instance.py,sha256=NuTLa_XoqgmWNhxQ2JuflT22UAmEmv0UWd5BZXCjSNM,16841
|
213
213
|
ultralytics/utils/loss.py,sha256=_d2L4lIemaeAHrGHqf9q-KI7yTgHKCbIcYAF7Y-farI,34185
|
214
214
|
ultralytics/utils/metrics.py,sha256=toJlyA0W-xtChqAtIDiHISolxc_30NP33ezxWQ1rnPc,53804
|
215
|
-
ultralytics/utils/ops.py,sha256=
|
215
|
+
ultralytics/utils/ops.py,sha256=O_p_GUAtYL31YQIvEl4m3OOgUE34qaIZY9UN5k0ROnU,33219
|
216
216
|
ultralytics/utils/patches.py,sha256=J-iOwIRbfUs-inBZerhnXby5tUKjYcOIyvhLTS352JE,3270
|
217
217
|
ultralytics/utils/plotting.py,sha256=GmBkN7e1skJK2cZ2hzKBXQCb1gayWTrA9TLHw0q07UM,62948
|
218
218
|
ultralytics/utils/tal.py,sha256=thD_AEhVmhaZqmS5szZMvpKO-RKOeZwfX1BYAhdnA0o,18470
|
@@ -230,9 +230,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=IbGQfEltamUKXJt93uSLQFn8c2rYh3DMTg
|
|
230
230
|
ultralytics/utils/callbacks/raytune.py,sha256=Ck_yFzg7UZXiDWrLHaltjQybzVWSFDfzpdrx9ZYTRfI,700
|
231
231
|
ultralytics/utils/callbacks/tensorboard.py,sha256=SHlE58Fb-sg-uZKtgy-ybIO3SAIfK55aj8kTYGA0Cyg,4167
|
232
232
|
ultralytics/utils/callbacks/wb.py,sha256=sizfTa-xI9k2pnDSP_Q9pHZEFwcl__gSFM0AcneuRpY,7058
|
233
|
-
ultralytics-8.3.
|
234
|
-
ultralytics-8.3.
|
235
|
-
ultralytics-8.3.
|
236
|
-
ultralytics-8.3.
|
237
|
-
ultralytics-8.3.
|
238
|
-
ultralytics-8.3.
|
233
|
+
ultralytics-8.3.50.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
234
|
+
ultralytics-8.3.50.dist-info/METADATA,sha256=UhnzwB1j7o0dsYNJZtpzkKPBOKg_HNCAePYrFqW3zSo,35332
|
235
|
+
ultralytics-8.3.50.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
236
|
+
ultralytics-8.3.50.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
237
|
+
ultralytics-8.3.50.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
238
|
+
ultralytics-8.3.50.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|