dgenerate-ultralytics-headless 8.3.211__tar.gz → 8.3.214__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.211 → dgenerate_ultralytics_headless-8.3.214}/PKG-INFO +1 -1
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_engine.py +19 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_python.py +3 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/__init__.py +1 -1
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/Objects365.yaml +19 -15
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/VOC.yaml +4 -5
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/VisDrone.yaml +5 -5
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco-pose.yaml +3 -2
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/lvis.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/trainer.py +78 -41
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/val.py +1 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/plotting.py +3 -2
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/README.md +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/pyproject.toml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/setup.cfg +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/conftest.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_cli.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_cuda.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_exports.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_integrations.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/assets/bus.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/assets/zidane.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/default.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/annotator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/augment.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/build.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/converter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/dataset.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/loaders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/download_weights.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_coco.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/split.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/split_dota.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/exporter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/predictor.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/results.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/tuner.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/validator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/auth.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/google/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/session.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/amg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/build.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/blocks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/decoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/encoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/sam.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/train_world.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/autobackend.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/activation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/block.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/conv.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/head.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/tasks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/text_model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/py.typed +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/ai_gym.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/analytics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/config.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/distance_calculation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/heatmap.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/instance_segmentation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_blurrer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_cropper.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/parking_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/queue_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/region_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/security_alarm.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/similarity_search.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/speed_estimation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/streamlit_inference.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/trackzone.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/vision_eye.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/basetrack.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/bot_sort.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/byte_tracker.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/track.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/gmc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/matching.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/autobatch.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/autodevice.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/benchmarks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/clearml.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/comet.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/dvc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/hub.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/neptune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/platform.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/raytune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/wb.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/checks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/cpu.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/dist.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/downloads.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/errors.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/events.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/export/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/export/imx.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/files.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/git.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/instance.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/logger.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/metrics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/nms.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/patches.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/tal.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/torch_utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/tqdm.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/triton.py +0 -0
- {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/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.214
|
|
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.214
|
|
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>
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import sys
|
|
4
4
|
from unittest import mock
|
|
5
5
|
|
|
6
|
+
import torch
|
|
7
|
+
|
|
6
8
|
from tests import MODEL
|
|
7
9
|
from ultralytics import YOLO
|
|
8
10
|
from ultralytics.cfg import get_cfg
|
|
@@ -136,3 +138,20 @@ def test_classify():
|
|
|
136
138
|
assert test_func in pred.callbacks["on_predict_start"], "callback test failed"
|
|
137
139
|
result = pred(source=ASSETS, model=trainer.best)
|
|
138
140
|
assert len(result), "predictor test failed"
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def test_nan_recovery():
|
|
144
|
+
"""Test NaN loss detection and recovery during training."""
|
|
145
|
+
nan_injected = [False]
|
|
146
|
+
|
|
147
|
+
def inject_nan(trainer):
|
|
148
|
+
"""Inject NaN into loss during batch processing to test recovery mechanism."""
|
|
149
|
+
if trainer.epoch == 1 and trainer.tloss is not None and not nan_injected[0]:
|
|
150
|
+
trainer.tloss *= torch.tensor(float("nan"))
|
|
151
|
+
nan_injected[0] = True
|
|
152
|
+
|
|
153
|
+
overrides = {"data": "coco8.yaml", "model": "yolo11n.yaml", "imgsz": 32, "epochs": 3}
|
|
154
|
+
trainer = detect.DetectionTrainer(overrides=overrides)
|
|
155
|
+
trainer.add_callback("on_train_batch_end", inject_nan)
|
|
156
|
+
trainer.train()
|
|
157
|
+
assert nan_injected[0], "NaN injection failed"
|
|
@@ -23,6 +23,8 @@ from ultralytics.utils import (
|
|
|
23
23
|
ASSETS_URL,
|
|
24
24
|
DEFAULT_CFG,
|
|
25
25
|
DEFAULT_CFG_PATH,
|
|
26
|
+
IS_JETSON,
|
|
27
|
+
IS_RASPBERRYPI,
|
|
26
28
|
LINUX,
|
|
27
29
|
LOGGER,
|
|
28
30
|
ONLINE,
|
|
@@ -217,6 +219,7 @@ def test_val(task: str, weight: str, data: str) -> None:
|
|
|
217
219
|
metrics.confusion_matrix.to_json()
|
|
218
220
|
|
|
219
221
|
|
|
222
|
+
@pytest.mark.skipif(IS_JETSON or IS_RASPBERRYPI, reason="Edge devices not intended for training")
|
|
220
223
|
def test_train_scratch():
|
|
221
224
|
"""Test training the YOLO model from scratch using the provided configuration."""
|
|
222
225
|
model = YOLO(CFG)
|
|
@@ -384,6 +384,7 @@ names:
|
|
|
384
384
|
|
|
385
385
|
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
|
386
386
|
download: |
|
|
387
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
387
388
|
from pathlib import Path
|
|
388
389
|
|
|
389
390
|
import numpy as np
|
|
@@ -396,31 +397,28 @@ download: |
|
|
|
396
397
|
check_requirements("faster-coco-eval")
|
|
397
398
|
from faster_coco_eval import COCO
|
|
398
399
|
|
|
399
|
-
# Make Directories
|
|
400
|
-
dir = Path(yaml["path"]) # dataset root dir
|
|
401
|
-
for p in "images", "labels":
|
|
402
|
-
(dir / p).mkdir(parents=True, exist_ok=True)
|
|
403
|
-
for q in "train", "val":
|
|
404
|
-
(dir / p / q).mkdir(parents=True, exist_ok=True)
|
|
405
|
-
|
|
406
400
|
# Train, Val Splits
|
|
401
|
+
dir = Path(yaml["path"])
|
|
407
402
|
for split, patches in [("train", 50 + 1), ("val", 43 + 1)]:
|
|
408
403
|
print(f"Processing {split} in {patches} patches ...")
|
|
409
404
|
images, labels = dir / "images" / split, dir / "labels" / split
|
|
405
|
+
images.mkdir(parents=True, exist_ok=True)
|
|
406
|
+
labels.mkdir(parents=True, exist_ok=True)
|
|
410
407
|
|
|
411
408
|
# Download
|
|
412
409
|
url = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/"
|
|
413
410
|
if split == "train":
|
|
414
411
|
download([f"{url}zhiyuan_objv2_{split}.tar.gz"], dir=dir) # annotations json
|
|
415
|
-
download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images,
|
|
412
|
+
download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images, threads=17) # 51 patches / 17 threads = 3
|
|
416
413
|
elif split == "val":
|
|
417
414
|
download([f"{url}zhiyuan_objv2_{split}.json"], dir=dir) # annotations json
|
|
418
|
-
download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images,
|
|
419
|
-
download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images,
|
|
415
|
+
download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images, threads=16)
|
|
416
|
+
download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, threads=16)
|
|
420
417
|
|
|
421
418
|
# Move
|
|
422
|
-
|
|
423
|
-
|
|
419
|
+
files = list(images.rglob("*.jpg"))
|
|
420
|
+
with ThreadPoolExecutor(max_workers=16) as executor:
|
|
421
|
+
list(TQDM(executor.map(lambda f: f.rename(images / f.name), files), total=len(files), desc=f"Moving {split} images"))
|
|
424
422
|
|
|
425
423
|
# Labels
|
|
426
424
|
coco = COCO(dir / f"zhiyuan_objv2_{split}.json")
|
|
@@ -428,10 +426,12 @@ download: |
|
|
|
428
426
|
for cid, cat in enumerate(names):
|
|
429
427
|
catIds = coco.getCatIds(catNms=[cat])
|
|
430
428
|
imgIds = coco.getImgIds(catIds=catIds)
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
429
|
+
|
|
430
|
+
def process_annotation(im):
|
|
431
|
+
"""Process and write annotations for a single image."""
|
|
434
432
|
try:
|
|
433
|
+
width, height = im["width"], im["height"]
|
|
434
|
+
path = Path(im["file_name"])
|
|
435
435
|
with open(labels / path.with_suffix(".txt").name, "a", encoding="utf-8") as file:
|
|
436
436
|
annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None)
|
|
437
437
|
for a in coco.loadAnns(annIds):
|
|
@@ -441,3 +441,7 @@ download: |
|
|
|
441
441
|
file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n")
|
|
442
442
|
except Exception as e:
|
|
443
443
|
print(e)
|
|
444
|
+
|
|
445
|
+
images_list = coco.loadImgs(imgIds)
|
|
446
|
+
with ThreadPoolExecutor(max_workers=16) as executor:
|
|
447
|
+
list(TQDM(executor.map(process_annotation, images_list), total=len(images_list), desc=f"Class {cid + 1}/{len(names)} {cat}"))
|
|
@@ -49,7 +49,7 @@ download: |
|
|
|
49
49
|
from pathlib import Path
|
|
50
50
|
|
|
51
51
|
from ultralytics.utils.downloads import download
|
|
52
|
-
from ultralytics.utils import TQDM
|
|
52
|
+
from ultralytics.utils import ASSETS_URL, TQDM
|
|
53
53
|
|
|
54
54
|
def convert_label(path, lb_path, year, image_id):
|
|
55
55
|
"""Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
|
|
@@ -79,11 +79,10 @@ download: |
|
|
|
79
79
|
|
|
80
80
|
# Download
|
|
81
81
|
dir = Path(yaml["path"]) # dataset root dir
|
|
82
|
-
url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
|
|
83
82
|
urls = [
|
|
84
|
-
f"{
|
|
85
|
-
f"{
|
|
86
|
-
f"{
|
|
83
|
+
f"{ASSETS_URL}/VOCtrainval_06-Nov-2007.zip", # 446MB, 5012 images
|
|
84
|
+
f"{ASSETS_URL}/VOCtest_06-Nov-2007.zip", # 438MB, 4953 images
|
|
85
|
+
f"{ASSETS_URL}/VOCtrainval_11-May-2012.zip", # 1.95GB, 17126 images
|
|
87
86
|
]
|
|
88
87
|
download(urls, dir=dir / "images", threads=3, exist_ok=True) # download and unzip over existing (required)
|
|
89
88
|
|
|
@@ -34,7 +34,7 @@ download: |
|
|
|
34
34
|
import shutil
|
|
35
35
|
|
|
36
36
|
from ultralytics.utils.downloads import download
|
|
37
|
-
from ultralytics.utils import TQDM
|
|
37
|
+
from ultralytics.utils import ASSETS_URL, TQDM
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
def visdrone2yolo(dir, split, source_name=None):
|
|
@@ -73,10 +73,10 @@ download: |
|
|
|
73
73
|
# Download (ignores test-challenge split)
|
|
74
74
|
dir = Path(yaml["path"]) # dataset root dir
|
|
75
75
|
urls = [
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
# "
|
|
76
|
+
f"{ASSETS_URL}/VisDrone2019-DET-train.zip",
|
|
77
|
+
f"{ASSETS_URL}/VisDrone2019-DET-val.zip",
|
|
78
|
+
f"{ASSETS_URL}/VisDrone2019-DET-test-dev.zip",
|
|
79
|
+
# f"{ASSETS_URL}/VisDrone2019-DET-test-challenge.zip",
|
|
80
80
|
]
|
|
81
81
|
download(urls, dir=dir, threads=4)
|
|
82
82
|
|
|
@@ -26,12 +26,13 @@ names:
|
|
|
26
26
|
download: |
|
|
27
27
|
from pathlib import Path
|
|
28
28
|
|
|
29
|
+
from ultralytics.utils import ASSETS_URL
|
|
29
30
|
from ultralytics.utils.downloads import download
|
|
30
31
|
|
|
31
32
|
# Download labels
|
|
32
33
|
dir = Path(yaml["path"]) # dataset root dir
|
|
33
|
-
|
|
34
|
-
urls = [f"{
|
|
34
|
+
|
|
35
|
+
urls = [f"{ASSETS_URL}/coco2017labels-pose.zip"]
|
|
35
36
|
download(urls, dir=dir.parent)
|
|
36
37
|
# Download data
|
|
37
38
|
urls = [
|
|
@@ -101,13 +101,13 @@ names:
|
|
|
101
101
|
download: |
|
|
102
102
|
from pathlib import Path
|
|
103
103
|
|
|
104
|
+
from ultralytics.utils import ASSETS_URL
|
|
104
105
|
from ultralytics.utils.downloads import download
|
|
105
106
|
|
|
106
107
|
# Download labels
|
|
107
108
|
segments = True # segment or box labels
|
|
108
109
|
dir = Path(yaml["path"]) # dataset root dir
|
|
109
|
-
|
|
110
|
-
urls = [url + ("coco2017labels-segments.zip" if segments else "coco2017labels.zip")] # labels
|
|
110
|
+
urls = [ASSETS_URL + ("/coco2017labels-segments.zip" if segments else "/coco2017labels.zip")] # labels
|
|
111
111
|
download(urls, dir=dir.parent)
|
|
112
112
|
# Download data
|
|
113
113
|
urls = [
|
|
@@ -1223,12 +1223,12 @@ names:
|
|
|
1223
1223
|
download: |
|
|
1224
1224
|
from pathlib import Path
|
|
1225
1225
|
|
|
1226
|
+
from ultralytics.utils import ASSETS_URL
|
|
1226
1227
|
from ultralytics.utils.downloads import download
|
|
1227
1228
|
|
|
1228
1229
|
# Download labels
|
|
1229
1230
|
dir = Path(yaml["path"]) # dataset root dir
|
|
1230
|
-
|
|
1231
|
-
urls = [f"{url}lvis-labels-segments.zip"]
|
|
1231
|
+
urls = [f"{ASSETS_URL}/lvis-labels-segments.zip"]
|
|
1232
1232
|
download(urls, dir=dir.parent)
|
|
1233
1233
|
|
|
1234
1234
|
# Download data
|
|
@@ -44,7 +44,6 @@ from ultralytics.utils.dist import ddp_cleanup, generate_ddp_command
|
|
|
44
44
|
from ultralytics.utils.files import get_latest_run
|
|
45
45
|
from ultralytics.utils.plotting import plot_results
|
|
46
46
|
from ultralytics.utils.torch_utils import (
|
|
47
|
-
TORCH_1_9,
|
|
48
47
|
TORCH_2_4,
|
|
49
48
|
EarlyStopping,
|
|
50
49
|
ModelEMA,
|
|
@@ -171,7 +170,10 @@ class BaseTrainer:
|
|
|
171
170
|
self.tloss = None
|
|
172
171
|
self.loss_names = ["Loss"]
|
|
173
172
|
self.csv = self.save_dir / "results.csv"
|
|
173
|
+
if self.csv.exists() and not self.args.resume:
|
|
174
|
+
self.csv.unlink()
|
|
174
175
|
self.plot_idx = [0, 1, 2]
|
|
176
|
+
self.nan_recovery_attempts = 0
|
|
175
177
|
|
|
176
178
|
# Callbacks
|
|
177
179
|
self.callbacks = _callbacks or callbacks.get_default_callbacks()
|
|
@@ -424,23 +426,20 @@ class BaseTrainer:
|
|
|
424
426
|
self.tloss = self.loss_items if self.tloss is None else (self.tloss * i + self.loss_items) / (i + 1)
|
|
425
427
|
|
|
426
428
|
# Backward
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
if RANK
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
break
|
|
442
|
-
else:
|
|
443
|
-
LOGGER.warning(f"Non-finite forward pass (loss={self.loss}), skipping backwards pass...")
|
|
429
|
+
self.scaler.scale(self.loss).backward()
|
|
430
|
+
if ni - last_opt_step >= self.accumulate:
|
|
431
|
+
self.optimizer_step()
|
|
432
|
+
last_opt_step = ni
|
|
433
|
+
|
|
434
|
+
# Timed stopping
|
|
435
|
+
if self.args.time:
|
|
436
|
+
self.stop = (time.time() - self.train_time_start) > (self.args.time * 3600)
|
|
437
|
+
if RANK != -1: # if DDP training
|
|
438
|
+
broadcast_list = [self.stop if RANK == 0 else None]
|
|
439
|
+
dist.broadcast_object_list(broadcast_list, 0) # broadcast 'stop' to all ranks
|
|
440
|
+
self.stop = broadcast_list[0]
|
|
441
|
+
if self.stop: # training time exceeded
|
|
442
|
+
break
|
|
444
443
|
|
|
445
444
|
# Log
|
|
446
445
|
if RANK in {-1, 0}:
|
|
@@ -462,6 +461,7 @@ class BaseTrainer:
|
|
|
462
461
|
self.run_callbacks("on_train_batch_end")
|
|
463
462
|
|
|
464
463
|
self.lr = {f"lr/pg{ir}": x["lr"] for ir, x in enumerate(self.optimizer.param_groups)} # for loggers
|
|
464
|
+
|
|
465
465
|
self.run_callbacks("on_train_epoch_end")
|
|
466
466
|
if RANK in {-1, 0}:
|
|
467
467
|
final_epoch = epoch + 1 >= self.epochs
|
|
@@ -471,6 +471,13 @@ class BaseTrainer:
|
|
|
471
471
|
if self.args.val or final_epoch or self.stopper.possible_stop or self.stop:
|
|
472
472
|
self._clear_memory(threshold=0.5) # prevent VRAM spike
|
|
473
473
|
self.metrics, self.fitness = self.validate()
|
|
474
|
+
|
|
475
|
+
# NaN recovery
|
|
476
|
+
if self._handle_nan_recovery(epoch):
|
|
477
|
+
continue
|
|
478
|
+
|
|
479
|
+
self.nan_recovery_attempts = 0
|
|
480
|
+
if RANK in {-1, 0}:
|
|
474
481
|
self.save_metrics(metrics={**self.label_loss_items(self.tloss), **self.metrics, **self.lr})
|
|
475
482
|
self.stop |= self.stopper(epoch + 1, self.fitness) or final_epoch
|
|
476
483
|
if self.args.time:
|
|
@@ -556,7 +563,10 @@ class BaseTrainer:
|
|
|
556
563
|
"""Read results.csv into a dictionary using polars."""
|
|
557
564
|
import polars as pl # scope for faster 'import ultralytics'
|
|
558
565
|
|
|
559
|
-
|
|
566
|
+
try:
|
|
567
|
+
return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
|
|
568
|
+
except Exception:
|
|
569
|
+
return {}
|
|
560
570
|
|
|
561
571
|
def _model_train(self):
|
|
562
572
|
"""Set model in training mode."""
|
|
@@ -600,6 +610,7 @@ class BaseTrainer:
|
|
|
600
610
|
serialized_ckpt = buffer.getvalue() # get the serialized content to save
|
|
601
611
|
|
|
602
612
|
# Save checkpoints
|
|
613
|
+
self.wdir.mkdir(parents=True, exist_ok=True) # ensure weights directory exists
|
|
603
614
|
self.last.write_bytes(serialized_ckpt) # save last.pt
|
|
604
615
|
if self.best_fitness == self.fitness:
|
|
605
616
|
self.best.write_bytes(serialized_ckpt) # save best.pt
|
|
@@ -665,17 +676,8 @@ class BaseTrainer:
|
|
|
665
676
|
def optimizer_step(self):
|
|
666
677
|
"""Perform a single step of the training optimizer with gradient clipping and EMA update."""
|
|
667
678
|
self.scaler.unscale_(self.optimizer) # unscale gradients
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0, error_if_nonfinite=True)
|
|
671
|
-
self.scaler.step(self.optimizer)
|
|
672
|
-
except RuntimeError as e:
|
|
673
|
-
if "finite" in str(e).lower():
|
|
674
|
-
LOGGER.warning("Non-finite gradients, skipping optimizer updates")
|
|
675
|
-
self.scaler.update()
|
|
676
|
-
self.optimizer.zero_grad()
|
|
677
|
-
return
|
|
678
|
-
raise
|
|
679
|
+
torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0)
|
|
680
|
+
self.scaler.step(self.optimizer)
|
|
679
681
|
self.scaler.update()
|
|
680
682
|
self.optimizer.zero_grad()
|
|
681
683
|
if self.ema:
|
|
@@ -749,8 +751,9 @@ class BaseTrainer:
|
|
|
749
751
|
"""Save training metrics to a CSV file."""
|
|
750
752
|
keys, vals = list(metrics.keys()), list(metrics.values())
|
|
751
753
|
n = len(metrics) + 2 # number of cols
|
|
752
|
-
s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
|
|
753
754
|
t = time.time() - self.train_time_start
|
|
755
|
+
self.csv.parent.mkdir(parents=True, exist_ok=True) # ensure parent directory exists
|
|
756
|
+
s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
|
|
754
757
|
with open(self.csv, "a", encoding="utf-8") as f:
|
|
755
758
|
f.write(s + ("%.6g," * n % tuple([self.epoch + 1, t] + vals)).rstrip(",") + "\n")
|
|
756
759
|
|
|
@@ -812,20 +815,54 @@ class BaseTrainer:
|
|
|
812
815
|
) from e
|
|
813
816
|
self.resume = resume
|
|
814
817
|
|
|
815
|
-
def
|
|
816
|
-
"""
|
|
817
|
-
if ckpt is None or not self.resume:
|
|
818
|
-
return
|
|
819
|
-
best_fitness = 0.0
|
|
820
|
-
start_epoch = ckpt.get("epoch", -1) + 1
|
|
818
|
+
def _load_checkpoint_state(self, ckpt):
|
|
819
|
+
"""Load optimizer, scaler, EMA, and best_fitness from checkpoint."""
|
|
821
820
|
if ckpt.get("optimizer") is not None:
|
|
822
|
-
self.optimizer.load_state_dict(ckpt["optimizer"])
|
|
823
|
-
best_fitness = ckpt["best_fitness"]
|
|
821
|
+
self.optimizer.load_state_dict(ckpt["optimizer"])
|
|
824
822
|
if ckpt.get("scaler") is not None:
|
|
825
823
|
self.scaler.load_state_dict(ckpt["scaler"])
|
|
826
824
|
if self.ema and ckpt.get("ema"):
|
|
827
|
-
self.ema
|
|
825
|
+
self.ema = ModelEMA(self.model) # validation with EMA creates inference tensors that can't be updated
|
|
826
|
+
self.ema.ema.load_state_dict(ckpt["ema"].float().state_dict())
|
|
828
827
|
self.ema.updates = ckpt["updates"]
|
|
828
|
+
self.best_fitness = ckpt.get("best_fitness", 0.0)
|
|
829
|
+
|
|
830
|
+
def _handle_nan_recovery(self, epoch):
|
|
831
|
+
"""Detect and recover from NaN/Inf loss and fitness collapse by loading last checkpoint."""
|
|
832
|
+
loss_nan = self.loss is not None and not self.loss.isfinite()
|
|
833
|
+
fitness_nan = self.fitness is not None and not np.isfinite(self.fitness)
|
|
834
|
+
fitness_collapse = self.best_fitness and self.best_fitness > 0 and self.fitness == 0
|
|
835
|
+
corrupted = RANK in {-1, 0} and loss_nan and (fitness_nan or fitness_collapse)
|
|
836
|
+
reason = "Loss NaN/Inf" if loss_nan else "Fitness NaN/Inf" if fitness_nan else "Fitness collapse"
|
|
837
|
+
if RANK != -1: # DDP: broadcast to all ranks
|
|
838
|
+
broadcast_list = [corrupted if RANK == 0 else None]
|
|
839
|
+
dist.broadcast_object_list(broadcast_list, 0)
|
|
840
|
+
corrupted = broadcast_list[0]
|
|
841
|
+
if not corrupted:
|
|
842
|
+
return False
|
|
843
|
+
if epoch == self.start_epoch or not self.last.exists():
|
|
844
|
+
LOGGER.warning(f"{reason} detected but can not recover from last.pt...")
|
|
845
|
+
return False # Cannot recover on first epoch, let training continue
|
|
846
|
+
self.nan_recovery_attempts += 1
|
|
847
|
+
if self.nan_recovery_attempts > 3:
|
|
848
|
+
raise RuntimeError(f"Training failed: NaN persisted for {self.nan_recovery_attempts} epochs")
|
|
849
|
+
LOGGER.warning(f"{reason} detected (attempt {self.nan_recovery_attempts}/3), recovering from last.pt...")
|
|
850
|
+
self._model_train() # set model to train mode before loading checkpoint to avoid inference tensor errors
|
|
851
|
+
_, ckpt = load_checkpoint(self.last)
|
|
852
|
+
ema_state = ckpt["ema"].float().state_dict()
|
|
853
|
+
if not all(torch.isfinite(v).all() for v in ema_state.values() if isinstance(v, torch.Tensor)):
|
|
854
|
+
raise RuntimeError(f"Checkpoint {self.last} is corrupted with NaN/Inf weights")
|
|
855
|
+
unwrap_model(self.model).load_state_dict(ema_state) # Load EMA weights into model
|
|
856
|
+
self._load_checkpoint_state(ckpt) # Load optimizer/scaler/EMA/best_fitness
|
|
857
|
+
del ckpt, ema_state
|
|
858
|
+
self.scheduler.last_epoch = epoch - 1
|
|
859
|
+
return True
|
|
860
|
+
|
|
861
|
+
def resume_training(self, ckpt):
|
|
862
|
+
"""Resume YOLO training from given epoch and best fitness."""
|
|
863
|
+
if ckpt is None or not self.resume:
|
|
864
|
+
return
|
|
865
|
+
start_epoch = ckpt.get("epoch", -1) + 1
|
|
829
866
|
assert start_epoch > 0, (
|
|
830
867
|
f"{self.args.model} training to {self.epochs} epochs is finished, nothing to resume.\n"
|
|
831
868
|
f"Start a new training without resuming, i.e. 'yolo train model={self.args.model}'"
|
|
@@ -836,7 +873,7 @@ class BaseTrainer:
|
|
|
836
873
|
f"{self.model} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {self.epochs} more epochs."
|
|
837
874
|
)
|
|
838
875
|
self.epochs += ckpt["epoch"] # finetune additional epochs
|
|
839
|
-
self.
|
|
876
|
+
self._load_checkpoint_state(ckpt)
|
|
840
877
|
self.start_epoch = start_epoch
|
|
841
878
|
if start_epoch > (self.epochs - self.args.close_mosaic):
|
|
842
879
|
self._close_dataloader_mosaic()
|
|
@@ -778,10 +778,10 @@ def plot_images(
|
|
|
778
778
|
idx = batch_idx == i
|
|
779
779
|
classes = cls[idx].astype("int")
|
|
780
780
|
labels = confs is None
|
|
781
|
+
conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
|
|
781
782
|
|
|
782
783
|
if len(bboxes):
|
|
783
784
|
boxes = bboxes[idx]
|
|
784
|
-
conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
|
|
785
785
|
if len(boxes):
|
|
786
786
|
if boxes[:, :4].max() <= 1.1: # if normalized with tolerance 0.1
|
|
787
787
|
boxes[..., [0, 2]] *= w # scale to pixels
|
|
@@ -805,7 +805,8 @@ def plot_images(
|
|
|
805
805
|
for c in classes:
|
|
806
806
|
color = colors(c)
|
|
807
807
|
c = names.get(c, c) if names else c
|
|
808
|
-
|
|
808
|
+
label = f"{c}" if labels else f"{c} {conf[0]:.1f}"
|
|
809
|
+
annotator.text([x, y], label, txt_color=color, box_color=(64, 64, 64, 128))
|
|
809
810
|
|
|
810
811
|
# Plot keypoints
|
|
811
812
|
if len(kpts):
|
|
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.211 → dgenerate_ultralytics_headless-8.3.214}/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/__init__.py
RENAMED
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/conftest.py
RENAMED
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_cli.py
RENAMED
|
File without changes
|
{dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/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
|