ultralytics 8.3.124__tar.gz → 8.3.125__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.
- {ultralytics-8.3.124/ultralytics.egg-info → ultralytics-8.3.125}/PKG-INFO +1 -1
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_python.py +5 -8
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/__init__.py +4 -5
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/default.yaml +2 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/utils.py +7 -7
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/exporter.py +7 -7
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/model.py +3 -3
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/trainer.py +2 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/tuner.py +3 -3
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/session.py +1 -1
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/model.py +3 -3
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/autobackend.py +4 -4
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/tasks.py +2 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/analytics.py +7 -6
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/track.py +2 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/__init__.py +114 -56
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/benchmarks.py +4 -8
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/checks.py +2 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/metrics.py +6 -2
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/plotting.py +11 -5
- {ultralytics-8.3.124 → ultralytics-8.3.125/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.3.124 → ultralytics-8.3.125}/LICENSE +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/README.md +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/pyproject.toml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/setup.cfg +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/conftest.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_cli.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_engine.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_exports.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/download_weights.sh +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_coco.sh +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/split.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/text_model.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/config.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/instance_segmentation.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_blurrer.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_cropper.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/vision_eye.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/export.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.125
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -10,7 +10,6 @@ import cv2
|
|
10
10
|
import numpy as np
|
11
11
|
import pytest
|
12
12
|
import torch
|
13
|
-
import yaml
|
14
13
|
from PIL import Image
|
15
14
|
|
16
15
|
from tests import CFG, MODEL, SOURCE, SOURCES_LIST, TMP
|
@@ -28,6 +27,7 @@ from ultralytics.utils import (
|
|
28
27
|
ROOT,
|
29
28
|
WEIGHTS_DIR,
|
30
29
|
WINDOWS,
|
30
|
+
YAML,
|
31
31
|
checks,
|
32
32
|
is_dir_writeable,
|
33
33
|
is_github_action_running,
|
@@ -190,13 +190,10 @@ def test_track_stream():
|
|
190
190
|
|
191
191
|
# Test Global Motion Compensation (GMC) methods
|
192
192
|
for gmc in "orb", "sift", "ecc":
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
with open(tracker, "w", encoding="utf-8") as f:
|
198
|
-
yaml.safe_dump(data, f)
|
199
|
-
model.track(video_url, imgsz=160, tracker=tracker)
|
193
|
+
default_args = YAML.load(ROOT / "cfg/trackers/botsort.yaml")
|
194
|
+
custom_yaml = TMP / f"botsort-{gmc}.yaml"
|
195
|
+
YAML.save(custom_yaml, {**default_args, "gmc_method": gmc})
|
196
|
+
model.track(video_url, imgsz=160, tracker=custom_yaml)
|
200
197
|
|
201
198
|
|
202
199
|
def test_val():
|
@@ -23,13 +23,12 @@ from ultralytics.utils import (
|
|
23
23
|
SETTINGS,
|
24
24
|
SETTINGS_FILE,
|
25
25
|
TESTS_RUNNING,
|
26
|
+
YAML,
|
26
27
|
IterableSimpleNamespace,
|
27
28
|
checks,
|
28
29
|
colorstr,
|
29
30
|
deprecation_warn,
|
30
31
|
vscode_msg,
|
31
|
-
yaml_load,
|
32
|
-
yaml_print,
|
33
32
|
)
|
34
33
|
|
35
34
|
# Define valid solutions
|
@@ -270,7 +269,7 @@ def cfg2dict(cfg: Union[str, Path, Dict, SimpleNamespace]) -> Dict:
|
|
270
269
|
- If cfg is already a dictionary, it's returned unchanged.
|
271
270
|
"""
|
272
271
|
if isinstance(cfg, (str, Path)):
|
273
|
-
cfg =
|
272
|
+
cfg = YAML.load(cfg) # load dict
|
274
273
|
elif isinstance(cfg, SimpleNamespace):
|
275
274
|
cfg = vars(cfg) # convert to dict
|
276
275
|
return cfg
|
@@ -853,7 +852,7 @@ def entrypoint(debug: str = "") -> None:
|
|
853
852
|
"checks": checks.collect_system_info,
|
854
853
|
"version": lambda: LOGGER.info(__version__),
|
855
854
|
"settings": lambda: handle_yolo_settings(args[1:]),
|
856
|
-
"cfg": lambda:
|
855
|
+
"cfg": lambda: YAML.print(DEFAULT_CFG_PATH),
|
857
856
|
"hub": lambda: handle_yolo_hub(args[1:]),
|
858
857
|
"login": lambda: handle_yolo_hub(args),
|
859
858
|
"logout": lambda: handle_yolo_hub(args),
|
@@ -880,7 +879,7 @@ def entrypoint(debug: str = "") -> None:
|
|
880
879
|
k, v = parse_key_value_pair(a)
|
881
880
|
if k == "cfg" and v is not None: # custom.yaml passed
|
882
881
|
LOGGER.info(f"Overriding {DEFAULT_CFG_PATH} with {v}")
|
883
|
-
overrides = {k: val for k, val in
|
882
|
+
overrides = {k: val for k, val in YAML.load(checks.check_yaml(v)).items() if k != "cfg"}
|
884
883
|
else:
|
885
884
|
overrides[k] = v
|
886
885
|
except (NameError, SyntaxError, ValueError, AssertionError) as e:
|
@@ -35,7 +35,7 @@ resume: False # (bool) resume training from last checkpoint
|
|
35
35
|
amp: True # (bool) Automatic Mixed Precision (AMP) training, choices=[True, False], True runs AMP check
|
36
36
|
fraction: 1.0 # (float) dataset fraction to train on (default is 1.0, all images in train set)
|
37
37
|
profile: False # (bool) profile ONNX and TensorRT speeds during training for loggers
|
38
|
-
freeze:
|
38
|
+
freeze: # (int | list, optional) freeze first n layers, or freeze list of layer indices during training
|
39
39
|
multi_scale: False # (bool) Whether to use multiscale during training
|
40
40
|
# Segmentation
|
41
41
|
overlap_mask: True # (bool) merge object masks into a single image mask during training (segment train only)
|
@@ -84,7 +84,7 @@ int8: False # (bool) CoreML/TF INT8 quantization
|
|
84
84
|
dynamic: False # (bool) ONNX/TF/TensorRT: dynamic axes
|
85
85
|
simplify: True # (bool) ONNX: simplify model using `onnxslim`
|
86
86
|
opset: # (int, optional) ONNX: opset version
|
87
|
-
workspace:
|
87
|
+
workspace: # (float, optional) TensorRT: workspace size (GiB), `None` will let TensorRT auto-allocate memory
|
88
88
|
nms: False # (bool) CoreML: add NMS
|
89
89
|
|
90
90
|
# Hyperparameters ------------------------------------------------------------------------------------------------------
|
@@ -18,16 +18,16 @@ from ultralytics.nn.autobackend import check_class_names
|
|
18
18
|
from ultralytics.utils import (
|
19
19
|
DATASETS_DIR,
|
20
20
|
LOGGER,
|
21
|
+
MACOS,
|
21
22
|
NUM_THREADS,
|
22
23
|
ROOT,
|
23
24
|
SETTINGS_FILE,
|
24
25
|
TQDM,
|
26
|
+
YAML,
|
25
27
|
clean_url,
|
26
28
|
colorstr,
|
27
29
|
emojis,
|
28
30
|
is_dir_writeable,
|
29
|
-
yaml_load,
|
30
|
-
yaml_save,
|
31
31
|
)
|
32
32
|
from ultralytics.utils.checks import check_file, check_font, is_ascii
|
33
33
|
from ultralytics.utils.downloads import download, safe_download, unzip_file
|
@@ -36,7 +36,7 @@ from ultralytics.utils.ops import segments2boxes
|
|
36
36
|
HELP_URL = "See https://docs.ultralytics.com/datasets for dataset formatting guidance."
|
37
37
|
IMG_FORMATS = {"bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm", "heic"} # image suffixes
|
38
38
|
VID_FORMATS = {"asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv", "webm"} # video suffixes
|
39
|
-
PIN_MEMORY = str(os.getenv("PIN_MEMORY",
|
39
|
+
PIN_MEMORY = str(os.getenv("PIN_MEMORY", not MACOS)).lower() == "true" # global pin_memory for dataloaders
|
40
40
|
FORMATS_HELP_MSG = f"Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}"
|
41
41
|
|
42
42
|
|
@@ -399,7 +399,7 @@ def check_det_dataset(dataset, autodownload=True):
|
|
399
399
|
extract_dir, autodownload = file.parent, False
|
400
400
|
|
401
401
|
# Read YAML
|
402
|
-
data =
|
402
|
+
data = YAML.load(file, append_filename=True) # dictionary
|
403
403
|
|
404
404
|
# Checks
|
405
405
|
for k in "train", "val":
|
@@ -492,7 +492,7 @@ def check_cls_dataset(dataset, split=""):
|
|
492
492
|
# Download (optional if dataset=https://file.zip is passed directly)
|
493
493
|
if str(dataset).startswith(("http:/", "https:/")):
|
494
494
|
dataset = safe_download(dataset, dir=DATASETS_DIR, unzip=True, delete=False)
|
495
|
-
elif
|
495
|
+
elif str(dataset).endswith((".zip", ".tar", ".gz")):
|
496
496
|
file = check_file(dataset)
|
497
497
|
dataset = safe_download(file, dir=DATASETS_DIR, unzip=True, delete=False)
|
498
498
|
|
@@ -599,9 +599,9 @@ class HUBDatasetStats:
|
|
599
599
|
_, data_dir, yaml_path = self._unzip(Path(path))
|
600
600
|
try:
|
601
601
|
# Load YAML with checks
|
602
|
-
data =
|
602
|
+
data = YAML.load(yaml_path)
|
603
603
|
data["path"] = "" # strip path since YAML should be in dataset root for all HUB datasets
|
604
|
-
|
604
|
+
YAML.save(yaml_path, data)
|
605
605
|
data = check_det_dataset(yaml_path, autodownload) # dict
|
606
606
|
data["path"] = data_dir # YAML path should be set to '' (relative) or parent (absolute)
|
607
607
|
except Exception as e:
|
@@ -89,10 +89,10 @@ from ultralytics.utils import (
|
|
89
89
|
RKNN_CHIPS,
|
90
90
|
ROOT,
|
91
91
|
WINDOWS,
|
92
|
+
YAML,
|
92
93
|
callbacks,
|
93
94
|
colorstr,
|
94
95
|
get_default_args,
|
95
|
-
yaml_save,
|
96
96
|
)
|
97
97
|
from ultralytics.utils.checks import (
|
98
98
|
check_imgsz,
|
@@ -631,7 +631,7 @@ class Exporter:
|
|
631
631
|
ov_model.set_rt_info("fit_to_window_letterbox", ["model_info", "resize_type"])
|
632
632
|
|
633
633
|
ov.save_model(ov_model, file, compress_to_fp16=self.args.half)
|
634
|
-
|
634
|
+
YAML.save(Path(file).parent / "metadata.yaml", self.metadata) # add metadata.yaml
|
635
635
|
|
636
636
|
if self.args.int8:
|
637
637
|
fq = str(self.file).replace(self.file.suffix, f"_int8_openvino_model{os.sep}")
|
@@ -690,7 +690,7 @@ class Exporter:
|
|
690
690
|
f = str(self.file).replace(self.file.suffix, f"_paddle_model{os.sep}")
|
691
691
|
|
692
692
|
pytorch2paddle(module=self.model, save_dir=f, jit_type="trace", input_examples=[self.im]) # export
|
693
|
-
|
693
|
+
YAML.save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
|
694
694
|
return f, None
|
695
695
|
|
696
696
|
@try_export
|
@@ -783,7 +783,7 @@ class Exporter:
|
|
783
783
|
for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_files):
|
784
784
|
Path(f_debug).unlink(missing_ok=True)
|
785
785
|
|
786
|
-
|
786
|
+
YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
|
787
787
|
return str(f), None
|
788
788
|
|
789
789
|
@try_export
|
@@ -974,7 +974,7 @@ class Exporter:
|
|
974
974
|
output_signaturedefs=True, # fix error with Attention block group convolution
|
975
975
|
optimization_for_gpu_delegate=True,
|
976
976
|
)
|
977
|
-
|
977
|
+
YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
|
978
978
|
|
979
979
|
# Remove/rename TFLite models
|
980
980
|
if self.args.int8:
|
@@ -1087,7 +1087,7 @@ class Exporter:
|
|
1087
1087
|
LOGGER.warning(f"{prefix} your model may not work correctly with spaces in path '{f}'.")
|
1088
1088
|
|
1089
1089
|
# Add metadata
|
1090
|
-
|
1090
|
+
YAML.save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
|
1091
1091
|
return f, None
|
1092
1092
|
|
1093
1093
|
@try_export
|
@@ -1114,7 +1114,7 @@ class Exporter:
|
|
1114
1114
|
rknn.build(do_quantization=self.args.int8)
|
1115
1115
|
f = f.replace(".onnx", f"-{self.args.name}-int8.rknn" if self.args.int8 else f"-{self.args.name}-fp16.rknn")
|
1116
1116
|
rknn.export_rknn(f"{export_path / f}")
|
1117
|
-
|
1117
|
+
YAML.save(export_path / "metadata.yaml", self.metadata)
|
1118
1118
|
return export_path, None
|
1119
1119
|
|
1120
1120
|
@try_export
|
@@ -18,9 +18,9 @@ from ultralytics.utils import (
|
|
18
18
|
LOGGER,
|
19
19
|
RANK,
|
20
20
|
SETTINGS,
|
21
|
+
YAML,
|
21
22
|
callbacks,
|
22
23
|
checks,
|
23
|
-
yaml_load,
|
24
24
|
)
|
25
25
|
|
26
26
|
|
@@ -142,7 +142,7 @@ class Model(torch.nn.Module):
|
|
142
142
|
|
143
143
|
# Load or create new YOLO model
|
144
144
|
__import__("os").environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" # to avoid deterministic warnings
|
145
|
-
if
|
145
|
+
if str(model).endswith((".yaml", ".yml")):
|
146
146
|
self._new(model, task=task, verbose=verbose)
|
147
147
|
else:
|
148
148
|
self._load(model, task=task)
|
@@ -773,7 +773,7 @@ class Model(torch.nn.Module):
|
|
773
773
|
|
774
774
|
checks.check_pip_update_available()
|
775
775
|
|
776
|
-
overrides =
|
776
|
+
overrides = YAML.load(checks.check_yaml(kwargs["cfg"])) if kwargs.get("cfg") else self.overrides
|
777
777
|
custom = {
|
778
778
|
# NOTE: handle the case when 'cfg' includes 'data'.
|
779
779
|
"data": overrides.get("data") or DEFAULT_CFG_DICT["data"] or TASK2DATA[self.task],
|
@@ -31,11 +31,11 @@ from ultralytics.utils import (
|
|
31
31
|
LOGGER,
|
32
32
|
RANK,
|
33
33
|
TQDM,
|
34
|
+
YAML,
|
34
35
|
callbacks,
|
35
36
|
clean_url,
|
36
37
|
colorstr,
|
37
38
|
emojis,
|
38
|
-
yaml_save,
|
39
39
|
)
|
40
40
|
from ultralytics.utils.autobatch import check_train_batch_size
|
41
41
|
from ultralytics.utils.checks import check_amp, check_file, check_imgsz, check_model_file_from_stem, print_args
|
@@ -117,7 +117,7 @@ class BaseTrainer:
|
|
117
117
|
if RANK in {-1, 0}:
|
118
118
|
self.wdir.mkdir(parents=True, exist_ok=True) # make dir
|
119
119
|
self.args.save_dir = str(self.save_dir)
|
120
|
-
|
120
|
+
YAML.save(self.save_dir / "args.yaml", vars(self.args)) # save run args
|
121
121
|
self.last, self.best = self.wdir / "last.pt", self.wdir / "best.pt" # checkpoint paths
|
122
122
|
self.save_period = self.args.save_period
|
123
123
|
|
@@ -23,7 +23,7 @@ import numpy as np
|
|
23
23
|
import torch
|
24
24
|
|
25
25
|
from ultralytics.cfg import get_cfg, get_save_dir
|
26
|
-
from ultralytics.utils import DEFAULT_CFG, LOGGER, callbacks, colorstr, remove_colorstr
|
26
|
+
from ultralytics.utils import DEFAULT_CFG, LOGGER, YAML, callbacks, colorstr, remove_colorstr
|
27
27
|
from ultralytics.utils.plotting import plot_tune_results
|
28
28
|
|
29
29
|
|
@@ -235,9 +235,9 @@ class Tuner:
|
|
235
235
|
)
|
236
236
|
LOGGER.info("\n" + header)
|
237
237
|
data = {k: float(x[best_idx, i + 1]) for i, k in enumerate(self.space.keys())}
|
238
|
-
|
238
|
+
YAML.save(
|
239
239
|
self.tune_dir / "best_hyperparameters.yaml",
|
240
240
|
data=data,
|
241
241
|
header=remove_colorstr(header.replace(self.prefix, "# ")) + "\n",
|
242
242
|
)
|
243
|
-
|
243
|
+
YAML.print(self.tune_dir / "best_hyperparameters.yaml")
|
@@ -201,7 +201,7 @@ class HUBTrainingSession:
|
|
201
201
|
HUBModelError: If the identifier format is not recognized.
|
202
202
|
"""
|
203
203
|
api_key, model_id, filename = None, None, None
|
204
|
-
if
|
204
|
+
if str(identifier).endswith((".pt", ".yaml")):
|
205
205
|
filename = identifier
|
206
206
|
elif identifier.startswith(f"{HUB_WEB_ROOT}/models/"):
|
207
207
|
parsed_url = urlparse(identifier)
|
@@ -15,7 +15,7 @@ from ultralytics.nn.tasks import (
|
|
15
15
|
YOLOEModel,
|
16
16
|
YOLOESegModel,
|
17
17
|
)
|
18
|
-
from ultralytics.utils import ROOT,
|
18
|
+
from ultralytics.utils import ROOT, YAML
|
19
19
|
|
20
20
|
|
21
21
|
class YOLO(Model):
|
@@ -107,7 +107,7 @@ class YOLOWorld(Model):
|
|
107
107
|
|
108
108
|
# Assign default COCO class names when there are no custom names
|
109
109
|
if not hasattr(self.model, "names"):
|
110
|
-
self.model.names =
|
110
|
+
self.model.names = YAML.load(ROOT / "cfg/datasets/coco8.yaml").get("names")
|
111
111
|
|
112
112
|
@property
|
113
113
|
def task_map(self):
|
@@ -156,7 +156,7 @@ class YOLOE(Model):
|
|
156
156
|
|
157
157
|
# Assign default COCO class names when there are no custom names
|
158
158
|
if not hasattr(self.model, "names"):
|
159
|
-
self.model.names =
|
159
|
+
self.model.names = YAML.load(ROOT / "cfg/datasets/coco8.yaml").get("names")
|
160
160
|
|
161
161
|
@property
|
162
162
|
def task_map(self):
|
@@ -14,7 +14,7 @@ import torch
|
|
14
14
|
import torch.nn as nn
|
15
15
|
from PIL import Image
|
16
16
|
|
17
|
-
from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT,
|
17
|
+
from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML
|
18
18
|
from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
|
19
19
|
from ultralytics.utils.downloads import attempt_download_asset, is_url
|
20
20
|
|
@@ -33,7 +33,7 @@ def check_class_names(names):
|
|
33
33
|
f"{min(names.keys())}-{max(names.keys())} defined in your dataset YAML."
|
34
34
|
)
|
35
35
|
if isinstance(names[0], str) and names[0].startswith("n0"): # imagenet class codes, i.e. 'n01440764'
|
36
|
-
names_map =
|
36
|
+
names_map = YAML.load(ROOT / "cfg/datasets/ImageNet.yaml")["map"] # human-readable names
|
37
37
|
names = {k: names_map[v] for k, v in names.items()}
|
38
38
|
return names
|
39
39
|
|
@@ -42,7 +42,7 @@ def default_class_names(data=None):
|
|
42
42
|
"""Applies default class names to an input YAML file or returns numerical class names."""
|
43
43
|
if data:
|
44
44
|
try:
|
45
|
-
return
|
45
|
+
return YAML.load(check_yaml(data))["names"]
|
46
46
|
except Exception:
|
47
47
|
pass
|
48
48
|
return {i: f"class{i}" for i in range(999)} # return default if above errors
|
@@ -536,7 +536,7 @@ class AutoBackend(nn.Module):
|
|
536
536
|
|
537
537
|
# Load external metadata YAML
|
538
538
|
if isinstance(metadata, (str, Path)) and Path(metadata).exists():
|
539
|
-
metadata =
|
539
|
+
metadata = YAML.load(metadata)
|
540
540
|
if metadata and isinstance(metadata, dict):
|
541
541
|
for k, v in metadata.items():
|
542
542
|
if k in {"stride", "batch", "channels"}:
|
@@ -69,7 +69,7 @@ from ultralytics.nn.modules import (
|
|
69
69
|
YOLOESegment,
|
70
70
|
v10Detect,
|
71
71
|
)
|
72
|
-
from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, colorstr, emojis
|
72
|
+
from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, YAML, colorstr, emojis
|
73
73
|
from ultralytics.utils.checks import check_requirements, check_suffix, check_yaml
|
74
74
|
from ultralytics.utils.loss import (
|
75
75
|
E2EDetectLoss,
|
@@ -1523,7 +1523,7 @@ def yaml_model_load(path):
|
|
1523
1523
|
|
1524
1524
|
unified_path = re.sub(r"(\d+)([nslmx])(.+)?$", r"\1\3", str(path)) # i.e. yolov8x.yaml -> yolov8.yaml
|
1525
1525
|
yaml_file = check_yaml(unified_path, hard=False) or check_yaml(path)
|
1526
|
-
d =
|
1526
|
+
d = YAML.load(yaml_file) # model dict
|
1527
1527
|
d["scale"] = guess_model_scale(path)
|
1528
1528
|
d["yaml_file"] = str(path)
|
1529
1529
|
return d
|
@@ -3,10 +3,7 @@
|
|
3
3
|
from itertools import cycle
|
4
4
|
|
5
5
|
import cv2
|
6
|
-
import matplotlib.pyplot as plt
|
7
6
|
import numpy as np
|
8
|
-
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
|
9
|
-
from matplotlib.figure import Figure
|
10
7
|
|
11
8
|
from ultralytics.solutions.solutions import BaseSolution, SolutionResults # Import a parent class
|
12
9
|
|
@@ -32,7 +29,7 @@ class Analytics(BaseSolution):
|
|
32
29
|
clswise_count (Dict[str, int]): Dictionary for class-wise object counts.
|
33
30
|
fig (Figure): Matplotlib figure object for the chart.
|
34
31
|
ax (Axes): Matplotlib axes object for the chart.
|
35
|
-
canvas (
|
32
|
+
canvas (FigureCanvasAgg): Canvas for rendering the chart.
|
36
33
|
lines (dict): Dictionary to store line objects for area charts.
|
37
34
|
color_mapping (Dict[str, str]): Dictionary mapping class labels to colors for consistent visualization.
|
38
35
|
|
@@ -51,6 +48,10 @@ class Analytics(BaseSolution):
|
|
51
48
|
"""Initialize Analytics class with various chart types for visual data representation."""
|
52
49
|
super().__init__(**kwargs)
|
53
50
|
|
51
|
+
import matplotlib.pyplot as plt # scope for faster 'import ultralytics'
|
52
|
+
from matplotlib.backends.backend_agg import FigureCanvasAgg
|
53
|
+
from matplotlib.figure import Figure
|
54
|
+
|
54
55
|
self.type = self.CFG["analytics_type"] # type of analytics i.e "line", "pie", "bar" or "area" charts.
|
55
56
|
self.x_label = "Classes" if self.type in {"bar", "pie"} else "Frame#"
|
56
57
|
self.y_label = "Total Counts"
|
@@ -71,14 +72,14 @@ class Analytics(BaseSolution):
|
|
71
72
|
if self.type in {"line", "area"}:
|
72
73
|
self.lines = {}
|
73
74
|
self.fig = Figure(facecolor=self.bg_color, figsize=figsize)
|
74
|
-
self.canvas =
|
75
|
+
self.canvas = FigureCanvasAgg(self.fig) # Set common axis properties
|
75
76
|
self.ax = self.fig.add_subplot(111, facecolor=self.bg_color)
|
76
77
|
if self.type == "line":
|
77
78
|
(self.line,) = self.ax.plot([], [], color="cyan", linewidth=self.line_width)
|
78
79
|
elif self.type in {"bar", "pie"}:
|
79
80
|
# Initialize bar or pie plot
|
80
81
|
self.fig, self.ax = plt.subplots(figsize=figsize, facecolor=self.bg_color)
|
81
|
-
self.canvas =
|
82
|
+
self.canvas = FigureCanvasAgg(self.fig) # Set common axis properties
|
82
83
|
self.ax.set_facecolor(self.bg_color)
|
83
84
|
self.color_mapping = {}
|
84
85
|
|
@@ -5,7 +5,7 @@ from pathlib import Path
|
|
5
5
|
|
6
6
|
import torch
|
7
7
|
|
8
|
-
from ultralytics.utils import
|
8
|
+
from ultralytics.utils import YAML, IterableSimpleNamespace
|
9
9
|
from ultralytics.utils.checks import check_yaml
|
10
10
|
|
11
11
|
from .bot_sort import BOTSORT
|
@@ -39,7 +39,7 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
|
|
39
39
|
return
|
40
40
|
|
41
41
|
tracker = check_yaml(predictor.args.tracker)
|
42
|
-
cfg = IterableSimpleNamespace(**
|
42
|
+
cfg = IterableSimpleNamespace(**YAML.load(tracker))
|
43
43
|
|
44
44
|
if cfg.tracker_type not in {"bytetrack", "botsort"}:
|
45
45
|
raise AssertionError(f"Only 'bytetrack' and 'botsort' are supported for now, but got '{cfg.tracker_type}'")
|