dgenerate-ultralytics-headless 8.3.184__tar.gz → 8.3.186__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.184 → dgenerate_ultralytics_headless-8.3.186}/PKG-INFO +4 -5
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/README.md +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +4 -5
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +1 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/requires.txt +1 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/pyproject.toml +1 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/__init__.py +1 -1
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/Argoverse.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/Objects365.yaml +3 -3
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/SKU-110K.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/VOC.yaml +2 -4
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/VisDrone.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/xView.yaml +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/build.py +2 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/converter.py +1 -1
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/dataset.py +1 -1
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/utils.py +0 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/exporter.py +4 -1
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/region_counter.py +3 -2
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/__init__.py +1 -62
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/autodevice.py +1 -1
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/downloads.py +29 -19
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/logger.py +21 -22
- dgenerate_ultralytics_headless-8.3.186/ultralytics/utils/tqdm.py +462 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/setup.cfg +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/conftest.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_cli.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_cuda.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_engine.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_exports.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_integrations.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_python.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/tests/test_solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/assets/bus.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/assets/zidane.jpg +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/default.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/annotator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/augment.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/loaders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/scripts/download_weights.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/scripts/get_coco.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/split.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/data/split_dota.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/predictor.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/results.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/trainer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/tuner.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/engine/validator.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/hub/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/hub/auth.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/hub/google/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/hub/session.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/hub/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/fastsam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/fastsam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/fastsam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/fastsam/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/fastsam/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/nas/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/nas/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/nas/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/nas/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/rtdetr/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/rtdetr/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/rtdetr/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/rtdetr/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/rtdetr/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/amg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/build.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/blocks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/decoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/encoders.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/sam.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/sam/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/classify/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/classify/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/classify/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/detect/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/detect/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/detect/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/obb/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/obb/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/obb/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/pose/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/pose/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/pose/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/segment/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/segment/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/segment/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/world/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/world/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/world/train_world.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/autobackend.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/activation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/block.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/conv.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/head.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/transformer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/modules/utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/tasks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/nn/text_model.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/py.typed +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/ai_gym.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/analytics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/config.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/distance_calculation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/heatmap.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/instance_segmentation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/object_blurrer.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/object_counter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/object_cropper.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/parking_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/queue_management.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/security_alarm.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/similarity_search.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/solutions.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/speed_estimation.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/streamlit_inference.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/trackzone.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/solutions/vision_eye.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/basetrack.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/bot_sort.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/byte_tracker.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/track.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/utils/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/utils/gmc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/trackers/utils/matching.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/autobatch.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/benchmarks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/__init__.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/base.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/clearml.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/comet.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/dvc.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/hub.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/neptune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/platform.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/raytune.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/callbacks/wb.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/checks.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/dist.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/errors.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/export.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/files.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/instance.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/loss.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/metrics.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/ops.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/patches.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/plotting.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/tal.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/torch_utils.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/ultralytics/utils/triton.py +0 -0
- {dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/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.186
|
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>
|
@@ -42,7 +42,6 @@ Requires-Dist: scipy>=1.4.1
|
|
42
42
|
Requires-Dist: torch>=1.8.0
|
43
43
|
Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
|
44
44
|
Requires-Dist: torchvision>=0.9.0
|
45
|
-
Requires-Dist: tqdm>=4.64.0
|
46
45
|
Requires-Dist: psutil
|
47
46
|
Requires-Dist: py-cpuinfo
|
48
47
|
Requires-Dist: pandas>=1.1.4
|
@@ -55,7 +54,7 @@ Requires-Dist: coverage[toml]; extra == "dev"
|
|
55
54
|
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
56
55
|
Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
57
56
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.
|
57
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.28; extra == "dev"
|
59
58
|
Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
|
60
59
|
Provides-Extra: export
|
61
60
|
Requires-Dist: numpy<2.0.0; extra == "export"
|
@@ -131,7 +130,7 @@ The workflow runs automatically every day at midnight UTC to check for new Ultra
|
|
131
130
|
|
132
131
|
<div>
|
133
132
|
<a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml/badge.svg" alt="Ultralytics CI"></a>
|
134
|
-
<a href="https://
|
133
|
+
<a href="https://clickpy.clickhouse.com/dashboard/ultralytics"><img src="https://static.pepy.tech/badge/ultralytics" alt="Ultralytics Downloads"></a>
|
135
134
|
<a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
|
136
135
|
<a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
|
137
136
|
<a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
|
@@ -180,7 +179,7 @@ See below for quickstart installation and usage examples. For comprehensive guid
|
|
180
179
|
|
181
180
|
Install the `ultralytics` package, including all [requirements](https://github.com/ultralytics/ultralytics/blob/main/pyproject.toml), in a [**Python>=3.8**](https://www.python.org/) environment with [**PyTorch>=1.8**](https://pytorch.org/get-started/locally/).
|
182
181
|
|
183
|
-
[](https://pypi.org/project/ultralytics/) [](https://
|
182
|
+
[](https://pypi.org/project/ultralytics/) [](https://clickpy.clickhouse.com/dashboard/ultralytics) [](https://pypi.org/project/ultralytics/)
|
184
183
|
|
185
184
|
```bash
|
186
185
|
pip install ultralytics
|
@@ -39,7 +39,7 @@ The workflow runs automatically every day at midnight UTC to check for new Ultra
|
|
39
39
|
|
40
40
|
<div>
|
41
41
|
<a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml/badge.svg" alt="Ultralytics CI"></a>
|
42
|
-
<a href="https://
|
42
|
+
<a href="https://clickpy.clickhouse.com/dashboard/ultralytics"><img src="https://static.pepy.tech/badge/ultralytics" alt="Ultralytics Downloads"></a>
|
43
43
|
<a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
|
44
44
|
<a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
|
45
45
|
<a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
|
@@ -88,7 +88,7 @@ See below for quickstart installation and usage examples. For comprehensive guid
|
|
88
88
|
|
89
89
|
Install the `ultralytics` package, including all [requirements](https://github.com/ultralytics/ultralytics/blob/main/pyproject.toml), in a [**Python>=3.8**](https://www.python.org/) environment with [**PyTorch>=1.8**](https://pytorch.org/get-started/locally/).
|
90
90
|
|
91
|
-
[](https://pypi.org/project/ultralytics/) [](https://
|
91
|
+
[](https://pypi.org/project/ultralytics/) [](https://clickpy.clickhouse.com/dashboard/ultralytics) [](https://pypi.org/project/ultralytics/)
|
92
92
|
|
93
93
|
```bash
|
94
94
|
pip install ultralytics
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dgenerate-ultralytics-headless
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.186
|
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>
|
@@ -42,7 +42,6 @@ Requires-Dist: scipy>=1.4.1
|
|
42
42
|
Requires-Dist: torch>=1.8.0
|
43
43
|
Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
|
44
44
|
Requires-Dist: torchvision>=0.9.0
|
45
|
-
Requires-Dist: tqdm>=4.64.0
|
46
45
|
Requires-Dist: psutil
|
47
46
|
Requires-Dist: py-cpuinfo
|
48
47
|
Requires-Dist: pandas>=1.1.4
|
@@ -55,7 +54,7 @@ Requires-Dist: coverage[toml]; extra == "dev"
|
|
55
54
|
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
56
55
|
Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
57
56
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.
|
57
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.28; extra == "dev"
|
59
58
|
Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
|
60
59
|
Provides-Extra: export
|
61
60
|
Requires-Dist: numpy<2.0.0; extra == "export"
|
@@ -131,7 +130,7 @@ The workflow runs automatically every day at midnight UTC to check for new Ultra
|
|
131
130
|
|
132
131
|
<div>
|
133
132
|
<a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml/badge.svg" alt="Ultralytics CI"></a>
|
134
|
-
<a href="https://
|
133
|
+
<a href="https://clickpy.clickhouse.com/dashboard/ultralytics"><img src="https://static.pepy.tech/badge/ultralytics" alt="Ultralytics Downloads"></a>
|
135
134
|
<a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
|
136
135
|
<a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
|
137
136
|
<a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
|
@@ -180,7 +179,7 @@ See below for quickstart installation and usage examples. For comprehensive guid
|
|
180
179
|
|
181
180
|
Install the `ultralytics` package, including all [requirements](https://github.com/ultralytics/ultralytics/blob/main/pyproject.toml), in a [**Python>=3.8**](https://www.python.org/) environment with [**PyTorch>=1.8**](https://pytorch.org/get-started/locally/).
|
182
181
|
|
183
|
-
[](https://pypi.org/project/ultralytics/) [](https://
|
182
|
+
[](https://pypi.org/project/ultralytics/) [](https://clickpy.clickhouse.com/dashboard/ultralytics) [](https://pypi.org/project/ultralytics/)
|
184
183
|
|
185
184
|
```bash
|
186
185
|
pip install ultralytics
|
@@ -270,6 +270,7 @@ ultralytics/utils/patches.py
|
|
270
270
|
ultralytics/utils/plotting.py
|
271
271
|
ultralytics/utils/tal.py
|
272
272
|
ultralytics/utils/torch_utils.py
|
273
|
+
ultralytics/utils/tqdm.py
|
273
274
|
ultralytics/utils/triton.py
|
274
275
|
ultralytics/utils/tuner.py
|
275
276
|
ultralytics/utils/callbacks/__init__.py
|
@@ -7,7 +7,6 @@ requests>=2.23.0
|
|
7
7
|
scipy>=1.4.1
|
8
8
|
torch>=1.8.0
|
9
9
|
torchvision>=0.9.0
|
10
|
-
tqdm>=4.64.0
|
11
10
|
psutil
|
12
11
|
py-cpuinfo
|
13
12
|
pandas>=1.1.4
|
@@ -24,7 +23,7 @@ coverage[toml]
|
|
24
23
|
mkdocs>=1.6.0
|
25
24
|
mkdocs-material>=9.5.9
|
26
25
|
mkdocstrings[python]
|
27
|
-
mkdocs-ultralytics-plugin>=0.1.
|
26
|
+
mkdocs-ultralytics-plugin>=0.1.28
|
28
27
|
mkdocs-macros-plugin>=1.0.5
|
29
28
|
|
30
29
|
[export]
|
{dgenerate_ultralytics_headless-8.3.184 → dgenerate_ultralytics_headless-8.3.186}/pyproject.toml
RENAMED
@@ -71,7 +71,6 @@ dependencies = [
|
|
71
71
|
"torch>=1.8.0",
|
72
72
|
"torch>=1.8.0,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049
|
73
73
|
"torchvision>=0.9.0",
|
74
|
-
"tqdm>=4.64.0", # progress bars
|
75
74
|
"psutil", # system utilization
|
76
75
|
"py-cpuinfo", # display CPU info
|
77
76
|
"pandas>=1.1.4",
|
@@ -88,7 +87,7 @@ dev = [
|
|
88
87
|
"mkdocs>=1.6.0",
|
89
88
|
"mkdocs-material>=9.5.9",
|
90
89
|
"mkdocstrings[python]",
|
91
|
-
"mkdocs-ultralytics-plugin>=0.1.
|
90
|
+
"mkdocs-ultralytics-plugin>=0.1.28", # for meta descriptions and images, dates and authors
|
92
91
|
"mkdocs-macros-plugin>=1.0.5", # duplicating content (i.e. export tables) in multiple places
|
93
92
|
]
|
94
93
|
export = [
|
@@ -30,14 +30,14 @@ download: |
|
|
30
30
|
import json
|
31
31
|
from pathlib import Path
|
32
32
|
|
33
|
-
from
|
33
|
+
from ultralytics.utils import TQDM
|
34
34
|
from ultralytics.utils.downloads import download
|
35
35
|
|
36
36
|
def argoverse2yolo(set):
|
37
37
|
"""Convert Argoverse dataset annotations to YOLO format for object detection tasks."""
|
38
38
|
labels = {}
|
39
39
|
a = json.load(open(set, "rb"))
|
40
|
-
for annot in
|
40
|
+
for annot in TQDM(a["annotations"], desc=f"Converting {set} to YOLOv5 format..."):
|
41
41
|
img_id = annot["image_id"]
|
42
42
|
img_name = a["images"][img_id]["name"]
|
43
43
|
img_label_name = f"{img_name[:-3]}txt"
|
@@ -387,8 +387,8 @@ download: |
|
|
387
387
|
from pathlib import Path
|
388
388
|
|
389
389
|
import numpy as np
|
390
|
-
from tqdm import tqdm
|
391
390
|
|
391
|
+
from ultralytics.utils import TQDM
|
392
392
|
from ultralytics.utils.checks import check_requirements
|
393
393
|
from ultralytics.utils.downloads import download
|
394
394
|
from ultralytics.utils.ops import xyxy2xywhn
|
@@ -419,7 +419,7 @@ download: |
|
|
419
419
|
download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, curl=True, threads=8)
|
420
420
|
|
421
421
|
# Move
|
422
|
-
for f in
|
422
|
+
for f in TQDM(images.rglob("*.jpg"), desc=f"Moving {split} images"):
|
423
423
|
f.rename(images / f.name) # move to /images/{split}
|
424
424
|
|
425
425
|
# Labels
|
@@ -428,7 +428,7 @@ download: |
|
|
428
428
|
for cid, cat in enumerate(names):
|
429
429
|
catIds = coco.getCatIds(catNms=[cat])
|
430
430
|
imgIds = coco.getImgIds(catIds=catIds)
|
431
|
-
for im in
|
431
|
+
for im in TQDM(coco.loadImgs(imgIds), desc=f"Class {cid + 1}/{len(names)} {cat}"):
|
432
432
|
width, height = im["width"], im["height"]
|
433
433
|
path = Path(im["file_name"]) # image filename
|
434
434
|
try:
|
@@ -25,8 +25,8 @@ download: |
|
|
25
25
|
|
26
26
|
import numpy as np
|
27
27
|
import pandas as pd
|
28
|
-
from tqdm import tqdm
|
29
28
|
|
29
|
+
from ultralytics.utils import TQDM
|
30
30
|
from ultralytics.utils.downloads import download
|
31
31
|
from ultralytics.utils.ops import xyxy2xywh
|
32
32
|
|
@@ -49,7 +49,7 @@ download: |
|
|
49
49
|
images, unique_images = x[:, 0], np.unique(x[:, 0])
|
50
50
|
with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") as f:
|
51
51
|
f.writelines(f"./images/{s}\n" for s in unique_images)
|
52
|
-
for im in
|
52
|
+
for im in TQDM(unique_images, desc=f"Converting {dir / d}"):
|
53
53
|
cls = 0 # single-class dataset
|
54
54
|
with open((dir / "labels" / im).with_suffix(".txt"), "a", encoding="utf-8") as f:
|
55
55
|
for r in x[images == im]:
|
@@ -48,10 +48,8 @@ download: |
|
|
48
48
|
import xml.etree.ElementTree as ET
|
49
49
|
from pathlib import Path
|
50
50
|
|
51
|
-
from tqdm import tqdm
|
52
|
-
|
53
51
|
from ultralytics.utils.downloads import download
|
54
|
-
|
52
|
+
from ultralytics.utils import TQDM
|
55
53
|
|
56
54
|
def convert_label(path, lb_path, year, image_id):
|
57
55
|
"""Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
|
@@ -99,7 +97,7 @@ download: |
|
|
99
97
|
|
100
98
|
with open(path / f"VOC{year}/ImageSets/Main/{image_set}.txt") as f:
|
101
99
|
image_ids = f.read().strip().split()
|
102
|
-
for id in
|
100
|
+
for id in TQDM(image_ids, desc=f"{image_set}{year}"):
|
103
101
|
f = path / f"VOC{year}/JPEGImages/{id}.jpg" # old img path
|
104
102
|
lb_path = (lbs_path / f.name).with_suffix(".txt") # new label path
|
105
103
|
f.rename(imgs_path / f.name) # move image
|
@@ -34,12 +34,12 @@ download: |
|
|
34
34
|
import shutil
|
35
35
|
|
36
36
|
from ultralytics.utils.downloads import download
|
37
|
+
from ultralytics.utils import TQDM
|
37
38
|
|
38
39
|
|
39
40
|
def visdrone2yolo(dir, split, source_name=None):
|
40
41
|
"""Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
|
41
42
|
from PIL import Image
|
42
|
-
from tqdm import tqdm
|
43
43
|
|
44
44
|
source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
|
45
45
|
images_dir = dir / "images" / split
|
@@ -52,7 +52,7 @@ download: |
|
|
52
52
|
for img in source_images_dir.glob("*.jpg"):
|
53
53
|
img.rename(images_dir / img.name)
|
54
54
|
|
55
|
-
for f in
|
55
|
+
for f in TQDM((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
|
56
56
|
img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
|
57
57
|
dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
|
58
58
|
lines = []
|
@@ -85,8 +85,8 @@ download: |
|
|
85
85
|
|
86
86
|
import numpy as np
|
87
87
|
from PIL import Image
|
88
|
-
from tqdm import tqdm
|
89
88
|
|
89
|
+
from ultralytics.utils import TQDM
|
90
90
|
from ultralytics.data.utils import autosplit
|
91
91
|
from ultralytics.utils.ops import xyxy2xywhn
|
92
92
|
|
@@ -110,7 +110,7 @@ download: |
|
|
110
110
|
47, 48, 49, -1, 50, 51, -1, 52, -1, -1, -1, 53, 54, -1, 55, -1, -1, 56, -1, 57, -1, 58, 59]
|
111
111
|
|
112
112
|
shapes = {}
|
113
|
-
for feature in
|
113
|
+
for feature in TQDM(data["features"], desc=f"Converting {fname}"):
|
114
114
|
p = feature["properties"]
|
115
115
|
if p["bounds_imcoords"]:
|
116
116
|
id = p["image_id"]
|
@@ -22,7 +22,7 @@ from ultralytics.data.loaders import (
|
|
22
22
|
SourceTypes,
|
23
23
|
autocast_list,
|
24
24
|
)
|
25
|
-
from ultralytics.data.utils import IMG_FORMATS,
|
25
|
+
from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
|
26
26
|
from ultralytics.utils import RANK, colorstr
|
27
27
|
from ultralytics.utils.checks import check_file
|
28
28
|
|
@@ -206,7 +206,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
|
|
206
206
|
shuffle=shuffle and sampler is None,
|
207
207
|
num_workers=nw,
|
208
208
|
sampler=sampler,
|
209
|
-
pin_memory=
|
209
|
+
pin_memory=nd > 0,
|
210
210
|
collate_fn=getattr(dataset, "collate_fn", None),
|
211
211
|
worker_init_fn=seed_worker,
|
212
212
|
generator=generator,
|
@@ -613,7 +613,7 @@ def yolo_bbox2segment(
|
|
613
613
|
from ultralytics.utils.ops import xywh2xyxy
|
614
614
|
|
615
615
|
# NOTE: add placeholder to pass class index check
|
616
|
-
dataset = YOLODataset(im_dir, data=dict(names=list(range(1000))))
|
616
|
+
dataset = YOLODataset(im_dir, data=dict(names=list(range(1000)), channels=3))
|
617
617
|
if len(dataset.labels[0]["segments"]) > 0: # if it's segment data
|
618
618
|
LOGGER.info("Segmentation labels detected, no need to generate new ones!")
|
619
619
|
return
|
@@ -85,7 +85,7 @@ class YOLODataset(BaseDataset):
|
|
85
85
|
self.use_obb = task == "obb"
|
86
86
|
self.data = data
|
87
87
|
assert not (self.use_segments and self.use_keypoints), "Can not use both segments and keypoints."
|
88
|
-
super().__init__(*args, channels=self.data
|
88
|
+
super().__init__(*args, channels=self.data.get("channels", 3), **kwargs)
|
89
89
|
|
90
90
|
def cache_labels(self, path: Path = Path("./labels.cache")) -> Dict:
|
91
91
|
"""
|
@@ -19,7 +19,6 @@ from ultralytics.nn.autobackend import check_class_names
|
|
19
19
|
from ultralytics.utils import (
|
20
20
|
DATASETS_DIR,
|
21
21
|
LOGGER,
|
22
|
-
MACOS,
|
23
22
|
NUM_THREADS,
|
24
23
|
ROOT,
|
25
24
|
SETTINGS_FILE,
|
@@ -37,7 +36,6 @@ from ultralytics.utils.ops import segments2boxes
|
|
37
36
|
HELP_URL = "See https://docs.ultralytics.com/datasets for dataset formatting guidance."
|
38
37
|
IMG_FORMATS = {"bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm", "heic"} # image suffixes
|
39
38
|
VID_FORMATS = {"asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv", "webm"} # video suffixes
|
40
|
-
PIN_MEMORY = str(os.getenv("PIN_MEMORY", not MACOS)).lower() == "true" # global pin_memory for dataloaders
|
41
39
|
FORMATS_HELP_MSG = f"Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}"
|
42
40
|
|
43
41
|
|
@@ -1479,7 +1479,10 @@ class IOSDetectModel(torch.nn.Module):
|
|
1479
1479
|
if w == h:
|
1480
1480
|
self.normalize = 1.0 / w # scalar
|
1481
1481
|
else:
|
1482
|
-
self.normalize = torch.tensor(
|
1482
|
+
self.normalize = torch.tensor(
|
1483
|
+
[1.0 / w, 1.0 / h, 1.0 / w, 1.0 / h], # broadcast (slower, smaller)
|
1484
|
+
device=next(model.parameters()).device,
|
1485
|
+
)
|
1483
1486
|
|
1484
1487
|
def forward(self, x):
|
1485
1488
|
"""Normalize predictions of object detection model with input size-dependent factors."""
|
@@ -115,8 +115,9 @@ class RegionCounter(BaseSolution):
|
|
115
115
|
|
116
116
|
# Display region counts
|
117
117
|
for region in self.counting_regions:
|
118
|
-
|
119
|
-
pts =
|
118
|
+
poly = region["polygon"]
|
119
|
+
pts = list(map(tuple, np.array(poly.exterior.coords, dtype=np.int32)))
|
120
|
+
(x1, y1), (x2, y2) = [(int(poly.centroid.x), int(poly.centroid.y))] * 2
|
120
121
|
annotator.draw_region(pts, region["region_color"], self.line_width * 2)
|
121
122
|
annotator.adaptive_label(
|
122
123
|
[x1, y1, x2, y2],
|
@@ -12,7 +12,6 @@ import subprocess
|
|
12
12
|
import sys
|
13
13
|
import threading
|
14
14
|
import time
|
15
|
-
import warnings
|
16
15
|
from pathlib import Path
|
17
16
|
from threading import Lock
|
18
17
|
from types import SimpleNamespace
|
@@ -22,10 +21,10 @@ from urllib.parse import unquote
|
|
22
21
|
import cv2
|
23
22
|
import numpy as np
|
24
23
|
import torch
|
25
|
-
import tqdm
|
26
24
|
|
27
25
|
from ultralytics import __version__
|
28
26
|
from ultralytics.utils.patches import imread, imshow, imwrite, torch_save # for patches
|
27
|
+
from ultralytics.utils.tqdm import TQDM # noqa
|
29
28
|
|
30
29
|
# PyTorch Multi-GPU DDP Constants
|
31
30
|
RANK = int(os.getenv("RANK", -1))
|
@@ -41,7 +40,6 @@ DEFAULT_CFG_PATH = ROOT / "cfg/default.yaml"
|
|
41
40
|
NUM_THREADS = min(8, max(1, os.cpu_count() - 1)) # number of YOLO multiprocessing threads
|
42
41
|
AUTOINSTALL = str(os.getenv("YOLO_AUTOINSTALL", True)).lower() == "true" # global auto-install mode
|
43
42
|
VERBOSE = str(os.getenv("YOLO_VERBOSE", True)).lower() == "true" # global verbose mode
|
44
|
-
TQDM_BAR_FORMAT = "{l_bar}{bar:10}{r_bar}" if VERBOSE else None # tqdm bar format
|
45
43
|
LOGGING_NAME = "ultralytics"
|
46
44
|
MACOS, LINUX, WINDOWS = (platform.system() == x for x in ["Darwin", "Linux", "Windows"]) # environment booleans
|
47
45
|
MACOS_VERSION = platform.mac_ver()[0] if MACOS else None
|
@@ -130,65 +128,6 @@ os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3" # suppress verbose TF compiler warning
|
|
130
128
|
os.environ["TORCH_CPP_LOG_LEVEL"] = "ERROR" # suppress "NNPACK.cpp could not initialize NNPACK" warnings
|
131
129
|
os.environ["KINETO_LOG_LEVEL"] = "5" # suppress verbose PyTorch profiler output when computing FLOPs
|
132
130
|
|
133
|
-
if TQDM_RICH := str(os.getenv("YOLO_TQDM_RICH", False)).lower() == "true":
|
134
|
-
from tqdm import rich
|
135
|
-
|
136
|
-
|
137
|
-
class TQDM(rich.tqdm if TQDM_RICH else tqdm.tqdm):
|
138
|
-
"""
|
139
|
-
A custom TQDM progress bar class that extends the original tqdm functionality.
|
140
|
-
|
141
|
-
This class modifies the behavior of the original tqdm progress bar based on global settings and provides
|
142
|
-
additional customization options for Ultralytics projects. The progress bar is automatically disabled when
|
143
|
-
VERBOSE is False or when explicitly disabled.
|
144
|
-
|
145
|
-
Attributes:
|
146
|
-
disable (bool): Whether to disable the progress bar. Determined by the global VERBOSE setting and
|
147
|
-
any passed 'disable' argument.
|
148
|
-
bar_format (str): The format string for the progress bar. Uses the global TQDM_BAR_FORMAT if not
|
149
|
-
explicitly set.
|
150
|
-
|
151
|
-
Methods:
|
152
|
-
__init__: Initialize the TQDM object with custom settings.
|
153
|
-
__iter__: Return self as iterator to satisfy Iterable interface.
|
154
|
-
|
155
|
-
Examples:
|
156
|
-
>>> from ultralytics.utils import TQDM
|
157
|
-
>>> for i in TQDM(range(100)):
|
158
|
-
... # Your processing code here
|
159
|
-
... pass
|
160
|
-
"""
|
161
|
-
|
162
|
-
def __init__(self, *args, **kwargs):
|
163
|
-
"""
|
164
|
-
Initialize a custom TQDM progress bar with Ultralytics-specific settings.
|
165
|
-
|
166
|
-
Args:
|
167
|
-
*args (Any): Variable length argument list to be passed to the original tqdm constructor.
|
168
|
-
**kwargs (Any): Arbitrary keyword arguments to be passed to the original tqdm constructor.
|
169
|
-
|
170
|
-
Notes:
|
171
|
-
- The progress bar is disabled if VERBOSE is False or if 'disable' is explicitly set to True in kwargs.
|
172
|
-
- The default bar format is set to TQDM_BAR_FORMAT unless overridden in kwargs.
|
173
|
-
- In GitHub Actions, progress bars only update at completion to keep CI logs clean.
|
174
|
-
|
175
|
-
Examples:
|
176
|
-
>>> from ultralytics.utils import TQDM
|
177
|
-
>>> for i in TQDM(range(100)):
|
178
|
-
... # Your code here
|
179
|
-
... pass
|
180
|
-
"""
|
181
|
-
warnings.filterwarnings("ignore", category=tqdm.TqdmExperimentalWarning) # suppress tqdm.rich warning
|
182
|
-
if is_github_action_running():
|
183
|
-
kwargs["mininterval"] = 60 # only update every 60 seconds
|
184
|
-
kwargs["disable"] = not VERBOSE or kwargs.get("disable", False) or LOGGER.getEffectiveLevel() > 20
|
185
|
-
kwargs.setdefault("bar_format", TQDM_BAR_FORMAT) # override default value if passed
|
186
|
-
super().__init__(*args, **kwargs)
|
187
|
-
|
188
|
-
def __iter__(self):
|
189
|
-
"""Return self as iterator to satisfy Iterable interface."""
|
190
|
-
return super().__iter__()
|
191
|
-
|
192
131
|
|
193
132
|
class DataExportMixin:
|
194
133
|
"""
|
@@ -118,11 +118,11 @@ def zip_directory(directory, compress: bool = True, exclude=(".DS_Store", "__MAC
|
|
118
118
|
raise FileNotFoundError(f"Directory '{directory}' does not exist.")
|
119
119
|
|
120
120
|
# Zip with progress bar
|
121
|
-
|
121
|
+
files = [f for f in directory.rglob("*") if f.is_file() and all(x not in f.name for x in exclude)] # files to zip
|
122
122
|
zip_file = directory.with_suffix(".zip")
|
123
123
|
compression = ZIP_DEFLATED if compress else ZIP_STORED
|
124
124
|
with ZipFile(zip_file, "w", compression) as f:
|
125
|
-
for file in TQDM(
|
125
|
+
for file in TQDM(files, desc=f"Zipping {directory} to {zip_file}...", unit="files", disable=not progress):
|
126
126
|
f.write(file, file.relative_to(directory))
|
127
127
|
|
128
128
|
return zip_file # return path to zip file
|
@@ -187,7 +187,7 @@ def unzip_file(
|
|
187
187
|
LOGGER.warning(f"Skipping {file} unzip as destination directory {path} is not empty.")
|
188
188
|
return path
|
189
189
|
|
190
|
-
for f in TQDM(files, desc=f"Unzipping {file} to {Path(path).resolve()}...", unit="
|
190
|
+
for f in TQDM(files, desc=f"Unzipping {file} to {Path(path).resolve()}...", unit="files", disable=not progress):
|
191
191
|
# Ensure the file is within the extract_path to avoid path traversal security vulnerability
|
192
192
|
if ".." in Path(f).parts:
|
193
193
|
LOGGER.warning(f"Potentially insecure file path: {f}, skipping extraction.")
|
@@ -295,7 +295,8 @@ def safe_download(
|
|
295
295
|
progress: bool = True,
|
296
296
|
):
|
297
297
|
"""
|
298
|
-
Download files from a URL with options for retrying, unzipping, and deleting the downloaded file.
|
298
|
+
Download files from a URL with options for retrying, unzipping, and deleting the downloaded file. Enhanced with
|
299
|
+
robust partial download detection using Content-Length validation.
|
299
300
|
|
300
301
|
Args:
|
301
302
|
url (str): The URL of the file to be downloaded.
|
@@ -342,24 +343,33 @@ def safe_download(
|
|
342
343
|
s = "sS" * (not progress) # silent
|
343
344
|
r = subprocess.run(["curl", "-#", f"-{s}L", url, "-o", f, "--retry", "3", "-C", "-"]).returncode
|
344
345
|
assert r == 0, f"Curl return value {r}"
|
346
|
+
expected_size = None # Can't get size with curl
|
345
347
|
else: # urllib download
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
348
|
+
with request.urlopen(url) as response:
|
349
|
+
expected_size = int(response.getheader("Content-Length", 0))
|
350
|
+
with TQDM(
|
351
|
+
total=expected_size,
|
352
|
+
desc=desc,
|
353
|
+
disable=not progress,
|
354
|
+
unit="B",
|
355
|
+
unit_scale=True,
|
356
|
+
unit_divisor=1024,
|
357
|
+
) as pbar:
|
358
|
+
with open(f, "wb") as f_opened:
|
359
|
+
for data in response:
|
360
|
+
f_opened.write(data)
|
361
|
+
pbar.update(len(data))
|
359
362
|
|
360
363
|
if f.exists():
|
361
|
-
|
362
|
-
|
364
|
+
file_size = f.stat().st_size
|
365
|
+
if file_size > min_bytes:
|
366
|
+
# Check if download is complete (only if we have expected_size)
|
367
|
+
if expected_size and file_size != expected_size:
|
368
|
+
LOGGER.warning(
|
369
|
+
f"Partial download: {file_size}/{expected_size} bytes ({file_size / expected_size * 100:.1f}%)"
|
370
|
+
)
|
371
|
+
else:
|
372
|
+
break # success
|
363
373
|
f.unlink() # remove partial downloads
|
364
374
|
except Exception as e:
|
365
375
|
if i == 0 and not is_online():
|