dgenerate-ultralytics-headless 8.3.168__tar.gz → 8.3.169__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.168 → dgenerate_ultralytics_headless-8.3.169}/PKG-INFO +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_cli.py +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_python.py +4 -3
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/__init__.py +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/default.yaml +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/exporter.py +0 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/model.py +3 -2
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/rtdetr/predict.py +1 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/classify/val.py +1 -1
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/detect/val.py +5 -3
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/obb/val.py +1 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/metrics.py +103 -17
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/plotting.py +2 -2
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/README.md +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/pyproject.toml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/setup.cfg +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/conftest.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_cuda.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_engine.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_exports.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_integrations.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/assets/bus.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/assets/zidane.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/annotator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/augment.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/build.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/converter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/dataset.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/loaders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/scripts/download_weights.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/scripts/get_coco.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/split.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/split_dota.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/data/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/predictor.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/results.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/trainer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/tuner.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/engine/validator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/hub/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/hub/auth.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/hub/google/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/hub/session.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/hub/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/fastsam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/fastsam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/fastsam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/fastsam/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/fastsam/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/nas/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/nas/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/nas/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/nas/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/rtdetr/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/rtdetr/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/rtdetr/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/rtdetr/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/amg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/build.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/blocks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/decoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/encoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/sam.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/sam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/classify/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/classify/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/detect/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/detect/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/obb/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/obb/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/pose/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/pose/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/pose/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/segment/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/segment/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/segment/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/world/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/world/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/world/train_world.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/autobackend.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/activation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/block.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/conv.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/head.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/tasks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/nn/text_model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/ai_gym.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/analytics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/config.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/distance_calculation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/heatmap.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/instance_segmentation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/object_blurrer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/object_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/object_cropper.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/parking_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/queue_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/region_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/security_alarm.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/similarity_search.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/speed_estimation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/streamlit_inference.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/trackzone.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/solutions/vision_eye.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/basetrack.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/bot_sort.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/byte_tracker.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/track.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/utils/gmc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/trackers/utils/matching.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/autobatch.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/autodevice.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/benchmarks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/clearml.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/comet.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/dvc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/hub.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/neptune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/raytune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/callbacks/wb.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/checks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/dist.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/downloads.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/errors.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/export.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/files.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/instance.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/patches.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/tal.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/torch_utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/ultralytics/utils/triton.py +0 -0
- {dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/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.169
|
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>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dgenerate-ultralytics-headless
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.169
|
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>
|
{dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_cli.py
RENAMED
@@ -39,7 +39,7 @@ def test_val(task: str, model: str, data: str) -> None:
|
|
39
39
|
@pytest.mark.parametrize("task,model,data", TASK_MODEL_DATA)
|
40
40
|
def test_predict(task: str, model: str, data: str) -> None:
|
41
41
|
"""Test YOLO prediction on provided sample assets for specified task and model."""
|
42
|
-
run(f"yolo {task} predict model={model} source={ASSETS} imgsz=32 save save_crop save_txt")
|
42
|
+
run(f"yolo {task} predict model={model} source={ASSETS} imgsz=32 save save_crop save_txt visualize")
|
43
43
|
|
44
44
|
|
45
45
|
@pytest.mark.parametrize("model", MODELS)
|
@@ -201,11 +201,12 @@ def test_track_stream(model):
|
|
201
201
|
model.track(video_url, imgsz=160, tracker=custom_yaml)
|
202
202
|
|
203
203
|
|
204
|
-
@pytest.mark.parametrize("task,
|
205
|
-
def test_val(task: str,
|
204
|
+
@pytest.mark.parametrize("task,weight,data", TASK_MODEL_DATA)
|
205
|
+
def test_val(task: str, weight: str, data: str) -> None:
|
206
206
|
"""Test the validation mode of the YOLO model."""
|
207
|
+
model = YOLO(weight)
|
207
208
|
for plots in {True, False}: # Test both cases i.e. plots=True and plots=False
|
208
|
-
metrics =
|
209
|
+
metrics = model.val(data=data, imgsz=32, plots=plots)
|
209
210
|
metrics.to_df()
|
210
211
|
metrics.to_csv()
|
211
212
|
metrics.to_xml()
|
@@ -58,7 +58,7 @@ plots: True # (bool) save plots and images during train/val
|
|
58
58
|
source: # (str, optional) source directory for images or videos
|
59
59
|
vid_stride: 1 # (int) video frame-rate stride
|
60
60
|
stream_buffer: False # (bool) buffer all streaming frames (True) or return the most recent frame (False)
|
61
|
-
visualize: False # (bool) visualize model features
|
61
|
+
visualize: False # (bool) visualize model features (predict) or visualize TP, FP, FN (val)
|
62
62
|
augment: False # (bool) apply image augmentation to prediction sources
|
63
63
|
agnostic_nms: False # (bool) class-agnostic NMS
|
64
64
|
classes: # (int | list[int], optional) filter results by class, i.e. classes=0, or classes=[0,2,3]
|
@@ -1014,7 +1014,6 @@ class Exporter:
|
|
1014
1014
|
enable_batchmatmul_unfold=True, # fix lower no. of detected objects on GPU delegate
|
1015
1015
|
output_signaturedefs=True, # fix error with Attention block group convolution
|
1016
1016
|
disable_group_convolution=self.args.format in {"tfjs", "edgetpu"}, # fix error with group convolution
|
1017
|
-
optimization_for_gpu_delegate=True,
|
1018
1017
|
)
|
1019
1018
|
YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
|
1020
1019
|
|
@@ -907,8 +907,9 @@ class Model(torch.nn.Module):
|
|
907
907
|
if hasattr(self.model, "names"):
|
908
908
|
return check_class_names(self.model.names)
|
909
909
|
if not self.predictor: # export formats will not have predictor defined until predict() is called
|
910
|
-
|
911
|
-
|
910
|
+
predictor = self._smart_load("predictor")(overrides=self.overrides, _callbacks=self.callbacks)
|
911
|
+
predictor.setup_model(model=self.model, verbose=False) # do not mess with self.predictor.model args
|
912
|
+
return predictor.model.names
|
912
913
|
return self.predictor.model.names
|
913
914
|
|
914
915
|
@property
|
@@ -67,6 +67,7 @@ class RTDETRPredictor(BasePredictor):
|
|
67
67
|
if self.args.classes is not None:
|
68
68
|
idx = (cls == torch.tensor(self.args.classes, device=cls.device)).any(1) & idx
|
69
69
|
pred = torch.cat([bbox, max_score, cls], dim=-1)[idx] # filter
|
70
|
+
pred = pred[pred[:, 4].argsort(descending=True)][: self.args.max_det]
|
70
71
|
oh, ow = orig_img.shape[:2]
|
71
72
|
pred[..., [0, 2]] *= ow # scale x coordinates to original width
|
72
73
|
pred[..., [1, 3]] *= oh # scale y coordinates to original height
|
@@ -83,7 +83,7 @@ class ClassificationValidator(BaseValidator):
|
|
83
83
|
self.nc = len(model.names)
|
84
84
|
self.pred = []
|
85
85
|
self.targets = []
|
86
|
-
self.confusion_matrix = ConfusionMatrix(names=
|
86
|
+
self.confusion_matrix = ConfusionMatrix(names=model.names)
|
87
87
|
|
88
88
|
def preprocess(self, batch: Dict[str, Any]) -> Dict[str, Any]:
|
89
89
|
"""Preprocess input batch by moving data to device and converting to appropriate dtype."""
|
@@ -97,8 +97,8 @@ class DetectionValidator(BaseValidator):
|
|
97
97
|
self.end2end = getattr(model, "end2end", False)
|
98
98
|
self.seen = 0
|
99
99
|
self.jdict = []
|
100
|
-
self.metrics.names =
|
101
|
-
self.confusion_matrix = ConfusionMatrix(names=
|
100
|
+
self.metrics.names = model.names
|
101
|
+
self.confusion_matrix = ConfusionMatrix(names=model.names, save_matches=self.args.plots and self.args.visualize)
|
102
102
|
|
103
103
|
def get_desc(self) -> str:
|
104
104
|
"""Return a formatted string summarizing class metrics of YOLO model."""
|
@@ -197,6 +197,8 @@ class DetectionValidator(BaseValidator):
|
|
197
197
|
# Evaluate
|
198
198
|
if self.args.plots:
|
199
199
|
self.confusion_matrix.process_batch(predn, pbatch, conf=self.args.conf)
|
200
|
+
if self.args.visualize:
|
201
|
+
self.confusion_matrix.plot_matches(batch["img"][si], pbatch["im_file"], self.save_dir)
|
200
202
|
|
201
203
|
if no_pred:
|
202
204
|
continue
|
@@ -209,7 +211,7 @@ class DetectionValidator(BaseValidator):
|
|
209
211
|
predn,
|
210
212
|
self.args.save_conf,
|
211
213
|
pbatch["ori_shape"],
|
212
|
-
self.save_dir / "labels" / f"{Path(
|
214
|
+
self.save_dir / "labels" / f"{Path(pbatch['im_file']).stem}.txt",
|
213
215
|
)
|
214
216
|
|
215
217
|
def finalize_metrics(self) -> None:
|
@@ -67,6 +67,7 @@ class OBBValidator(DetectionValidator):
|
|
67
67
|
super().init_metrics(model)
|
68
68
|
val = self.data.get(self.args.split, "") # validation path
|
69
69
|
self.is_dota = isinstance(val, str) and "DOTA" in val # check if dataset is DOTA format
|
70
|
+
self.confusion_matrix.task = "obb" # set confusion matrix task to 'obb'
|
70
71
|
|
71
72
|
def _process_batch(self, preds: Dict[str, torch.Tensor], batch: Dict[str, torch.Tensor]) -> Dict[str, np.ndarray]:
|
72
73
|
"""
|
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
import math
|
5
5
|
import warnings
|
6
|
+
from collections import defaultdict
|
6
7
|
from pathlib import Path
|
7
8
|
from typing import Any, Dict, List, Tuple, Union
|
8
9
|
|
@@ -318,35 +319,68 @@ class ConfusionMatrix(DataExportMixin):
|
|
318
319
|
matrix (np.ndarray): The confusion matrix, with dimensions depending on the task.
|
319
320
|
nc (int): The number of category.
|
320
321
|
names (List[str]): The names of the classes, used as labels on the plot.
|
322
|
+
matches (dict): Contains the indices of ground truths and predictions categorized into TP, FP and FN.
|
321
323
|
"""
|
322
324
|
|
323
|
-
def __init__(self, names:
|
325
|
+
def __init__(self, names: Dict[int, str] = [], task: str = "detect", save_matches: bool = False):
|
324
326
|
"""
|
325
327
|
Initialize a ConfusionMatrix instance.
|
326
328
|
|
327
329
|
Args:
|
328
|
-
names (
|
330
|
+
names (Dict[int, str], optional): Names of classes, used as labels on the plot.
|
329
331
|
task (str, optional): Type of task, either 'detect' or 'classify'.
|
332
|
+
save_matches (bool, optional): Save the indices of GTs, TPs, FPs, FNs for visualization.
|
330
333
|
"""
|
331
334
|
self.task = task
|
332
335
|
self.nc = len(names) # number of classes
|
333
336
|
self.matrix = np.zeros((self.nc, self.nc)) if self.task == "classify" else np.zeros((self.nc + 1, self.nc + 1))
|
334
337
|
self.names = names # name of classes
|
338
|
+
self.matches = {} if save_matches else None
|
335
339
|
|
336
|
-
def
|
340
|
+
def _append_matches(self, mtype: str, batch: Dict[str, Any], idx: int) -> None:
|
341
|
+
"""
|
342
|
+
Append the matches to TP, FP, FN or GT list for the last batch.
|
343
|
+
|
344
|
+
This method updates the matches dictionary by appending specific batch data
|
345
|
+
to the appropriate match type (True Positive, False Positive, or False Negative).
|
346
|
+
|
347
|
+
Args:
|
348
|
+
mtype (str): Match type identifier ('TP', 'FP', 'FN' or 'GT').
|
349
|
+
batch (Dict[str, Any]): Batch data containing detection results with keys
|
350
|
+
like 'bboxes', 'cls', 'conf', 'keypoints', 'masks'.
|
351
|
+
idx (int): Index of the specific detection to append from the batch.
|
352
|
+
|
353
|
+
Note:
|
354
|
+
For masks, handles both overlap and non-overlap cases. When masks.max() > 1.0,
|
355
|
+
it indicates overlap_mask=True with shape (1, H, W), otherwise uses direct indexing.
|
356
|
+
"""
|
357
|
+
if self.matches is None:
|
358
|
+
return
|
359
|
+
for k, v in batch.items():
|
360
|
+
if k in {"bboxes", "cls", "conf", "keypoints"}:
|
361
|
+
self.matches[mtype][k] += v[[idx]]
|
362
|
+
elif k == "masks":
|
363
|
+
# NOTE: masks.max() > 1.0 means overlap_mask=True with (1, H, W) shape
|
364
|
+
self.matches[mtype][k] += [v[0] == idx + 1] if v.max() > 1.0 else [v[idx]]
|
365
|
+
|
366
|
+
def process_cls_preds(self, preds: List[torch.Tensor], targets: List[torch.Tensor]) -> None:
|
337
367
|
"""
|
338
368
|
Update confusion matrix for classification task.
|
339
369
|
|
340
370
|
Args:
|
341
|
-
preds (
|
342
|
-
targets (
|
371
|
+
preds (List[N, min(nc,5)]): Predicted class labels.
|
372
|
+
targets (List[N, 1]): Ground truth class labels.
|
343
373
|
"""
|
344
374
|
preds, targets = torch.cat(preds)[:, 0], torch.cat(targets)
|
345
375
|
for p, t in zip(preds.cpu().numpy(), targets.cpu().numpy()):
|
346
376
|
self.matrix[p][t] += 1
|
347
377
|
|
348
378
|
def process_batch(
|
349
|
-
self,
|
379
|
+
self,
|
380
|
+
detections: Dict[str, torch.Tensor],
|
381
|
+
batch: Dict[str, Any],
|
382
|
+
conf: float = 0.25,
|
383
|
+
iou_thres: float = 0.45,
|
350
384
|
) -> None:
|
351
385
|
"""
|
352
386
|
Update confusion matrix for object detection task.
|
@@ -361,23 +395,29 @@ class ConfusionMatrix(DataExportMixin):
|
|
361
395
|
iou_thres (float, optional): IoU threshold for matching detections to ground truth.
|
362
396
|
"""
|
363
397
|
gt_cls, gt_bboxes = batch["cls"], batch["bboxes"]
|
398
|
+
if self.matches is not None: # only if visualization is enabled
|
399
|
+
self.matches = {k: defaultdict(list) for k in {"TP", "FP", "FN", "GT"}}
|
400
|
+
for i in range(len(gt_cls)):
|
401
|
+
self._append_matches("GT", batch, i) # store GT
|
364
402
|
is_obb = gt_bboxes.shape[1] == 5 # check if boxes contains angle for OBB
|
365
403
|
conf = 0.25 if conf in {None, 0.01 if is_obb else 0.001} else conf # apply 0.25 if default val conf is passed
|
366
404
|
no_pred = len(detections["cls"]) == 0
|
367
405
|
if gt_cls.shape[0] == 0: # Check if labels is empty
|
368
406
|
if not no_pred:
|
369
|
-
detections = {k: detections[k][detections["conf"] > conf] for k in
|
407
|
+
detections = {k: detections[k][detections["conf"] > conf] for k in detections.keys()}
|
370
408
|
detection_classes = detections["cls"].int().tolist()
|
371
|
-
for dc in detection_classes:
|
372
|
-
self.matrix[dc, self.nc] += 1 #
|
409
|
+
for i, dc in enumerate(detection_classes):
|
410
|
+
self.matrix[dc, self.nc] += 1 # FP
|
411
|
+
self._append_matches("FP", detections, i)
|
373
412
|
return
|
374
413
|
if no_pred:
|
375
414
|
gt_classes = gt_cls.int().tolist()
|
376
|
-
for gc in gt_classes:
|
377
|
-
self.matrix[self.nc, gc] += 1 #
|
415
|
+
for i, gc in enumerate(gt_classes):
|
416
|
+
self.matrix[self.nc, gc] += 1 # FN
|
417
|
+
self._append_matches("FN", batch, i)
|
378
418
|
return
|
379
419
|
|
380
|
-
detections = {k: detections[k][detections["conf"] > conf] for k in
|
420
|
+
detections = {k: detections[k][detections["conf"] > conf] for k in detections.keys()}
|
381
421
|
gt_classes = gt_cls.int().tolist()
|
382
422
|
detection_classes = detections["cls"].int().tolist()
|
383
423
|
bboxes = detections["bboxes"]
|
@@ -399,13 +439,21 @@ class ConfusionMatrix(DataExportMixin):
|
|
399
439
|
for i, gc in enumerate(gt_classes):
|
400
440
|
j = m0 == i
|
401
441
|
if n and sum(j) == 1:
|
402
|
-
|
442
|
+
dc = detection_classes[m1[j].item()]
|
443
|
+
self.matrix[dc, gc] += 1 # TP if class is correct else both an FP and an FN
|
444
|
+
if dc == gc:
|
445
|
+
self._append_matches("TP", detections, m1[j].item())
|
446
|
+
else:
|
447
|
+
self._append_matches("FP", detections, m1[j].item())
|
448
|
+
self._append_matches("FN", batch, i)
|
403
449
|
else:
|
404
|
-
self.matrix[self.nc, gc] += 1 #
|
450
|
+
self.matrix[self.nc, gc] += 1 # FN
|
451
|
+
self._append_matches("FN", batch, i)
|
405
452
|
|
406
453
|
for i, dc in enumerate(detection_classes):
|
407
454
|
if not any(m1 == i):
|
408
|
-
self.matrix[dc, self.nc] += 1 #
|
455
|
+
self.matrix[dc, self.nc] += 1 # FP
|
456
|
+
self._append_matches("FP", detections, i)
|
409
457
|
|
410
458
|
def matrix(self):
|
411
459
|
"""Return the confusion matrix."""
|
@@ -424,6 +472,44 @@ class ConfusionMatrix(DataExportMixin):
|
|
424
472
|
# fn = self.matrix.sum(0) - tp # false negatives (missed detections)
|
425
473
|
return (tp, fp) if self.task == "classify" else (tp[:-1], fp[:-1]) # remove background class if task=detect
|
426
474
|
|
475
|
+
def plot_matches(self, img: torch.Tensor, im_file: str, save_dir: Path) -> None:
|
476
|
+
"""
|
477
|
+
Plot grid of GT, TP, FP, FN for each image.
|
478
|
+
|
479
|
+
Args:
|
480
|
+
img (torch.Tensor): Image to plot onto.
|
481
|
+
im_file (str): Image filename to save visualizations.
|
482
|
+
save_dir (Path): Location to save the visualizations to.
|
483
|
+
"""
|
484
|
+
if not self.matches:
|
485
|
+
return
|
486
|
+
from .ops import xyxy2xywh
|
487
|
+
from .plotting import plot_images
|
488
|
+
|
489
|
+
# Create batch of 4 (GT, TP, FP, FN)
|
490
|
+
labels = defaultdict(list)
|
491
|
+
for i, mtype in enumerate(["GT", "FP", "TP", "FN"]):
|
492
|
+
mbatch = self.matches[mtype]
|
493
|
+
if "conf" not in mbatch:
|
494
|
+
mbatch["conf"] = torch.tensor([1.0] * len(mbatch["bboxes"]), device=img.device)
|
495
|
+
mbatch["batch_idx"] = torch.ones(len(mbatch["bboxes"]), device=img.device) * i
|
496
|
+
for k in mbatch.keys():
|
497
|
+
labels[k] += mbatch[k]
|
498
|
+
|
499
|
+
labels = {k: torch.stack(v, 0) if len(v) else v for k, v in labels.items()}
|
500
|
+
if not self.task == "obb" and len(labels["bboxes"]):
|
501
|
+
labels["bboxes"] = xyxy2xywh(labels["bboxes"])
|
502
|
+
(save_dir / "visualizations").mkdir(parents=True, exist_ok=True)
|
503
|
+
plot_images(
|
504
|
+
labels,
|
505
|
+
img.repeat(4, 1, 1, 1),
|
506
|
+
paths=["Ground Truth", "False Positives", "True Positives", "False Negatives"],
|
507
|
+
fname=save_dir / "visualizations" / Path(im_file).name,
|
508
|
+
names=self.names,
|
509
|
+
max_subplots=4,
|
510
|
+
conf_thres=0.001,
|
511
|
+
)
|
512
|
+
|
427
513
|
@TryExcept(msg="ConfusionMatrix plot failure")
|
428
514
|
@plt_settings()
|
429
515
|
def plot(self, normalize: bool = True, save_dir: str = "", on_plot=None):
|
@@ -441,7 +527,7 @@ class ConfusionMatrix(DataExportMixin):
|
|
441
527
|
array[array < 0.005] = np.nan # don't annotate (would appear as 0.00)
|
442
528
|
|
443
529
|
fig, ax = plt.subplots(1, 1, figsize=(12, 9))
|
444
|
-
names, n = self.names, self.nc
|
530
|
+
names, n = list(self.names.values()), self.nc
|
445
531
|
if self.nc >= 100: # downsample for large class count
|
446
532
|
k = max(2, self.nc // 60) # step size for downsampling, always > 1
|
447
533
|
keep_idx = slice(None, None, k) # create slice instead of array
|
@@ -522,7 +608,7 @@ class ConfusionMatrix(DataExportMixin):
|
|
522
608
|
"""
|
523
609
|
import re
|
524
610
|
|
525
|
-
names = self.names if self.task == "classify" else self.names + ["background"]
|
611
|
+
names = list(self.names.values()) if self.task == "classify" else list(self.names.values()) + ["background"]
|
526
612
|
clean_names, seen = [], set()
|
527
613
|
for name in names:
|
528
614
|
clean_name = re.sub(r"[^a-zA-Z0-9_]", "_", name)
|
@@ -810,9 +810,9 @@ def plot_images(
|
|
810
810
|
|
811
811
|
# Plot masks
|
812
812
|
if len(masks):
|
813
|
-
if idx.shape[0] == masks.shape[0]: #
|
813
|
+
if idx.shape[0] == masks.shape[0]: # overlap_mask=False
|
814
814
|
image_masks = masks[idx]
|
815
|
-
else: #
|
815
|
+
else: # overlap_mask=True
|
816
816
|
image_masks = masks[[i]] # (1, 640, 640)
|
817
817
|
nl = idx.sum()
|
818
818
|
index = np.arange(nl).reshape((nl, 1, 1)) + 1
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/pyproject.toml
RENAMED
File without changes
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/__init__.py
RENAMED
File without changes
|
{dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/conftest.py
RENAMED
File without changes
|
{dgenerate_ultralytics_headless-8.3.168 → dgenerate_ultralytics_headless-8.3.169}/tests/test_cuda.py
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|