dgenerate-ultralytics-headless 8.3.224__tar.gz → 8.3.226__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.
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/PKG-INFO +3 -3
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/README.md +2 -2
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +3 -3
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +1 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cli.py +1 -8
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cuda.py +1 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_python.py +41 -2
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/__init__.py +1 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/__init__.py +11 -4
- dgenerate_ultralytics_headless-8.3.226/ultralytics/cfg/datasets/kitti.yaml +27 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/augment.py +28 -12
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/build.py +29 -15
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/loaders.py +1 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/exporter.py +21 -58
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/model.py +1 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/predictor.py +2 -3
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/trainer.py +22 -6
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/tuner.py +1 -2
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/model.py +1 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/build.py +3 -3
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/predict.py +1 -5
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/val.py +1 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/analytics.py +2 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/__init__.py +8 -8
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/benchmarks.py +2 -2
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/checks.py +8 -5
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/cpu.py +2 -6
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/tensorflow.py +1 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/git.py +1 -2
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/tqdm.py +3 -5
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/triton.py +2 -1
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/pyproject.toml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/setup.cfg +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/conftest.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_engine.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_exports.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_integrations.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/assets/bus.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/assets/zidane.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/default.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/annotator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/converter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/dataset.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/download_weights.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_coco.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/split.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/split_dota.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/results.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/validator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/auth.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/google/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/session.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/amg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/blocks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/decoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/encoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/sam.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/train_world.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/autobackend.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/activation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/block.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/conv.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/head.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/tasks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/text_model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/py.typed +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/ai_gym.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/config.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/distance_calculation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/heatmap.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/instance_segmentation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_blurrer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_cropper.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/parking_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/queue_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/region_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/security_alarm.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/similarity_search.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/speed_estimation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/streamlit_inference.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/trackzone.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/vision_eye.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/basetrack.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/bot_sort.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/byte_tracker.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/track.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/gmc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/matching.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/autobatch.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/autodevice.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/clearml.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/comet.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/dvc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/hub.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/neptune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/platform.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/raytune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/wb.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/dist.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/downloads.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/errors.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/events.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/engine.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/imx.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/files.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/instance.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/logger.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/metrics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/nms.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/patches.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/plotting.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/tal.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/torch_utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/tuner.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dgenerate-ultralytics-headless
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.226
|
|
4
4
|
Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
|
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
|
@@ -160,7 +160,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
|
|
|
160
160
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
161
161
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
|
|
162
162
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
163
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
163
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
164
164
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
165
165
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
|
|
166
166
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
@@ -396,7 +396,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
|
|
|
396
396
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
397
397
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
|
|
398
398
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
399
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
399
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
400
400
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
401
401
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
|
|
402
402
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
@@ -70,7 +70,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
|
|
|
70
70
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
71
71
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
|
|
72
72
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
73
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
73
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
74
74
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
75
75
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
|
|
76
76
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
@@ -306,7 +306,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
|
|
|
306
306
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
307
307
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
|
|
308
308
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
309
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
309
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
310
310
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
311
311
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
|
|
312
312
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dgenerate-ultralytics-headless
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.226
|
|
4
4
|
Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
|
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
|
@@ -160,7 +160,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
|
|
|
160
160
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
161
161
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
|
|
162
162
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
163
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
163
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
|
|
164
164
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
165
165
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
|
|
166
166
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
|
|
@@ -396,7 +396,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
|
|
|
396
396
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
397
397
|
<a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
|
|
398
398
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
399
|
-
<a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
399
|
+
<a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
|
|
400
400
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
401
401
|
<a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
|
|
402
402
|
<img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
|
|
@@ -57,6 +57,7 @@ ultralytics/cfg/datasets/dog-pose.yaml
|
|
|
57
57
|
ultralytics/cfg/datasets/dota8-multispectral.yaml
|
|
58
58
|
ultralytics/cfg/datasets/dota8.yaml
|
|
59
59
|
ultralytics/cfg/datasets/hand-keypoints.yaml
|
|
60
|
+
ultralytics/cfg/datasets/kitti.yaml
|
|
60
61
|
ultralytics/cfg/datasets/lvis.yaml
|
|
61
62
|
ultralytics/cfg/datasets/medical-pills.yaml
|
|
62
63
|
ultralytics/cfg/datasets/open-images-v7.yaml
|
{dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cli.py
RENAMED
|
@@ -8,7 +8,7 @@ from PIL import Image
|
|
|
8
8
|
|
|
9
9
|
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODELS, TASK_MODEL_DATA
|
|
10
10
|
from ultralytics.utils import ARM64, ASSETS, LINUX, WEIGHTS_DIR, checks
|
|
11
|
-
from ultralytics.utils.torch_utils import TORCH_1_11
|
|
11
|
+
from ultralytics.utils.torch_utils import TORCH_1_11
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def run(cmd: str) -> None:
|
|
@@ -129,10 +129,3 @@ def test_train_gpu(task: str, model: str, data: str) -> None:
|
|
|
129
129
|
def test_solutions(solution: str) -> None:
|
|
130
130
|
"""Test yolo solutions command-line modes."""
|
|
131
131
|
run(f"yolo solutions {solution} verbose=False")
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
@pytest.mark.skipif(not checks.IS_PYTHON_MINIMUM_3_10 or not TORCH_2_9, reason="Requires Python>=3.10 and Torch>=2.9.0")
|
|
135
|
-
@pytest.mark.skipif(WINDOWS, reason="Skipping test on Windows")
|
|
136
|
-
def test_export_executorch() -> None:
|
|
137
|
-
"""Test exporting a YOLO model to ExecuTorch format via CLI."""
|
|
138
|
-
run("yolo export model=yolo11n.pt format=executorch imgsz=32")
|
{dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cuda.py
RENAMED
|
@@ -118,6 +118,7 @@ def test_train():
|
|
|
118
118
|
results = YOLO(MODEL).train(
|
|
119
119
|
data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15
|
|
120
120
|
) # requires imgsz>=64
|
|
121
|
+
results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15, val=False)
|
|
121
122
|
visible = eval(os.environ["CUDA_VISIBLE_DEVICES"])
|
|
122
123
|
assert visible == device, f"Passed GPUs '{device}', but used GPUs '{visible}'"
|
|
123
124
|
assert (
|
|
@@ -385,7 +385,46 @@ def test_cfg_init():
|
|
|
385
385
|
check_dict_alignment({"a": 1}, {"b": 2})
|
|
386
386
|
copy_default_cfg()
|
|
387
387
|
(Path.cwd() / DEFAULT_CFG_PATH.name.replace(".yaml", "_copy.yaml")).unlink(missing_ok=False)
|
|
388
|
-
|
|
388
|
+
|
|
389
|
+
# Test smart_value() with comprehensive cases
|
|
390
|
+
# Test None conversion
|
|
391
|
+
assert smart_value("none") is None
|
|
392
|
+
assert smart_value("None") is None
|
|
393
|
+
assert smart_value("NONE") is None
|
|
394
|
+
|
|
395
|
+
# Test boolean conversion
|
|
396
|
+
assert smart_value("true") is True
|
|
397
|
+
assert smart_value("True") is True
|
|
398
|
+
assert smart_value("TRUE") is True
|
|
399
|
+
assert smart_value("false") is False
|
|
400
|
+
assert smart_value("False") is False
|
|
401
|
+
assert smart_value("FALSE") is False
|
|
402
|
+
|
|
403
|
+
# Test numeric conversion (ast.literal_eval)
|
|
404
|
+
assert smart_value("42") == 42
|
|
405
|
+
assert smart_value("-42") == -42
|
|
406
|
+
assert smart_value("3.14") == 3.14
|
|
407
|
+
assert smart_value("-3.14") == -3.14
|
|
408
|
+
assert smart_value("1e-3") == 0.001
|
|
409
|
+
|
|
410
|
+
# Test list/tuple conversion (ast.literal_eval)
|
|
411
|
+
assert smart_value("[1, 2, 3]") == [1, 2, 3]
|
|
412
|
+
assert smart_value("(1, 2, 3)") == (1, 2, 3)
|
|
413
|
+
assert smart_value("[640, 640]") == [640, 640]
|
|
414
|
+
|
|
415
|
+
# Test dict conversion (ast.literal_eval)
|
|
416
|
+
assert smart_value("{'a': 1, 'b': 2}") == {"a": 1, "b": 2}
|
|
417
|
+
|
|
418
|
+
# Test string fallback (when ast.literal_eval fails)
|
|
419
|
+
assert smart_value("some_string") == "some_string"
|
|
420
|
+
assert smart_value("path/to/file") == "path/to/file"
|
|
421
|
+
assert smart_value("hello world") == "hello world"
|
|
422
|
+
|
|
423
|
+
# Test that code injection is prevented (ast.literal_eval safety)
|
|
424
|
+
# These should return strings, not execute code
|
|
425
|
+
assert smart_value("__import__('os').system('ls')") == "__import__('os').system('ls')"
|
|
426
|
+
assert smart_value("eval('1+1')") == "eval('1+1')"
|
|
427
|
+
assert smart_value("exec('x=1')") == "exec('x=1')"
|
|
389
428
|
|
|
390
429
|
|
|
391
430
|
def test_utils_init():
|
|
@@ -721,7 +760,7 @@ def test_grayscale(task: str, model: str, data: str, tmp_path) -> None:
|
|
|
721
760
|
grayscale_data = tmp_path / f"{Path(data).stem}-grayscale.yaml"
|
|
722
761
|
data = check_det_dataset(data)
|
|
723
762
|
data["channels"] = 1 # add additional channels key for grayscale
|
|
724
|
-
YAML.save(
|
|
763
|
+
YAML.save(data=data, file=grayscale_data)
|
|
725
764
|
# remove npy files in train/val splits if exists, might be created by previous tests
|
|
726
765
|
for split in {"train", "val"}:
|
|
727
766
|
for npy_file in (Path(data["path"]) / data[split]).glob("*.npy"):
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import ast
|
|
5
6
|
import shutil
|
|
6
7
|
import subprocess
|
|
7
8
|
import sys
|
|
@@ -459,7 +460,9 @@ def _handle_deprecation(custom: dict) -> dict:
|
|
|
459
460
|
return custom
|
|
460
461
|
|
|
461
462
|
|
|
462
|
-
def check_dict_alignment(
|
|
463
|
+
def check_dict_alignment(
|
|
464
|
+
base: dict, custom: dict, e: Exception | None = None, allowed_custom_keys: set | None = None
|
|
465
|
+
) -> None:
|
|
463
466
|
"""Check alignment between custom and base configuration dictionaries, handling deprecated keys and providing error
|
|
464
467
|
messages for mismatched keys.
|
|
465
468
|
|
|
@@ -467,6 +470,7 @@ def check_dict_alignment(base: dict, custom: dict, e: Exception | None = None) -
|
|
|
467
470
|
base (dict): The base configuration dictionary containing valid keys.
|
|
468
471
|
custom (dict): The custom configuration dictionary to be checked for alignment.
|
|
469
472
|
e (Exception | None): Optional error instance passed by the calling function.
|
|
473
|
+
allowed_custom_keys (set | None): Optional set of additional keys that are allowed in the custom dictionary.
|
|
470
474
|
|
|
471
475
|
Raises:
|
|
472
476
|
SystemExit: If mismatched keys are found between the custom and base dictionaries.
|
|
@@ -486,7 +490,10 @@ def check_dict_alignment(base: dict, custom: dict, e: Exception | None = None) -
|
|
|
486
490
|
"""
|
|
487
491
|
custom = _handle_deprecation(custom)
|
|
488
492
|
base_keys, custom_keys = (frozenset(x.keys()) for x in (base, custom))
|
|
489
|
-
|
|
493
|
+
# Allow 'augmentations' as a valid custom parameter for custom Albumentations transforms
|
|
494
|
+
if allowed_custom_keys is None:
|
|
495
|
+
allowed_custom_keys = {"augmentations"}
|
|
496
|
+
if mismatched := [k for k in custom_keys if k not in base_keys and k not in allowed_custom_keys]:
|
|
490
497
|
from difflib import get_close_matches
|
|
491
498
|
|
|
492
499
|
string = ""
|
|
@@ -797,7 +804,7 @@ def smart_value(v: str) -> Any:
|
|
|
797
804
|
|
|
798
805
|
Notes:
|
|
799
806
|
- The function uses a case-insensitive comparison for boolean and None values.
|
|
800
|
-
- For other types, it attempts to use Python's
|
|
807
|
+
- For other types, it attempts to use Python's ast.literal_eval() function for safe evaluation.
|
|
801
808
|
- If no conversion is possible, the original string is returned.
|
|
802
809
|
"""
|
|
803
810
|
v_lower = v.lower()
|
|
@@ -809,7 +816,7 @@ def smart_value(v: str) -> Any:
|
|
|
809
816
|
return False
|
|
810
817
|
else:
|
|
811
818
|
try:
|
|
812
|
-
return
|
|
819
|
+
return ast.literal_eval(v)
|
|
813
820
|
except Exception:
|
|
814
821
|
return v
|
|
815
822
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
|
2
|
+
|
|
3
|
+
# Kitti dataset by Karlsruhe Institute of Technology and Toyota Technological Institute at Chicago
|
|
4
|
+
# Documentation: https://docs.ultralytics.com/datasets/detect/kitti/
|
|
5
|
+
# Example usage: yolo train data=kitti.yaml
|
|
6
|
+
# parent
|
|
7
|
+
# ├── ultralytics
|
|
8
|
+
# └── datasets
|
|
9
|
+
# └── kitti ← downloads here (390.5 MB)
|
|
10
|
+
|
|
11
|
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
|
12
|
+
path: kitti # dataset root dir
|
|
13
|
+
train: images/train # train images (relative to 'path') 5985 images
|
|
14
|
+
val: images/val # val images (relative to 'path') 1496 images
|
|
15
|
+
|
|
16
|
+
names:
|
|
17
|
+
0: car
|
|
18
|
+
1: van
|
|
19
|
+
2: truck
|
|
20
|
+
3: pedestrian
|
|
21
|
+
4: person_sitting
|
|
22
|
+
5: cyclist
|
|
23
|
+
6: tram
|
|
24
|
+
7: misc
|
|
25
|
+
|
|
26
|
+
# Download script/URL (optional)
|
|
27
|
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/kitti.zip
|
|
@@ -1845,7 +1845,7 @@ class Albumentations:
|
|
|
1845
1845
|
- Spatial transforms are handled differently and require special processing for bounding boxes.
|
|
1846
1846
|
"""
|
|
1847
1847
|
|
|
1848
|
-
def __init__(self, p: float = 1.0) -> None:
|
|
1848
|
+
def __init__(self, p: float = 1.0, transforms: list | None = None) -> None:
|
|
1849
1849
|
"""Initialize the Albumentations transform object for YOLO bbox formatted parameters.
|
|
1850
1850
|
|
|
1851
1851
|
This class applies various image augmentations using the Albumentations library, including Blur, Median Blur,
|
|
@@ -1854,6 +1854,7 @@ class Albumentations:
|
|
|
1854
1854
|
|
|
1855
1855
|
Args:
|
|
1856
1856
|
p (float): Probability of applying the augmentations. Must be between 0 and 1.
|
|
1857
|
+
transforms (list, optional): List of custom Albumentations transforms. If None, uses default transforms.
|
|
1857
1858
|
|
|
1858
1859
|
Attributes:
|
|
1859
1860
|
p (float): Probability of applying the augmentations.
|
|
@@ -1870,6 +1871,11 @@ class Albumentations:
|
|
|
1870
1871
|
>>> augmented_image = augmented["image"]
|
|
1871
1872
|
>>> augmented_bboxes = augmented["bboxes"]
|
|
1872
1873
|
|
|
1874
|
+
>>> # Custom transforms example
|
|
1875
|
+
>>> import albumentations as A
|
|
1876
|
+
>>> custom_transforms = [A.Blur(p=0.01), A.CLAHE(p=0.01)]
|
|
1877
|
+
>>> transform = Albumentations(p=1.0, transforms=custom_transforms)
|
|
1878
|
+
|
|
1873
1879
|
Notes:
|
|
1874
1880
|
- Requires Albumentations version 1.0.3 or higher.
|
|
1875
1881
|
- Spatial transforms are handled differently to ensure bbox compatibility.
|
|
@@ -1931,16 +1937,20 @@ class Albumentations:
|
|
|
1931
1937
|
"XYMasking",
|
|
1932
1938
|
} # from https://albumentations.ai/docs/getting_started/transforms_and_targets/#spatial-level-transforms
|
|
1933
1939
|
|
|
1934
|
-
# Transforms
|
|
1935
|
-
T =
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1940
|
+
# Transforms, use custom transforms if provided, otherwise use defaults
|
|
1941
|
+
T = (
|
|
1942
|
+
[
|
|
1943
|
+
A.Blur(p=0.01),
|
|
1944
|
+
A.MedianBlur(p=0.01),
|
|
1945
|
+
A.ToGray(p=0.01),
|
|
1946
|
+
A.CLAHE(p=0.01),
|
|
1947
|
+
A.RandomBrightnessContrast(p=0.0),
|
|
1948
|
+
A.RandomGamma(p=0.0),
|
|
1949
|
+
A.ImageCompression(quality_range=(75, 100), p=0.0),
|
|
1950
|
+
]
|
|
1951
|
+
if transforms is None
|
|
1952
|
+
else transforms
|
|
1953
|
+
)
|
|
1944
1954
|
|
|
1945
1955
|
# Compose transforms
|
|
1946
1956
|
self.contains_spatial = any(transform.__class__.__name__ in spatial_transforms for transform in T)
|
|
@@ -2482,6 +2492,12 @@ def v8_transforms(dataset, imgsz: int, hyp: IterableSimpleNamespace, stretch: bo
|
|
|
2482
2492
|
>>> hyp = IterableSimpleNamespace(mosaic=1.0, copy_paste=0.5, degrees=10.0, translate=0.2, scale=0.9)
|
|
2483
2493
|
>>> transforms = v8_transforms(dataset, imgsz=640, hyp=hyp)
|
|
2484
2494
|
>>> augmented_data = transforms(dataset[0])
|
|
2495
|
+
|
|
2496
|
+
>>> # With custom albumentations
|
|
2497
|
+
>>> import albumentations as A
|
|
2498
|
+
>>> augmentations = [A.Blur(p=0.01), A.CLAHE(p=0.01)]
|
|
2499
|
+
>>> hyp.augmentations = augmentations
|
|
2500
|
+
>>> transforms = v8_transforms(dataset, imgsz=640, hyp=hyp)
|
|
2485
2501
|
"""
|
|
2486
2502
|
mosaic = Mosaic(dataset, imgsz=imgsz, p=hyp.mosaic)
|
|
2487
2503
|
affine = RandomPerspective(
|
|
@@ -2519,7 +2535,7 @@ def v8_transforms(dataset, imgsz: int, hyp: IterableSimpleNamespace, stretch: bo
|
|
|
2519
2535
|
pre_transform,
|
|
2520
2536
|
MixUp(dataset, pre_transform=pre_transform, p=hyp.mixup),
|
|
2521
2537
|
CutMix(dataset, pre_transform=pre_transform, p=hyp.cutmix),
|
|
2522
|
-
Albumentations(p=1.0),
|
|
2538
|
+
Albumentations(p=1.0, transforms=getattr(hyp, "augmentations", None)),
|
|
2523
2539
|
RandomHSV(hgain=hyp.hsv_h, sgain=hyp.hsv_s, vgain=hyp.hsv_v),
|
|
2524
2540
|
RandomFlip(direction="vertical", p=hyp.flipud, flip_idx=flip_idx),
|
|
2525
2541
|
RandomFlip(direction="horizontal", p=hyp.fliplr, flip_idx=flip_idx),
|
|
@@ -14,7 +14,7 @@ import numpy as np
|
|
|
14
14
|
import torch
|
|
15
15
|
import torch.distributed as dist
|
|
16
16
|
from PIL import Image
|
|
17
|
-
from torch.utils.data import dataloader, distributed
|
|
17
|
+
from torch.utils.data import Dataset, dataloader, distributed
|
|
18
18
|
|
|
19
19
|
from ultralytics.cfg import IterableSimpleNamespace
|
|
20
20
|
from ultralytics.data.dataset import GroundingDataset, YOLODataset, YOLOMultiModalDataset
|
|
@@ -125,7 +125,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
125
125
|
samples are covered exactly once across all GPUs.
|
|
126
126
|
|
|
127
127
|
Args:
|
|
128
|
-
dataset (
|
|
128
|
+
dataset (Dataset): Dataset to sample from. Must implement __len__.
|
|
129
129
|
num_replicas (int, optional): Number of distributed processes. Defaults to world size.
|
|
130
130
|
batch_size (int, optional): Batch size used by dataloader. Defaults to dataset batch size.
|
|
131
131
|
rank (int, optional): Rank of current process. Defaults to current rank.
|
|
@@ -144,7 +144,14 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
144
144
|
... ...
|
|
145
145
|
"""
|
|
146
146
|
|
|
147
|
-
def __init__(
|
|
147
|
+
def __init__(
|
|
148
|
+
self,
|
|
149
|
+
dataset: Dataset,
|
|
150
|
+
num_replicas: int | None = None,
|
|
151
|
+
batch_size: int | None = None,
|
|
152
|
+
rank: int | None = None,
|
|
153
|
+
shuffle: bool = False,
|
|
154
|
+
) -> None:
|
|
148
155
|
"""Initialize the sampler with dataset and distributed training parameters."""
|
|
149
156
|
if num_replicas is None:
|
|
150
157
|
num_replicas = dist.get_world_size() if dist.is_initialized() else 1
|
|
@@ -153,7 +160,6 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
153
160
|
if batch_size is None:
|
|
154
161
|
batch_size = getattr(dataset, "batch_size", 1)
|
|
155
162
|
|
|
156
|
-
self.dataset = dataset
|
|
157
163
|
self.num_replicas = num_replicas
|
|
158
164
|
self.batch_size = batch_size
|
|
159
165
|
self.rank = rank
|
|
@@ -162,7 +168,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
162
168
|
self.total_size = len(dataset)
|
|
163
169
|
self.num_batches = math.ceil(self.total_size / self.batch_size)
|
|
164
170
|
|
|
165
|
-
def _get_rank_indices(self):
|
|
171
|
+
def _get_rank_indices(self) -> tuple[int, int]:
|
|
166
172
|
"""Calculate the start and end sample indices for this rank."""
|
|
167
173
|
# Calculate which batches this rank handles
|
|
168
174
|
batches_per_rank_base = self.num_batches // self.num_replicas
|
|
@@ -181,7 +187,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
181
187
|
|
|
182
188
|
return start_idx, end_idx
|
|
183
189
|
|
|
184
|
-
def __iter__(self):
|
|
190
|
+
def __iter__(self) -> Iterator:
|
|
185
191
|
"""Generate indices for this rank's contiguous chunk of the dataset."""
|
|
186
192
|
start_idx, end_idx = self._get_rank_indices()
|
|
187
193
|
indices = list(range(start_idx, end_idx))
|
|
@@ -193,12 +199,12 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
193
199
|
|
|
194
200
|
return iter(indices)
|
|
195
201
|
|
|
196
|
-
def __len__(self):
|
|
202
|
+
def __len__(self) -> int:
|
|
197
203
|
"""Return the number of samples in this rank's chunk."""
|
|
198
204
|
start_idx, end_idx = self._get_rank_indices()
|
|
199
205
|
return end_idx - start_idx
|
|
200
206
|
|
|
201
|
-
def set_epoch(self, epoch):
|
|
207
|
+
def set_epoch(self, epoch: int) -> None:
|
|
202
208
|
"""Set the epoch for this sampler to ensure different shuffling patterns across epochs.
|
|
203
209
|
|
|
204
210
|
Args:
|
|
@@ -207,7 +213,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
|
|
|
207
213
|
self.epoch = epoch
|
|
208
214
|
|
|
209
215
|
|
|
210
|
-
def seed_worker(worker_id: int):
|
|
216
|
+
def seed_worker(worker_id: int) -> None:
|
|
211
217
|
"""Set dataloader worker seed for reproducibility across worker processes."""
|
|
212
218
|
worker_seed = torch.initial_seed() % 2**32
|
|
213
219
|
np.random.seed(worker_seed)
|
|
@@ -223,7 +229,7 @@ def build_yolo_dataset(
|
|
|
223
229
|
rect: bool = False,
|
|
224
230
|
stride: int = 32,
|
|
225
231
|
multi_modal: bool = False,
|
|
226
|
-
):
|
|
232
|
+
) -> Dataset:
|
|
227
233
|
"""Build and return a YOLO dataset based on configuration parameters."""
|
|
228
234
|
dataset = YOLOMultiModalDataset if multi_modal else YOLODataset
|
|
229
235
|
return dataset(
|
|
@@ -254,7 +260,7 @@ def build_grounding(
|
|
|
254
260
|
rect: bool = False,
|
|
255
261
|
stride: int = 32,
|
|
256
262
|
max_samples: int = 80,
|
|
257
|
-
):
|
|
263
|
+
) -> Dataset:
|
|
258
264
|
"""Build and return a GroundingDataset based on configuration parameters."""
|
|
259
265
|
return GroundingDataset(
|
|
260
266
|
img_path=img_path,
|
|
@@ -284,7 +290,7 @@ def build_dataloader(
|
|
|
284
290
|
rank: int = -1,
|
|
285
291
|
drop_last: bool = False,
|
|
286
292
|
pin_memory: bool = True,
|
|
287
|
-
):
|
|
293
|
+
) -> InfiniteDataLoader:
|
|
288
294
|
"""Create and return an InfiniteDataLoader or DataLoader for training or validation.
|
|
289
295
|
|
|
290
296
|
Args:
|
|
@@ -331,7 +337,9 @@ def build_dataloader(
|
|
|
331
337
|
)
|
|
332
338
|
|
|
333
339
|
|
|
334
|
-
def check_source(
|
|
340
|
+
def check_source(
|
|
341
|
+
source: str | int | Path | list | tuple | np.ndarray | Image.Image | torch.Tensor,
|
|
342
|
+
) -> tuple[Any, bool, bool, bool, bool, bool]:
|
|
335
343
|
"""Check the type of input source and return corresponding flag values.
|
|
336
344
|
|
|
337
345
|
Args:
|
|
@@ -379,11 +387,17 @@ def check_source(source):
|
|
|
379
387
|
return source, webcam, screenshot, from_img, in_memory, tensor
|
|
380
388
|
|
|
381
389
|
|
|
382
|
-
def load_inference_source(
|
|
390
|
+
def load_inference_source(
|
|
391
|
+
source: str | int | Path | list | tuple | np.ndarray | Image.Image | torch.Tensor,
|
|
392
|
+
batch: int = 1,
|
|
393
|
+
vid_stride: int = 1,
|
|
394
|
+
buffer: bool = False,
|
|
395
|
+
channels: int = 3,
|
|
396
|
+
):
|
|
383
397
|
"""Load an inference source for object detection and apply necessary transformations.
|
|
384
398
|
|
|
385
399
|
Args:
|
|
386
|
-
source (str | Path | torch.Tensor | PIL.Image | np.ndarray
|
|
400
|
+
source (str | Path | list | tuple | torch.Tensor | PIL.Image | np.ndarray): The input source for inference.
|
|
387
401
|
batch (int, optional): Batch size for dataloaders.
|
|
388
402
|
vid_stride (int, optional): The frame interval for video sources.
|
|
389
403
|
buffer (bool, optional): Whether stream frames will be buffered.
|
|
@@ -123,7 +123,7 @@ class LoadStreams:
|
|
|
123
123
|
if urllib.parse.urlparse(s).hostname in {"www.youtube.com", "youtube.com", "youtu.be"}: # YouTube video
|
|
124
124
|
# YouTube format i.e. 'https://www.youtube.com/watch?v=Jsn8D3aC840' or 'https://youtu.be/Jsn8D3aC840'
|
|
125
125
|
s = get_best_youtube_url(s)
|
|
126
|
-
s =
|
|
126
|
+
s = int(s) if s.isnumeric() else s # i.e. s = '0' local webcam
|
|
127
127
|
if s == 0 and (IS_COLAB or IS_KAGGLE):
|
|
128
128
|
raise NotImplementedError(
|
|
129
129
|
"'source=0' webcam not supported in Colab and Kaggle notebooks. "
|
|
@@ -90,7 +90,6 @@ from ultralytics.utils import (
|
|
|
90
90
|
MACOS,
|
|
91
91
|
MACOS_VERSION,
|
|
92
92
|
RKNN_CHIPS,
|
|
93
|
-
ROOT,
|
|
94
93
|
SETTINGS,
|
|
95
94
|
TORCH_VERSION,
|
|
96
95
|
WINDOWS,
|
|
@@ -101,13 +100,11 @@ from ultralytics.utils import (
|
|
|
101
100
|
)
|
|
102
101
|
from ultralytics.utils.checks import (
|
|
103
102
|
check_imgsz,
|
|
104
|
-
check_is_path_safe,
|
|
105
103
|
check_requirements,
|
|
106
104
|
check_version,
|
|
107
105
|
is_intel,
|
|
108
106
|
is_sudo_available,
|
|
109
107
|
)
|
|
110
|
-
from ultralytics.utils.downloads import get_github_assets, safe_download
|
|
111
108
|
from ultralytics.utils.export import (
|
|
112
109
|
keras2pb,
|
|
113
110
|
onnx2engine,
|
|
@@ -165,12 +162,12 @@ def export_formats():
|
|
|
165
162
|
|
|
166
163
|
def best_onnx_opset(onnx, cuda=False) -> int:
|
|
167
164
|
"""Return max ONNX opset for this torch version with ONNX fallback."""
|
|
168
|
-
version = ".".join(TORCH_VERSION.split(".")[:2])
|
|
169
165
|
if TORCH_2_4: # _constants.ONNX_MAX_OPSET first defined in torch 1.13
|
|
170
166
|
opset = torch.onnx.utils._constants.ONNX_MAX_OPSET - 1 # use second-latest version for safety
|
|
171
167
|
if cuda:
|
|
172
168
|
opset -= 2 # fix CUDA ONNXRuntime NMS squeeze op errors
|
|
173
169
|
else:
|
|
170
|
+
version = ".".join(TORCH_VERSION.split(".")[:2])
|
|
174
171
|
opset = {
|
|
175
172
|
"1.8": 12,
|
|
176
173
|
"1.9": 12,
|
|
@@ -532,7 +529,7 @@ class Exporter:
|
|
|
532
529
|
f[0] = self.export_torchscript()
|
|
533
530
|
if engine: # TensorRT required before ONNX
|
|
534
531
|
f[1] = self.export_engine(dla=dla)
|
|
535
|
-
if onnx
|
|
532
|
+
if onnx: # ONNX
|
|
536
533
|
f[2] = self.export_onnx()
|
|
537
534
|
if xml: # OpenVINO
|
|
538
535
|
f[3] = self.export_openvino()
|
|
@@ -822,65 +819,31 @@ class Exporter:
|
|
|
822
819
|
def export_ncnn(self, prefix=colorstr("NCNN:")):
|
|
823
820
|
"""Export YOLO model to NCNN format using PNNX https://github.com/pnnx/pnnx."""
|
|
824
821
|
check_requirements("ncnn", cmds="--no-deps") # no deps to avoid installing opencv-python
|
|
822
|
+
check_requirements("pnnx")
|
|
825
823
|
import ncnn
|
|
824
|
+
import pnnx
|
|
826
825
|
|
|
827
|
-
LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__}...")
|
|
826
|
+
LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__} and PNNX {pnnx.__version__}...")
|
|
828
827
|
f = Path(str(self.file).replace(self.file.suffix, f"_ncnn_model{os.sep}"))
|
|
829
|
-
f_onnx = self.file.with_suffix(".onnx")
|
|
830
828
|
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
)
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
except Exception as e:
|
|
846
|
-
release = "20250930"
|
|
847
|
-
asset = f"pnnx-{release}-{system}.zip"
|
|
848
|
-
LOGGER.warning(f"{prefix} PNNX GitHub assets not found: {e}, using default {asset}")
|
|
849
|
-
unzip_dir = safe_download(f"https://github.com/pnnx/pnnx/releases/download/{release}/{asset}", delete=True)
|
|
850
|
-
if check_is_path_safe(Path.cwd(), unzip_dir): # avoid path traversal security vulnerability
|
|
851
|
-
shutil.move(src=unzip_dir / name, dst=pnnx) # move binary to ROOT
|
|
852
|
-
pnnx.chmod(0o777) # set read, write, and execute permissions for everyone
|
|
853
|
-
shutil.rmtree(unzip_dir) # delete unzip dir
|
|
854
|
-
|
|
855
|
-
ncnn_args = [
|
|
856
|
-
f"ncnnparam={f / 'model.ncnn.param'}",
|
|
857
|
-
f"ncnnbin={f / 'model.ncnn.bin'}",
|
|
858
|
-
f"ncnnpy={f / 'model_ncnn.py'}",
|
|
859
|
-
]
|
|
860
|
-
|
|
861
|
-
pnnx_args = [
|
|
862
|
-
f"pnnxparam={f / 'model.pnnx.param'}",
|
|
863
|
-
f"pnnxbin={f / 'model.pnnx.bin'}",
|
|
864
|
-
f"pnnxpy={f / 'model_pnnx.py'}",
|
|
865
|
-
f"pnnxonnx={f / 'model.pnnx.onnx'}",
|
|
866
|
-
]
|
|
867
|
-
|
|
868
|
-
cmd = [
|
|
869
|
-
str(pnnx),
|
|
870
|
-
str(f_onnx),
|
|
871
|
-
*ncnn_args,
|
|
872
|
-
*pnnx_args,
|
|
873
|
-
f"fp16={int(self.args.half)}",
|
|
874
|
-
f"device={self.device.type}",
|
|
875
|
-
f'inputshape="{[self.args.batch, 3, *self.imgsz]}"',
|
|
876
|
-
]
|
|
829
|
+
ncnn_args = dict(
|
|
830
|
+
ncnnparam=(f / "model.ncnn.param").as_posix(),
|
|
831
|
+
ncnnbin=(f / "model.ncnn.bin").as_posix(),
|
|
832
|
+
ncnnpy=(f / "model_ncnn.py").as_posix(),
|
|
833
|
+
)
|
|
834
|
+
|
|
835
|
+
pnnx_args = dict(
|
|
836
|
+
ptpath=(f / "model.pt").as_posix(),
|
|
837
|
+
pnnxparam=(f / "model.pnnx.param").as_posix(),
|
|
838
|
+
pnnxbin=(f / "model.pnnx.bin").as_posix(),
|
|
839
|
+
pnnxpy=(f / "model_pnnx.py").as_posix(),
|
|
840
|
+
pnnxonnx=(f / "model.pnnx.onnx").as_posix(),
|
|
841
|
+
)
|
|
842
|
+
|
|
877
843
|
f.mkdir(exist_ok=True) # make ncnn_model directory
|
|
878
|
-
|
|
879
|
-
subprocess.run(cmd, check=True)
|
|
844
|
+
pnnx.export(self.model, inputs=self.im, **ncnn_args, **pnnx_args, fp16=self.args.half, device=self.device.type)
|
|
880
845
|
|
|
881
|
-
|
|
882
|
-
pnnx_files = [x.rsplit("=", 1)[-1] for x in pnnx_args]
|
|
883
|
-
for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_files):
|
|
846
|
+
for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_args.values()):
|
|
884
847
|
Path(f_debug).unlink(missing_ok=True)
|
|
885
848
|
|
|
886
849
|
YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
|
|
@@ -740,6 +740,7 @@ class Model(torch.nn.Module):
|
|
|
740
740
|
- optimizer (str): Optimizer to use for training.
|
|
741
741
|
- lr0 (float): Initial learning rate.
|
|
742
742
|
- patience (int): Epochs to wait for no observable improvement for early stopping of training.
|
|
743
|
+
- augmentations (list[Callable]): List of augmentation functions to apply during training.
|
|
743
744
|
|
|
744
745
|
Returns:
|
|
745
746
|
(dict | None): Training metrics if available and training is successful; otherwise, None.
|