ultralytics 8.1.43__py3-none-any.whl → 8.1.44__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 +3 -2
- ultralytics/cfg/models/v9/yolov9c-seg.yaml +1 -1
- ultralytics/cfg/models/v9/yolov9c.yaml +1 -1
- ultralytics/cfg/models/v9/yolov9e-seg.yaml +2 -3
- ultralytics/cfg/models/v9/yolov9e.yaml +2 -3
- ultralytics/data/__init__.py +3 -8
- ultralytics/data/augment.py +2 -2
- ultralytics/data/base.py +1 -1
- ultralytics/data/build.py +1 -1
- ultralytics/data/converter.py +4 -3
- ultralytics/data/dataset.py +2 -2
- ultralytics/data/explorer/explorer.py +6 -5
- ultralytics/data/loaders.py +3 -3
- ultralytics/data/utils.py +1 -1
- ultralytics/engine/model.py +2 -1
- ultralytics/engine/trainer.py +1 -0
- ultralytics/hub/auth.py +3 -3
- ultralytics/hub/session.py +3 -3
- ultralytics/hub/utils.py +6 -6
- ultralytics/models/rtdetr/val.py +1 -1
- ultralytics/models/sam/modules/tiny_encoder.py +2 -2
- ultralytics/models/sam/modules/transformer.py +1 -1
- ultralytics/models/sam/predict.py +12 -12
- ultralytics/models/yolo/detect/val.py +1 -1
- ultralytics/models/yolo/model.py +1 -1
- ultralytics/models/yolo/obb/val.py +1 -1
- ultralytics/models/yolo/world/train_world.py +2 -2
- ultralytics/nn/modules/__init__.py +8 -8
- ultralytics/nn/modules/head.py +1 -1
- ultralytics/nn/tasks.py +7 -7
- ultralytics/solutions/object_counter.py +1 -0
- ultralytics/trackers/byte_tracker.py +1 -1
- ultralytics/trackers/utils/kalman_filter.py +4 -4
- ultralytics/trackers/utils/matching.py +1 -1
- ultralytics/utils/__init__.py +53 -41
- ultralytics/utils/callbacks/hub.py +1 -4
- ultralytics/utils/callbacks/mlflow.py +1 -1
- ultralytics/utils/callbacks/tensorboard.py +1 -0
- ultralytics/utils/checks.py +12 -12
- ultralytics/utils/torch_utils.py +1 -1
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/METADATA +1 -1
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/RECORD +46 -46
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/LICENSE +0 -0
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/WHEEL +0 -0
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/entry_points.txt +0 -0
- {ultralytics-8.1.43.dist-info → ultralytics-8.1.44.dist-info}/top_level.txt +0 -0
ultralytics/__init__.py
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
|
-
__version__ = "8.1.
|
|
3
|
+
__version__ = "8.1.44"
|
|
4
4
|
|
|
5
5
|
from ultralytics.data.explorer.explorer import Explorer
|
|
6
6
|
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
|
|
7
7
|
from ultralytics.models.fastsam import FastSAM
|
|
8
8
|
from ultralytics.models.nas import NAS
|
|
9
|
-
from ultralytics.utils import ASSETS, SETTINGS
|
|
9
|
+
from ultralytics.utils import ASSETS, SETTINGS
|
|
10
10
|
from ultralytics.utils.checks import check_yolo as checks
|
|
11
11
|
from ultralytics.utils.downloads import download
|
|
12
12
|
|
|
13
|
+
settings = SETTINGS
|
|
13
14
|
__all__ = (
|
|
14
15
|
"__version__",
|
|
15
16
|
"ASSETS",
|
|
@@ -17,13 +17,13 @@ backbone:
|
|
|
17
17
|
- [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
|
|
18
18
|
- [-1, 1, ADown, [1024]] # 8-P5/32
|
|
19
19
|
- [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
- [1, 1, CBLinear, [[64]]] # 10
|
|
22
22
|
- [3, 1, CBLinear, [[64, 128]]] # 11
|
|
23
23
|
- [5, 1, CBLinear, [[64, 128, 256]]] # 12
|
|
24
24
|
- [7, 1, CBLinear, [[64, 128, 256, 512]]] # 13
|
|
25
25
|
- [9, 1, CBLinear, [[64, 128, 256, 512, 1024]]] # 14
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
- [0, 1, Conv, [64, 3, 2]] # 15-P1/2
|
|
28
28
|
- [[10, 11, 12, 13, 14, -1], 1, CBFuse, [[0, 0, 0, 0, 0]]] # 16
|
|
29
29
|
- [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
|
|
@@ -58,5 +58,4 @@ head:
|
|
|
58
58
|
- [[-1, 29], 1, Concat, [1]] # cat head P5
|
|
59
59
|
- [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
|
|
60
60
|
|
|
61
|
-
# segment
|
|
62
61
|
- [[35, 38, 41], 1, Segment, [nc, 32, 256]] # Segment (P3, P4, P5)
|
|
@@ -17,13 +17,13 @@ backbone:
|
|
|
17
17
|
- [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
|
|
18
18
|
- [-1, 1, ADown, [1024]] # 8-P5/32
|
|
19
19
|
- [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
- [1, 1, CBLinear, [[64]]] # 10
|
|
22
22
|
- [3, 1, CBLinear, [[64, 128]]] # 11
|
|
23
23
|
- [5, 1, CBLinear, [[64, 128, 256]]] # 12
|
|
24
24
|
- [7, 1, CBLinear, [[64, 128, 256, 512]]] # 13
|
|
25
25
|
- [9, 1, CBLinear, [[64, 128, 256, 512, 1024]]] # 14
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
- [0, 1, Conv, [64, 3, 2]] # 15-P1/2
|
|
28
28
|
- [[10, 11, 12, 13, 14, -1], 1, CBFuse, [[0, 0, 0, 0, 0]]] # 16
|
|
29
29
|
- [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
|
|
@@ -58,5 +58,4 @@ head:
|
|
|
58
58
|
- [[-1, 29], 1, Concat, [1]] # cat head P5
|
|
59
59
|
- [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
|
|
60
60
|
|
|
61
|
-
# detect
|
|
62
61
|
- [[35, 38, 41], 1, Detect, [nc]] # Detect(P3, P4, P5)
|
ultralytics/data/__init__.py
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
3
|
from .base import BaseDataset
|
|
4
|
-
from .build import
|
|
5
|
-
build_dataloader,
|
|
6
|
-
build_yolo_dataset,
|
|
7
|
-
build_grounding,
|
|
8
|
-
load_inference_source,
|
|
9
|
-
)
|
|
4
|
+
from .build import build_dataloader, build_grounding, build_yolo_dataset, load_inference_source
|
|
10
5
|
from .dataset import (
|
|
11
6
|
ClassificationDataset,
|
|
7
|
+
GroundingDataset,
|
|
12
8
|
SemanticDataset,
|
|
9
|
+
YOLOConcatDataset,
|
|
13
10
|
YOLODataset,
|
|
14
11
|
YOLOMultiModalDataset,
|
|
15
|
-
GroundingDataset,
|
|
16
|
-
YOLOConcatDataset,
|
|
17
12
|
)
|
|
18
13
|
|
|
19
14
|
__all__ = (
|
ultralytics/data/augment.py
CHANGED
|
@@ -20,7 +20,7 @@ from .utils import polygons2masks, polygons2masks_overlap
|
|
|
20
20
|
|
|
21
21
|
DEFAULT_MEAN = (0.0, 0.0, 0.0)
|
|
22
22
|
DEFAULT_STD = (1.0, 1.0, 1.0)
|
|
23
|
-
|
|
23
|
+
DEFAULT_CROP_FRACTION = 1.0
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
# TODO: we might need a BaseTransform to make all these augments be compatible with both classification and semantic
|
|
@@ -1134,7 +1134,7 @@ def classify_transforms(
|
|
|
1134
1134
|
mean=DEFAULT_MEAN,
|
|
1135
1135
|
std=DEFAULT_STD,
|
|
1136
1136
|
interpolation=Image.BILINEAR,
|
|
1137
|
-
crop_fraction: float =
|
|
1137
|
+
crop_fraction: float = DEFAULT_CROP_FRACTION,
|
|
1138
1138
|
):
|
|
1139
1139
|
"""
|
|
1140
1140
|
Classification transforms for evaluation/inference. Inspired by timm/data/transforms_factory.py.
|
ultralytics/data/base.py
CHANGED
|
@@ -15,7 +15,7 @@ import psutil
|
|
|
15
15
|
from torch.utils.data import Dataset
|
|
16
16
|
|
|
17
17
|
from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
|
|
18
|
-
from .utils import
|
|
18
|
+
from .utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class BaseDataset(Dataset):
|
ultralytics/data/build.py
CHANGED
|
@@ -22,7 +22,7 @@ from ultralytics.data.loaders import (
|
|
|
22
22
|
from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
|
|
23
23
|
from ultralytics.utils import RANK, colorstr
|
|
24
24
|
from ultralytics.utils.checks import check_file
|
|
25
|
-
from .dataset import YOLODataset, YOLOMultiModalDataset
|
|
25
|
+
from .dataset import GroundingDataset, YOLODataset, YOLOMultiModalDataset
|
|
26
26
|
from .utils import PIN_MEMORY
|
|
27
27
|
|
|
28
28
|
|
ultralytics/data/converter.py
CHANGED
|
@@ -519,11 +519,12 @@ def yolo_bbox2segment(im_dir, save_dir=None, sam_model="sam_b.pt"):
|
|
|
519
519
|
├─ ..
|
|
520
520
|
└─ NNN.txt
|
|
521
521
|
"""
|
|
522
|
+
from tqdm import tqdm
|
|
523
|
+
|
|
524
|
+
from ultralytics import SAM
|
|
522
525
|
from ultralytics.data import YOLODataset
|
|
523
|
-
from ultralytics.utils.ops import xywh2xyxy
|
|
524
526
|
from ultralytics.utils import LOGGER
|
|
525
|
-
from ultralytics import
|
|
526
|
-
from tqdm import tqdm
|
|
527
|
+
from ultralytics.utils.ops import xywh2xyxy
|
|
527
528
|
|
|
528
529
|
# NOTE: add placeholder to pass class index check
|
|
529
530
|
dataset = YOLODataset(im_dir, data=dict(names=list(range(1000))))
|
ultralytics/data/dataset.py
CHANGED
|
@@ -30,10 +30,10 @@ from .utils import (
|
|
|
30
30
|
LOGGER,
|
|
31
31
|
get_hash,
|
|
32
32
|
img2label_paths,
|
|
33
|
-
verify_image,
|
|
34
|
-
verify_image_label,
|
|
35
33
|
load_dataset_cache_file,
|
|
36
34
|
save_dataset_cache_file,
|
|
35
|
+
verify_image,
|
|
36
|
+
verify_image_label,
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
# Ultralytics dataset *.cache version, >= 1.0.0 for YOLOv8
|
|
@@ -15,7 +15,7 @@ from ultralytics.data.augment import Format
|
|
|
15
15
|
from ultralytics.data.dataset import YOLODataset
|
|
16
16
|
from ultralytics.data.utils import check_det_dataset
|
|
17
17
|
from ultralytics.models.yolo.model import YOLO
|
|
18
|
-
from ultralytics.utils import LOGGER, IterableSimpleNamespace, checks
|
|
18
|
+
from ultralytics.utils import LOGGER, USER_CONFIG_DIR, IterableSimpleNamespace, checks
|
|
19
19
|
from .utils import get_sim_index_schema, get_table_schema, plot_query_result, prompt_sql_query, sanitize_batch
|
|
20
20
|
|
|
21
21
|
|
|
@@ -203,7 +203,8 @@ class Explorer:
|
|
|
203
203
|
table = self.table.to_arrow() # noqa NOTE: Don't comment this. This line is used by DuckDB
|
|
204
204
|
if not query.startswith("SELECT") and not query.startswith("WHERE"):
|
|
205
205
|
raise ValueError(
|
|
206
|
-
f"Query must start with SELECT or WHERE. You can either pass the entire query or just the WHERE
|
|
206
|
+
f"Query must start with SELECT or WHERE. You can either pass the entire query or just the WHERE "
|
|
207
|
+
f"clause. found {query}"
|
|
207
208
|
)
|
|
208
209
|
if query.startswith("WHERE"):
|
|
209
210
|
query = f"SELECT * FROM 'table' {query}"
|
|
@@ -318,13 +319,13 @@ class Explorer:
|
|
|
318
319
|
|
|
319
320
|
Args:
|
|
320
321
|
max_dist (float): maximum L2 distance between the embeddings to consider. Defaults to 0.2.
|
|
321
|
-
top_k (float): Percentage of the closest data points to consider when counting. Used to apply limit
|
|
322
|
+
top_k (float): Percentage of the closest data points to consider when counting. Used to apply limit.
|
|
322
323
|
vector search. Defaults: None.
|
|
323
324
|
force (bool): Whether to overwrite the existing similarity index or not. Defaults to True.
|
|
324
325
|
|
|
325
326
|
Returns:
|
|
326
|
-
(pandas.DataFrame): A dataframe containing the similarity index. Each row corresponds to an image,
|
|
327
|
-
|
|
327
|
+
(pandas.DataFrame): A dataframe containing the similarity index. Each row corresponds to an image,
|
|
328
|
+
and columns include indices of similar images and their respective distances.
|
|
328
329
|
|
|
329
330
|
Example:
|
|
330
331
|
```python
|
ultralytics/data/loaders.py
CHANGED
|
@@ -15,8 +15,8 @@ import requests
|
|
|
15
15
|
import torch
|
|
16
16
|
from PIL import Image
|
|
17
17
|
|
|
18
|
-
from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
|
|
19
|
-
from ultralytics.utils import
|
|
18
|
+
from ultralytics.data.utils import FORMATS_HELP_MSG, IMG_FORMATS, VID_FORMATS
|
|
19
|
+
from ultralytics.utils import IS_COLAB, IS_KAGGLE, LOGGER, ops
|
|
20
20
|
from ultralytics.utils.checks import check_requirements
|
|
21
21
|
|
|
22
22
|
|
|
@@ -87,7 +87,7 @@ class LoadStreams:
|
|
|
87
87
|
# YouTube format i.e. 'https://www.youtube.com/watch?v=Zgi9g1ksQHc' or 'https://youtu.be/LNwODJXcvt4'
|
|
88
88
|
s = get_best_youtube_url(s)
|
|
89
89
|
s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam
|
|
90
|
-
if s == 0 and (
|
|
90
|
+
if s == 0 and (IS_COLAB or IS_KAGGLE):
|
|
91
91
|
raise NotImplementedError(
|
|
92
92
|
"'source=0' webcam not supported in Colab and Kaggle notebooks. "
|
|
93
93
|
"Try running 'source=0' in a local environment."
|
ultralytics/data/utils.py
CHANGED
|
@@ -27,9 +27,9 @@ from ultralytics.utils import (
|
|
|
27
27
|
clean_url,
|
|
28
28
|
colorstr,
|
|
29
29
|
emojis,
|
|
30
|
+
is_dir_writeable,
|
|
30
31
|
yaml_load,
|
|
31
32
|
yaml_save,
|
|
32
|
-
is_dir_writeable,
|
|
33
33
|
)
|
|
34
34
|
from ultralytics.utils.checks import check_file, check_font, is_ascii
|
|
35
35
|
from ultralytics.utils.downloads import download, safe_download, unzip_file
|
ultralytics/engine/model.py
CHANGED
|
@@ -321,9 +321,10 @@ class Model(nn.Module):
|
|
|
321
321
|
AssertionError: If the model is not a PyTorch model.
|
|
322
322
|
"""
|
|
323
323
|
self._check_is_pytorch_model()
|
|
324
|
-
from ultralytics import __version__
|
|
325
324
|
from datetime import datetime
|
|
326
325
|
|
|
326
|
+
from ultralytics import __version__
|
|
327
|
+
|
|
327
328
|
updates = {
|
|
328
329
|
"date": datetime.now().isoformat(),
|
|
329
330
|
"version": __version__,
|
ultralytics/engine/trainer.py
CHANGED
|
@@ -464,6 +464,7 @@ class BaseTrainer:
|
|
|
464
464
|
def save_model(self):
|
|
465
465
|
"""Save model training checkpoints with additional metadata."""
|
|
466
466
|
import io
|
|
467
|
+
|
|
467
468
|
import pandas as pd # scope for faster 'import ultralytics'
|
|
468
469
|
|
|
469
470
|
# Serialize ckpt to a byte buffer once (faster than repeated torch.save() calls)
|
ultralytics/hub/auth.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import requests
|
|
4
4
|
|
|
5
5
|
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, request_with_credentials
|
|
6
|
-
from ultralytics.utils import LOGGER, SETTINGS, emojis
|
|
6
|
+
from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, emojis
|
|
7
7
|
|
|
8
8
|
API_KEY_URL = f"{HUB_WEB_ROOT}/settings?tab=api+keys"
|
|
9
9
|
|
|
@@ -50,7 +50,7 @@ class Auth:
|
|
|
50
50
|
# Attempt to authenticate with the provided API key
|
|
51
51
|
success = self.authenticate()
|
|
52
52
|
# If the API key is not provided and the environment is a Google Colab notebook
|
|
53
|
-
elif
|
|
53
|
+
elif IS_COLAB:
|
|
54
54
|
# Attempt to authenticate using browser cookies
|
|
55
55
|
success = self.auth_with_cookies()
|
|
56
56
|
else:
|
|
@@ -109,7 +109,7 @@ class Auth:
|
|
|
109
109
|
Returns:
|
|
110
110
|
(bool): True if authentication is successful, False otherwise.
|
|
111
111
|
"""
|
|
112
|
-
if not
|
|
112
|
+
if not IS_COLAB:
|
|
113
113
|
return False # Currently only works with Colab
|
|
114
114
|
try:
|
|
115
115
|
authn = request_with_credentials(f"{HUB_API_ROOT}/v1/auth/auto")
|
ultralytics/hub/session.py
CHANGED
|
@@ -7,11 +7,11 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
import requests
|
|
9
9
|
|
|
10
|
-
from ultralytics.hub.utils import
|
|
11
|
-
from ultralytics.utils import LOGGER, SETTINGS, __version__, checks, emojis
|
|
10
|
+
from ultralytics.hub.utils import HELP_MSG, HUB_WEB_ROOT, PREFIX, TQDM
|
|
11
|
+
from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, __version__, checks, emojis
|
|
12
12
|
from ultralytics.utils.errors import HUBModelError
|
|
13
13
|
|
|
14
|
-
AGENT_NAME = f"python-{__version__}-colab" if
|
|
14
|
+
AGENT_NAME = f"python-{__version__}-colab" if IS_COLAB else f"python-{__version__}-local"
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class HUBTrainingSession:
|
ultralytics/hub/utils.py
CHANGED
|
@@ -12,6 +12,9 @@ import requests
|
|
|
12
12
|
from ultralytics.utils import (
|
|
13
13
|
ARGV,
|
|
14
14
|
ENVIRONMENT,
|
|
15
|
+
IS_COLAB,
|
|
16
|
+
IS_GIT_DIR,
|
|
17
|
+
IS_PIP_PACKAGE,
|
|
15
18
|
LOGGER,
|
|
16
19
|
ONLINE,
|
|
17
20
|
RANK,
|
|
@@ -22,9 +25,6 @@ from ultralytics.utils import (
|
|
|
22
25
|
__version__,
|
|
23
26
|
colorstr,
|
|
24
27
|
get_git_origin_url,
|
|
25
|
-
is_colab,
|
|
26
|
-
is_git_dir,
|
|
27
|
-
is_pip_package,
|
|
28
28
|
)
|
|
29
29
|
from ultralytics.utils.downloads import GITHUB_ASSETS_NAMES
|
|
30
30
|
|
|
@@ -48,7 +48,7 @@ def request_with_credentials(url: str) -> any:
|
|
|
48
48
|
Raises:
|
|
49
49
|
OSError: If the function is not run in a Google Colab environment.
|
|
50
50
|
"""
|
|
51
|
-
if not
|
|
51
|
+
if not IS_COLAB:
|
|
52
52
|
raise OSError("request_with_credentials() must run in a Colab environment")
|
|
53
53
|
from google.colab import output # noqa
|
|
54
54
|
from IPython import display # noqa
|
|
@@ -189,7 +189,7 @@ class Events:
|
|
|
189
189
|
self.t = 0.0 # rate limit timer (seconds)
|
|
190
190
|
self.metadata = {
|
|
191
191
|
"cli": Path(ARGV[0]).name == "yolo",
|
|
192
|
-
"install": "git" if
|
|
192
|
+
"install": "git" if IS_GIT_DIR else "pip" if IS_PIP_PACKAGE else "other",
|
|
193
193
|
"python": ".".join(platform.python_version_tuple()[:2]), # i.e. 3.10
|
|
194
194
|
"version": __version__,
|
|
195
195
|
"env": ENVIRONMENT,
|
|
@@ -201,7 +201,7 @@ class Events:
|
|
|
201
201
|
and RANK in {-1, 0}
|
|
202
202
|
and not TESTS_RUNNING
|
|
203
203
|
and ONLINE
|
|
204
|
-
and (
|
|
204
|
+
and (IS_PIP_PACKAGE or get_git_origin_url() == "https://github.com/ultralytics/ultralytics.git")
|
|
205
205
|
)
|
|
206
206
|
|
|
207
207
|
def __call__(self, cfg):
|
ultralytics/models/rtdetr/val.py
CHANGED
|
@@ -125,7 +125,7 @@ class RTDETRValidator(DetectionValidator):
|
|
|
125
125
|
bbox = ops.xywh2xyxy(bbox) # target boxes
|
|
126
126
|
bbox[..., [0, 2]] *= ori_shape[1] # native-space pred
|
|
127
127
|
bbox[..., [1, 3]] *= ori_shape[0] # native-space pred
|
|
128
|
-
return
|
|
128
|
+
return {"cls": cls, "bbox": bbox, "ori_shape": ori_shape, "imgsz": imgsz, "ratio_pad": ratio_pad}
|
|
129
129
|
|
|
130
130
|
def _prepare_pred(self, pred, pbatch):
|
|
131
131
|
"""Prepares and returns a batch with transformed bounding boxes and class labels."""
|
|
@@ -584,9 +584,9 @@ class TinyViT(nn.Module):
|
|
|
584
584
|
img_size (int, optional): The input image size. Defaults to 224.
|
|
585
585
|
in_chans (int, optional): Number of input channels. Defaults to 3.
|
|
586
586
|
num_classes (int, optional): Number of classification classes. Defaults to 1000.
|
|
587
|
-
embed_dims (List[int], optional): List of embedding dimensions
|
|
587
|
+
embed_dims (List[int], optional): List of embedding dimensions per layer. Defaults to [96, 192, 384, 768].
|
|
588
588
|
depths (List[int], optional): List of depths for each layer. Defaults to [2, 2, 6, 2].
|
|
589
|
-
num_heads (List[int], optional): List of number of attention heads
|
|
589
|
+
num_heads (List[int], optional): List of number of attention heads per layer. Defaults to [3, 6, 12, 24].
|
|
590
590
|
window_sizes (List[int], optional): List of window sizes for each layer. Defaults to [7, 7, 14, 7].
|
|
591
591
|
mlp_ratio (float, optional): Ratio of MLP hidden dimension to embedding dimension. Defaults to 4.
|
|
592
592
|
drop_rate (float, optional): Dropout rate. Defaults to 0.
|
|
@@ -222,7 +222,7 @@ class Attention(nn.Module):
|
|
|
222
222
|
downsample_rate (int, optional): The factor by which the internal dimensions are downsampled. Defaults to 1.
|
|
223
223
|
|
|
224
224
|
Raises:
|
|
225
|
-
AssertionError: If 'num_heads' does not evenly divide the internal
|
|
225
|
+
AssertionError: If 'num_heads' does not evenly divide the internal dim (embedding_dim / downsample_rate).
|
|
226
226
|
"""
|
|
227
227
|
super().__init__()
|
|
228
228
|
self.embedding_dim = embedding_dim
|
|
@@ -127,10 +127,10 @@ class Predictor(BasePredictor):
|
|
|
127
127
|
Args:
|
|
128
128
|
im (torch.Tensor): The preprocessed input image in tensor format, with shape (N, C, H, W).
|
|
129
129
|
bboxes (np.ndarray | List, optional): Bounding boxes with shape (N, 4), in XYXY format.
|
|
130
|
-
points (np.ndarray | List, optional): Points indicating object locations with shape (N, 2), in
|
|
131
|
-
labels (np.ndarray | List, optional): Labels for point prompts, shape (N, ). 1
|
|
132
|
-
masks (np.ndarray, optional): Low-resolution masks from previous predictions
|
|
133
|
-
multimask_output (bool, optional): Flag to return multiple masks. Helpful for ambiguous prompts.
|
|
130
|
+
points (np.ndarray | List, optional): Points indicating object locations with shape (N, 2), in pixels.
|
|
131
|
+
labels (np.ndarray | List, optional): Labels for point prompts, shape (N, ). 1 = foreground, 0 = background.
|
|
132
|
+
masks (np.ndarray, optional): Low-resolution masks from previous predictions shape (N,H,W). For SAM H=W=256.
|
|
133
|
+
multimask_output (bool, optional): Flag to return multiple masks. Helpful for ambiguous prompts.
|
|
134
134
|
|
|
135
135
|
Returns:
|
|
136
136
|
(tuple): Contains the following three elements.
|
|
@@ -156,10 +156,10 @@ class Predictor(BasePredictor):
|
|
|
156
156
|
Args:
|
|
157
157
|
im (torch.Tensor): The preprocessed input image in tensor format, with shape (N, C, H, W).
|
|
158
158
|
bboxes (np.ndarray | List, optional): Bounding boxes with shape (N, 4), in XYXY format.
|
|
159
|
-
points (np.ndarray | List, optional): Points indicating object locations with shape (N, 2), in
|
|
160
|
-
labels (np.ndarray | List, optional): Labels for point prompts, shape (N, ). 1
|
|
161
|
-
masks (np.ndarray, optional): Low-resolution masks from previous predictions
|
|
162
|
-
multimask_output (bool, optional): Flag to return multiple masks. Helpful for ambiguous prompts.
|
|
159
|
+
points (np.ndarray | List, optional): Points indicating object locations with shape (N, 2), in pixels.
|
|
160
|
+
labels (np.ndarray | List, optional): Labels for point prompts, shape (N, ). 1 = foreground, 0 = background.
|
|
161
|
+
masks (np.ndarray, optional): Low-resolution masks from previous predictions shape (N,H,W). For SAM H=W=256.
|
|
162
|
+
multimask_output (bool, optional): Flag to return multiple masks. Helpful for ambiguous prompts.
|
|
163
163
|
|
|
164
164
|
Returns:
|
|
165
165
|
(tuple): Contains the following three elements.
|
|
@@ -230,7 +230,7 @@ class Predictor(BasePredictor):
|
|
|
230
230
|
im (torch.Tensor): Input tensor representing the preprocessed image with dimensions (N, C, H, W).
|
|
231
231
|
crop_n_layers (int): Specifies the number of layers for additional mask predictions on image crops.
|
|
232
232
|
Each layer produces 2**i_layer number of image crops.
|
|
233
|
-
crop_overlap_ratio (float): Determines the
|
|
233
|
+
crop_overlap_ratio (float): Determines the overlap between crops. Scaled down in subsequent layers.
|
|
234
234
|
crop_downscale_factor (int): Scaling factor for the number of sampled points-per-side in each layer.
|
|
235
235
|
point_grids (list[np.ndarray], optional): Custom grids for point sampling normalized to [0,1].
|
|
236
236
|
Used in the nth crop layer.
|
|
@@ -240,7 +240,7 @@ class Predictor(BasePredictor):
|
|
|
240
240
|
conf_thres (float): Confidence threshold [0,1] for filtering based on the model's mask quality prediction.
|
|
241
241
|
stability_score_thresh (float): Stability threshold [0,1] for mask filtering based on mask stability.
|
|
242
242
|
stability_score_offset (float): Offset value for calculating stability score.
|
|
243
|
-
crop_nms_thresh (float): IoU cutoff for
|
|
243
|
+
crop_nms_thresh (float): IoU cutoff for NMS to remove duplicate masks between crops.
|
|
244
244
|
|
|
245
245
|
Returns:
|
|
246
246
|
(tuple): A tuple containing segmented masks, confidence scores, and bounding boxes.
|
|
@@ -351,8 +351,8 @@ class Predictor(BasePredictor):
|
|
|
351
351
|
"""
|
|
352
352
|
Post-processes SAM's inference outputs to generate object detection masks and bounding boxes.
|
|
353
353
|
|
|
354
|
-
The method scales masks and boxes to the original image size and applies a threshold to the mask predictions.
|
|
355
|
-
SAM model uses advanced architecture and promptable segmentation tasks to achieve real-time performance.
|
|
354
|
+
The method scales masks and boxes to the original image size and applies a threshold to the mask predictions.
|
|
355
|
+
The SAM model uses advanced architecture and promptable segmentation tasks to achieve real-time performance.
|
|
356
356
|
|
|
357
357
|
Args:
|
|
358
358
|
preds (tuple): The output from SAM model inference, containing masks, scores, and optional bounding boxes.
|
|
@@ -106,7 +106,7 @@ class DetectionValidator(BaseValidator):
|
|
|
106
106
|
if len(cls):
|
|
107
107
|
bbox = ops.xywh2xyxy(bbox) * torch.tensor(imgsz, device=self.device)[[1, 0, 1, 0]] # target boxes
|
|
108
108
|
ops.scale_boxes(imgsz, bbox, ori_shape, ratio_pad=ratio_pad) # native-space labels
|
|
109
|
-
return
|
|
109
|
+
return {"cls": cls, "bbox": bbox, "ori_shape": ori_shape, "imgsz": imgsz, "ratio_pad": ratio_pad}
|
|
110
110
|
|
|
111
111
|
def _prepare_pred(self, pred, pbatch):
|
|
112
112
|
"""Prepares a batch of images and annotations for validation."""
|
ultralytics/models/yolo/model.py
CHANGED
|
@@ -5,7 +5,7 @@ from pathlib import Path
|
|
|
5
5
|
from ultralytics.engine.model import Model
|
|
6
6
|
from ultralytics.models import yolo
|
|
7
7
|
from ultralytics.nn.tasks import ClassificationModel, DetectionModel, OBBModel, PoseModel, SegmentationModel, WorldModel
|
|
8
|
-
from ultralytics.utils import
|
|
8
|
+
from ultralytics.utils import ROOT, yaml_load
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class YOLO(Model):
|
|
@@ -78,7 +78,7 @@ class OBBValidator(DetectionValidator):
|
|
|
78
78
|
if len(cls):
|
|
79
79
|
bbox[..., :4].mul_(torch.tensor(imgsz, device=self.device)[[1, 0, 1, 0]]) # target boxes
|
|
80
80
|
ops.scale_boxes(imgsz, bbox, ori_shape, ratio_pad=ratio_pad, xywh=True) # native-space labels
|
|
81
|
-
return
|
|
81
|
+
return {"cls": cls, "bbox": bbox, "ori_shape": ori_shape, "imgsz": imgsz, "ratio_pad": ratio_pad}
|
|
82
82
|
|
|
83
83
|
def _prepare_pred(self, pred, pbatch):
|
|
84
84
|
"""Prepares and returns a batch for OBB validation with scaled and padded bounding boxes."""
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
from ultralytics.data import
|
|
1
|
+
from ultralytics.data import YOLOConcatDataset, build_grounding, build_yolo_dataset
|
|
2
2
|
from ultralytics.data.utils import check_det_dataset
|
|
3
3
|
from ultralytics.models.yolo.world import WorldTrainer
|
|
4
|
-
from ultralytics.utils.torch_utils import de_parallel
|
|
5
4
|
from ultralytics.utils import DEFAULT_CFG
|
|
5
|
+
from ultralytics.utils.torch_utils import de_parallel
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class WorldTrainerFromScratch(WorldTrainer):
|
|
@@ -24,27 +24,27 @@ from .block import (
|
|
|
24
24
|
C3TR,
|
|
25
25
|
DFL,
|
|
26
26
|
SPP,
|
|
27
|
+
SPPELAN,
|
|
27
28
|
SPPF,
|
|
29
|
+
ADown,
|
|
30
|
+
BNContrastiveHead,
|
|
28
31
|
Bottleneck,
|
|
29
32
|
BottleneckCSP,
|
|
30
33
|
C2f,
|
|
31
34
|
C2fAttn,
|
|
32
|
-
ImagePoolingAttn,
|
|
33
35
|
C3Ghost,
|
|
34
36
|
C3x,
|
|
37
|
+
CBFuse,
|
|
38
|
+
CBLinear,
|
|
39
|
+
ContrastiveHead,
|
|
35
40
|
GhostBottleneck,
|
|
36
41
|
HGBlock,
|
|
37
42
|
HGStem,
|
|
43
|
+
ImagePoolingAttn,
|
|
38
44
|
Proto,
|
|
39
45
|
RepC3,
|
|
40
|
-
ResNetLayer,
|
|
41
|
-
ContrastiveHead,
|
|
42
|
-
BNContrastiveHead,
|
|
43
46
|
RepNCSPELAN4,
|
|
44
|
-
|
|
45
|
-
SPPELAN,
|
|
46
|
-
CBFuse,
|
|
47
|
-
CBLinear,
|
|
47
|
+
ResNetLayer,
|
|
48
48
|
Silence,
|
|
49
49
|
)
|
|
50
50
|
from .conv import (
|
ultralytics/nn/modules/head.py
CHANGED
|
@@ -8,7 +8,7 @@ import torch.nn as nn
|
|
|
8
8
|
from torch.nn.init import constant_, xavier_uniform_
|
|
9
9
|
|
|
10
10
|
from ultralytics.utils.tal import TORCH_1_10, dist2bbox, dist2rbox, make_anchors
|
|
11
|
-
from .block import DFL,
|
|
11
|
+
from .block import DFL, BNContrastiveHead, ContrastiveHead, Proto
|
|
12
12
|
from .conv import Conv
|
|
13
13
|
from .transformer import MLP, DeformableTransformerDecoder, DeformableTransformerDecoderLayer
|
|
14
14
|
from .utils import bias_init_with_prob, linear_init
|
ultralytics/nn/tasks.py
CHANGED
|
@@ -15,14 +15,17 @@ from ultralytics.nn.modules import (
|
|
|
15
15
|
C3TR,
|
|
16
16
|
OBB,
|
|
17
17
|
SPP,
|
|
18
|
+
SPPELAN,
|
|
18
19
|
SPPF,
|
|
20
|
+
ADown,
|
|
19
21
|
Bottleneck,
|
|
20
22
|
BottleneckCSP,
|
|
21
23
|
C2f,
|
|
22
24
|
C2fAttn,
|
|
23
|
-
ImagePoolingAttn,
|
|
24
25
|
C3Ghost,
|
|
25
26
|
C3x,
|
|
27
|
+
CBFuse,
|
|
28
|
+
CBLinear,
|
|
26
29
|
Classify,
|
|
27
30
|
Concat,
|
|
28
31
|
Conv,
|
|
@@ -36,19 +39,16 @@ from ultralytics.nn.modules import (
|
|
|
36
39
|
GhostConv,
|
|
37
40
|
HGBlock,
|
|
38
41
|
HGStem,
|
|
42
|
+
ImagePoolingAttn,
|
|
39
43
|
Pose,
|
|
40
44
|
RepC3,
|
|
41
45
|
RepConv,
|
|
46
|
+
RepNCSPELAN4,
|
|
42
47
|
ResNetLayer,
|
|
43
48
|
RTDETRDecoder,
|
|
44
49
|
Segment,
|
|
45
|
-
WorldDetect,
|
|
46
|
-
RepNCSPELAN4,
|
|
47
|
-
ADown,
|
|
48
|
-
SPPELAN,
|
|
49
|
-
CBFuse,
|
|
50
|
-
CBLinear,
|
|
51
50
|
Silence,
|
|
51
|
+
WorldDetect,
|
|
52
52
|
)
|
|
53
53
|
from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, colorstr, emojis, yaml_load
|
|
54
54
|
from ultralytics.utils.checks import check_requirements, check_suffix, check_yaml
|
|
@@ -5,8 +5,8 @@ import numpy as np
|
|
|
5
5
|
from .basetrack import BaseTrack, TrackState
|
|
6
6
|
from .utils import matching
|
|
7
7
|
from .utils.kalman_filter import KalmanFilterXYAH
|
|
8
|
-
from ..utils.ops import xywh2ltwh
|
|
9
8
|
from ..utils import LOGGER
|
|
9
|
+
from ..utils.ops import xywh2ltwh
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class STrack(BaseTrack):
|
|
@@ -39,8 +39,8 @@ class KalmanFilterXYAH:
|
|
|
39
39
|
and height h.
|
|
40
40
|
|
|
41
41
|
Returns:
|
|
42
|
-
(tuple[ndarray, ndarray]): Returns the mean vector (8 dimensional) and covariance matrix (8x8 dimensional)
|
|
43
|
-
the new track. Unobserved velocities are initialized to 0 mean.
|
|
42
|
+
(tuple[ndarray, ndarray]): Returns the mean vector (8 dimensional) and covariance matrix (8x8 dimensional)
|
|
43
|
+
of the new track. Unobserved velocities are initialized to 0 mean.
|
|
44
44
|
"""
|
|
45
45
|
mean_pos = measurement
|
|
46
46
|
mean_vel = np.zeros_like(mean_pos)
|
|
@@ -235,8 +235,8 @@ class KalmanFilterXYWH(KalmanFilterXYAH):
|
|
|
235
235
|
measurement (ndarray): Bounding box coordinates (x, y, w, h) with center position (x, y), width, and height.
|
|
236
236
|
|
|
237
237
|
Returns:
|
|
238
|
-
(tuple[ndarray, ndarray]): Returns the mean vector (8 dimensional) and covariance matrix (8x8 dimensional)
|
|
239
|
-
the new track. Unobserved velocities are initialized to 0 mean.
|
|
238
|
+
(tuple[ndarray, ndarray]): Returns the mean vector (8 dimensional) and covariance matrix (8x8 dimensional)
|
|
239
|
+
of the new track. Unobserved velocities are initialized to 0 mean.
|
|
240
240
|
"""
|
|
241
241
|
mean_pos = measurement
|
|
242
242
|
mean_vel = np.zeros_like(mean_pos)
|
ultralytics/utils/__init__.py
CHANGED
|
@@ -460,12 +460,23 @@ def is_docker() -> bool:
|
|
|
460
460
|
Returns:
|
|
461
461
|
(bool): True if the script is running inside a Docker container, False otherwise.
|
|
462
462
|
"""
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
with open(file) as f:
|
|
463
|
+
with contextlib.suppress(Exception):
|
|
464
|
+
with open("/proc/self/cgroup") as f:
|
|
466
465
|
return "docker" in f.read()
|
|
467
|
-
|
|
468
|
-
|
|
466
|
+
return False
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
def is_raspberrypi() -> bool:
|
|
470
|
+
"""
|
|
471
|
+
Determines if the Python environment is running on a Raspberry Pi by checking the device model information.
|
|
472
|
+
|
|
473
|
+
Returns:
|
|
474
|
+
(bool): True if running on a Raspberry Pi, False otherwise.
|
|
475
|
+
"""
|
|
476
|
+
with contextlib.suppress(Exception):
|
|
477
|
+
with open("/proc/device-tree/model") as f:
|
|
478
|
+
return "Raspberry Pi" in f.read()
|
|
479
|
+
return False
|
|
469
480
|
|
|
470
481
|
|
|
471
482
|
def is_online() -> bool:
|
|
@@ -475,23 +486,15 @@ def is_online() -> bool:
|
|
|
475
486
|
Returns:
|
|
476
487
|
(bool): True if connection is successful, False otherwise.
|
|
477
488
|
"""
|
|
478
|
-
|
|
489
|
+
with contextlib.suppress(Exception):
|
|
490
|
+
assert str(os.getenv("YOLO_OFFLINE", "")).lower() != "true" # check if ENV var YOLO_OFFLINE="True"
|
|
491
|
+
import socket
|
|
479
492
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
test_connection = socket.create_connection(address=(host, 80), timeout=2)
|
|
483
|
-
except (socket.timeout, socket.gaierror, OSError):
|
|
484
|
-
continue
|
|
485
|
-
else:
|
|
486
|
-
# If the connection was successful, close it to avoid a ResourceWarning
|
|
487
|
-
test_connection.close()
|
|
488
|
-
return True
|
|
493
|
+
socket.create_connection(address=("1.1.1.1", 80), timeout=1.0).close() # check Cloudflare DNS
|
|
494
|
+
return True
|
|
489
495
|
return False
|
|
490
496
|
|
|
491
497
|
|
|
492
|
-
ONLINE = is_online()
|
|
493
|
-
|
|
494
|
-
|
|
495
498
|
def is_pip_package(filepath: str = __name__) -> bool:
|
|
496
499
|
"""
|
|
497
500
|
Determines if the file at the given filepath is part of a pip package.
|
|
@@ -544,17 +547,6 @@ def is_github_action_running() -> bool:
|
|
|
544
547
|
return "GITHUB_ACTIONS" in os.environ and "GITHUB_WORKFLOW" in os.environ and "RUNNER_OS" in os.environ
|
|
545
548
|
|
|
546
549
|
|
|
547
|
-
def is_git_dir():
|
|
548
|
-
"""
|
|
549
|
-
Determines whether the current file is part of a git repository. If the current file is not part of a git
|
|
550
|
-
repository, returns None.
|
|
551
|
-
|
|
552
|
-
Returns:
|
|
553
|
-
(bool): True if current file is part of a git repository.
|
|
554
|
-
"""
|
|
555
|
-
return get_git_dir() is not None
|
|
556
|
-
|
|
557
|
-
|
|
558
550
|
def get_git_dir():
|
|
559
551
|
"""
|
|
560
552
|
Determines whether the current file is part of a git repository and if so, returns the repository root directory. If
|
|
@@ -568,6 +560,17 @@ def get_git_dir():
|
|
|
568
560
|
return d
|
|
569
561
|
|
|
570
562
|
|
|
563
|
+
def is_git_dir():
|
|
564
|
+
"""
|
|
565
|
+
Determines whether the current file is part of a git repository. If the current file is not part of a git
|
|
566
|
+
repository, returns None.
|
|
567
|
+
|
|
568
|
+
Returns:
|
|
569
|
+
(bool): True if current file is part of a git repository.
|
|
570
|
+
"""
|
|
571
|
+
return GIT_DIR is not None
|
|
572
|
+
|
|
573
|
+
|
|
571
574
|
def get_git_origin_url():
|
|
572
575
|
"""
|
|
573
576
|
Retrieves the origin URL of a git repository.
|
|
@@ -575,7 +578,7 @@ def get_git_origin_url():
|
|
|
575
578
|
Returns:
|
|
576
579
|
(str | None): The origin URL of the git repository or None if not git directory.
|
|
577
580
|
"""
|
|
578
|
-
if
|
|
581
|
+
if IS_GIT_DIR:
|
|
579
582
|
with contextlib.suppress(subprocess.CalledProcessError):
|
|
580
583
|
origin = subprocess.check_output(["git", "config", "--get", "remote.origin.url"])
|
|
581
584
|
return origin.decode().strip()
|
|
@@ -588,7 +591,7 @@ def get_git_branch():
|
|
|
588
591
|
Returns:
|
|
589
592
|
(str | None): The current git branch name or None if not a git directory.
|
|
590
593
|
"""
|
|
591
|
-
if
|
|
594
|
+
if IS_GIT_DIR:
|
|
592
595
|
with contextlib.suppress(subprocess.CalledProcessError):
|
|
593
596
|
origin = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"])
|
|
594
597
|
return origin.decode().strip()
|
|
@@ -654,6 +657,16 @@ def get_user_config_dir(sub_dir="Ultralytics"):
|
|
|
654
657
|
return path
|
|
655
658
|
|
|
656
659
|
|
|
660
|
+
# Define constants (required below)
|
|
661
|
+
ONLINE = is_online()
|
|
662
|
+
IS_COLAB = is_colab()
|
|
663
|
+
IS_DOCKER = is_docker()
|
|
664
|
+
IS_JUPYTER = is_jupyter()
|
|
665
|
+
IS_KAGGLE = is_kaggle()
|
|
666
|
+
IS_PIP_PACKAGE = is_pip_package()
|
|
667
|
+
IS_RASPBERRYPI = is_raspberrypi()
|
|
668
|
+
GIT_DIR = get_git_dir()
|
|
669
|
+
IS_GIT_DIR = is_git_dir()
|
|
657
670
|
USER_CONFIG_DIR = Path(os.getenv("YOLO_CONFIG_DIR") or get_user_config_dir()) # Ultralytics settings dir
|
|
658
671
|
SETTINGS_YAML = USER_CONFIG_DIR / "settings.yaml"
|
|
659
672
|
|
|
@@ -880,7 +893,7 @@ def set_sentry():
|
|
|
880
893
|
event["tags"] = {
|
|
881
894
|
"sys_argv": ARGV[0],
|
|
882
895
|
"sys_argv_name": Path(ARGV[0]).name,
|
|
883
|
-
"install": "git" if
|
|
896
|
+
"install": "git" if IS_GIT_DIR else "pip" if IS_PIP_PACKAGE else "other",
|
|
884
897
|
"os": ENVIRONMENT,
|
|
885
898
|
}
|
|
886
899
|
return event
|
|
@@ -891,8 +904,8 @@ def set_sentry():
|
|
|
891
904
|
and Path(ARGV[0]).name == "yolo"
|
|
892
905
|
and not TESTS_RUNNING
|
|
893
906
|
and ONLINE
|
|
894
|
-
and
|
|
895
|
-
and not
|
|
907
|
+
and IS_PIP_PACKAGE
|
|
908
|
+
and not IS_GIT_DIR
|
|
896
909
|
):
|
|
897
910
|
# If sentry_sdk package is not installed then return and do not use Sentry
|
|
898
911
|
try:
|
|
@@ -931,9 +944,8 @@ class SettingsManager(dict):
|
|
|
931
944
|
from ultralytics.utils.checks import check_version
|
|
932
945
|
from ultralytics.utils.torch_utils import torch_distributed_zero_first
|
|
933
946
|
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
datasets_root = (root.parent if git_dir and is_dir_writeable(root.parent) else root).resolve()
|
|
947
|
+
root = GIT_DIR or Path()
|
|
948
|
+
datasets_root = (root.parent if GIT_DIR and is_dir_writeable(root.parent) else root).resolve()
|
|
937
949
|
|
|
938
950
|
self.file = Path(file)
|
|
939
951
|
self.version = version
|
|
@@ -1037,13 +1049,13 @@ WEIGHTS_DIR = Path(SETTINGS["weights_dir"]) # global weights directory
|
|
|
1037
1049
|
RUNS_DIR = Path(SETTINGS["runs_dir"]) # global runs directory
|
|
1038
1050
|
ENVIRONMENT = (
|
|
1039
1051
|
"Colab"
|
|
1040
|
-
if
|
|
1052
|
+
if IS_COLAB
|
|
1041
1053
|
else "Kaggle"
|
|
1042
|
-
if
|
|
1054
|
+
if IS_KAGGLE
|
|
1043
1055
|
else "Jupyter"
|
|
1044
|
-
if
|
|
1056
|
+
if IS_JUPYTER
|
|
1045
1057
|
else "Docker"
|
|
1046
|
-
if
|
|
1058
|
+
if IS_DOCKER
|
|
1047
1059
|
else platform.system()
|
|
1048
1060
|
)
|
|
1049
1061
|
TESTS_RUNNING = is_pytest_running() or is_github_action_running()
|
|
@@ -12,10 +12,7 @@ def on_pretrain_routine_end(trainer):
|
|
|
12
12
|
session = getattr(trainer, "hub_session", None)
|
|
13
13
|
if session:
|
|
14
14
|
# Start timer for upload rate limit
|
|
15
|
-
session.timers = {
|
|
16
|
-
"metrics": time(),
|
|
17
|
-
"ckpt": time(),
|
|
18
|
-
} # start timer on session.rate_limit
|
|
15
|
+
session.timers = {"metrics": time(), "ckpt": time()} # start timer on session.rate_limit
|
|
19
16
|
|
|
20
17
|
|
|
21
18
|
def on_fit_epoch_end(trainer):
|
|
@@ -58,7 +58,7 @@ def on_pretrain_routine_end(trainer):
|
|
|
58
58
|
MLFLOW_TRACKING_URI: The URI for MLflow tracking. If not set, defaults to 'runs/mlflow'.
|
|
59
59
|
MLFLOW_EXPERIMENT_NAME: The name of the MLflow experiment. If not set, defaults to trainer.args.project.
|
|
60
60
|
MLFLOW_RUN: The name of the MLflow run. If not set, defaults to trainer.args.name.
|
|
61
|
-
MLFLOW_KEEP_RUN_ACTIVE: Boolean indicating whether to keep the MLflow run active after the end of
|
|
61
|
+
MLFLOW_KEEP_RUN_ACTIVE: Boolean indicating whether to keep the MLflow run active after the end of training.
|
|
62
62
|
"""
|
|
63
63
|
global mlflow
|
|
64
64
|
|
ultralytics/utils/checks.py
CHANGED
|
@@ -22,10 +22,15 @@ import torch
|
|
|
22
22
|
from ultralytics.utils import (
|
|
23
23
|
ASSETS,
|
|
24
24
|
AUTOINSTALL,
|
|
25
|
+
IS_COLAB,
|
|
26
|
+
IS_DOCKER,
|
|
27
|
+
IS_JUPYTER,
|
|
28
|
+
IS_KAGGLE,
|
|
29
|
+
IS_PIP_PACKAGE,
|
|
25
30
|
LINUX,
|
|
26
31
|
LOGGER,
|
|
27
|
-
PYTHON_VERSION,
|
|
28
32
|
ONLINE,
|
|
33
|
+
PYTHON_VERSION,
|
|
29
34
|
ROOT,
|
|
30
35
|
TORCHVISION_VERSION,
|
|
31
36
|
USER_CONFIG_DIR,
|
|
@@ -37,12 +42,7 @@ from ultralytics.utils import (
|
|
|
37
42
|
colorstr,
|
|
38
43
|
downloads,
|
|
39
44
|
emojis,
|
|
40
|
-
is_colab,
|
|
41
|
-
is_docker,
|
|
42
45
|
is_github_action_running,
|
|
43
|
-
is_jupyter,
|
|
44
|
-
is_kaggle,
|
|
45
|
-
is_pip_package,
|
|
46
46
|
url2file,
|
|
47
47
|
)
|
|
48
48
|
|
|
@@ -277,7 +277,7 @@ def check_pip_update_available():
|
|
|
277
277
|
Returns:
|
|
278
278
|
(bool): True if an update is available, False otherwise.
|
|
279
279
|
"""
|
|
280
|
-
if ONLINE and
|
|
280
|
+
if ONLINE and IS_PIP_PACKAGE:
|
|
281
281
|
with contextlib.suppress(Exception):
|
|
282
282
|
from ultralytics import __version__
|
|
283
283
|
|
|
@@ -528,7 +528,7 @@ def check_imshow(warn=False):
|
|
|
528
528
|
"""Check if environment supports image displays."""
|
|
529
529
|
try:
|
|
530
530
|
if LINUX:
|
|
531
|
-
assert "DISPLAY" in os.environ and not
|
|
531
|
+
assert "DISPLAY" in os.environ and not IS_DOCKER and not IS_COLAB and not IS_KAGGLE
|
|
532
532
|
cv2.imshow("test", np.zeros((8, 8, 3), dtype=np.uint8)) # show a small 8-pixel image
|
|
533
533
|
cv2.waitKey(1)
|
|
534
534
|
cv2.destroyAllWindows()
|
|
@@ -546,10 +546,10 @@ def check_yolo(verbose=True, device=""):
|
|
|
546
546
|
|
|
547
547
|
from ultralytics.utils.torch_utils import select_device
|
|
548
548
|
|
|
549
|
-
if
|
|
549
|
+
if IS_JUPYTER:
|
|
550
550
|
if check_requirements("wandb", install=False):
|
|
551
551
|
os.system("pip uninstall -y wandb") # uninstall wandb: unwanted account creation prompt with infinite hang
|
|
552
|
-
if
|
|
552
|
+
if IS_COLAB:
|
|
553
553
|
shutil.rmtree("sample_data", ignore_errors=True) # remove colab /sample_data directory
|
|
554
554
|
|
|
555
555
|
if verbose:
|
|
@@ -574,7 +574,7 @@ def collect_system_info():
|
|
|
574
574
|
|
|
575
575
|
import psutil
|
|
576
576
|
|
|
577
|
-
from ultralytics.utils import ENVIRONMENT,
|
|
577
|
+
from ultralytics.utils import ENVIRONMENT, IS_GIT_DIR
|
|
578
578
|
from ultralytics.utils.torch_utils import get_cpu_info
|
|
579
579
|
|
|
580
580
|
ram_info = psutil.virtual_memory().total / (1024**3) # Convert bytes to GB
|
|
@@ -583,7 +583,7 @@ def collect_system_info():
|
|
|
583
583
|
f"\n{'OS':<20}{platform.platform()}\n"
|
|
584
584
|
f"{'Environment':<20}{ENVIRONMENT}\n"
|
|
585
585
|
f"{'Python':<20}{PYTHON_VERSION}\n"
|
|
586
|
-
f"{'Install':<20}{'git' if
|
|
586
|
+
f"{'Install':<20}{'git' if IS_GIT_DIR else 'pip' if IS_PIP_PACKAGE else 'other'}\n"
|
|
587
587
|
f"{'RAM':<20}{ram_info:.2f} GB\n"
|
|
588
588
|
f"{'CPU':<20}{get_cpu_info()}\n"
|
|
589
589
|
f"{'CUDA':<20}{torch.version.cuda if torch and torch.cuda.is_available() else None}\n"
|
ultralytics/utils/torch_utils.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.44
|
|
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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ultralytics/__init__.py,sha256=
|
|
1
|
+
ultralytics/__init__.py,sha256=LHzrvkkUDbXdGni1kVX7sq9Jkvf0hV_0MvcA_yn0Ijc,633
|
|
2
2
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
|
3
3
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
|
4
4
|
ultralytics/cfg/__init__.py,sha256=ugSQqHCg31bAE9rwhVrnLMNzKLShr9JxDFcN6kBTbUk,21316
|
|
@@ -56,39 +56,39 @@ ultralytics/cfg/models/v8/yolov8-seg.yaml,sha256=fN85m_aDMCH4oTJ3z-ft98Pdh6dk0pZ
|
|
|
56
56
|
ultralytics/cfg/models/v8/yolov8-world.yaml,sha256=RXTp_tgix8dbnVHprapxiK2aax7M2qIfmuR-aAve4sU,2019
|
|
57
57
|
ultralytics/cfg/models/v8/yolov8-worldv2.yaml,sha256=fvGVUxvlBOjN6LUiiaiGsnjK5ZKjwYGWxgkJ49hGmMg,1956
|
|
58
58
|
ultralytics/cfg/models/v8/yolov8.yaml,sha256=VjSe_V2Gn9ZpJrwTtz0A6_6IMp6UuugNiR7aEShR5rc,1889
|
|
59
|
-
ultralytics/cfg/models/v9/yolov9c-seg.yaml,sha256=
|
|
60
|
-
ultralytics/cfg/models/v9/yolov9c.yaml,sha256=
|
|
61
|
-
ultralytics/cfg/models/v9/yolov9e-seg.yaml,sha256=
|
|
62
|
-
ultralytics/cfg/models/v9/yolov9e.yaml,sha256=
|
|
59
|
+
ultralytics/cfg/models/v9/yolov9c-seg.yaml,sha256=N4gKdqTF-oHAOAQnaB03sNbf39mzPmlWAxdqxz73OsU,1271
|
|
60
|
+
ultralytics/cfg/models/v9/yolov9c.yaml,sha256=YIEWXY_jN9oieF0AyiNMXsawW4Qb8OoSvaLSX0uZCc4,1256
|
|
61
|
+
ultralytics/cfg/models/v9/yolov9e-seg.yaml,sha256=ewM-vKHlv3FyF8AVsTHki-nop56DpRDeozq5v5xtuzw,2212
|
|
62
|
+
ultralytics/cfg/models/v9/yolov9e.yaml,sha256=oK9Qj3kdEiug43J2k4YGL-fkxvGwgixB87W3FjBQwfo,2196
|
|
63
63
|
ultralytics/cfg/trackers/botsort.yaml,sha256=YrPmj18p1UU40kJH5NRdL_4S8f7knggkk_q2KYnVudo,883
|
|
64
64
|
ultralytics/cfg/trackers/bytetrack.yaml,sha256=QvHmtuwulK4X6j3T5VEqtCm0sbWWBUVmWPcCcM20qe0,688
|
|
65
|
-
ultralytics/data/__init__.py,sha256=
|
|
65
|
+
ultralytics/data/__init__.py,sha256=VGe-ATG7j35F4A4r8Jmzffjlhve4JAJPgRa5ahKTU18,616
|
|
66
66
|
ultralytics/data/annotator.py,sha256=evXQzARVerc0hb9ol-n_GrrHf-dlXO4lCMMWEZoJ2UM,2117
|
|
67
|
-
ultralytics/data/augment.py,sha256=
|
|
68
|
-
ultralytics/data/base.py,sha256=
|
|
69
|
-
ultralytics/data/build.py,sha256=
|
|
70
|
-
ultralytics/data/converter.py,sha256=
|
|
71
|
-
ultralytics/data/dataset.py,sha256=
|
|
72
|
-
ultralytics/data/loaders.py,sha256=
|
|
67
|
+
ultralytics/data/augment.py,sha256=M9ixb4z2N0acBH8euunz6pgHg14gwznxRHO6HZhbghs,57476
|
|
68
|
+
ultralytics/data/base.py,sha256=lHdOJerjGI7Myh3sxXNtaATUAfUj4jcWlCvZVjYnxn8,13470
|
|
69
|
+
ultralytics/data/build.py,sha256=Bq6hh3GgmvBx9LSMYUEj0t6COu3Xmc45zmF9QZbTkpM,7265
|
|
70
|
+
ultralytics/data/converter.py,sha256=NLDiV67RshbKQnMJUiQQF11boVzEqgi2Hz39nKVAI4U,17528
|
|
71
|
+
ultralytics/data/dataset.py,sha256=XdhYb8IYgM9uQbS3Iy3gSnGmKe5qJeX7y7IaDkkFOXI,22199
|
|
72
|
+
ultralytics/data/loaders.py,sha256=UxNLLV6rwUDog9MSOkHpDn52TO-X2g2P4a5ZwvB7Ii8,23142
|
|
73
73
|
ultralytics/data/split_dota.py,sha256=PQdkwwlFtLKhWIrbToshSekXGdgbrbYMN6hM4ujfa7o,10010
|
|
74
|
-
ultralytics/data/utils.py,sha256=
|
|
74
|
+
ultralytics/data/utils.py,sha256=2wqf4mi2r78yH1oJS29ZILHCuBtm1nzpagRLoo0sEDw,30869
|
|
75
75
|
ultralytics/data/explorer/__init__.py,sha256=-Y3m1ZedepOQUv_KW82zaGxvU_PSHcuwUTFqG9BhAr4,113
|
|
76
|
-
ultralytics/data/explorer/explorer.py,sha256=
|
|
76
|
+
ultralytics/data/explorer/explorer.py,sha256=oSXQ0NPSfwvlcVS7emZ9jB4QcWRLAqeZg-49_hB0prg,18710
|
|
77
77
|
ultralytics/data/explorer/utils.py,sha256=EvvukQiQUTBrsZznmMnyEX2EqTuwZo_Geyc8yfi8NIA,7085
|
|
78
78
|
ultralytics/data/explorer/gui/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
79
79
|
ultralytics/data/explorer/gui/dash.py,sha256=2oAbNroR2lfS45v53M1sRqZklLXbbj6qXqNxvplulC0,10087
|
|
80
80
|
ultralytics/engine/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
81
81
|
ultralytics/engine/exporter.py,sha256=NeJEldYo37wMlhMQGQxn8qRhYN1ZYOmuEnbFwCk_LNM,53835
|
|
82
|
-
ultralytics/engine/model.py,sha256=
|
|
82
|
+
ultralytics/engine/model.py,sha256=QkNRSxYkmr3wM9iFgsfszmenHMdu2KTuT_yrSL-BA7o,39830
|
|
83
83
|
ultralytics/engine/predictor.py,sha256=wQRKdWGDTP5A6CS0gTC6U3RPDMhP3QkEzWSPm6eqCkU,17022
|
|
84
84
|
ultralytics/engine/results.py,sha256=MvrOBrBlRF7kbL-QwysMf9mIDy_lwQBTTYvy1x1FMME,30667
|
|
85
|
-
ultralytics/engine/trainer.py,sha256=
|
|
85
|
+
ultralytics/engine/trainer.py,sha256=Vm41LwIkM7SECJEXEToH7NNc9AS1vKrTu1gLkZKdPEo,34933
|
|
86
86
|
ultralytics/engine/tuner.py,sha256=zttHrQkvXuUVTB7jmM4Z85GgIsQ2hjpW9YrMccrQ4wo,11829
|
|
87
87
|
ultralytics/engine/validator.py,sha256=p0irfLSZa3-0TtcuGheI8kNbzPUqs_UM3TMK4VRUGK4,14645
|
|
88
88
|
ultralytics/hub/__init__.py,sha256=U4j-2QPdwSDlxw6RgFYnnJXOoIzLtwke4TkY2A8q4ws,5068
|
|
89
|
-
ultralytics/hub/auth.py,sha256=
|
|
90
|
-
ultralytics/hub/session.py,sha256=
|
|
91
|
-
ultralytics/hub/utils.py,sha256=
|
|
89
|
+
ultralytics/hub/auth.py,sha256=FID58NE6fh7Op_B45QOpWBw1qoBN0ponL16uvyb2dZ8,5399
|
|
90
|
+
ultralytics/hub/session.py,sha256=FCO7Svn7Ffqxzbx4D3rvCU7D2c9HVMKnEVvIHne6G74,14647
|
|
91
|
+
ultralytics/hub/utils.py,sha256=RpFDFp9biUK70Mswzz2o3uEu4xwQxRaStPS19U2gu0g,9721
|
|
92
92
|
ultralytics/models/__init__.py,sha256=xrzn2dcLBG6Ujxll8LtlTIblPar2gjNhAwjAQg7u8sk,197
|
|
93
93
|
ultralytics/models/fastsam/__init__.py,sha256=0dt65jZ_5b7Q-mdXN8MSEkgnFRA0FIwlel_LS2RaOlU,254
|
|
94
94
|
ultralytics/models/fastsam/model.py,sha256=yOf-byvFxafXYTEoc9j1dYnE2XFNErRYSnroyGxkW7I,1054
|
|
@@ -104,23 +104,23 @@ ultralytics/models/rtdetr/__init__.py,sha256=AZga1C3qlGTtgpAupDW4doijq5aZlQeF8e5
|
|
|
104
104
|
ultralytics/models/rtdetr/model.py,sha256=2VkppF1_581XmQ0UI7lo8fX7MqhAJPXVMr2jyMHXtbk,1988
|
|
105
105
|
ultralytics/models/rtdetr/predict.py,sha256=-NFBAv_4VIUcXycO7wA8IH6EHXrVyOir-5PZkd46qyo,3584
|
|
106
106
|
ultralytics/models/rtdetr/train.py,sha256=HdSC2x22Rks6qKNI7EGa6nWMZPhi_7VdQrbcayxk0ec,3684
|
|
107
|
-
ultralytics/models/rtdetr/val.py,sha256=
|
|
107
|
+
ultralytics/models/rtdetr/val.py,sha256=4QQArdaGEY8rJsJuvyJ032f8GGVGdV2jURHK2EdMxyk,5566
|
|
108
108
|
ultralytics/models/sam/__init__.py,sha256=9A1iyfPN_ncqq3TMExe_-uPoARjEX3psoHEI1xMG2VE,144
|
|
109
109
|
ultralytics/models/sam/amg.py,sha256=MsKSRS2SieZK_n-m2ICk1QpcYogl5mofcsVa-4FXYvo,7935
|
|
110
110
|
ultralytics/models/sam/build.py,sha256=jJvloRbPwHvSnVWwM3pEdzpM5MdIcEHbRaqQk_S9lG8,4943
|
|
111
111
|
ultralytics/models/sam/model.py,sha256=H87wexHJ84wbtfKVrZe6I-VuLlhI8h6XeNpxe0D-Sgc,4706
|
|
112
|
-
ultralytics/models/sam/predict.py,sha256=
|
|
112
|
+
ultralytics/models/sam/predict.py,sha256=moCqdExdpftqSefmpRK7yNNXFuRb5Z_Zbb0U-JkSH8o,23613
|
|
113
113
|
ultralytics/models/sam/modules/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
114
114
|
ultralytics/models/sam/modules/decoders.py,sha256=7NWnBNupxGYvH0S1N0R6NBHxdVFRUrrnL9EqAw09J4E,7816
|
|
115
115
|
ultralytics/models/sam/modules/encoders.py,sha256=pRNZHzt2J2xD_D0Btu8pk4DcItfr6dRr9rcRfxoZZhU,24746
|
|
116
116
|
ultralytics/models/sam/modules/sam.py,sha256=zC4l4kcrIQD_ekczjl2l6dgaABqqjROZxQ-FDb-itt0,2783
|
|
117
|
-
ultralytics/models/sam/modules/tiny_encoder.py,sha256=
|
|
118
|
-
ultralytics/models/sam/modules/transformer.py,sha256
|
|
117
|
+
ultralytics/models/sam/modules/tiny_encoder.py,sha256=ypXIMBXpsNUBrskbdJjo2pErI_mtNJlHMdmo9Erqgp0,29125
|
|
118
|
+
ultralytics/models/sam/modules/transformer.py,sha256=VINZMb4xkx4IHAbJdhCq2XLDvaFBMup7RGC16DLS7OY,11164
|
|
119
119
|
ultralytics/models/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
120
120
|
ultralytics/models/utils/loss.py,sha256=IMzcnDwwkgO9F6GDKVxrDdVdhUX_7d9uY4tX-AgtT0g,15134
|
|
121
121
|
ultralytics/models/utils/ops.py,sha256=sn1vdwIK2LaCvxvuuP31Yw2HXEMAmQdo7KD9JVh4GM4,13244
|
|
122
122
|
ultralytics/models/yolo/__init__.py,sha256=e1cZr9pbSbf3Ya2OvkTjGRwD_E2YZpe610xskBM8gEk,247
|
|
123
|
-
ultralytics/models/yolo/model.py,sha256=
|
|
123
|
+
ultralytics/models/yolo/model.py,sha256=EwjRD9QrLP7qxqqjj-Q1II4RdjTZTyssn_n1iwO68VE,3991
|
|
124
124
|
ultralytics/models/yolo/classify/__init__.py,sha256=t-4pUHmgI2gjhc-l3bqNEcEtKD1dO40nD4Vc6Y2xD6o,355
|
|
125
125
|
ultralytics/models/yolo/classify/predict.py,sha256=wFY4GIlWxe7idMndEw1RnDI63o53MTfiHKz0s2fOjAY,2513
|
|
126
126
|
ultralytics/models/yolo/classify/train.py,sha256=9CRqtLkePo4ZkAzMTxDY4ztrNaWE34qnytYymfCEBzs,6888
|
|
@@ -128,11 +128,11 @@ ultralytics/models/yolo/classify/val.py,sha256=EP_hjRExXgdI4xojTKvj_YeNdaz_i2CoU
|
|
|
128
128
|
ultralytics/models/yolo/detect/__init__.py,sha256=JR8gZJWn7wMBbh-0j_073nxJVZTMFZVWTOG5Wnvk6w0,229
|
|
129
129
|
ultralytics/models/yolo/detect/predict.py,sha256=_a9vH3DmKFY6eeztFTdj3nkfu_MKG6n7zb5rRKGjs9I,1510
|
|
130
130
|
ultralytics/models/yolo/detect/train.py,sha256=8Ulq1SPNLrkOqXj0Yt5zNR1c_Xl_QnOjllCdqBHUMds,6353
|
|
131
|
-
ultralytics/models/yolo/detect/val.py,sha256=
|
|
131
|
+
ultralytics/models/yolo/detect/val.py,sha256=2XFFH66HGN7ujLhtfIw9929Oq3y8rMdsN6bUNN-bcaM,14427
|
|
132
132
|
ultralytics/models/yolo/obb/__init__.py,sha256=txWbPGLY1_M7ZwlLQjrwGjTBOlsv9P3yk5ZEgysTinU,193
|
|
133
133
|
ultralytics/models/yolo/obb/predict.py,sha256=prfDzhwuVHKF6CRwnFVBA-YFI5q7U7NEQwITGHmB2Ow,2037
|
|
134
134
|
ultralytics/models/yolo/obb/train.py,sha256=tWpFtcasMwWq1A_9VdbEg5pIVHwuWwmeLOyj-S4_1sY,1473
|
|
135
|
-
ultralytics/models/yolo/obb/val.py,sha256=
|
|
135
|
+
ultralytics/models/yolo/obb/val.py,sha256=tHoUDh-Pv95GEnQ73yzCAAxnTMNayv4yZg33hmGuNww,8511
|
|
136
136
|
ultralytics/models/yolo/pose/__init__.py,sha256=OGvxN3LqJot2h8GX1csJ1KErsHnDKsm33Ce6ZBU9Lr4,199
|
|
137
137
|
ultralytics/models/yolo/pose/predict.py,sha256=illk4qyZvybc_XMo9TKT54FIkizx91MYviE5c5OwBTQ,2404
|
|
138
138
|
ultralytics/models/yolo/pose/train.py,sha256=ki8bkT8WfIFjTKf1ofeRDqeIqmk6A8a7AFog7nM-otM,2926
|
|
@@ -143,36 +143,36 @@ ultralytics/models/yolo/segment/train.py,sha256=aOQpDIptZfKSl9mFa6B-3W3QccMRlmBI
|
|
|
143
143
|
ultralytics/models/yolo/segment/val.py,sha256=njiF6RWddS-HOWxVvlk5PXRw6UOgEt_HEOZVPF7rruQ,11745
|
|
144
144
|
ultralytics/models/yolo/world/__init__.py,sha256=3VTH0q4NOt2EWRom15yCymvmvm0Etp2bmETJUhsVTBI,103
|
|
145
145
|
ultralytics/models/yolo/world/train.py,sha256=acYN2-onL69LrL4av6_hY2r5AY0urC0WViDstn7npfI,3686
|
|
146
|
-
ultralytics/models/yolo/world/train_world.py,sha256=
|
|
146
|
+
ultralytics/models/yolo/world/train_world.py,sha256=ICPsYNbuPkq_qf3FHl2YJ-q3g7ik0pI-zhMpLmHa5-4,4805
|
|
147
147
|
ultralytics/nn/__init__.py,sha256=4BPLHY89xEM_al5uK0aOmFgiML6CMGEZbezxOvTjOEs,587
|
|
148
148
|
ultralytics/nn/autobackend.py,sha256=QtPDtQfUNnTGiW6yJnWGNWR_aqkYDFIevyx22uC2bdI,28716
|
|
149
|
-
ultralytics/nn/tasks.py,sha256=
|
|
150
|
-
ultralytics/nn/modules/__init__.py,sha256=
|
|
149
|
+
ultralytics/nn/tasks.py,sha256=a3FSkIUErlE7qI506ye5vGggqzMxqXWDkIbbLD4AGyI,43623
|
|
150
|
+
ultralytics/nn/modules/__init__.py,sha256=KzLoyn2ldfReiQL8H8xsMC49Xvtb8Kv9ikE5Q3OBoAs,2326
|
|
151
151
|
ultralytics/nn/modules/block.py,sha256=smIz3oNTDA7UKrAH5FfSMh08C12-avgWTeIkbgZIv18,25251
|
|
152
152
|
ultralytics/nn/modules/conv.py,sha256=Ywe87IhuaS22mR2JJ9xjnW8Sb-m7WTjxuqIxV_Dv8lI,12722
|
|
153
|
-
ultralytics/nn/modules/head.py,sha256=
|
|
153
|
+
ultralytics/nn/modules/head.py,sha256=rld0BUC9nzYmdZtyj4CSPwupyJezmKUywRJT4OatcPw,22337
|
|
154
154
|
ultralytics/nn/modules/transformer.py,sha256=AxD9uURpCl-EqvXe3DiG6JW-pBzB16G-AahLdZ7yayo,17909
|
|
155
155
|
ultralytics/nn/modules/utils.py,sha256=779QnnKp9v8jv251ESduTXJ0ol8HkIOLbGQWwEGQjhU,3196
|
|
156
156
|
ultralytics/solutions/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
157
157
|
ultralytics/solutions/ai_gym.py,sha256=IZHpvmNyEQT_aqMTrA5sIjCsl3_5Zl2WG31HxGT6KV4,5696
|
|
158
158
|
ultralytics/solutions/distance_calculation.py,sha256=N1QB5uDG_6sp8jD5uSwp_NTPmyP4UCqJm9G2lNrgpr8,6334
|
|
159
159
|
ultralytics/solutions/heatmap.py,sha256=IeUkGRYbO8I7Sca0I2kvxh8dILy1gehmbIYolFF-ppc,12276
|
|
160
|
-
ultralytics/solutions/object_counter.py,sha256=
|
|
160
|
+
ultralytics/solutions/object_counter.py,sha256=46eP0iF3WjnpIZc7Umrf3dhyNE30NaN9-T79QSwBJ2I,11558
|
|
161
161
|
ultralytics/solutions/queue_management.py,sha256=TBQ2dIKYtymBjhdw0Enxa22KHyH3IdXf2C-1Se21siA,6684
|
|
162
162
|
ultralytics/solutions/speed_estimation.py,sha256=lvaU-F8f3V4KFVKFaNS7isIdYtMSFjh_zF9gl0Mals8,6714
|
|
163
163
|
ultralytics/trackers/__init__.py,sha256=j72IgH2dZHQArMPK4YwcV5ieIw94fYvlGdQjB9cOQKw,227
|
|
164
164
|
ultralytics/trackers/basetrack.py,sha256=-vBDD-Q9lsxfTMK2w9kuqWGrYbRMmaBCCEbGGyR53gE,3675
|
|
165
165
|
ultralytics/trackers/bot_sort.py,sha256=39AvhYVbT7izF3--rX_e6Lhgb5czTA23gw6AgnNcRds,8601
|
|
166
|
-
ultralytics/trackers/byte_tracker.py,sha256=
|
|
166
|
+
ultralytics/trackers/byte_tracker.py,sha256=5uEgklqHgOEG_FNiDcoZdyJRtcGmA13EQMidrB9nOCk,18871
|
|
167
167
|
ultralytics/trackers/track.py,sha256=Brp7G1le2kLs-8PTOzDllpUBW6ps_Wta2qx2GUPI7TU,3462
|
|
168
168
|
ultralytics/trackers/utils/__init__.py,sha256=mHtJuK4hwF8cuV-VHDc7tp6u6D1gHz2Z7JI8grmQDTs,42
|
|
169
169
|
ultralytics/trackers/utils/gmc.py,sha256=vwcPA1n5zjPaBGhCDt8ItN7rq_6Sczsjn4gsXJfRylU,13688
|
|
170
|
-
ultralytics/trackers/utils/kalman_filter.py,sha256=
|
|
171
|
-
ultralytics/trackers/utils/matching.py,sha256=
|
|
172
|
-
ultralytics/utils/__init__.py,sha256=
|
|
170
|
+
ultralytics/trackers/utils/kalman_filter.py,sha256=0oqhk59NKEiwcJ2FXnw6_sT4bIFC6Wu5IY2B-TGxJKU,15168
|
|
171
|
+
ultralytics/trackers/utils/matching.py,sha256=UxhSGa5pN6WoYwYSBAkkt-O7xMxUR47VuUB6PfVNkb4,5404
|
|
172
|
+
ultralytics/utils/__init__.py,sha256=ggkaKah5WaPsfC8zD4dPk9syQgpOymClZW9U-8QCAUo,38440
|
|
173
173
|
ultralytics/utils/autobatch.py,sha256=ygZ3f2ByIkcujB89ENcTnGWWnAQw5Pbg6nBuShg-5t4,3863
|
|
174
174
|
ultralytics/utils/benchmarks.py,sha256=BNG0sO34_mu3fIEfMn8j-QzQ9Da6K1KujO-CxDkvsOM,18325
|
|
175
|
-
ultralytics/utils/checks.py,sha256=
|
|
175
|
+
ultralytics/utils/checks.py,sha256=UDrcHiTMjSHSyUZflTRGuyYRj0uz9-RQ-xfDq_lsXZo,27971
|
|
176
176
|
ultralytics/utils/dist.py,sha256=3HeNbY2gp7vYhcvVhsrvTrQXpQmgT8tpmnzApf3eQRA,2267
|
|
177
177
|
ultralytics/utils/downloads.py,sha256=j1S27awWiLTt1qC9l53WqH_BilM13JHLSVmQ2xFqh-4,21496
|
|
178
178
|
ultralytics/utils/errors.py,sha256=GqP_Jgj_n0paxn8OMhn3DTCgoNkB2WjUcUaqs-M6SQk,816
|
|
@@ -184,7 +184,7 @@ ultralytics/utils/ops.py,sha256=wZCWx7dm5GJNIJHyZaFJRetGcQ7prdv-anplqq9figQ,3330
|
|
|
184
184
|
ultralytics/utils/patches.py,sha256=SgMqeMsq2K6JoBJP1NplXMl9C6rK0JeJUChjBrJOneo,2750
|
|
185
185
|
ultralytics/utils/plotting.py,sha256=hifiLd0mz2EM9Z4qPHkWbzBaIvUgI1w0ynMdD5-eYoY,47441
|
|
186
186
|
ultralytics/utils/tal.py,sha256=xuIyryUjaaYHkHPG9GvBwh1xxN2Hq4y3hXOtuERehwY,16017
|
|
187
|
-
ultralytics/utils/torch_utils.py,sha256
|
|
187
|
+
ultralytics/utils/torch_utils.py,sha256=-lXdJenpUfKM932ipvGfzup8FjNzX6g16hibwW5wPIU,25848
|
|
188
188
|
ultralytics/utils/triton.py,sha256=gg1finxno_tY2Ge9PMhmu7PI9wvoFZoiicdT4Bhqv3w,3936
|
|
189
189
|
ultralytics/utils/tuner.py,sha256=JhvBp6haKA6eqpNPpGJzzjjCmPxBx5phk9kHmt_jppw,6171
|
|
190
190
|
ultralytics/utils/callbacks/__init__.py,sha256=YrWqC3BVVaTLob4iCPR6I36mUxIUOpPJW7B_LjT78Qw,214
|
|
@@ -192,15 +192,15 @@ ultralytics/utils/callbacks/base.py,sha256=sOe3JvyBFmRwVZ8_Q03u7JwTeOOm9CI4s9-UE
|
|
|
192
192
|
ultralytics/utils/callbacks/clearml.py,sha256=M9Fi1OfdWqcm8uVkauuX3zJIYhNh6Tp7Jo4CfA0u0nw,5923
|
|
193
193
|
ultralytics/utils/callbacks/comet.py,sha256=QR3-9f0L_W7nZWWg_OEN7t8La2JotapSS-CnNYVjCdk,13744
|
|
194
194
|
ultralytics/utils/callbacks/dvc.py,sha256=WIClMsuvhiiyrwRv5BsZLxjsxYNJ3Y8Vq7zN0Bthtro,5045
|
|
195
|
-
ultralytics/utils/callbacks/hub.py,sha256=
|
|
196
|
-
ultralytics/utils/callbacks/mlflow.py,sha256=
|
|
195
|
+
ultralytics/utils/callbacks/hub.py,sha256=IPNnCRlAEFA-Dt18JWTuHhaQpcAy3XGgxBD4JhO0jSs,3586
|
|
196
|
+
ultralytics/utils/callbacks/mlflow.py,sha256=AVuYE4UKA5Eeg8sffbkCOe4tGgtCvBlGG4D9PMLm1Z0,5323
|
|
197
197
|
ultralytics/utils/callbacks/neptune.py,sha256=5Z3ua5YBTUS56FH8VQKQG1aaIo9fH8GEyzC5q7p4ipQ,3756
|
|
198
198
|
ultralytics/utils/callbacks/raytune.py,sha256=ODVYzy-CoM4Uge0zjkh3Hnh9nF2M0vhDrSenXnvcizw,705
|
|
199
|
-
ultralytics/utils/callbacks/tensorboard.py,sha256=
|
|
199
|
+
ultralytics/utils/callbacks/tensorboard.py,sha256=Z1veCVcn9THPhdplWuIzwlsW2yF7y-On9IZIk3khM0Y,4135
|
|
200
200
|
ultralytics/utils/callbacks/wb.py,sha256=woCQVuZzqtM5KnwxIibcfM3sFBYojeMPnv11jrRaIQA,6674
|
|
201
|
-
ultralytics-8.1.
|
|
202
|
-
ultralytics-8.1.
|
|
203
|
-
ultralytics-8.1.
|
|
204
|
-
ultralytics-8.1.
|
|
205
|
-
ultralytics-8.1.
|
|
206
|
-
ultralytics-8.1.
|
|
201
|
+
ultralytics-8.1.44.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
|
202
|
+
ultralytics-8.1.44.dist-info/METADATA,sha256=cZq8GuE5cyVMC-j_iWEJ8o6jjPMxARSrliwhi9mQSFo,40416
|
|
203
|
+
ultralytics-8.1.44.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
204
|
+
ultralytics-8.1.44.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
|
205
|
+
ultralytics-8.1.44.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
|
206
|
+
ultralytics-8.1.44.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|