ultralytics 8.3.215__tar.gz → 8.3.217__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.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- {ultralytics-8.3.215 → ultralytics-8.3.217}/PKG-INFO +1 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco-pose.yaml +21 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-pose.yaml +21 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dog-pose.yaml +28 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/hand-keypoints.yaml +25 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/tiger-pose.yaml +16 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/build.py +11 -2
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/exporter.py +2 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/results.py +1 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/build.py +3 -2
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/val.py +7 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/train.py +5 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/val.py +1 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/autobackend.py +7 -2
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/ops.py +8 -13
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/plotting.py +14 -7
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/PKG-INFO +1 -1
- {ultralytics-8.3.215 → ultralytics-8.3.217}/LICENSE +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/README.md +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/pyproject.toml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/setup.cfg +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/conftest.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_cli.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_engine.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_exports.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_python.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/download_weights.sh +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_coco.sh +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/split.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/text_model.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/py.typed +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/config.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/instance_segmentation.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_blurrer.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_cropper.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/similarity_search.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/vision_eye.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/autodevice.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/platform.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/cpu.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/events.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/export/__init__.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/export/imx.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/git.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/logger.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/nms.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tqdm.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.217
|
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
|
@@ -22,6 +22,27 @@ flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
|
|
|
22
22
|
names:
|
|
23
23
|
0: person
|
|
24
24
|
|
|
25
|
+
# Keypoint names per class
|
|
26
|
+
kpt_names:
|
|
27
|
+
0:
|
|
28
|
+
- nose
|
|
29
|
+
- left_eye
|
|
30
|
+
- right_eye
|
|
31
|
+
- left_ear
|
|
32
|
+
- right_ear
|
|
33
|
+
- left_shoulder
|
|
34
|
+
- right_shoulder
|
|
35
|
+
- left_elbow
|
|
36
|
+
- right_elbow
|
|
37
|
+
- left_wrist
|
|
38
|
+
- right_wrist
|
|
39
|
+
- left_hip
|
|
40
|
+
- right_hip
|
|
41
|
+
- left_knee
|
|
42
|
+
- right_knee
|
|
43
|
+
- left_ankle
|
|
44
|
+
- right_ankle
|
|
45
|
+
|
|
25
46
|
# Download script/URL (optional)
|
|
26
47
|
download: |
|
|
27
48
|
from pathlib import Path
|
|
@@ -22,5 +22,26 @@ flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
|
|
|
22
22
|
names:
|
|
23
23
|
0: person
|
|
24
24
|
|
|
25
|
+
# Keypoint names per class
|
|
26
|
+
kpt_names:
|
|
27
|
+
0:
|
|
28
|
+
- nose
|
|
29
|
+
- left_eye
|
|
30
|
+
- right_eye
|
|
31
|
+
- left_ear
|
|
32
|
+
- right_ear
|
|
33
|
+
- left_shoulder
|
|
34
|
+
- right_shoulder
|
|
35
|
+
- left_elbow
|
|
36
|
+
- right_elbow
|
|
37
|
+
- left_wrist
|
|
38
|
+
- right_wrist
|
|
39
|
+
- left_hip
|
|
40
|
+
- right_hip
|
|
41
|
+
- left_knee
|
|
42
|
+
- right_knee
|
|
43
|
+
- left_ankle
|
|
44
|
+
- right_ankle
|
|
45
|
+
|
|
25
46
|
# Download script/URL (optional)
|
|
26
47
|
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
|
|
@@ -20,5 +20,33 @@ kpt_shape: [24, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y
|
|
|
20
20
|
names:
|
|
21
21
|
0: dog
|
|
22
22
|
|
|
23
|
+
# Keypoint names per class
|
|
24
|
+
kpt_names:
|
|
25
|
+
0:
|
|
26
|
+
- front_left_paw
|
|
27
|
+
- front_left_knee
|
|
28
|
+
- front_left_elbow
|
|
29
|
+
- rear_left_paw
|
|
30
|
+
- rear_left_knee
|
|
31
|
+
- rear_left_elbow
|
|
32
|
+
- front_right_paw
|
|
33
|
+
- front_right_knee
|
|
34
|
+
- front_right_elbow
|
|
35
|
+
- rear_right_paw
|
|
36
|
+
- rear_right_knee
|
|
37
|
+
- rear_right_elbow
|
|
38
|
+
- tail_start
|
|
39
|
+
- tail_end
|
|
40
|
+
- left_ear_base
|
|
41
|
+
- right_ear_base
|
|
42
|
+
- nose
|
|
43
|
+
- chin
|
|
44
|
+
- left_ear_tip
|
|
45
|
+
- right_ear_tip
|
|
46
|
+
- left_eye
|
|
47
|
+
- right_eye
|
|
48
|
+
- withers
|
|
49
|
+
- throat
|
|
50
|
+
|
|
23
51
|
# Download script/URL (optional)
|
|
24
52
|
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dog-pose.zip
|
|
@@ -22,5 +22,30 @@ flip_idx:
|
|
|
22
22
|
names:
|
|
23
23
|
0: hand
|
|
24
24
|
|
|
25
|
+
# Keypoint names per class
|
|
26
|
+
kpt_names:
|
|
27
|
+
0:
|
|
28
|
+
- wrist
|
|
29
|
+
- thumb_cmc
|
|
30
|
+
- thumb_mcp
|
|
31
|
+
- thumb_ip
|
|
32
|
+
- thumb_tip
|
|
33
|
+
- index_mcp
|
|
34
|
+
- index_pip
|
|
35
|
+
- index_dip
|
|
36
|
+
- index_tip
|
|
37
|
+
- middle_mcp
|
|
38
|
+
- middle_pip
|
|
39
|
+
- middle_dip
|
|
40
|
+
- middle_tip
|
|
41
|
+
- ring_mcp
|
|
42
|
+
- ring_pip
|
|
43
|
+
- ring_dip
|
|
44
|
+
- ring_tip
|
|
45
|
+
- pinky_mcp
|
|
46
|
+
- pinky_pip
|
|
47
|
+
- pinky_dip
|
|
48
|
+
- pinky_tip
|
|
49
|
+
|
|
25
50
|
# Download script/URL (optional)
|
|
26
51
|
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/hand-keypoints.zip
|
|
@@ -21,5 +21,21 @@ flip_idx: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
|
|
21
21
|
names:
|
|
22
22
|
0: tiger
|
|
23
23
|
|
|
24
|
+
# Keypoint names per class
|
|
25
|
+
kpt_names:
|
|
26
|
+
0:
|
|
27
|
+
- nose
|
|
28
|
+
- head
|
|
29
|
+
- withers
|
|
30
|
+
- tail_base
|
|
31
|
+
- right_hind_hock
|
|
32
|
+
- right_hind_paw
|
|
33
|
+
- left_hind_paw
|
|
34
|
+
- left_hind_hock
|
|
35
|
+
- right_front_wrist
|
|
36
|
+
- right_front_paw
|
|
37
|
+
- left_front_wrist
|
|
38
|
+
- left_front_paw
|
|
39
|
+
|
|
24
40
|
# Download script/URL (optional)
|
|
25
41
|
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/tiger-pose.zip
|
|
@@ -181,7 +181,15 @@ def build_grounding(
|
|
|
181
181
|
)
|
|
182
182
|
|
|
183
183
|
|
|
184
|
-
def build_dataloader(
|
|
184
|
+
def build_dataloader(
|
|
185
|
+
dataset,
|
|
186
|
+
batch: int,
|
|
187
|
+
workers: int,
|
|
188
|
+
shuffle: bool = True,
|
|
189
|
+
rank: int = -1,
|
|
190
|
+
drop_last: bool = False,
|
|
191
|
+
pin_memory: bool = True,
|
|
192
|
+
):
|
|
185
193
|
"""
|
|
186
194
|
Create and return an InfiniteDataLoader or DataLoader for training or validation.
|
|
187
195
|
|
|
@@ -192,6 +200,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
|
|
|
192
200
|
shuffle (bool, optional): Whether to shuffle the dataset.
|
|
193
201
|
rank (int, optional): Process rank in distributed training. -1 for single-GPU training.
|
|
194
202
|
drop_last (bool, optional): Whether to drop the last incomplete batch.
|
|
203
|
+
pin_memory (bool, optional): Whether to use pinned memory for dataloader.
|
|
195
204
|
|
|
196
205
|
Returns:
|
|
197
206
|
(InfiniteDataLoader): A dataloader that can be used for training or validation.
|
|
@@ -214,7 +223,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
|
|
|
214
223
|
num_workers=nw,
|
|
215
224
|
sampler=sampler,
|
|
216
225
|
prefetch_factor=4 if nw > 0 else None, # increase over default 2
|
|
217
|
-
pin_memory=nd > 0,
|
|
226
|
+
pin_memory=nd > 0 and pin_memory,
|
|
218
227
|
collate_fn=getattr(dataset, "collate_fn", None),
|
|
219
228
|
worker_init_fn=seed_worker,
|
|
220
229
|
generator=generator,
|
|
@@ -502,6 +502,8 @@ class Exporter:
|
|
|
502
502
|
self.metadata["dla"] = dla # make sure `AutoBackend` uses correct dla device if it has one
|
|
503
503
|
if model.task == "pose":
|
|
504
504
|
self.metadata["kpt_shape"] = model.model[-1].kpt_shape
|
|
505
|
+
if hasattr(model, "kpt_names"):
|
|
506
|
+
self.metadata["kpt_names"] = model.kpt_names
|
|
505
507
|
|
|
506
508
|
LOGGER.info(
|
|
507
509
|
f"\n{colorstr('PyTorch:')} starting from '{file}' with input shape {tuple(im.shape)} BCHW and "
|
|
@@ -527,7 +527,7 @@ class Results(SimpleClass, DataExportMixin):
|
|
|
527
527
|
"""
|
|
528
528
|
assert color_mode in {"instance", "class"}, f"Expected color_mode='instance' or 'class', not {color_mode}."
|
|
529
529
|
if img is None and isinstance(self.orig_img, torch.Tensor):
|
|
530
|
-
img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).
|
|
530
|
+
img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).byte().cpu().numpy()
|
|
531
531
|
|
|
532
532
|
names = self.names
|
|
533
533
|
is_obb = self.obb is not None
|
|
@@ -11,6 +11,7 @@ from functools import partial
|
|
|
11
11
|
import torch
|
|
12
12
|
|
|
13
13
|
from ultralytics.utils.downloads import attempt_download_asset
|
|
14
|
+
from ultralytics.utils.torch_utils import TORCH_1_13
|
|
14
15
|
|
|
15
16
|
from .modules.decoders import MaskDecoder
|
|
16
17
|
from .modules.encoders import FpnNeck, Hiera, ImageEncoder, ImageEncoderViT, MemoryEncoder, PromptEncoder
|
|
@@ -207,7 +208,7 @@ def _build_sam(
|
|
|
207
208
|
if checkpoint is not None:
|
|
208
209
|
checkpoint = attempt_download_asset(checkpoint)
|
|
209
210
|
with open(checkpoint, "rb") as f:
|
|
210
|
-
state_dict = torch.load(f)
|
|
211
|
+
state_dict = torch.load(f, weights_only=False) if TORCH_1_13 else torch.load(f)
|
|
211
212
|
sam.load_state_dict(state_dict)
|
|
212
213
|
sam.eval()
|
|
213
214
|
return sam
|
|
@@ -302,7 +303,7 @@ def _build_sam2(
|
|
|
302
303
|
if checkpoint is not None:
|
|
303
304
|
checkpoint = attempt_download_asset(checkpoint)
|
|
304
305
|
with open(checkpoint, "rb") as f:
|
|
305
|
-
state_dict = torch.load(f)["model"]
|
|
306
|
+
state_dict = (torch.load(f, weights_only=False) if TORCH_1_13 else torch.load(f))["model"]
|
|
306
307
|
sam2.load_state_dict(state_dict)
|
|
307
308
|
sam2.eval()
|
|
308
309
|
return sam2
|
|
@@ -300,7 +300,13 @@ class DetectionValidator(BaseValidator):
|
|
|
300
300
|
"""
|
|
301
301
|
dataset = self.build_dataset(dataset_path, batch=batch_size, mode="val")
|
|
302
302
|
return build_dataloader(
|
|
303
|
-
dataset,
|
|
303
|
+
dataset,
|
|
304
|
+
batch_size,
|
|
305
|
+
self.args.workers,
|
|
306
|
+
shuffle=False,
|
|
307
|
+
rank=-1,
|
|
308
|
+
drop_last=self.args.compile,
|
|
309
|
+
pin_memory=self.training,
|
|
304
310
|
)
|
|
305
311
|
|
|
306
312
|
def plot_val_samples(self, batch: dict[str, Any], ni: int) -> None:
|
|
@@ -91,6 +91,11 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
|
|
|
91
91
|
"""Set keypoints shape attribute of PoseModel."""
|
|
92
92
|
super().set_model_attributes()
|
|
93
93
|
self.model.kpt_shape = self.data["kpt_shape"]
|
|
94
|
+
kpt_names = self.data.get("kpt_names")
|
|
95
|
+
if not kpt_names:
|
|
96
|
+
names = list(map(str, range(self.model.kpt_shape[0])))
|
|
97
|
+
kpt_names = {i: names for i in range(self.model.nc)}
|
|
98
|
+
self.model.kpt_names = kpt_names
|
|
94
99
|
|
|
95
100
|
def get_validator(self):
|
|
96
101
|
"""Return an instance of the PoseValidator class for validation."""
|
|
@@ -173,7 +173,7 @@ class SegmentationValidator(DetectionValidator):
|
|
|
173
173
|
if gt_cls.shape[0] == 0 or preds["cls"].shape[0] == 0:
|
|
174
174
|
tp_m = np.zeros((preds["cls"].shape[0], self.niou), dtype=bool)
|
|
175
175
|
else:
|
|
176
|
-
iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1))
|
|
176
|
+
iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1).float()) # float, uint8
|
|
177
177
|
tp_m = self.match_predictions(preds["cls"], gt_cls, iou).cpu().numpy()
|
|
178
178
|
tp.update({"tp_m": tp_m}) # update tp with mask IoU
|
|
179
179
|
return tp
|
|
@@ -19,6 +19,7 @@ from PIL import Image
|
|
|
19
19
|
from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML, is_jetson
|
|
20
20
|
from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
|
|
21
21
|
from ultralytics.utils.downloads import attempt_download_asset, is_url
|
|
22
|
+
from ultralytics.utils.nms import non_max_suppression
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
def check_class_names(names: list | dict) -> dict[int, str]:
|
|
@@ -585,7 +586,7 @@ class AutoBackend(nn.Module):
|
|
|
585
586
|
for k, v in metadata.items():
|
|
586
587
|
if k in {"stride", "batch", "channels"}:
|
|
587
588
|
metadata[k] = int(v)
|
|
588
|
-
elif k in {"imgsz", "names", "kpt_shape", "args"} and isinstance(v, str):
|
|
589
|
+
elif k in {"imgsz", "names", "kpt_shape", "kpt_names", "args"} and isinstance(v, str):
|
|
589
590
|
metadata[k] = eval(v)
|
|
590
591
|
stride = metadata["stride"]
|
|
591
592
|
task = metadata["task"]
|
|
@@ -593,6 +594,7 @@ class AutoBackend(nn.Module):
|
|
|
593
594
|
imgsz = metadata["imgsz"]
|
|
594
595
|
names = metadata["names"]
|
|
595
596
|
kpt_shape = metadata.get("kpt_shape")
|
|
597
|
+
kpt_names = metadata.get("kpt_names")
|
|
596
598
|
end2end = metadata.get("args", {}).get("nms", False)
|
|
597
599
|
dynamic = metadata.get("args", {}).get("dynamic", dynamic)
|
|
598
600
|
ch = metadata.get("channels", 3)
|
|
@@ -853,7 +855,10 @@ class AutoBackend(nn.Module):
|
|
|
853
855
|
if any(warmup_types) and (self.device.type != "cpu" or self.triton):
|
|
854
856
|
im = torch.empty(*imgsz, dtype=torch.half if self.fp16 else torch.float, device=self.device) # input
|
|
855
857
|
for _ in range(2 if self.jit else 1):
|
|
856
|
-
self.forward(im) # warmup
|
|
858
|
+
self.forward(im) # warmup model
|
|
859
|
+
warmup_boxes = torch.rand(1, 84, 16, device=self.device) # 16 boxes works best empirically
|
|
860
|
+
warmup_boxes[:, :4] *= imgsz[-1]
|
|
861
|
+
non_max_suppression(warmup_boxes) # warmup NMS
|
|
857
862
|
|
|
858
863
|
@staticmethod
|
|
859
864
|
def _model_type(p: str = "path/to/model.pt") -> list[bool]:
|
|
@@ -548,21 +548,16 @@ def process_mask(protos, masks_in, bboxes, shape, upsample: bool = False):
|
|
|
548
548
|
are the height and width of the input image. The mask is applied to the bounding boxes.
|
|
549
549
|
"""
|
|
550
550
|
c, mh, mw = protos.shape # CHW
|
|
551
|
-
ih, iw = shape
|
|
552
551
|
masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw) # CHW
|
|
553
|
-
width_ratio = mw / iw
|
|
554
|
-
height_ratio = mh / ih
|
|
555
552
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
downsampled_bboxes[:, 3] *= height_ratio
|
|
560
|
-
downsampled_bboxes[:, 1] *= height_ratio
|
|
553
|
+
width_ratio = mw / shape[1]
|
|
554
|
+
height_ratio = mh / shape[0]
|
|
555
|
+
ratios = torch.tensor([[width_ratio, height_ratio, width_ratio, height_ratio]], device=bboxes.device)
|
|
561
556
|
|
|
562
|
-
masks = crop_mask(masks,
|
|
557
|
+
masks = crop_mask(masks, boxes=bboxes * ratios) # CHW
|
|
563
558
|
if upsample:
|
|
564
559
|
masks = F.interpolate(masks[None], shape, mode="bilinear")[0] # CHW
|
|
565
|
-
return masks.gt_(0.0)
|
|
560
|
+
return masks.gt_(0.0).byte()
|
|
566
561
|
|
|
567
562
|
|
|
568
563
|
def process_mask_native(protos, masks_in, bboxes, shape):
|
|
@@ -582,7 +577,7 @@ def process_mask_native(protos, masks_in, bboxes, shape):
|
|
|
582
577
|
masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw)
|
|
583
578
|
masks = scale_masks(masks[None], shape)[0] # CHW
|
|
584
579
|
masks = crop_mask(masks, bboxes) # CHW
|
|
585
|
-
return masks.gt_(0.0)
|
|
580
|
+
return masks.gt_(0.0).byte()
|
|
586
581
|
|
|
587
582
|
|
|
588
583
|
def scale_masks(masks, shape, padding: bool = True):
|
|
@@ -679,7 +674,7 @@ def masks2segments(masks, strategy: str = "all"):
|
|
|
679
674
|
from ultralytics.data.converter import merge_multi_segment
|
|
680
675
|
|
|
681
676
|
segments = []
|
|
682
|
-
for x in masks.
|
|
677
|
+
for x in masks.byte().cpu().numpy():
|
|
683
678
|
c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
|
|
684
679
|
if c:
|
|
685
680
|
if strategy == "all": # merge and concatenate all segments
|
|
@@ -706,7 +701,7 @@ def convert_torch2numpy_batch(batch: torch.Tensor) -> np.ndarray:
|
|
|
706
701
|
Returns:
|
|
707
702
|
(np.ndarray): Output NumPy array batch with shape (Batch, Height, Width, Channels) and dtype uint8.
|
|
708
703
|
"""
|
|
709
|
-
return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).
|
|
704
|
+
return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).byte().cpu().numpy()
|
|
710
705
|
|
|
711
706
|
|
|
712
707
|
def clean_str(s):
|
|
@@ -384,25 +384,32 @@ class Annotator:
|
|
|
384
384
|
overlay[mask.astype(bool)] = colors[i]
|
|
385
385
|
self.im = cv2.addWeighted(self.im, 1 - alpha, overlay, alpha, 0)
|
|
386
386
|
else:
|
|
387
|
-
assert isinstance(masks, torch.Tensor), "
|
|
387
|
+
assert isinstance(masks, torch.Tensor), "'masks' must be a torch.Tensor if 'im_gpu' is provided."
|
|
388
388
|
if len(masks) == 0:
|
|
389
389
|
self.im[:] = im_gpu.permute(1, 2, 0).contiguous().cpu().numpy() * 255
|
|
390
|
+
return
|
|
390
391
|
if im_gpu.device != masks.device:
|
|
391
392
|
im_gpu = im_gpu.to(masks.device)
|
|
393
|
+
|
|
394
|
+
ih, iw = self.im.shape[:2]
|
|
395
|
+
if not retina_masks:
|
|
396
|
+
# Use scale_masks to properly remove padding and upsample, convert bool to float first
|
|
397
|
+
masks = ops.scale_masks(masks[None].float(), (ih, iw))[0] > 0.5
|
|
398
|
+
# Convert original BGR image to RGB tensor
|
|
399
|
+
im_gpu = (
|
|
400
|
+
torch.from_numpy(self.im).to(masks.device).permute(2, 0, 1).flip(0).contiguous().float() / 255.0
|
|
401
|
+
)
|
|
402
|
+
|
|
392
403
|
colors = torch.tensor(colors, device=masks.device, dtype=torch.float32) / 255.0 # shape(n,3)
|
|
393
404
|
colors = colors[:, None, None] # shape(n,1,1,3)
|
|
394
405
|
masks = masks.unsqueeze(3) # shape(n,h,w,1)
|
|
395
406
|
masks_color = masks * (colors * alpha) # shape(n,h,w,3)
|
|
396
|
-
|
|
397
407
|
inv_alpha_masks = (1 - masks * alpha).cumprod(0) # shape(n,h,w,1)
|
|
398
408
|
mcs = masks_color.max(dim=0).values # shape(n,h,w,3)
|
|
399
409
|
|
|
400
|
-
im_gpu = im_gpu.flip(dims=[0]) #
|
|
401
|
-
im_gpu = im_gpu.permute(1, 2, 0).contiguous() # shape(h,w,3)
|
|
410
|
+
im_gpu = im_gpu.flip(dims=[0]).permute(1, 2, 0).contiguous() # shape(h,w,3)
|
|
402
411
|
im_gpu = im_gpu * inv_alpha_masks[-1] + mcs
|
|
403
|
-
|
|
404
|
-
im_mask_np = im_mask.byte().cpu().numpy()
|
|
405
|
-
self.im[:] = im_mask_np if retina_masks else ops.scale_image(im_mask_np, self.im.shape)
|
|
412
|
+
self.im[:] = (im_gpu * 255).byte().cpu().numpy()
|
|
406
413
|
if self.pil:
|
|
407
414
|
# Convert im back to PIL and update draw
|
|
408
415
|
self.fromarray(self.im)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.217
|
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-multispectral.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dota8-multispectral.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml
RENAMED
|
File without changes
|