ultralytics 8.3.108__tar.gz → 8.3.110__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.108/ultralytics.egg-info → ultralytics-8.3.110}/PKG-INFO +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/pyproject.toml +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_solutions.py +5 -2
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/base.py +2 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/dataset.py +2 -0
- ultralytics-8.3.110/ultralytics/data/scripts/download_weights.sh +18 -0
- ultralytics-8.3.110/ultralytics/data/scripts/get_coco.sh +61 -0
- ultralytics-8.3.110/ultralytics/data/scripts/get_coco128.sh +18 -0
- ultralytics-8.3.110/ultralytics/data/scripts/get_imagenet.sh +52 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/utils.py +81 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/exporter.py +3 -3
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/trainer.py +2 -2
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/rtdetr/val.py +1 -3
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/autobackend.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/block.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/conv.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/parking_management.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/autobatch.py +3 -3
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/checks.py +1 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/dist.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/metrics.py +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics.egg-info/SOURCES.txt +4 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/LICENSE +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/README.md +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/setup.cfg +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_cli.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_engine.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_exports.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/tests/test_python.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/solutions/default.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/nn/text_model.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/instance_segmentation.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/object_blurrer.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/object_cropper.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/solutions/vision_eye.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/export.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.108 → ultralytics-8.3.110}/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.110
|
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>
|
@@ -134,7 +134,7 @@ ultralytics = "ultralytics.cfg:entrypoint"
|
|
134
134
|
# Tools settings -------------------------------------------------------------------------------------------------------
|
135
135
|
[tool.setuptools] # configuration specific to the `setuptools` build backend.
|
136
136
|
packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
|
137
|
-
package-data = { "ultralytics" = ["**/*.yaml"], "ultralytics.assets" = ["*.jpg"] }
|
137
|
+
package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh"], "ultralytics.assets" = ["*.jpg"] }
|
138
138
|
|
139
139
|
[tool.setuptools.dynamic]
|
140
140
|
version = { attr = "ultralytics.__version__" }
|
@@ -8,7 +8,7 @@ import pytest
|
|
8
8
|
|
9
9
|
from tests import MODEL, TMP
|
10
10
|
from ultralytics import solutions
|
11
|
-
from ultralytics.utils import ASSETS_URL, checks
|
11
|
+
from ultralytics.utils import ASSETS_URL, IS_RASPBERRYPI, LINUX, checks
|
12
12
|
from ultralytics.utils.downloads import safe_download
|
13
13
|
|
14
14
|
# Pre-defined arguments values
|
@@ -152,7 +152,10 @@ def process_video(solution, video_path, needs_frame_count=False):
|
|
152
152
|
cap.release()
|
153
153
|
|
154
154
|
|
155
|
-
@pytest.mark.skipif(
|
155
|
+
@pytest.mark.skipif(
|
156
|
+
(LINUX and checks.IS_PYTHON_3_11) or IS_RASPBERRYPI,
|
157
|
+
reason="Disabled for testing due to --slow test errors after YOLOE PR.",
|
158
|
+
)
|
156
159
|
@pytest.mark.parametrize("name, solution_class, needs_frame_count, video, kwargs", SOLUTIONS)
|
157
160
|
def test_solution(name, solution_class, needs_frame_count, video, kwargs):
|
158
161
|
"""Test individual Ultralytics solution."""
|
@@ -14,7 +14,7 @@ import numpy as np
|
|
14
14
|
import psutil
|
15
15
|
from torch.utils.data import Dataset
|
16
16
|
|
17
|
-
from ultralytics.data.utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS
|
17
|
+
from ultralytics.data.utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS, check_file_speeds
|
18
18
|
from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
|
19
19
|
|
20
20
|
|
@@ -172,6 +172,7 @@ class BaseDataset(Dataset):
|
|
172
172
|
raise FileNotFoundError(f"{self.prefix}Error loading data from {img_path}\n{HELP_URL}") from e
|
173
173
|
if self.fraction < 1:
|
174
174
|
im_files = im_files[: round(len(im_files) * self.fraction)] # retain a fraction of the dataset
|
175
|
+
check_file_speeds(im_files, prefix=self.prefix) # check image read speeds
|
175
176
|
return im_files
|
176
177
|
|
177
178
|
def update_labels(self, include_class: Optional[list]):
|
@@ -31,6 +31,7 @@ from .converter import merge_multi_segment
|
|
31
31
|
from .utils import (
|
32
32
|
HELP_URL,
|
33
33
|
LOGGER,
|
34
|
+
check_file_speeds,
|
34
35
|
get_hash,
|
35
36
|
img2label_paths,
|
36
37
|
load_dataset_cache_file,
|
@@ -794,6 +795,7 @@ class ClassificationDataset:
|
|
794
795
|
path = Path(self.root).with_suffix(".cache") # *.cache file path
|
795
796
|
|
796
797
|
try:
|
798
|
+
check_file_speeds([file for (file, _) in self.samples[:5]], prefix=self.prefix) # check image read speeds
|
797
799
|
cache = load_dataset_cache_file(path) # attempt to load a *.cache file
|
798
800
|
assert cache["version"] == DATASET_CACHE_VERSION # matches current version
|
799
801
|
assert cache["hash"] == get_hash([x[0] for x in self.samples]) # identical hash
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
3
|
+
|
4
|
+
# Download latest models from https://github.com/ultralytics/assets/releases
|
5
|
+
# Example usage: bash ultralytics/data/scripts/download_weights.sh
|
6
|
+
# parent
|
7
|
+
# └── weights
|
8
|
+
# ├── yolov8n.pt ← downloads here
|
9
|
+
# ├── yolov8s.pt
|
10
|
+
# └── ...
|
11
|
+
|
12
|
+
python << EOF
|
13
|
+
from ultralytics.utils.downloads import attempt_download_asset
|
14
|
+
|
15
|
+
assets = [f"yolov8{size}{suffix}.pt" for size in "nsmlx" for suffix in ("", "-cls", "-seg", "-pose")]
|
16
|
+
for x in assets:
|
17
|
+
attempt_download_asset(f"weights/{x}")
|
18
|
+
EOF
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
3
|
+
|
4
|
+
# Download COCO 2017 dataset https://cocodataset.org
|
5
|
+
# Example usage: bash data/scripts/get_coco.sh
|
6
|
+
# parent
|
7
|
+
# ├── ultralytics
|
8
|
+
# └── datasets
|
9
|
+
# └── coco ← downloads here
|
10
|
+
|
11
|
+
# Arguments (optional) Usage: bash data/scripts/get_coco.sh --train --val --test --segments
|
12
|
+
if [ "$#" -gt 0 ]; then
|
13
|
+
for opt in "$@"; do
|
14
|
+
case "${opt}" in
|
15
|
+
--train) train=true ;;
|
16
|
+
--val) val=true ;;
|
17
|
+
--test) test=true ;;
|
18
|
+
--segments) segments=true ;;
|
19
|
+
--sama) sama=true ;;
|
20
|
+
esac
|
21
|
+
done
|
22
|
+
else
|
23
|
+
train=true
|
24
|
+
val=true
|
25
|
+
test=false
|
26
|
+
segments=false
|
27
|
+
sama=false
|
28
|
+
fi
|
29
|
+
|
30
|
+
# Download/unzip labels
|
31
|
+
d='../datasets' # unzip directory
|
32
|
+
url=https://github.com/ultralytics/assets/releases/download/v0.0.0/
|
33
|
+
if [ "$segments" == "true" ]; then
|
34
|
+
f='coco2017labels-segments.zip' # 169 MB
|
35
|
+
elif [ "$sama" == "true" ]; then
|
36
|
+
f='coco2017labels-segments-sama.zip' # 199 MB https://www.sama.com/sama-coco-dataset/
|
37
|
+
else
|
38
|
+
f='coco2017labels.zip' # 46 MB
|
39
|
+
fi
|
40
|
+
echo 'Downloading' $url$f ' ...'
|
41
|
+
curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
|
42
|
+
|
43
|
+
# Download/unzip images
|
44
|
+
d='../datasets/coco/images' # unzip directory
|
45
|
+
url=http://images.cocodataset.org/zips/
|
46
|
+
if [ "$train" == "true" ]; then
|
47
|
+
f='train2017.zip' # 19G, 118k images
|
48
|
+
echo 'Downloading' $url$f '...'
|
49
|
+
curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
|
50
|
+
fi
|
51
|
+
if [ "$val" == "true" ]; then
|
52
|
+
f='val2017.zip' # 1G, 5k images
|
53
|
+
echo 'Downloading' $url$f '...'
|
54
|
+
curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
|
55
|
+
fi
|
56
|
+
if [ "$test" == "true" ]; then
|
57
|
+
f='test2017.zip' # 7G, 41k images (optional)
|
58
|
+
echo 'Downloading' $url$f '...'
|
59
|
+
curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
|
60
|
+
fi
|
61
|
+
wait # finish background tasks
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
3
|
+
|
4
|
+
# Download COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017)
|
5
|
+
# Example usage: bash data/scripts/get_coco128.sh
|
6
|
+
# parent
|
7
|
+
# ├── ultralytics
|
8
|
+
# └── datasets
|
9
|
+
# └── coco128 ← downloads here
|
10
|
+
|
11
|
+
# Download/unzip images and labels
|
12
|
+
d='../datasets' # unzip directory
|
13
|
+
url=https://github.com/ultralytics/assets/releases/download/v0.0.0/
|
14
|
+
f='coco128.zip' # or 'coco128-segments.zip', 68 MB
|
15
|
+
echo 'Downloading' $url$f ' ...'
|
16
|
+
curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
|
17
|
+
|
18
|
+
wait # finish background tasks
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
3
|
+
|
4
|
+
# Download ILSVRC2012 ImageNet dataset https://image-net.org
|
5
|
+
# Example usage: bash data/scripts/get_imagenet.sh
|
6
|
+
# parent
|
7
|
+
# ├── ultralytics
|
8
|
+
# └── datasets
|
9
|
+
# └── imagenet ← downloads here
|
10
|
+
|
11
|
+
# Arguments (optional) Usage: bash data/scripts/get_imagenet.sh --train --val
|
12
|
+
if [ "$#" -gt 0 ]; then
|
13
|
+
for opt in "$@"; do
|
14
|
+
case "${opt}" in
|
15
|
+
--train) train=true ;;
|
16
|
+
--val) val=true ;;
|
17
|
+
esac
|
18
|
+
done
|
19
|
+
else
|
20
|
+
train=true
|
21
|
+
val=true
|
22
|
+
fi
|
23
|
+
|
24
|
+
# Make dir
|
25
|
+
d='../datasets/imagenet' # unzip directory
|
26
|
+
mkdir -p $d && cd $d
|
27
|
+
|
28
|
+
# Download/unzip train
|
29
|
+
if [ "$train" == "true" ]; then
|
30
|
+
wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar # download 138G, 1281167 images
|
31
|
+
mkdir train && mv ILSVRC2012_img_train.tar train/ && cd train
|
32
|
+
tar -xf ILSVRC2012_img_train.tar && rm -f ILSVRC2012_img_train.tar
|
33
|
+
find . -name "*.tar" | while read NAME; do
|
34
|
+
mkdir -p "${NAME%.tar}"
|
35
|
+
tar -xf "${NAME}" -C "${NAME%.tar}"
|
36
|
+
rm -f "${NAME}"
|
37
|
+
done
|
38
|
+
cd ..
|
39
|
+
fi
|
40
|
+
|
41
|
+
# Download/unzip val
|
42
|
+
if [ "$val" == "true" ]; then
|
43
|
+
wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar # download 6.3G, 50000 images
|
44
|
+
mkdir val && mv ILSVRC2012_img_val.tar val/ && cd val && tar -xf ILSVRC2012_img_val.tar
|
45
|
+
wget -qO- https://raw.githubusercontent.com/soumith/imagenetloader.torch/master/valprep.sh | bash # move into subdirs
|
46
|
+
fi
|
47
|
+
|
48
|
+
# Delete corrupted image (optional: PNG under JPEG name that may cause dataloaders to fail)
|
49
|
+
# rm train/n04266014/n04266014_10835.JPEG
|
50
|
+
|
51
|
+
# TFRecords (optional)
|
52
|
+
# wget https://raw.githubusercontent.com/tensorflow/models/master/research/slim/datasets/imagenet_lsvrc_2015_synsets.txt
|
@@ -47,9 +47,89 @@ def img2label_paths(img_paths):
|
|
47
47
|
return [sb.join(x.rsplit(sa, 1)).rsplit(".", 1)[0] + ".txt" for x in img_paths]
|
48
48
|
|
49
49
|
|
50
|
+
def check_file_speeds(files, threshold_ms=10, max_files=5, prefix=""):
|
51
|
+
"""
|
52
|
+
Check dataset file access speed and provide performance feedback.
|
53
|
+
|
54
|
+
This function tests the access speed of dataset files by measuring ping (stat call) time and read speed.
|
55
|
+
It samples up to 5 files from the provided list and warns if access times exceed the threshold.
|
56
|
+
|
57
|
+
Args:
|
58
|
+
files (list): List of file paths to check for access speed.
|
59
|
+
threshold_ms (float, optional): Threshold in milliseconds for ping time warnings.
|
60
|
+
max_files (int, optional): The maximum number of files to check.
|
61
|
+
prefix (str, optional): Prefix string to add to log messages.
|
62
|
+
|
63
|
+
Examples:
|
64
|
+
>>> from pathlib import Path
|
65
|
+
>>> image_files = list(Path("dataset/images").glob("*.jpg"))
|
66
|
+
>>> check_file_speeds(image_files, threshold_ms=15)
|
67
|
+
"""
|
68
|
+
if not files or len(files) == 0:
|
69
|
+
LOGGER.warning(f"{prefix}WARNING ⚠️ Image speed checks: No files to check")
|
70
|
+
return
|
71
|
+
|
72
|
+
# Sample files (max 5)
|
73
|
+
files = random.sample(files, min(max_files, len(files)))
|
74
|
+
|
75
|
+
# Test ping (stat time)
|
76
|
+
ping_times = []
|
77
|
+
file_sizes = []
|
78
|
+
read_speeds = []
|
79
|
+
|
80
|
+
for f in files:
|
81
|
+
try:
|
82
|
+
# Measure ping (stat call)
|
83
|
+
start = time.perf_counter()
|
84
|
+
file_size = os.stat(f).st_size
|
85
|
+
ping_times.append((time.perf_counter() - start) * 1000) # ms
|
86
|
+
file_sizes.append(file_size)
|
87
|
+
|
88
|
+
# Measure read speed
|
89
|
+
start = time.perf_counter()
|
90
|
+
with open(f, "rb") as file_obj:
|
91
|
+
_ = file_obj.read()
|
92
|
+
read_time = time.perf_counter() - start
|
93
|
+
if read_time > 0: # Avoid division by zero
|
94
|
+
read_speeds.append(file_size / (1 << 20) / read_time) # MB/s
|
95
|
+
except Exception:
|
96
|
+
pass
|
97
|
+
|
98
|
+
if not ping_times:
|
99
|
+
LOGGER.warning(f"{prefix}WARNING ⚠️ Image speed checks: failed to access files")
|
100
|
+
return
|
101
|
+
|
102
|
+
# Calculate stats with uncertainties
|
103
|
+
avg_ping = np.mean(ping_times)
|
104
|
+
std_ping = np.std(ping_times, ddof=1) if len(ping_times) > 1 else 0
|
105
|
+
size_msg = f", size: {np.mean(file_sizes) / (1 << 10):.1f} KB"
|
106
|
+
ping_msg = f"ping: {avg_ping:.1f}±{std_ping:.1f} ms"
|
107
|
+
|
108
|
+
if read_speeds:
|
109
|
+
avg_speed = np.mean(read_speeds)
|
110
|
+
std_speed = np.std(read_speeds, ddof=1) if len(read_speeds) > 1 else 0
|
111
|
+
speed_msg = f", read: {avg_speed:.1f}±{std_speed:.1f} MB/s"
|
112
|
+
else:
|
113
|
+
speed_msg = ""
|
114
|
+
|
115
|
+
if avg_ping < threshold_ms:
|
116
|
+
LOGGER.info(f"{prefix}Fast image access ✅ ({ping_msg}{speed_msg}{size_msg})")
|
117
|
+
else:
|
118
|
+
LOGGER.warning(
|
119
|
+
f"{prefix}WARNING ⚠️ Slow image access detected ({ping_msg}{speed_msg}{size_msg}). "
|
120
|
+
f"Use local storage instead of remote/mounted storage for better performance. "
|
121
|
+
f"See https://docs.ultralytics.com/guides/model-training-tips/"
|
122
|
+
)
|
123
|
+
|
124
|
+
|
50
125
|
def get_hash(paths):
|
51
126
|
"""Returns a single hash value of a list of paths (files or dirs)."""
|
52
|
-
size =
|
127
|
+
size = 0
|
128
|
+
for p in paths:
|
129
|
+
try:
|
130
|
+
size += os.stat(p).st_size
|
131
|
+
except OSError:
|
132
|
+
continue
|
53
133
|
h = hashlib.sha256(str(size).encode()) # hash sizes
|
54
134
|
h.update("".join(paths).encode()) # hash paths
|
55
135
|
return h.hexdigest() # return hash
|
@@ -813,7 +813,7 @@ class Exporter:
|
|
813
813
|
scale = 1 / 255
|
814
814
|
classifier_config = None
|
815
815
|
if self.model.task == "classify":
|
816
|
-
classifier_config = ct.ClassifierConfig(list(self.model.names.values()))
|
816
|
+
classifier_config = ct.ClassifierConfig(list(self.model.names.values()))
|
817
817
|
model = self.model
|
818
818
|
elif self.model.task == "detect":
|
819
819
|
model = IOSDetectModel(self.model, self.im) if self.args.nms else self.model
|
@@ -1000,7 +1000,7 @@ class Exporter:
|
|
1000
1000
|
|
1001
1001
|
@try_export
|
1002
1002
|
def export_pb(self, keras_model, prefix=colorstr("TensorFlow GraphDef:")):
|
1003
|
-
"""YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/
|
1003
|
+
"""YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen-Graph-TensorFlow."""
|
1004
1004
|
import tensorflow as tf # noqa
|
1005
1005
|
from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 # noqa
|
1006
1006
|
|
@@ -1281,7 +1281,7 @@ class Exporter:
|
|
1281
1281
|
return f, None
|
1282
1282
|
|
1283
1283
|
def _add_tflite_metadata(self, file):
|
1284
|
-
"""Add metadata to *.tflite models per https://
|
1284
|
+
"""Add metadata to *.tflite models per https://ai.google.dev/edge/litert/models/metadata."""
|
1285
1285
|
import flatbuffers
|
1286
1286
|
|
1287
1287
|
try:
|
@@ -457,8 +457,8 @@ class BaseTrainer:
|
|
457
457
|
self.scheduler.last_epoch = self.epoch # do not move
|
458
458
|
self.stop |= epoch >= self.epochs # stop if exceeded epochs
|
459
459
|
self.run_callbacks("on_fit_epoch_end")
|
460
|
-
if self._get_memory(fraction=True) > 0.
|
461
|
-
self._clear_memory() # clear if memory utilization >
|
460
|
+
if self._get_memory(fraction=True) > 0.5:
|
461
|
+
self._clear_memory() # clear if memory utilization > 50%
|
462
462
|
|
463
463
|
# Early Stopping
|
464
464
|
if RANK != -1: # if DDP training
|
@@ -143,12 +143,10 @@ class RTDETRValidator(DetectionValidator):
|
|
143
143
|
for i, bbox in enumerate(bboxes): # (300, 4)
|
144
144
|
bbox = ops.xywh2xyxy(bbox)
|
145
145
|
score, cls = scores[i].max(-1) # (300, )
|
146
|
-
# Do not need threshold for evaluation as only got 300 boxes here
|
147
|
-
# idx = score > self.args.conf
|
148
146
|
pred = torch.cat([bbox, score[..., None], cls[..., None]], dim=-1) # filter
|
149
147
|
# Sort by confidence to correctly get internal metrics
|
150
148
|
pred = pred[score.argsort(descending=True)]
|
151
|
-
outputs[i] = pred
|
149
|
+
outputs[i] = pred[score > self.args.conf]
|
152
150
|
|
153
151
|
return outputs
|
154
152
|
|
@@ -397,7 +397,7 @@ class AutoBackend(nn.Module):
|
|
397
397
|
pass
|
398
398
|
|
399
399
|
# TFLite or TFLite Edge TPU
|
400
|
-
elif tflite or edgetpu: # https://
|
400
|
+
elif tflite or edgetpu: # https://ai.google.dev/edge/litert/microcontrollers/python
|
401
401
|
try: # https://coral.ai/docs/edgetpu/tflite-python/#update-existing-tf-lite-code-for-the-edge-tpu
|
402
402
|
from tflite_runtime.interpreter import Interpreter, load_delegate
|
403
403
|
except ImportError:
|
@@ -422,7 +422,7 @@ class C3Ghost(C3):
|
|
422
422
|
|
423
423
|
|
424
424
|
class GhostBottleneck(nn.Module):
|
425
|
-
"""Ghost Bottleneck https://github.com/huawei-noah/
|
425
|
+
"""Ghost Bottleneck https://github.com/huawei-noah/Efficient-AI-Backbones."""
|
426
426
|
|
427
427
|
def __init__(self, c1, c2, k=3, s=1):
|
428
428
|
"""
|
@@ -337,7 +337,7 @@ class GhostConv(nn.Module):
|
|
337
337
|
cv2 (Conv): Cheap operation convolution.
|
338
338
|
|
339
339
|
References:
|
340
|
-
https://github.com/huawei-noah/
|
340
|
+
https://github.com/huawei-noah/Efficient-AI-Backbones
|
341
341
|
"""
|
342
342
|
|
343
343
|
def __init__(self, c1, c2, k=1, s=1, g=1, act=True):
|
@@ -58,7 +58,7 @@ class ParkingPtsSelection:
|
|
58
58
|
"Linux": "sudo apt install python3-tk (Debian/Ubuntu) | sudo dnf install python3-tkinter (Fedora) | "
|
59
59
|
"sudo pacman -S tk (Arch)",
|
60
60
|
"Windows": "reinstall Python and enable the checkbox `tcl/tk and IDLE` on **Optional Features** during installation",
|
61
|
-
"Darwin": "reinstall Python from https://www.python.org/downloads/
|
61
|
+
"Darwin": "reinstall Python from https://www.python.org/downloads/macos/ or `brew install python-tk`",
|
62
62
|
}.get(platform.system(), "Unknown OS. Check your Python installation.")
|
63
63
|
|
64
64
|
LOGGER.warning(f"WARNING ⚠️ Tkinter is not configured or supported. Potential fix: {install_cmd}")
|
@@ -86,8 +86,8 @@ def autobatch(model, imgsz=640, fraction=0.60, batch_size=DEFAULT_CFG.batch, max
|
|
86
86
|
and (i == 0 or not results[i - 1] or y[2] > results[i - 1][2]) # first item or increasing memory
|
87
87
|
]
|
88
88
|
fit_x, fit_y = zip(*xy) if xy else ([], [])
|
89
|
-
p = np.polyfit(
|
90
|
-
b = int(round(
|
89
|
+
p = np.polyfit(fit_x, fit_y, deg=1) # first-degree polynomial fit in log space
|
90
|
+
b = int((round(f * fraction) - p[1]) / p[0]) # y intercept (optimal batch size)
|
91
91
|
if None in results: # some sizes failed
|
92
92
|
i = results.index(None) # first fail index
|
93
93
|
if b >= batch_sizes[i]: # y intercept above failure point
|
@@ -96,7 +96,7 @@ def autobatch(model, imgsz=640, fraction=0.60, batch_size=DEFAULT_CFG.batch, max
|
|
96
96
|
LOGGER.info(f"{prefix}WARNING ⚠️ batch={b} outside safe range, using default batch-size {batch_size}.")
|
97
97
|
b = batch_size
|
98
98
|
|
99
|
-
fraction = (np.
|
99
|
+
fraction = (np.polyval(p, b) + r + a) / t # predicted fraction
|
100
100
|
LOGGER.info(f"{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%) ✅")
|
101
101
|
return b
|
102
102
|
except Exception as e:
|
@@ -890,5 +890,6 @@ check_torchvision() # check torch-torchvision compatibility
|
|
890
890
|
|
891
891
|
# Define constants
|
892
892
|
IS_PYTHON_MINIMUM_3_10 = check_python("3.10", hard=False)
|
893
|
+
IS_PYTHON_3_11 = PYTHON_VERSION.startswith("3.11")
|
893
894
|
IS_PYTHON_3_12 = PYTHON_VERSION.startswith("3.12")
|
894
895
|
IS_PYTHON_3_13 = PYTHON_VERSION.startswith("3.13")
|
@@ -87,7 +87,7 @@ def generate_ddp_command(world_size, trainer):
|
|
87
87
|
cmd (List[str]): The command to execute for distributed training.
|
88
88
|
file (str): Path to the temporary file created for DDP training.
|
89
89
|
"""
|
90
|
-
import __main__ # noqa local import to avoid https://github.com/Lightning-AI/lightning/issues/15218
|
90
|
+
import __main__ # noqa local import to avoid https://github.com/Lightning-AI/pytorch-lightning/issues/15218
|
91
91
|
|
92
92
|
if not trainer.resume:
|
93
93
|
shutil.rmtree(trainer.save_dir) # remove the save_dir
|
@@ -52,7 +52,7 @@ def bbox_ioa(box1, box2, iou=False, eps=1e-7):
|
|
52
52
|
def box_iou(box1, box2, eps=1e-7):
|
53
53
|
"""
|
54
54
|
Calculate intersection-over-union (IoU) of boxes. Both sets of boxes are expected to be in (x1, y1, x2, y2) format.
|
55
|
-
Based on https://github.com/pytorch/vision/blob/
|
55
|
+
Based on https://github.com/pytorch/vision/blob/main/torchvision/ops/boxes.py.
|
56
56
|
|
57
57
|
Args:
|
58
58
|
box1 (torch.Tensor): A tensor of shape (N, 4) representing N bounding boxes.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.110
|
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>
|
@@ -117,6 +117,10 @@ ultralytics/data/dataset.py
|
|
117
117
|
ultralytics/data/loaders.py
|
118
118
|
ultralytics/data/split_dota.py
|
119
119
|
ultralytics/data/utils.py
|
120
|
+
ultralytics/data/scripts/download_weights.sh
|
121
|
+
ultralytics/data/scripts/get_coco.sh
|
122
|
+
ultralytics/data/scripts/get_coco128.sh
|
123
|
+
ultralytics/data/scripts/get_imagenet.sh
|
120
124
|
ultralytics/engine/__init__.py
|
121
125
|
ultralytics/engine/exporter.py
|
122
126
|
ultralytics/engine/model.py
|
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
|
{ultralytics-8.3.108 → ultralytics-8.3.110}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml
RENAMED
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
|