ultralytics 8.3.186__tar.gz → 8.3.188__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.
- {ultralytics-8.3.186 → ultralytics-8.3.188}/PKG-INFO +6 -6
- {ultralytics-8.3.186 → ultralytics-8.3.188}/README.md +1 -1
- {ultralytics-8.3.186 → ultralytics-8.3.188}/pyproject.toml +4 -4
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_python.py +2 -10
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/SKU-110K.yaml +2 -2
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/exporter.py +4 -4
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/results.py +1 -4
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/trainer.py +3 -3
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/rtdetr/val.py +3 -1
- ultralytics-8.3.188/ultralytics/models/sam/__init__.py +12 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/sam.py +6 -6
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/predict.py +363 -6
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/detect/val.py +13 -2
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/obb/val.py +3 -1
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/segment/val.py +0 -3
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/__init__.py +24 -92
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/benchmarks.py +16 -9
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/wb.py +9 -3
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/downloads.py +44 -38
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/plotting.py +13 -20
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/tqdm.py +25 -37
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics.egg-info/PKG-INFO +6 -6
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics.egg-info/requires.txt +8 -4
- ultralytics-8.3.186/ultralytics/models/sam/__init__.py +0 -6
- {ultralytics-8.3.186 → ultralytics-8.3.188}/LICENSE +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/setup.cfg +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/conftest.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_cli.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_engine.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_exports.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/scripts/download_weights.sh +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/scripts/get_coco.sh +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/scripts/get_coco128.sh +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/scripts/get_imagenet.sh +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/split.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/yoloe/predict.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/yoloe/train.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/models/yolo/yoloe/val.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/nn/text_model.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/py.typed +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/config.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/instance_segmentation.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/object_blurrer.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/object_cropper.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/similarity_search.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/templates/similarity-search.html +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/solutions/vision_eye.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/autodevice.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/platform.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/export.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/logger.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.186 → ultralytics-8.3.188}/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.188
|
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>
|
@@ -44,7 +44,7 @@ Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
|
|
44
44
|
Requires-Dist: torchvision>=0.9.0
|
45
45
|
Requires-Dist: psutil
|
46
46
|
Requires-Dist: py-cpuinfo
|
47
|
-
Requires-Dist:
|
47
|
+
Requires-Dist: polars
|
48
48
|
Requires-Dist: ultralytics-thop>=2.0.0
|
49
49
|
Provides-Extra: dev
|
50
50
|
Requires-Dist: ipython; extra == "dev"
|
@@ -54,11 +54,12 @@ Requires-Dist: coverage[toml]; extra == "dev"
|
|
54
54
|
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
55
55
|
Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
56
56
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
57
|
-
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.
|
57
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.1.29; extra == "dev"
|
58
58
|
Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
|
59
59
|
Provides-Extra: export
|
60
60
|
Requires-Dist: numpy<2.0.0; extra == "export"
|
61
|
-
Requires-Dist: onnx
|
61
|
+
Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
|
62
|
+
Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
|
62
63
|
Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
63
64
|
Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
64
65
|
Requires-Dist: openvino>=2024.0.0; extra == "export"
|
@@ -80,7 +81,6 @@ Requires-Dist: ipython; extra == "extra"
|
|
80
81
|
Requires-Dist: albumentations>=1.4.6; extra == "extra"
|
81
82
|
Requires-Dist: faster-coco-eval>=1.6.7; extra == "extra"
|
82
83
|
Provides-Extra: typing
|
83
|
-
Requires-Dist: pandas-stubs; extra == "typing"
|
84
84
|
Requires-Dist: scipy-stubs; extra == "typing"
|
85
85
|
Requires-Dist: types-pillow; extra == "typing"
|
86
86
|
Requires-Dist: types-psutil; extra == "typing"
|
@@ -91,7 +91,7 @@ Dynamic: license-file
|
|
91
91
|
|
92
92
|
<div align="center">
|
93
93
|
<p>
|
94
|
-
<a href="https://www.ultralytics.com/
|
94
|
+
<a href="https://www.ultralytics.com/events/yolovision?utm_source=github&utm_medium=org&utm_campaign=yv25_event" target="_blank">
|
95
95
|
<img width="100%" src="https://raw.githubusercontent.com/ultralytics/assets/main/yolov8/banner-yolov8.png" alt="Ultralytics YOLO banner"></a>
|
96
96
|
</p>
|
97
97
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div align="center">
|
2
2
|
<p>
|
3
|
-
<a href="https://www.ultralytics.com/
|
3
|
+
<a href="https://www.ultralytics.com/events/yolovision?utm_source=github&utm_medium=org&utm_campaign=yv25_event" target="_blank">
|
4
4
|
<img width="100%" src="https://raw.githubusercontent.com/ultralytics/assets/main/yolov8/banner-yolov8.png" alt="Ultralytics YOLO banner"></a>
|
5
5
|
</p>
|
6
6
|
|
@@ -73,7 +73,7 @@ dependencies = [
|
|
73
73
|
"torchvision>=0.9.0",
|
74
74
|
"psutil", # system utilization
|
75
75
|
"py-cpuinfo", # display CPU info
|
76
|
-
"
|
76
|
+
"polars",
|
77
77
|
"ultralytics-thop>=2.0.0", # FLOPs computation https://github.com/ultralytics/thop
|
78
78
|
]
|
79
79
|
|
@@ -87,12 +87,13 @@ dev = [
|
|
87
87
|
"mkdocs>=1.6.0",
|
88
88
|
"mkdocs-material>=9.5.9",
|
89
89
|
"mkdocstrings[python]",
|
90
|
-
"mkdocs-ultralytics-plugin>=0.1.
|
90
|
+
"mkdocs-ultralytics-plugin>=0.1.29", # for meta descriptions and images, dates and authors
|
91
91
|
"mkdocs-macros-plugin>=1.0.5", # duplicating content (i.e. export tables) in multiple places
|
92
92
|
]
|
93
93
|
export = [
|
94
94
|
"numpy<2.0.0", # TF 2.20 compatibility
|
95
|
-
"onnx>=1.12.0
|
95
|
+
"onnx>=1.12.0; platform_system != 'Darwin'", # ONNX export
|
96
|
+
"onnx>=1.12.0,<1.18.0; platform_system == 'Darwin'", # TF inference hanging on MacOS
|
96
97
|
"coremltools>=8.0; platform_system != 'Windows' and python_version <= '3.13'", # CoreML supported on macOS and Linux
|
97
98
|
"scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.13'", # CoreML k-means quantization
|
98
99
|
"openvino>=2024.0.0", # OpenVINO export
|
@@ -118,7 +119,6 @@ extra = [
|
|
118
119
|
"faster-coco-eval>=1.6.7", # COCO mAP
|
119
120
|
]
|
120
121
|
typing = [
|
121
|
-
"pandas-stubs",
|
122
122
|
"scipy-stubs",
|
123
123
|
"types-pillow",
|
124
124
|
"types-psutil",
|
@@ -209,16 +209,11 @@ def test_val(task: str, weight: str, data: str) -> None:
|
|
209
209
|
metrics = model.val(data=data, imgsz=32, plots=plots)
|
210
210
|
metrics.to_df()
|
211
211
|
metrics.to_csv()
|
212
|
-
metrics.to_xml()
|
213
|
-
metrics.to_html()
|
214
212
|
metrics.to_json()
|
215
|
-
|
216
|
-
metrics.confusion_matrix.to_df()
|
213
|
+
# Tests for confusion matrix export
|
214
|
+
metrics.confusion_matrix.to_df()
|
217
215
|
metrics.confusion_matrix.to_csv()
|
218
|
-
metrics.confusion_matrix.to_xml()
|
219
|
-
metrics.confusion_matrix.to_html()
|
220
216
|
metrics.confusion_matrix.to_json()
|
221
|
-
metrics.confusion_matrix.to_sql()
|
222
217
|
|
223
218
|
|
224
219
|
def test_train_scratch():
|
@@ -304,10 +299,7 @@ def test_results(model: str):
|
|
304
299
|
r.save_crop(save_dir=TMP / "runs/tests/crops/")
|
305
300
|
r.to_df(decimals=3) # Align to_ methods: https://docs.ultralytics.com/modes/predict/#working-with-results
|
306
301
|
r.to_csv()
|
307
|
-
r.to_xml()
|
308
|
-
r.to_html()
|
309
302
|
r.to_json(normalize=True)
|
310
|
-
r.to_sql()
|
311
303
|
r.plot(pil=True, save=True, filename=TMP / "results_plot_save.jpg")
|
312
304
|
r.plot(conf=True, boxes=True)
|
313
305
|
print(r, len(r), r.path) # print after methods
|
@@ -24,7 +24,7 @@ download: |
|
|
24
24
|
from pathlib import Path
|
25
25
|
|
26
26
|
import numpy as np
|
27
|
-
import
|
27
|
+
import polars as pl
|
28
28
|
|
29
29
|
from ultralytics.utils import TQDM
|
30
30
|
from ultralytics.utils.downloads import download
|
@@ -45,7 +45,7 @@ download: |
|
|
45
45
|
# Convert labels
|
46
46
|
names = "image", "x1", "y1", "x2", "y2", "class", "image_width", "image_height" # column names
|
47
47
|
for d in "annotations_train.csv", "annotations_val.csv", "annotations_test.csv":
|
48
|
-
x =
|
48
|
+
x = pl.read_csv(dir / "annotations" / d, names=names).to_numpy() # annotations
|
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)
|
@@ -582,9 +582,9 @@ class Exporter:
|
|
582
582
|
@try_export
|
583
583
|
def export_onnx(self, prefix=colorstr("ONNX:")):
|
584
584
|
"""Export YOLO model to ONNX format."""
|
585
|
-
requirements = ["onnx>=1.12.0
|
585
|
+
requirements = ["onnx>=1.12.0"]
|
586
586
|
if self.args.simplify:
|
587
|
-
requirements += ["onnxslim>=0.1.
|
587
|
+
requirements += ["onnxslim>=0.1.65", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
|
588
588
|
check_requirements(requirements)
|
589
589
|
import onnx # noqa
|
590
590
|
|
@@ -960,9 +960,9 @@ class Exporter:
|
|
960
960
|
"sng4onnx>=1.0.1", # required by 'onnx2tf' package
|
961
961
|
"onnx_graphsurgeon>=0.3.26", # required by 'onnx2tf' package
|
962
962
|
"ai-edge-litert>=1.2.0,<1.4.0", # required by 'onnx2tf' package
|
963
|
-
"onnx>=1.12.0
|
963
|
+
"onnx>=1.12.0",
|
964
964
|
"onnx2tf>=1.26.3",
|
965
|
-
"onnxslim>=0.1.
|
965
|
+
"onnxslim>=0.1.65",
|
966
966
|
"onnxruntime-gpu" if cuda else "onnxruntime",
|
967
967
|
"protobuf>=5",
|
968
968
|
),
|
@@ -222,12 +222,9 @@ class Results(SimpleClass, DataExportMixin):
|
|
222
222
|
save_txt: Save detection results to a text file.
|
223
223
|
save_crop: Save cropped detection images to specified directory.
|
224
224
|
summary: Convert inference results to a summarized dictionary.
|
225
|
-
to_df: Convert detection results to a
|
225
|
+
to_df: Convert detection results to a Polars Dataframe.
|
226
226
|
to_json: Convert detection results to JSON format.
|
227
227
|
to_csv: Convert detection results to a CSV format.
|
228
|
-
to_xml: Convert detection results to XML format.
|
229
|
-
to_html: Convert detection results to HTML format.
|
230
|
-
to_sql: Convert detection results to an SQL-compatible format.
|
231
228
|
|
232
229
|
Examples:
|
233
230
|
>>> results = model("path/to/image.jpg")
|
@@ -540,10 +540,10 @@ class BaseTrainer:
|
|
540
540
|
torch.cuda.empty_cache()
|
541
541
|
|
542
542
|
def read_results_csv(self):
|
543
|
-
"""Read results.csv into a dictionary using
|
544
|
-
import
|
543
|
+
"""Read results.csv into a dictionary using polars."""
|
544
|
+
import polars as pl # scope for faster 'import ultralytics'
|
545
545
|
|
546
|
-
return
|
546
|
+
return pl.read_csv(self.csv).to_dict(as_series=False)
|
547
547
|
|
548
548
|
def _model_train(self):
|
549
549
|
"""Set model in training mode."""
|
@@ -196,7 +196,8 @@ class RTDETRValidator(DetectionValidator):
|
|
196
196
|
with bounding box coordinates, confidence scores, and class predictions.
|
197
197
|
pbatch (Dict[str, Any]): Batch dictionary containing 'imgsz', 'ori_shape', 'ratio_pad', and 'im_file'.
|
198
198
|
"""
|
199
|
-
|
199
|
+
path = Path(pbatch["im_file"])
|
200
|
+
stem = path.stem
|
200
201
|
image_id = int(stem) if stem.isnumeric() else stem
|
201
202
|
box = predn["bboxes"].clone()
|
202
203
|
box[..., [0, 2]] *= pbatch["ori_shape"][1] / self.args.imgsz # native-space pred
|
@@ -207,6 +208,7 @@ class RTDETRValidator(DetectionValidator):
|
|
207
208
|
self.jdict.append(
|
208
209
|
{
|
209
210
|
"image_id": image_id,
|
211
|
+
"file_name": path.name,
|
210
212
|
"category_id": self.class_map[int(c)],
|
211
213
|
"bbox": [round(x, 3) for x in b],
|
212
214
|
"score": round(s, 5),
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
from .model import SAM
|
4
|
+
from .predict import Predictor, SAM2DynamicInteractivePredictor, SAM2Predictor, SAM2VideoPredictor
|
5
|
+
|
6
|
+
__all__ = (
|
7
|
+
"SAM",
|
8
|
+
"Predictor",
|
9
|
+
"SAM2Predictor",
|
10
|
+
"SAM2VideoPredictor",
|
11
|
+
"SAM2DynamicInteractivePredictor",
|
12
|
+
) # tuple or list of exportable items
|
@@ -574,7 +574,7 @@ class SAM2Model(torch.nn.Module):
|
|
574
574
|
object_score_logits,
|
575
575
|
)
|
576
576
|
|
577
|
-
def _use_mask_as_output(self, backbone_features, high_res_features
|
577
|
+
def _use_mask_as_output(self, mask_inputs, backbone_features=None, high_res_features=None):
|
578
578
|
"""Process mask inputs directly as output, bypassing SAM encoder/decoder."""
|
579
579
|
# Use -10/+10 as logits for neg/pos pixels (very close to 0/1 in prob after sigmoid).
|
580
580
|
out_scale, out_bias = 20.0, -10.0 # sigmoid(-10.0)=4.5398e-05
|
@@ -589,7 +589,7 @@ class SAM2Model(torch.nn.Module):
|
|
589
589
|
)
|
590
590
|
# a dummy IoU prediction of all 1's under mask input
|
591
591
|
ious = mask_inputs.new_ones(mask_inputs.size(0), 1).float()
|
592
|
-
if not self.use_obj_ptrs_in_encoder:
|
592
|
+
if not self.use_obj_ptrs_in_encoder or backbone_features is None or high_res_features is None:
|
593
593
|
# all zeros as a dummy object pointer (of shape [B, C])
|
594
594
|
obj_ptr = torch.zeros(mask_inputs.size(0), self.hidden_dim, device=mask_inputs.device)
|
595
595
|
else:
|
@@ -869,7 +869,6 @@ class SAM2Model(torch.nn.Module):
|
|
869
869
|
prev_sam_mask_logits,
|
870
870
|
):
|
871
871
|
"""Perform a single tracking step, updating object masks and memory features based on current frame inputs."""
|
872
|
-
current_out = {"point_inputs": point_inputs, "mask_inputs": mask_inputs}
|
873
872
|
# High-resolution feature maps for the SAM head, reshape (HW)BC => BCHW
|
874
873
|
if len(current_vision_feats) > 1:
|
875
874
|
high_res_features = [
|
@@ -883,7 +882,7 @@ class SAM2Model(torch.nn.Module):
|
|
883
882
|
# (see it as a GT mask) without using a SAM prompt encoder + mask decoder.
|
884
883
|
pix_feat = current_vision_feats[-1].permute(1, 2, 0)
|
885
884
|
pix_feat = pix_feat.view(-1, self.hidden_dim, *feat_sizes[-1])
|
886
|
-
sam_outputs = self._use_mask_as_output(pix_feat, high_res_features
|
885
|
+
sam_outputs = self._use_mask_as_output(mask_inputs, pix_feat, high_res_features)
|
887
886
|
else:
|
888
887
|
# fused the visual feature with previous memory features in the memory bank
|
889
888
|
pix_feat = self._prepare_memory_conditioned_features(
|
@@ -911,7 +910,7 @@ class SAM2Model(torch.nn.Module):
|
|
911
910
|
high_res_features=high_res_features,
|
912
911
|
multimask_output=multimask_output,
|
913
912
|
)
|
914
|
-
return
|
913
|
+
return sam_outputs, high_res_features, pix_feat
|
915
914
|
|
916
915
|
def _encode_memory_in_output(
|
917
916
|
self,
|
@@ -960,7 +959,8 @@ class SAM2Model(torch.nn.Module):
|
|
960
959
|
prev_sam_mask_logits=None,
|
961
960
|
):
|
962
961
|
"""Perform a single tracking step, updating object masks and memory features based on current frame inputs."""
|
963
|
-
current_out
|
962
|
+
current_out = {}
|
963
|
+
sam_outputs, _, _ = self._track_step(
|
964
964
|
frame_idx,
|
965
965
|
is_init_cond_frame,
|
966
966
|
current_vision_feats,
|