ultralytics 8.2.83__py3-none-any.whl → 8.2.85__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/test_explorer.py +5 -0
- ultralytics/__init__.py +1 -1
- ultralytics/engine/exporter.py +3 -1
- ultralytics/engine/model.py +4 -2
- ultralytics/hub/session.py +1 -0
- ultralytics/models/sam/model.py +1 -1
- ultralytics/models/sam/modules/encoders.py +6 -1
- ultralytics/models/sam/modules/sam.py +24 -0
- ultralytics/models/sam/modules/tiny_encoder.py +22 -1
- ultralytics/models/sam/predict.py +16 -3
- ultralytics/nn/modules/head.py +2 -2
- ultralytics/utils/ops.py +1 -1
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/METADATA +2 -2
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/RECORD +18 -18
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/LICENSE +0 -0
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/WHEEL +0 -0
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.2.83.dist-info → ultralytics-8.2.85.dist-info}/top_level.txt +0 -0
tests/test_explorer.py
CHANGED
|
@@ -5,9 +5,11 @@ import pytest
|
|
|
5
5
|
|
|
6
6
|
from ultralytics import Explorer
|
|
7
7
|
from ultralytics.utils import ASSETS
|
|
8
|
+
from ultralytics.utils.torch_utils import TORCH_1_13
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
@pytest.mark.slow
|
|
12
|
+
@pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
|
|
11
13
|
def test_similarity():
|
|
12
14
|
"""Test the correctness and response length of similarity calculations and SQL queries in the Explorer."""
|
|
13
15
|
exp = Explorer(data="coco8.yaml")
|
|
@@ -25,6 +27,7 @@ def test_similarity():
|
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
@pytest.mark.slow
|
|
30
|
+
@pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
|
|
28
31
|
def test_det():
|
|
29
32
|
"""Test detection functionalities and verify embedding table includes bounding boxes."""
|
|
30
33
|
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
|
|
@@ -38,6 +41,7 @@ def test_det():
|
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
@pytest.mark.slow
|
|
44
|
+
@pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
|
|
41
45
|
def test_seg():
|
|
42
46
|
"""Test segmentation functionalities and ensure the embedding table includes segmentation masks."""
|
|
43
47
|
exp = Explorer(data="coco8-seg.yaml", model="yolov8n-seg.pt")
|
|
@@ -50,6 +54,7 @@ def test_seg():
|
|
|
50
54
|
|
|
51
55
|
|
|
52
56
|
@pytest.mark.slow
|
|
57
|
+
@pytest.mark.skipif(not TORCH_1_13, reason="Explorer requires torch>=1.13")
|
|
53
58
|
def test_pose():
|
|
54
59
|
"""Test pose estimation functionality and verify the embedding table includes keypoints."""
|
|
55
60
|
exp = Explorer(data="coco8-pose.yaml", model="yolov8n-pose.pt")
|
ultralytics/__init__.py
CHANGED
ultralytics/engine/exporter.py
CHANGED
|
@@ -204,8 +204,9 @@ class Exporter:
|
|
|
204
204
|
self.args.half = False
|
|
205
205
|
assert not self.args.dynamic, "half=True not compatible with dynamic=True, i.e. use only one."
|
|
206
206
|
self.imgsz = check_imgsz(self.args.imgsz, stride=model.stride, min_dim=2) # check image size
|
|
207
|
-
if self.args.int8 and (engine or xml):
|
|
207
|
+
if self.args.int8 and not self.args.dynamic and (engine or xml):
|
|
208
208
|
self.args.dynamic = True # enforce dynamic to export TensorRT INT8; ensures ONNX is dynamic
|
|
209
|
+
LOGGER.warning("WARNING ⚠️ INT8 export requires dynamic image sizes, setting dynamic=True.")
|
|
209
210
|
if self.args.optimize:
|
|
210
211
|
assert not ncnn, "optimize=True not compatible with format='ncnn', i.e. use optimize=False"
|
|
211
212
|
assert self.device.type == "cpu", "optimize=True not compatible with cuda devices, i.e. use device='cpu'"
|
|
@@ -248,6 +249,7 @@ class Exporter:
|
|
|
248
249
|
m.dynamic = self.args.dynamic
|
|
249
250
|
m.export = True
|
|
250
251
|
m.format = self.args.format
|
|
252
|
+
m.max_det = self.args.max_det
|
|
251
253
|
elif isinstance(m, C2f) and not is_tf_format:
|
|
252
254
|
# EdgeTPU does not support FlexSplitV while split provides cleaner ONNX graph
|
|
253
255
|
m.forward = m.forward_split
|
ultralytics/engine/model.py
CHANGED
|
@@ -128,8 +128,10 @@ class Model(nn.Module):
|
|
|
128
128
|
if self.is_hub_model(model):
|
|
129
129
|
# Fetch model from HUB
|
|
130
130
|
checks.check_requirements("hub-sdk>=0.0.8")
|
|
131
|
-
|
|
132
|
-
model =
|
|
131
|
+
session = HUBTrainingSession.create_session(model)
|
|
132
|
+
model = session.model_file
|
|
133
|
+
if session.train_args: # training sent from HUB
|
|
134
|
+
self.session = session
|
|
133
135
|
|
|
134
136
|
# Check if Triton Server model
|
|
135
137
|
elif self.is_triton_model(model):
|
ultralytics/hub/session.py
CHANGED
ultralytics/models/sam/model.py
CHANGED
|
@@ -106,7 +106,7 @@ class SAM(Model):
|
|
|
106
106
|
... print(f"Detected {len(r.masks)} masks")
|
|
107
107
|
"""
|
|
108
108
|
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
|
|
109
|
-
kwargs
|
|
109
|
+
kwargs = {**overrides, **kwargs}
|
|
110
110
|
prompts = dict(bboxes=bboxes, points=points, labels=labels)
|
|
111
111
|
return super().predict(source, stream, prompts=prompts, **kwargs)
|
|
112
112
|
|
|
@@ -151,7 +151,12 @@ class ImageEncoderViT(nn.Module):
|
|
|
151
151
|
"""Processes input through patch embedding, positional embedding, transformer blocks, and neck module."""
|
|
152
152
|
x = self.patch_embed(x)
|
|
153
153
|
if self.pos_embed is not None:
|
|
154
|
-
|
|
154
|
+
pos_embed = (
|
|
155
|
+
F.interpolate(self.pos_embed.permute(0, 3, 1, 2), scale_factor=self.img_size / 1024).permute(0, 2, 3, 1)
|
|
156
|
+
if self.img_size != 1024
|
|
157
|
+
else self.pos_embed
|
|
158
|
+
)
|
|
159
|
+
x = x + pos_embed
|
|
155
160
|
for blk in self.blocks:
|
|
156
161
|
x = blk(x)
|
|
157
162
|
return self.neck(x.permute(0, 3, 1, 2))
|
|
@@ -90,6 +90,19 @@ class SAMModel(nn.Module):
|
|
|
90
90
|
self.register_buffer("pixel_mean", torch.Tensor(pixel_mean).view(-1, 1, 1), False)
|
|
91
91
|
self.register_buffer("pixel_std", torch.Tensor(pixel_std).view(-1, 1, 1), False)
|
|
92
92
|
|
|
93
|
+
def set_imgsz(self, imgsz):
|
|
94
|
+
"""
|
|
95
|
+
Set image size to make model compatible with different image sizes.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
imgsz (Tuple[int, int]): The size of the input image.
|
|
99
|
+
"""
|
|
100
|
+
if hasattr(self.image_encoder, "set_imgsz"):
|
|
101
|
+
self.image_encoder.set_imgsz(imgsz)
|
|
102
|
+
self.prompt_encoder.input_image_size = imgsz
|
|
103
|
+
self.prompt_encoder.image_embedding_size = [x // 16 for x in imgsz] # 16 is fixed as patch size of ViT model
|
|
104
|
+
self.image_encoder.img_size = imgsz[0]
|
|
105
|
+
|
|
93
106
|
|
|
94
107
|
class SAM2Model(torch.nn.Module):
|
|
95
108
|
"""
|
|
@@ -940,3 +953,14 @@ class SAM2Model(torch.nn.Module):
|
|
|
940
953
|
# don't overlap (here sigmoid(-10.0)=4.5398e-05)
|
|
941
954
|
pred_masks = torch.where(keep, pred_masks, torch.clamp(pred_masks, max=-10.0))
|
|
942
955
|
return pred_masks
|
|
956
|
+
|
|
957
|
+
def set_imgsz(self, imgsz):
|
|
958
|
+
"""
|
|
959
|
+
Set image size to make model compatible with different image sizes.
|
|
960
|
+
|
|
961
|
+
Args:
|
|
962
|
+
imgsz (Tuple[int, int]): The size of the input image.
|
|
963
|
+
"""
|
|
964
|
+
self.image_size = imgsz[0]
|
|
965
|
+
self.sam_prompt_encoder.input_image_size = imgsz
|
|
966
|
+
self.sam_prompt_encoder.image_embedding_size = [x // 16 for x in imgsz] # fixed ViT patch size of 16
|
|
@@ -982,10 +982,31 @@ class TinyViT(nn.Module):
|
|
|
982
982
|
layer = self.layers[i]
|
|
983
983
|
x = layer(x)
|
|
984
984
|
batch, _, channel = x.shape
|
|
985
|
-
x = x.view(batch,
|
|
985
|
+
x = x.view(batch, self.patches_resolution[0] // 4, self.patches_resolution[1] // 4, channel)
|
|
986
986
|
x = x.permute(0, 3, 1, 2)
|
|
987
987
|
return self.neck(x)
|
|
988
988
|
|
|
989
989
|
def forward(self, x):
|
|
990
990
|
"""Performs the forward pass through the TinyViT model, extracting features from the input image."""
|
|
991
991
|
return self.forward_features(x)
|
|
992
|
+
|
|
993
|
+
def set_imgsz(self, imgsz=[1024, 1024]):
|
|
994
|
+
"""
|
|
995
|
+
Set image size to make model compatible with different image sizes.
|
|
996
|
+
|
|
997
|
+
Args:
|
|
998
|
+
imgsz (Tuple[int, int]): The size of the input image.
|
|
999
|
+
"""
|
|
1000
|
+
imgsz = [s // 4 for s in imgsz]
|
|
1001
|
+
self.patches_resolution = imgsz
|
|
1002
|
+
for i, layer in enumerate(self.layers):
|
|
1003
|
+
input_resolution = (
|
|
1004
|
+
imgsz[0] // (2 ** (i - 1 if i == 3 else i)),
|
|
1005
|
+
imgsz[1] // (2 ** (i - 1 if i == 3 else i)),
|
|
1006
|
+
)
|
|
1007
|
+
layer.input_resolution = input_resolution
|
|
1008
|
+
if layer.downsample is not None:
|
|
1009
|
+
layer.downsample.input_resolution = input_resolution
|
|
1010
|
+
if isinstance(layer, BasicLayer):
|
|
1011
|
+
for b in layer.blocks:
|
|
1012
|
+
b.input_resolution = input_resolution
|
|
@@ -95,7 +95,7 @@ class Predictor(BasePredictor):
|
|
|
95
95
|
"""
|
|
96
96
|
if overrides is None:
|
|
97
97
|
overrides = {}
|
|
98
|
-
overrides.update(dict(task="segment", mode="predict"
|
|
98
|
+
overrides.update(dict(task="segment", mode="predict"))
|
|
99
99
|
super().__init__(cfg, overrides, _callbacks)
|
|
100
100
|
self.args.retina_masks = True
|
|
101
101
|
self.im = None
|
|
@@ -455,8 +455,11 @@ class Predictor(BasePredictor):
|
|
|
455
455
|
cls = torch.arange(len(pred_masks), dtype=torch.int32, device=pred_masks.device)
|
|
456
456
|
pred_bboxes = torch.cat([pred_bboxes, pred_scores[:, None], cls[:, None]], dim=-1)
|
|
457
457
|
|
|
458
|
-
|
|
459
|
-
|
|
458
|
+
if len(masks) == 0:
|
|
459
|
+
masks = None
|
|
460
|
+
else:
|
|
461
|
+
masks = ops.scale_masks(masks[None].float(), orig_img.shape[:2], padding=False)[0]
|
|
462
|
+
masks = masks > self.model.mask_threshold # to bool
|
|
460
463
|
results.append(Results(orig_img, path=img_path, names=names, masks=masks, boxes=pred_bboxes))
|
|
461
464
|
# Reset segment-all mode.
|
|
462
465
|
self.segment_all = False
|
|
@@ -522,6 +525,10 @@ class Predictor(BasePredictor):
|
|
|
522
525
|
|
|
523
526
|
def get_im_features(self, im):
|
|
524
527
|
"""Extracts image features using the SAM model's image encoder for subsequent mask prediction."""
|
|
528
|
+
assert (
|
|
529
|
+
isinstance(self.imgsz, (tuple, list)) and self.imgsz[0] == self.imgsz[1]
|
|
530
|
+
), f"SAM models only support square image size, but got {self.imgsz}."
|
|
531
|
+
self.model.set_imgsz(self.imgsz)
|
|
525
532
|
return self.model.image_encoder(im)
|
|
526
533
|
|
|
527
534
|
def set_prompts(self, prompts):
|
|
@@ -761,6 +768,12 @@ class SAM2Predictor(Predictor):
|
|
|
761
768
|
|
|
762
769
|
def get_im_features(self, im):
|
|
763
770
|
"""Extracts image features from the SAM image encoder for subsequent processing."""
|
|
771
|
+
assert (
|
|
772
|
+
isinstance(self.imgsz, (tuple, list)) and self.imgsz[0] == self.imgsz[1]
|
|
773
|
+
), f"SAM 2 models only support square image size, but got {self.imgsz}."
|
|
774
|
+
self.model.set_imgsz(self.imgsz)
|
|
775
|
+
self._bb_feat_sizes = [[x // (4 * i) for x in self.imgsz] for i in [1, 2, 4]]
|
|
776
|
+
|
|
764
777
|
backbone_out = self.model.forward_image(im)
|
|
765
778
|
_, vision_feats, _, _ = self.model._prepare_backbone_features(backbone_out)
|
|
766
779
|
if self.model.directly_add_no_mem_embed:
|
ultralytics/nn/modules/head.py
CHANGED
|
@@ -144,12 +144,12 @@ class Detect(nn.Module):
|
|
|
144
144
|
(torch.Tensor): Processed predictions with shape (batch_size, min(max_det, num_anchors), 6) and last
|
|
145
145
|
dimension format [x, y, w, h, max_class_prob, class_index].
|
|
146
146
|
"""
|
|
147
|
-
batch_size, anchors,
|
|
147
|
+
batch_size, anchors, _ = preds.shape # i.e. shape(16,8400,84)
|
|
148
148
|
boxes, scores = preds.split([4, nc], dim=-1)
|
|
149
149
|
index = scores.amax(dim=-1).topk(min(max_det, anchors))[1].unsqueeze(-1)
|
|
150
150
|
boxes = boxes.gather(dim=1, index=index.repeat(1, 1, 4))
|
|
151
151
|
scores = scores.gather(dim=1, index=index.repeat(1, 1, nc))
|
|
152
|
-
scores, index = scores.flatten(1).topk(max_det)
|
|
152
|
+
scores, index = scores.flatten(1).topk(min(max_det, anchors))
|
|
153
153
|
i = torch.arange(batch_size)[..., None] # batch indices
|
|
154
154
|
return torch.cat([boxes[i, index // nc], scores[..., None], (index % nc)[..., None].float()], dim=-1)
|
|
155
155
|
|
ultralytics/utils/ops.py
CHANGED
|
@@ -218,7 +218,7 @@ def non_max_suppression(
|
|
|
218
218
|
classes = torch.tensor(classes, device=prediction.device)
|
|
219
219
|
|
|
220
220
|
if prediction.shape[-1] == 6: # end-to-end model (BNC, i.e. 1,300,6)
|
|
221
|
-
output = [pred[pred[:, 4] > conf_thres] for pred in prediction]
|
|
221
|
+
output = [pred[pred[:, 4] > conf_thres][:max_det] for pred in prediction]
|
|
222
222
|
if classes is not None:
|
|
223
223
|
output = [pred[(pred[:, 5:6] == classes).any(1)] for pred in output]
|
|
224
224
|
return output
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.85
|
|
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.1.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.6; extra == "dev"
|
|
59
59
|
Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
|
|
60
60
|
Provides-Extra: explorer
|
|
61
61
|
Requires-Dist: lancedb; extra == "explorer"
|
|
@@ -3,12 +3,12 @@ tests/conftest.py,sha256=3ZtD4VlMKK5jVJwIPCrNAcG63vywJzdLq7U2AfYR2VI,2919
|
|
|
3
3
|
tests/test_cli.py,sha256=as6cuNdDF2s_h3DxVXKmy45V3DXWB6y40xect93TKHc,4810
|
|
4
4
|
tests/test_cuda.py,sha256=uD-ddNEcBMFQmQ9iE4fIGh0EIcGwEoDEUNVCEHicaWE,5133
|
|
5
5
|
tests/test_engine.py,sha256=xW-UT9_9xZp-7-hSnbJgMw_ezTk6NqTOIiA59XZDmxA,4934
|
|
6
|
-
tests/test_explorer.py,sha256=
|
|
6
|
+
tests/test_explorer.py,sha256=IMFvZ9uMoEXVC5FwdaVh0821wBgs7muVF6aw1F-auAI,2572
|
|
7
7
|
tests/test_exports.py,sha256=Uezf3OatpPHlo5qoPw-2kqkZxuMCF9L4XF2riD4vmII,8225
|
|
8
8
|
tests/test_integrations.py,sha256=xglcfMPjfVh346PV8WTpk6tBxraCXEFJEQyyJMr5tyU,6064
|
|
9
9
|
tests/test_python.py,sha256=SxBf5GNu7vXQP8QxTlSOzCzcQNN0PLA6EX8M33VDHsU,21927
|
|
10
10
|
tests/test_solutions.py,sha256=p_2edhl96Ty3jwzSf02Q2m2mTu9skc0Z-eMcUuuXfLg,3300
|
|
11
|
-
ultralytics/__init__.py,sha256=
|
|
11
|
+
ultralytics/__init__.py,sha256=CYC3oYkIVt9BRuPGKa6heCwh_I4xsSvaUgy7ObTtOpo,694
|
|
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
|
|
@@ -98,8 +98,8 @@ 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=
|
|
102
|
-
ultralytics/engine/model.py,sha256=
|
|
101
|
+
ultralytics/engine/exporter.py,sha256=e7j3RBTtXyZaLnzmm7kLdgeIqa1yHOEeotd9h2WxFH8,59069
|
|
102
|
+
ultralytics/engine/model.py,sha256=AB9tu7kJW-QiTAp0F_J8KQJ4FijsHXcYBTaVHb7aMrg,52281
|
|
103
103
|
ultralytics/engine/predictor.py,sha256=TtCOhjCOAz4iUXog8V2h_3VhsKPJM8HmP3i6W_qqdhk,17460
|
|
104
104
|
ultralytics/engine/results.py,sha256=PgRcz90S7eMwlogqEvax8O1sU3CPA2tEmrAL5kSr6II,70537
|
|
105
105
|
ultralytics/engine/trainer.py,sha256=ebFsES6KfVlVoCx9xeEpGDtVDumEndTHqojbcs9BzHg,35940
|
|
@@ -107,7 +107,7 @@ ultralytics/engine/tuner.py,sha256=gPqDTHH7vRB2O3YyH26m1BjVKbXxuA2XAlPRzTKFZsc,1
|
|
|
107
107
|
ultralytics/engine/validator.py,sha256=u7qh9AiHasfhIqwojfjvAY8B2IIhd2MIHRwTxsTP6RY,14586
|
|
108
108
|
ultralytics/hub/__init__.py,sha256=AM_twjV9ouUmyxh3opoPgTqDpMOd8xIOHsAKdWS2L18,5663
|
|
109
109
|
ultralytics/hub/auth.py,sha256=kDLakGa2NbzvMAeXc2UdzZ65r0AH-XeM_JfsDY97WGk,5545
|
|
110
|
-
ultralytics/hub/session.py,sha256=
|
|
110
|
+
ultralytics/hub/session.py,sha256=_5yQNKkeaOnxwBeL85ueCgR-IYnDQ89WuzFNjTNPflU,16888
|
|
111
111
|
ultralytics/hub/utils.py,sha256=tXfM3QbXBcf4Y6StgHI1pktT4OM7Ic9eF3xiBFHGlhY,9721
|
|
112
112
|
ultralytics/hub/google/__init__.py,sha256=qyvvpGP-4NAtrn7GLqfqxP_aWuRP1T0OvJYafWKvL2Q,7512
|
|
113
113
|
ultralytics/models/__init__.py,sha256=TT9iLCL_n9Y80dcUq0Fo-p-GRZCSU2vrWXM3CoMwqqE,265
|
|
@@ -128,15 +128,15 @@ ultralytics/models/rtdetr/val.py,sha256=xVjZShZ1AvES97wVekl2q_1g20Pq-IIHhkJdWtxM
|
|
|
128
128
|
ultralytics/models/sam/__init__.py,sha256=o4_D6y8YJlOXIK7Lwo9RHnIJJ9xoFNi4zK99QSc1kdM,176
|
|
129
129
|
ultralytics/models/sam/amg.py,sha256=GrmO_8YfIDt_QkPEMF_WFjPZkhwhf7iwx7ig8JgOUnE,8709
|
|
130
130
|
ultralytics/models/sam/build.py,sha256=zNQbrgSHUgz1gyXQwLKGTpa6CSEjeaevcP3w1Z1l3mo,12233
|
|
131
|
-
ultralytics/models/sam/model.py,sha256=
|
|
132
|
-
ultralytics/models/sam/predict.py,sha256=
|
|
131
|
+
ultralytics/models/sam/model.py,sha256=2KFUp8SHiqOgwUjkdqdau0oduJwKQxm4N9GHWjdhUFo,7382
|
|
132
|
+
ultralytics/models/sam/predict.py,sha256=4HOvBp27MvO8ef3gD64wVooNT1P5eMy3Bk8W7ysU57o,38352
|
|
133
133
|
ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
134
134
|
ultralytics/models/sam/modules/blocks.py,sha256=qXCXMqkQG0fpAvCkA9TrtimfOLDtyJfCx3bDfh3bJUs,45974
|
|
135
135
|
ultralytics/models/sam/modules/decoders.py,sha256=qDr12mDvDA-VIMI7Q9oIYBG9DQcvxDFpPzyAjyqrcbg,25896
|
|
136
|
-
ultralytics/models/sam/modules/encoders.py,sha256=
|
|
136
|
+
ultralytics/models/sam/modules/encoders.py,sha256=vDOv8sdbcWc31aVn7hg-JyLP6CRziPep5FPDG2wxwns,34848
|
|
137
137
|
ultralytics/models/sam/modules/memory_attention.py,sha256=XilWBnRfH8wZxIoL2-yEk-dRypCsS0Jf_9t8WJxXKg0,9722
|
|
138
|
-
ultralytics/models/sam/modules/sam.py,sha256=
|
|
139
|
-
ultralytics/models/sam/modules/tiny_encoder.py,sha256=
|
|
138
|
+
ultralytics/models/sam/modules/sam.py,sha256=0Df9psft2-uShp-WTP1oZT6x5QSE9S0i7XKBdZ4tpfE,50507
|
|
139
|
+
ultralytics/models/sam/modules/tiny_encoder.py,sha256=NyzeFMLnmqwcFQFs-JBM9PCWSsYoYZ_6h59Un1DeDV0,41332
|
|
140
140
|
ultralytics/models/sam/modules/transformer.py,sha256=oMlns0i_bcEqdcdnDJzeM7er2_yqqdYk4hZd3QbEGWQ,16154
|
|
141
141
|
ultralytics/models/sam/modules/utils.py,sha256=Y36V6BVy6GeaAvKE8gHmoDIa-f5LjJpmSVwywNkv2yk,12315
|
|
142
142
|
ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
@@ -174,7 +174,7 @@ ultralytics/nn/modules/__init__.py,sha256=m8x-XRHVLWMECPeysVlv1TQenV-n8oAbK1gxno
|
|
|
174
174
|
ultralytics/nn/modules/activation.py,sha256=RS0DRDm9r56tojN79X8UBVtiktde9Wasw7GIbiopSMk,945
|
|
175
175
|
ultralytics/nn/modules/block.py,sha256=NGCF4giEy0POEF0m-b3DCPqiYpOWRv4c4jcBvFkIErw,34378
|
|
176
176
|
ultralytics/nn/modules/conv.py,sha256=zAnLM2G3PkfhcPvh9J4TBOZqeN9xAnxV821oFNOsAGQ,12693
|
|
177
|
-
ultralytics/nn/modules/head.py,sha256=
|
|
177
|
+
ultralytics/nn/modules/head.py,sha256=C_toYU2yvDs9pCNhIwh3yr0D68_-V75L6BcBwZIPQkU,26456
|
|
178
178
|
ultralytics/nn/modules/transformer.py,sha256=tGiK8NmPfswwW1rbF21r5ILUkkZQ6Nk4s8j16vFBmps,18069
|
|
179
179
|
ultralytics/nn/modules/utils.py,sha256=a88cKl2wz1nMVSEBiajtvaCbDBQIkESWOKTZ_WAJy90,3195
|
|
180
180
|
ultralytics/solutions/__init__.py,sha256=6RDeXWO1QSaMgCq8YrWXaj2xvPw2sJwJL_a0dgjCvz0,648
|
|
@@ -207,7 +207,7 @@ ultralytics/utils/files.py,sha256=zxKNaH6YJvGKrD4DVPk0kkoo44Q7Xi-n_1Fy48TzTxw,82
|
|
|
207
207
|
ultralytics/utils/instance.py,sha256=QSms7mPHZ5e8JGuJYLohLWltzI0aBE8dob2rOUK4RtM,16249
|
|
208
208
|
ultralytics/utils/loss.py,sha256=mDHGmF-gjggAUVhI1dkCm7TtfZHCwz25XKm4M2xJKLs,33916
|
|
209
209
|
ultralytics/utils/metrics.py,sha256=OIRyet-EvUwzo1baad-aeQ90H0w9cHANNTfUkqhuc_M,53927
|
|
210
|
-
ultralytics/utils/ops.py,sha256=
|
|
210
|
+
ultralytics/utils/ops.py,sha256=dsXNdyrYx_p6io6zezig9p84dxS7U-10vceHNVu2IL0,32888
|
|
211
211
|
ultralytics/utils/patches.py,sha256=Oo3DkP7MbXnNGvPfoFSocAkVvaPh9kwMT_9RQUfjVhI,3594
|
|
212
212
|
ultralytics/utils/plotting.py,sha256=m-JR-kAS_l3i-Dy1sFnGxfJuGGb0jlJZWZKORQtYZtQ,56183
|
|
213
213
|
ultralytics/utils/tal.py,sha256=ECsu95xEqOItmxMDN4YTD3FsUiIsQNWy0pZC3TfvFfk,16877
|
|
@@ -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.85.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
229
|
+
ultralytics-8.2.85.dist-info/METADATA,sha256=42tXAY42rYGY7Fg9wVlixKhq8Tw7VKCoaTl9_o8860s,41778
|
|
230
|
+
ultralytics-8.2.85.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
|
231
|
+
ultralytics-8.2.85.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
232
|
+
ultralytics-8.2.85.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
233
|
+
ultralytics-8.2.85.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|