ultralytics 8.0.143__tar.gz → 8.0.144__tar.gz
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-8.0.143/ultralytics.egg-info → ultralytics-8.0.144}/PKG-INFO +1 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/__init__.py +1 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/model.py +5 -3
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/predictor.py +3 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/results.py +3 -2
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/hub/__init__.py +6 -6
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/hub/auth.py +2 -2
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/hub/session.py +5 -5
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/hub/utils.py +1 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/model.py +1 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/predict.py +1 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/hub.py +4 -4
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/ops.py +1 -4
- {ultralytics-8.0.143 → ultralytics-8.0.144/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.0.143 → ultralytics-8.0.144}/CONTRIBUTING.md +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/LICENSE +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/MANIFEST.in +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/README.md +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/README.zh-CN.md +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/requirements.txt +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/setup.cfg +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/setup.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/tests/test_cli.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/tests/test_engine.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/tests/test_python.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/base.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/build.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/dataloaders/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/cfg/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/data/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/engine/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/utils/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics/yolo/v8/__init__.py +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.0.143 → ultralytics-8.0.144}/ultralytics.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.144
|
|
4
4
|
Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Home-page: https://github.com/ultralytics/ultralytics
|
|
6
6
|
Author: Ultralytics
|
|
@@ -7,6 +7,7 @@ from typing import Union
|
|
|
7
7
|
|
|
8
8
|
from ultralytics.cfg import get_cfg
|
|
9
9
|
from ultralytics.engine.exporter import Exporter
|
|
10
|
+
from ultralytics.hub.utils import HUB_WEB_ROOT
|
|
10
11
|
from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, nn, yaml_model_load
|
|
11
12
|
from ultralytics.utils import (DEFAULT_CFG, DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, RANK, ROOT, callbacks,
|
|
12
13
|
is_git_dir, yaml_load)
|
|
@@ -100,7 +101,7 @@ class Model:
|
|
|
100
101
|
def is_hub_model(model):
|
|
101
102
|
"""Check if the provided model is a HUB model."""
|
|
102
103
|
return any((
|
|
103
|
-
model.startswith('
|
|
104
|
+
model.startswith(f'{HUB_WEB_ROOT}/models/'), # i.e. https://hub.ultralytics.com/models/MODEL_ID
|
|
104
105
|
[len(x) for x in model.split('_')] == [42, 20], # APIKEY_MODELID
|
|
105
106
|
len(model) == 20 and not Path(model).exists() and all(x not in model for x in './\\'))) # MODELID
|
|
106
107
|
|
|
@@ -455,9 +456,10 @@ class Model:
|
|
|
455
456
|
|
|
456
457
|
@property
|
|
457
458
|
def task_map(self):
|
|
458
|
-
"""
|
|
459
|
+
"""
|
|
460
|
+
Map head to model, trainer, validator, and predictor classes.
|
|
459
461
|
|
|
460
462
|
Returns:
|
|
461
|
-
task_map (dict)
|
|
463
|
+
task_map (dict): The map of model task to mode classes.
|
|
462
464
|
"""
|
|
463
465
|
raise NotImplementedError('Please provide task map for your model!')
|
|
@@ -105,6 +105,7 @@ class BasePredictor:
|
|
|
105
105
|
self.results = None
|
|
106
106
|
self.transforms = None
|
|
107
107
|
self.callbacks = _callbacks or callbacks.get_default_callbacks()
|
|
108
|
+
self.txt_path = None
|
|
108
109
|
callbacks.add_integration_callbacks(self)
|
|
109
110
|
|
|
110
111
|
def get_save_dir(self):
|
|
@@ -178,7 +179,8 @@ class BasePredictor:
|
|
|
178
179
|
if self.args.save_txt:
|
|
179
180
|
result.save_txt(f'{self.txt_path}.txt', save_conf=self.args.save_conf)
|
|
180
181
|
if self.args.save_crop:
|
|
181
|
-
result.save_crop(save_dir=self.save_dir / 'crops',
|
|
182
|
+
result.save_crop(save_dir=self.save_dir / 'crops',
|
|
183
|
+
file_name=self.data_path.stem + ('' if self.dataset.mode == 'image' else f'_{frame}'))
|
|
182
184
|
|
|
183
185
|
return log_string
|
|
184
186
|
|
|
@@ -76,7 +76,6 @@ class Results(SimpleClass):
|
|
|
76
76
|
probs (torch.tensor, optional): A 1D tensor of probabilities of each class for classification task.
|
|
77
77
|
keypoints (List[List[float]], optional): A list of detected keypoints for each object.
|
|
78
78
|
|
|
79
|
-
|
|
80
79
|
Attributes:
|
|
81
80
|
orig_img (numpy.ndarray): The original image as a numpy array.
|
|
82
81
|
orig_shape (tuple): The original image shape in (height, width) format.
|
|
@@ -172,6 +171,7 @@ class Results(SimpleClass):
|
|
|
172
171
|
pil=False,
|
|
173
172
|
img=None,
|
|
174
173
|
im_gpu=None,
|
|
174
|
+
kpt_radius=5,
|
|
175
175
|
kpt_line=True,
|
|
176
176
|
labels=True,
|
|
177
177
|
boxes=True,
|
|
@@ -190,6 +190,7 @@ class Results(SimpleClass):
|
|
|
190
190
|
pil (bool): Whether to return the image as a PIL Image.
|
|
191
191
|
img (numpy.ndarray): Plot to another image. if not, plot to original image.
|
|
192
192
|
im_gpu (torch.Tensor): Normalized image in gpu with shape (1, 3, 640, 640), for faster mask plotting.
|
|
193
|
+
kpt_radius (int, optional): Radius of the drawn keypoints. Default is 5.
|
|
193
194
|
kpt_line (bool): Whether to draw lines connecting keypoints.
|
|
194
195
|
labels (bool): Whether to plot the label of bounding boxes.
|
|
195
196
|
boxes (bool): Whether to plot the bounding boxes.
|
|
@@ -251,7 +252,7 @@ class Results(SimpleClass):
|
|
|
251
252
|
# Plot Pose results
|
|
252
253
|
if self.keypoints is not None:
|
|
253
254
|
for k in reversed(self.keypoints.data):
|
|
254
|
-
annotator.kpts(k, self.orig_shape, kpt_line=kpt_line)
|
|
255
|
+
annotator.kpts(k, self.orig_shape, radius=kpt_radius, kpt_line=kpt_line)
|
|
255
256
|
|
|
256
257
|
return annotator.result()
|
|
257
258
|
|
|
@@ -4,7 +4,7 @@ import requests
|
|
|
4
4
|
|
|
5
5
|
from ultralytics.data.utils import HUBDatasetStats
|
|
6
6
|
from ultralytics.hub.auth import Auth
|
|
7
|
-
from ultralytics.hub.utils import PREFIX
|
|
7
|
+
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX
|
|
8
8
|
from ultralytics.utils import LOGGER, SETTINGS, USER_CONFIG_DIR, yaml_save
|
|
9
9
|
|
|
10
10
|
|
|
@@ -50,13 +50,13 @@ WARNING ⚠️ ultralytics.start() is deprecated after 8.0.60. Updated usage to
|
|
|
50
50
|
from ultralytics import YOLO, hub
|
|
51
51
|
|
|
52
52
|
hub.login('{api_key}')
|
|
53
|
-
model = YOLO('
|
|
53
|
+
model = YOLO('{HUB_WEB_ROOT}/models/{model_id}')
|
|
54
54
|
model.train()""")
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
def reset_model(model_id=''):
|
|
58
58
|
"""Reset a trained model to an untrained state."""
|
|
59
|
-
r = requests.post('
|
|
59
|
+
r = requests.post(f'{HUB_API_ROOT}/model-reset', json={'apiKey': Auth().api_key, 'modelId': model_id})
|
|
60
60
|
if r.status_code == 200:
|
|
61
61
|
LOGGER.info(f'{PREFIX}Model reset successfully')
|
|
62
62
|
return
|
|
@@ -72,7 +72,7 @@ def export_fmts_hub():
|
|
|
72
72
|
def export_model(model_id='', format='torchscript'):
|
|
73
73
|
"""Export a model to all formats."""
|
|
74
74
|
assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
|
|
75
|
-
r = requests.post(f'
|
|
75
|
+
r = requests.post(f'{HUB_API_ROOT}/v1/models/{model_id}/export',
|
|
76
76
|
json={'format': format},
|
|
77
77
|
headers={'x-api-key': Auth().api_key})
|
|
78
78
|
assert r.status_code == 200, f'{PREFIX}{format} export failure {r.status_code} {r.reason}'
|
|
@@ -82,7 +82,7 @@ def export_model(model_id='', format='torchscript'):
|
|
|
82
82
|
def get_export(model_id='', format='torchscript'):
|
|
83
83
|
"""Get an exported model dictionary with download URL."""
|
|
84
84
|
assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
|
|
85
|
-
r = requests.post('
|
|
85
|
+
r = requests.post(f'{HUB_API_ROOT}/get-export',
|
|
86
86
|
json={
|
|
87
87
|
'apiKey': Auth().api_key,
|
|
88
88
|
'modelId': model_id,
|
|
@@ -110,7 +110,7 @@ def check_dataset(path='', task='detect'):
|
|
|
110
110
|
```
|
|
111
111
|
"""
|
|
112
112
|
HUBDatasetStats(path=path, task=task).get_json()
|
|
113
|
-
LOGGER.info('Checks completed correctly ✅. Upload this dataset to
|
|
113
|
+
LOGGER.info(f'Checks completed correctly ✅. Upload this dataset to {HUB_WEB_ROOT}/datasets/.')
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
if __name__ == '__main__':
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import requests
|
|
4
4
|
|
|
5
|
-
from ultralytics.hub.utils import HUB_API_ROOT, PREFIX, request_with_credentials
|
|
5
|
+
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, request_with_credentials
|
|
6
6
|
from ultralytics.utils import LOGGER, SETTINGS, emojis, is_colab
|
|
7
7
|
|
|
8
|
-
API_KEY_URL = '
|
|
8
|
+
API_KEY_URL = f'{HUB_WEB_ROOT}/settings?tab=api+keys'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Auth:
|
|
@@ -6,7 +6,7 @@ from time import sleep
|
|
|
6
6
|
|
|
7
7
|
import requests
|
|
8
8
|
|
|
9
|
-
from ultralytics.hub.utils import HUB_API_ROOT, PREFIX, smart_request
|
|
9
|
+
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, smart_request
|
|
10
10
|
from ultralytics.utils import LOGGER, __version__, checks, emojis, is_colab, threaded
|
|
11
11
|
from ultralytics.utils.errors import HUBModelError
|
|
12
12
|
|
|
@@ -49,21 +49,21 @@ class HUBTrainingSession:
|
|
|
49
49
|
from ultralytics.hub.auth import Auth
|
|
50
50
|
|
|
51
51
|
# Parse input
|
|
52
|
-
if url.startswith('
|
|
53
|
-
url = url.split('
|
|
52
|
+
if url.startswith(f'{HUB_WEB_ROOT}/models/'):
|
|
53
|
+
url = url.split(f'{HUB_WEB_ROOT}/models/')[-1]
|
|
54
54
|
if [len(x) for x in url.split('_')] == [42, 20]:
|
|
55
55
|
key, model_id = url.split('_')
|
|
56
56
|
elif len(url) == 20:
|
|
57
57
|
key, model_id = '', url
|
|
58
58
|
else:
|
|
59
59
|
raise HUBModelError(f"model='{url}' not found. Check format is correct, i.e. "
|
|
60
|
-
f"model='
|
|
60
|
+
f"model='{HUB_WEB_ROOT}/models/MODEL_ID' and try again.")
|
|
61
61
|
|
|
62
62
|
# Authorize
|
|
63
63
|
auth = Auth(key)
|
|
64
64
|
self.agent_id = None # identifies which instance is communicating with server
|
|
65
65
|
self.model_id = model_id
|
|
66
|
-
self.model_url = f'
|
|
66
|
+
self.model_url = f'{HUB_WEB_ROOT}/models/{model_id}'
|
|
67
67
|
self.api_url = f'{HUB_API_ROOT}/v1/models/{model_id}'
|
|
68
68
|
self.auth_header = auth.get_auth_header()
|
|
69
69
|
self.rate_limits = {'metrics': 3.0, 'ckpt': 900.0, 'heartbeat': 300.0} # rate limits (seconds)
|
|
@@ -18,6 +18,7 @@ from ultralytics.utils.downloads import GITHUB_ASSET_NAMES
|
|
|
18
18
|
PREFIX = colorstr('Ultralytics HUB: ')
|
|
19
19
|
HELP_MSG = 'If this issue persists please visit https://github.com/ultralytics/hub/issues for assistance.'
|
|
20
20
|
HUB_API_ROOT = os.environ.get('ULTRALYTICS_HUB_API', 'https://api.ultralytics.com')
|
|
21
|
+
HUB_WEB_ROOT = os.environ.get('ULTRALYTICS_HUB_WEB', 'https://hub.ultralytics.com')
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
def request_with_credentials(url: str) -> any:
|
|
@@ -29,7 +29,7 @@ class SAM(Model):
|
|
|
29
29
|
overrides = dict(conf=0.25, task='segment', mode='predict', imgsz=1024)
|
|
30
30
|
kwargs.update(overrides)
|
|
31
31
|
prompts = dict(bboxes=bboxes, points=points, labels=labels)
|
|
32
|
-
super().predict(source, stream, prompts=prompts, **kwargs)
|
|
32
|
+
return super().predict(source, stream, prompts=prompts, **kwargs)
|
|
33
33
|
|
|
34
34
|
def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
|
|
35
35
|
"""Calls the 'predict' function with given arguments to perform object detection."""
|
|
@@ -294,7 +294,7 @@ class Predictor(BasePredictor):
|
|
|
294
294
|
|
|
295
295
|
def setup_model(self, model, verbose=True):
|
|
296
296
|
"""Set up YOLO model with specified thresholds and device."""
|
|
297
|
-
device = select_device(self.args.device)
|
|
297
|
+
device = select_device(self.args.device, verbose=verbose)
|
|
298
298
|
if model is None:
|
|
299
299
|
model = build_sam(self.args.model)
|
|
300
300
|
model.eval()
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
from time import time
|
|
5
5
|
|
|
6
|
-
from ultralytics.hub.utils import PREFIX, events
|
|
6
|
+
from ultralytics.hub.utils import HUB_WEB_ROOT, PREFIX, events
|
|
7
7
|
from ultralytics.utils import LOGGER, SETTINGS
|
|
8
8
|
from ultralytics.utils.torch_utils import model_info_for_loggers
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ def on_pretrain_routine_end(trainer):
|
|
|
13
13
|
session = getattr(trainer, 'hub_session', None)
|
|
14
14
|
if session:
|
|
15
15
|
# Start timer for upload rate limit
|
|
16
|
-
LOGGER.info(f'{PREFIX}View model at
|
|
16
|
+
LOGGER.info(f'{PREFIX}View model at {HUB_WEB_ROOT}/models/{session.model_id} 🚀')
|
|
17
17
|
session.timers = {'metrics': time(), 'ckpt': time()} # start timer on session.rate_limit
|
|
18
18
|
|
|
19
19
|
|
|
@@ -39,7 +39,7 @@ def on_model_save(trainer):
|
|
|
39
39
|
# Upload checkpoints with rate limiting
|
|
40
40
|
is_best = trainer.best_fitness == trainer.fitness
|
|
41
41
|
if time() - session.timers['ckpt'] > session.rate_limits['ckpt']:
|
|
42
|
-
LOGGER.info(f'{PREFIX}Uploading checkpoint
|
|
42
|
+
LOGGER.info(f'{PREFIX}Uploading checkpoint {HUB_WEB_ROOT}/models/{session.model_id}')
|
|
43
43
|
session.upload_model(trainer.epoch, trainer.last, is_best)
|
|
44
44
|
session.timers['ckpt'] = time() # reset timer
|
|
45
45
|
|
|
@@ -53,7 +53,7 @@ def on_train_end(trainer):
|
|
|
53
53
|
session.upload_model(trainer.epoch, trainer.best, map=trainer.metrics.get('metrics/mAP50-95(B)', 0), final=True)
|
|
54
54
|
session.alive = False # stop heartbeats
|
|
55
55
|
LOGGER.info(f'{PREFIX}Done ✅\n'
|
|
56
|
-
f'{PREFIX}View model at
|
|
56
|
+
f'{PREFIX}View model at {HUB_WEB_ROOT}/models/{session.model_id} 🚀')
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
def on_train_start(trainer):
|
|
@@ -321,7 +321,7 @@ def scale_image(masks, im0_shape, ratio_pad=None):
|
|
|
321
321
|
Takes a mask, and resizes it to the original image size
|
|
322
322
|
|
|
323
323
|
Args:
|
|
324
|
-
masks (
|
|
324
|
+
masks (np.ndarray): resized and padded masks/images, [h, w, num]/[h, w, 3].
|
|
325
325
|
im0_shape (tuple): the original image shape
|
|
326
326
|
ratio_pad (tuple): the ratio of the padding to the original image.
|
|
327
327
|
|
|
@@ -344,9 +344,6 @@ def scale_image(masks, im0_shape, ratio_pad=None):
|
|
|
344
344
|
if len(masks.shape) < 2:
|
|
345
345
|
raise ValueError(f'"len of masks shape" should be 2 or 3, but got {len(masks.shape)}')
|
|
346
346
|
masks = masks[top:bottom, left:right]
|
|
347
|
-
# masks = masks.permute(2, 0, 1).contiguous()
|
|
348
|
-
# masks = F.interpolate(masks[None], im0_shape[:2], mode='bilinear', align_corners=False)[0]
|
|
349
|
-
# masks = masks.permute(1, 2, 0).contiguous()
|
|
350
347
|
masks = cv2.resize(masks, (im0_shape[1], im0_shape[0]))
|
|
351
348
|
if len(masks.shape) == 2:
|
|
352
349
|
masks = masks[:, :, None]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.144
|
|
4
4
|
Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Home-page: https://github.com/ultralytics/ultralytics
|
|
6
6
|
Author: Ultralytics
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|