ultralytics 8.3.10__tar.gz → 8.3.12__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.10/ultralytics.egg-info → ultralytics-8.3.12}/PKG-INFO +4 -5
- {ultralytics-8.3.10 → ultralytics-8.3.12}/pyproject.toml +3 -4
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_cli.py +4 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_cuda.py +13 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/__init__.py +1 -3
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/__init__.py +2 -35
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/solutions/default.yaml +1 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/annotator.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/exporter.py +56 -51
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/model.py +33 -33
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/results.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/tuner.py +3 -3
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/predict.py +12 -5
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/detect/predict.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/detect/train.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/detect/val.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/model.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/autobackend.py +1 -1
- ultralytics-8.3.12/ultralytics/solutions/analytics.py +194 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/benchmarks.py +2 -2
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/checks.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/downloads.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/files.py +2 -2
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/tuner.py +1 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12/ultralytics.egg-info}/PKG-INFO +4 -5
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics.egg-info/SOURCES.txt +0 -5
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics.egg-info/requires.txt +4 -5
- ultralytics-8.3.10/ultralytics/data/explorer/__init__.py +0 -5
- ultralytics-8.3.10/ultralytics/data/explorer/explorer.py +0 -460
- ultralytics-8.3.10/ultralytics/data/explorer/gui/dash.py +0 -269
- ultralytics-8.3.10/ultralytics/data/explorer/utils.py +0 -167
- ultralytics-8.3.10/ultralytics/solutions/analytics.py +0 -307
- ultralytics-8.3.10/ultralytics/trackers/utils/__init__.py +0 -1
- {ultralytics-8.3.10 → ultralytics-8.3.12}/LICENSE +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/README.md +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/setup.cfg +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/conftest.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_engine.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_exports.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_python.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.3.10/ultralytics/data/explorer/gui → ultralytics-8.3.12/ultralytics/engine}/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.10/ultralytics/engine → ultralytics-8.3.12/ultralytics/models/sam/modules}/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.10/ultralytics/models/sam/modules → ultralytics-8.3.12/ultralytics/models/utils}/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.10/ultralytics/models → ultralytics-8.3.12/ultralytics/trackers}/utils/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.10 → ultralytics-8.3.12}/ultralytics.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.12
|
|
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>
|
|
@@ -72,10 +72,9 @@ Requires-Dist: keras; extra == "export"
|
|
|
72
72
|
Requires-Dist: flatbuffers<100,>=23.5.26; platform_machine == "aarch64" and extra == "export"
|
|
73
73
|
Requires-Dist: numpy==1.23.5; platform_machine == "aarch64" and extra == "export"
|
|
74
74
|
Requires-Dist: h5py!=3.11.0; platform_machine == "aarch64" and extra == "export"
|
|
75
|
-
Provides-Extra:
|
|
76
|
-
Requires-Dist:
|
|
77
|
-
Requires-Dist:
|
|
78
|
-
Requires-Dist: streamlit; extra == "explorer"
|
|
75
|
+
Provides-Extra: solutions
|
|
76
|
+
Requires-Dist: shapely>=2.0.0; extra == "solutions"
|
|
77
|
+
Requires-Dist: streamlit; extra == "solutions"
|
|
79
78
|
Provides-Extra: logging
|
|
80
79
|
Requires-Dist: comet; extra == "logging"
|
|
81
80
|
Requires-Dist: tensorboard>=2.13.0; extra == "logging"
|
|
@@ -107,10 +107,9 @@ export = [
|
|
|
107
107
|
"numpy==1.23.5; platform_machine == 'aarch64'", # fix error: `np.bool` was a deprecated alias for the builtin `bool` when using TensorRT models on NVIDIA Jetson
|
|
108
108
|
"h5py!=3.11.0; platform_machine == 'aarch64'", # fix h5py build issues due to missing aarch64 wheels in 3.11 release
|
|
109
109
|
]
|
|
110
|
-
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"streamlit", # visualizing with GUI
|
|
110
|
+
solutions = [
|
|
111
|
+
"shapely>=2.0.0", # shapely for point and polygon data matching
|
|
112
|
+
"streamlit", # for live inference on web browser i.e `yolo streamlit-predict`
|
|
114
113
|
]
|
|
115
114
|
logging = [
|
|
116
115
|
"comet", # https://docs.ultralytics.com/integrations/comet/
|
|
@@ -97,9 +97,12 @@ def test_mobilesam():
|
|
|
97
97
|
# Source
|
|
98
98
|
source = ASSETS / "zidane.jpg"
|
|
99
99
|
|
|
100
|
-
# Predict a segment based on a point prompt
|
|
100
|
+
# Predict a segment based on a 1D point prompt and 1D labels.
|
|
101
101
|
model.predict(source, points=[900, 370], labels=[1])
|
|
102
102
|
|
|
103
|
+
# Predict a segment based on 3D points and 2D labels (multiple points per object).
|
|
104
|
+
model.predict(source, points=[[[900, 370], [1000, 100]]], labels=[[1, 1]])
|
|
105
|
+
|
|
103
106
|
# Predict a segment based on a box prompt
|
|
104
107
|
model.predict(source, bboxes=[439, 437, 524, 709], save=True)
|
|
105
108
|
|
|
@@ -127,9 +127,21 @@ def test_predict_sam():
|
|
|
127
127
|
# Run inference with bboxes prompt
|
|
128
128
|
model(SOURCE, bboxes=[439, 437, 524, 709], device=0)
|
|
129
129
|
|
|
130
|
-
# Run inference with
|
|
130
|
+
# Run inference with no labels
|
|
131
|
+
model(ASSETS / "zidane.jpg", points=[900, 370], device=0)
|
|
132
|
+
|
|
133
|
+
# Run inference with 1D points and 1D labels
|
|
131
134
|
model(ASSETS / "zidane.jpg", points=[900, 370], labels=[1], device=0)
|
|
132
135
|
|
|
136
|
+
# Run inference with 2D points and 1D labels
|
|
137
|
+
model(ASSETS / "zidane.jpg", points=[[900, 370]], labels=[1], device=0)
|
|
138
|
+
|
|
139
|
+
# Run inference with multiple 2D points and 1D labels
|
|
140
|
+
model(ASSETS / "zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1], device=0)
|
|
141
|
+
|
|
142
|
+
# Run inference with 3D points and 2D labels (multiple points per object)
|
|
143
|
+
model(ASSETS / "zidane.jpg", points=[[[900, 370], [1000, 100]]], labels=[[1, 1]], device=0)
|
|
144
|
+
|
|
133
145
|
# Create SAMPredictor
|
|
134
146
|
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model=WEIGHTS_DIR / "mobile_sam.pt")
|
|
135
147
|
predictor = SAMPredictor(overrides=overrides)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
|
-
__version__ = "8.3.
|
|
3
|
+
__version__ = "8.3.12"
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
6
|
|
|
@@ -8,7 +8,6 @@ import os
|
|
|
8
8
|
if not os.environ.get("OMP_NUM_THREADS"):
|
|
9
9
|
os.environ["OMP_NUM_THREADS"] = "1" # default for reduced CPU utilization during training
|
|
10
10
|
|
|
11
|
-
from ultralytics.data.explorer.explorer import Explorer
|
|
12
11
|
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
|
|
13
12
|
from ultralytics.utils import ASSETS, SETTINGS
|
|
14
13
|
from ultralytics.utils.checks import check_yolo as checks
|
|
@@ -27,5 +26,4 @@ __all__ = (
|
|
|
27
26
|
"checks",
|
|
28
27
|
"download",
|
|
29
28
|
"settings",
|
|
30
|
-
"Explorer",
|
|
31
29
|
)
|
|
@@ -79,14 +79,11 @@ CLI_HELP_MSG = f"""
|
|
|
79
79
|
|
|
80
80
|
4. Export a YOLO11n classification model to ONNX format at image size 224 by 128 (no TASK required)
|
|
81
81
|
yolo export model=yolo11n-cls.pt format=onnx imgsz=224,128
|
|
82
|
-
|
|
83
|
-
5. Explore your datasets using semantic search and SQL with a simple GUI powered by Ultralytics Explorer API
|
|
84
|
-
yolo explorer data=data.yaml model=yolo11n.pt
|
|
85
82
|
|
|
86
|
-
|
|
83
|
+
5. Streamlit real-time webcam inference GUI
|
|
87
84
|
yolo streamlit-predict
|
|
88
85
|
|
|
89
|
-
|
|
86
|
+
6. Run special commands:
|
|
90
87
|
yolo help
|
|
91
88
|
yolo checks
|
|
92
89
|
yolo version
|
|
@@ -546,35 +543,6 @@ def handle_yolo_settings(args: List[str]) -> None:
|
|
|
546
543
|
LOGGER.warning(f"WARNING ⚠️ settings error: '{e}'. Please see {url} for help.")
|
|
547
544
|
|
|
548
545
|
|
|
549
|
-
def handle_explorer(args: List[str]):
|
|
550
|
-
"""
|
|
551
|
-
Launches a graphical user interface that provides tools for interacting with and analyzing datasets using the
|
|
552
|
-
Ultralytics Explorer API. It checks for the required 'streamlit' package and informs the user that the Explorer
|
|
553
|
-
dashboard is loading.
|
|
554
|
-
|
|
555
|
-
Args:
|
|
556
|
-
args (List[str]): A list of optional command line arguments.
|
|
557
|
-
|
|
558
|
-
Examples:
|
|
559
|
-
```bash
|
|
560
|
-
yolo explorer data=data.yaml model=yolo11n.pt
|
|
561
|
-
```
|
|
562
|
-
|
|
563
|
-
Notes:
|
|
564
|
-
- Requires 'streamlit' package version 1.29.0 or higher.
|
|
565
|
-
- The function does not take any arguments or return any values.
|
|
566
|
-
- It is typically called from the command line interface using the 'yolo explorer' command.
|
|
567
|
-
"""
|
|
568
|
-
checks.check_requirements("streamlit>=1.29.0")
|
|
569
|
-
LOGGER.info("💡 Loading Explorer dashboard...")
|
|
570
|
-
cmd = ["streamlit", "run", ROOT / "data/explorer/gui/dash.py", "--server.maxMessageSize", "2048"]
|
|
571
|
-
new = dict(parse_key_value_pair(a) for a in args)
|
|
572
|
-
check_dict_alignment(base={k: DEFAULT_CFG_DICT[k] for k in ["model", "data"]}, custom=new)
|
|
573
|
-
for k, v in new.items():
|
|
574
|
-
cmd += [k, v]
|
|
575
|
-
subprocess.run(cmd)
|
|
576
|
-
|
|
577
|
-
|
|
578
546
|
def handle_streamlit_inference():
|
|
579
547
|
"""
|
|
580
548
|
Open the Ultralytics Live Inference Streamlit app for real-time object detection.
|
|
@@ -715,7 +683,6 @@ def entrypoint(debug=""):
|
|
|
715
683
|
"login": lambda: handle_yolo_hub(args),
|
|
716
684
|
"logout": lambda: handle_yolo_hub(args),
|
|
717
685
|
"copy-cfg": copy_default_cfg,
|
|
718
|
-
"explorer": lambda: handle_explorer(args[1:]),
|
|
719
686
|
"streamlit-predict": lambda: handle_streamlit_inference(),
|
|
720
687
|
}
|
|
721
688
|
full_args_dict = {**DEFAULT_CFG_DICT, **{k: None for k in TASKS}, **{k: None for k in MODES}, **special}
|
|
@@ -14,3 +14,4 @@ up_angle: 145.0 # Workouts up_angle for counts, 145.0 is default value. You can
|
|
|
14
14
|
down_angle: 90 # Workouts down_angle for counts, 90 is default value. You can change it for different workouts, based on position of keypoints.
|
|
15
15
|
kpts: [6, 8, 10] # Keypoints for workouts monitoring, i.e. If you want to consider keypoints for pushups that have mostly values of [6, 8, 10].
|
|
16
16
|
colormap: # Colormap for heatmap, Only OPENCV supported colormaps can be used. By default COLORMAP_PARULA will be used for visualization.
|
|
17
|
+
analytics_type: "line" # Analytics type i.e "line", "pie", "bar" or "area" charts. By default, "line" analytics will be used for processing.
|
|
@@ -21,7 +21,7 @@ def auto_annotate(data, det_model="yolov8x.pt", sam_model="sam_b.pt", device="",
|
|
|
21
21
|
|
|
22
22
|
Examples:
|
|
23
23
|
>>> from ultralytics.data.annotator import auto_annotate
|
|
24
|
-
>>> auto_annotate(data="ultralytics/assets", det_model="
|
|
24
|
+
>>> auto_annotate(data="ultralytics/assets", det_model="yolo11n.pt", sam_model="mobile_sam.pt")
|
|
25
25
|
|
|
26
26
|
Notes:
|
|
27
27
|
- The function creates a new directory for output if not specified.
|
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
"""
|
|
3
|
-
Export a
|
|
3
|
+
Export a YOLO PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit.
|
|
4
4
|
|
|
5
5
|
Format | `format=argument` | Model
|
|
6
6
|
--- | --- | ---
|
|
7
|
-
PyTorch | - |
|
|
8
|
-
TorchScript | `torchscript` |
|
|
9
|
-
ONNX | `onnx` |
|
|
10
|
-
OpenVINO | `openvino` |
|
|
11
|
-
TensorRT | `engine` |
|
|
12
|
-
CoreML | `coreml` |
|
|
13
|
-
TensorFlow SavedModel | `saved_model` |
|
|
14
|
-
TensorFlow GraphDef | `pb` |
|
|
15
|
-
TensorFlow Lite | `tflite` |
|
|
16
|
-
TensorFlow Edge TPU | `edgetpu` |
|
|
17
|
-
TensorFlow.js | `tfjs` |
|
|
18
|
-
PaddlePaddle | `paddle` |
|
|
19
|
-
NCNN | `ncnn` |
|
|
7
|
+
PyTorch | - | yolo11n.pt
|
|
8
|
+
TorchScript | `torchscript` | yolo11n.torchscript
|
|
9
|
+
ONNX | `onnx` | yolo11n.onnx
|
|
10
|
+
OpenVINO | `openvino` | yolo11n_openvino_model/
|
|
11
|
+
TensorRT | `engine` | yolo11n.engine
|
|
12
|
+
CoreML | `coreml` | yolo11n.mlpackage
|
|
13
|
+
TensorFlow SavedModel | `saved_model` | yolo11n_saved_model/
|
|
14
|
+
TensorFlow GraphDef | `pb` | yolo11n.pb
|
|
15
|
+
TensorFlow Lite | `tflite` | yolo11n.tflite
|
|
16
|
+
TensorFlow Edge TPU | `edgetpu` | yolo11n_edgetpu.tflite
|
|
17
|
+
TensorFlow.js | `tfjs` | yolo11n_web_model/
|
|
18
|
+
PaddlePaddle | `paddle` | yolo11n_paddle_model/
|
|
19
|
+
NCNN | `ncnn` | yolo11n_ncnn_model/
|
|
20
20
|
|
|
21
21
|
Requirements:
|
|
22
22
|
$ pip install "ultralytics[export]"
|
|
23
23
|
|
|
24
24
|
Python:
|
|
25
25
|
from ultralytics import YOLO
|
|
26
|
-
model = YOLO('
|
|
26
|
+
model = YOLO('yolo11n.pt')
|
|
27
27
|
results = model.export(format='onnx')
|
|
28
28
|
|
|
29
29
|
CLI:
|
|
30
|
-
$ yolo mode=export model=
|
|
30
|
+
$ yolo mode=export model=yolo11n.pt format=onnx
|
|
31
31
|
|
|
32
32
|
Inference:
|
|
33
|
-
$ yolo predict model=
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
$ yolo predict model=yolo11n.pt # PyTorch
|
|
34
|
+
yolo11n.torchscript # TorchScript
|
|
35
|
+
yolo11n.onnx # ONNX Runtime or OpenCV DNN with dnn=True
|
|
36
|
+
yolo11n_openvino_model # OpenVINO
|
|
37
|
+
yolo11n.engine # TensorRT
|
|
38
|
+
yolo11n.mlpackage # CoreML (macOS-only)
|
|
39
|
+
yolo11n_saved_model # TensorFlow SavedModel
|
|
40
|
+
yolo11n.pb # TensorFlow GraphDef
|
|
41
|
+
yolo11n.tflite # TensorFlow Lite
|
|
42
|
+
yolo11n_edgetpu.tflite # TensorFlow Edge TPU
|
|
43
|
+
yolo11n_paddle_model # PaddlePaddle
|
|
44
|
+
yolo11n_ncnn_model # NCNN
|
|
45
45
|
|
|
46
46
|
TensorFlow.js:
|
|
47
47
|
$ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example
|
|
48
48
|
$ npm install
|
|
49
|
-
$ ln -s ../../
|
|
49
|
+
$ ln -s ../../yolo11n_web_model public/yolo11n_web_model
|
|
50
50
|
$ npm start
|
|
51
51
|
"""
|
|
52
52
|
|
|
@@ -124,7 +124,7 @@ def gd_outputs(gd):
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
def try_export(inner_func):
|
|
127
|
-
"""
|
|
127
|
+
"""YOLO export decorator, i.e. @try_export."""
|
|
128
128
|
inner_args = get_default_args(inner_func)
|
|
129
129
|
|
|
130
130
|
def outer_func(*args, **kwargs):
|
|
@@ -378,7 +378,7 @@ class Exporter:
|
|
|
378
378
|
|
|
379
379
|
@try_export
|
|
380
380
|
def export_torchscript(self, prefix=colorstr("TorchScript:")):
|
|
381
|
-
"""
|
|
381
|
+
"""YOLO TorchScript model export."""
|
|
382
382
|
LOGGER.info(f"\n{prefix} starting export with torch {torch.__version__}...")
|
|
383
383
|
f = self.file.with_suffix(".torchscript")
|
|
384
384
|
|
|
@@ -395,7 +395,7 @@ class Exporter:
|
|
|
395
395
|
|
|
396
396
|
@try_export
|
|
397
397
|
def export_onnx(self, prefix=colorstr("ONNX:")):
|
|
398
|
-
"""
|
|
398
|
+
"""YOLO ONNX export."""
|
|
399
399
|
requirements = ["onnx>=1.12.0"]
|
|
400
400
|
if self.args.simplify:
|
|
401
401
|
requirements += ["onnxslim==0.1.34", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
|
|
@@ -452,7 +452,7 @@ class Exporter:
|
|
|
452
452
|
|
|
453
453
|
@try_export
|
|
454
454
|
def export_openvino(self, prefix=colorstr("OpenVINO:")):
|
|
455
|
-
"""
|
|
455
|
+
"""YOLO OpenVINO export."""
|
|
456
456
|
check_requirements(f'openvino{"<=2024.0.0" if ARM64 else ">=2024.0.0"}') # fix OpenVINO issue on ARM64
|
|
457
457
|
import openvino as ov
|
|
458
458
|
|
|
@@ -466,7 +466,7 @@ class Exporter:
|
|
|
466
466
|
|
|
467
467
|
def serialize(ov_model, file):
|
|
468
468
|
"""Set RT info, serialize and save metadata YAML."""
|
|
469
|
-
ov_model.set_rt_info("
|
|
469
|
+
ov_model.set_rt_info("YOLO", ["model_info", "model_type"])
|
|
470
470
|
ov_model.set_rt_info(True, ["model_info", "reverse_input_channels"])
|
|
471
471
|
ov_model.set_rt_info(114, ["model_info", "pad_value"])
|
|
472
472
|
ov_model.set_rt_info([255.0], ["model_info", "scale_values"])
|
|
@@ -524,7 +524,7 @@ class Exporter:
|
|
|
524
524
|
|
|
525
525
|
@try_export
|
|
526
526
|
def export_paddle(self, prefix=colorstr("PaddlePaddle:")):
|
|
527
|
-
"""
|
|
527
|
+
"""YOLO Paddle export."""
|
|
528
528
|
check_requirements(("paddlepaddle", "x2paddle"))
|
|
529
529
|
import x2paddle # noqa
|
|
530
530
|
from x2paddle.convert import pytorch2paddle # noqa
|
|
@@ -538,7 +538,7 @@ class Exporter:
|
|
|
538
538
|
|
|
539
539
|
@try_export
|
|
540
540
|
def export_ncnn(self, prefix=colorstr("NCNN:")):
|
|
541
|
-
"""
|
|
541
|
+
"""YOLO NCNN export using PNNX https://github.com/pnnx/pnnx."""
|
|
542
542
|
check_requirements("ncnn")
|
|
543
543
|
import ncnn # noqa
|
|
544
544
|
|
|
@@ -606,7 +606,7 @@ class Exporter:
|
|
|
606
606
|
|
|
607
607
|
@try_export
|
|
608
608
|
def export_coreml(self, prefix=colorstr("CoreML:")):
|
|
609
|
-
"""
|
|
609
|
+
"""YOLO CoreML export."""
|
|
610
610
|
mlmodel = self.args.format.lower() == "mlmodel" # legacy *.mlmodel export format requested
|
|
611
611
|
check_requirements("coremltools>=6.0,<=6.2" if mlmodel else "coremltools>=7.0")
|
|
612
612
|
import coremltools as ct # noqa
|
|
@@ -683,7 +683,7 @@ class Exporter:
|
|
|
683
683
|
|
|
684
684
|
@try_export
|
|
685
685
|
def export_engine(self, prefix=colorstr("TensorRT:")):
|
|
686
|
-
"""
|
|
686
|
+
"""YOLO TensorRT export https://developer.nvidia.com/tensorrt."""
|
|
687
687
|
assert self.im.device.type != "cpu", "export running on CPU but must be on GPU, i.e. use 'device=0'"
|
|
688
688
|
f_onnx, _ = self.export_onnx() # run before TRT import https://github.com/ultralytics/ultralytics/issues/7016
|
|
689
689
|
|
|
@@ -817,7 +817,7 @@ class Exporter:
|
|
|
817
817
|
|
|
818
818
|
@try_export
|
|
819
819
|
def export_saved_model(self, prefix=colorstr("TensorFlow SavedModel:")):
|
|
820
|
-
"""
|
|
820
|
+
"""YOLO TensorFlow SavedModel export."""
|
|
821
821
|
cuda = torch.cuda.is_available()
|
|
822
822
|
try:
|
|
823
823
|
import tensorflow as tf # noqa
|
|
@@ -869,22 +869,19 @@ class Exporter:
|
|
|
869
869
|
np_data = None
|
|
870
870
|
if self.args.int8:
|
|
871
871
|
tmp_file = f / "tmp_tflite_int8_calibration_images.npy" # int8 calibration images file
|
|
872
|
-
verbosity = "info"
|
|
873
872
|
if self.args.data:
|
|
874
873
|
f.mkdir()
|
|
875
874
|
images = [batch["img"].permute(0, 2, 3, 1) for batch in self.get_int8_calibration_dataloader(prefix)]
|
|
876
875
|
images = torch.cat(images, 0).float()
|
|
877
876
|
np.save(str(tmp_file), images.numpy().astype(np.float32)) # BHWC
|
|
878
877
|
np_data = [["images", tmp_file, [[[[0, 0, 0]]]], [[[[255, 255, 255]]]]]]
|
|
879
|
-
else:
|
|
880
|
-
verbosity = "error"
|
|
881
878
|
|
|
882
879
|
LOGGER.info(f"{prefix} starting TFLite export with onnx2tf {onnx2tf.__version__}...")
|
|
883
|
-
onnx2tf.convert(
|
|
880
|
+
keras_model = onnx2tf.convert(
|
|
884
881
|
input_onnx_file_path=f_onnx,
|
|
885
882
|
output_folder_path=str(f),
|
|
886
883
|
not_use_onnxsim=True,
|
|
887
|
-
verbosity=
|
|
884
|
+
verbosity="error", # note INT8-FP16 activation bug https://github.com/ultralytics/ultralytics/issues/15873
|
|
888
885
|
output_integer_quantized_tflite=self.args.int8,
|
|
889
886
|
quant_type="per-tensor", # "per-tensor" (faster) or "per-channel" (slower but more accurate)
|
|
890
887
|
custom_input_op_name_np_data_path=np_data,
|
|
@@ -905,11 +902,11 @@ class Exporter:
|
|
|
905
902
|
for file in f.rglob("*.tflite"):
|
|
906
903
|
f.unlink() if "quant_with_int16_act.tflite" in str(f) else self._add_tflite_metadata(file)
|
|
907
904
|
|
|
908
|
-
return str(f), tf.saved_model.load(f, tags=None, options=None)
|
|
905
|
+
return str(f), keras_model # or keras_model = tf.saved_model.load(f, tags=None, options=None)
|
|
909
906
|
|
|
910
907
|
@try_export
|
|
911
908
|
def export_pb(self, keras_model, prefix=colorstr("TensorFlow GraphDef:")):
|
|
912
|
-
"""
|
|
909
|
+
"""YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow."""
|
|
913
910
|
import tensorflow as tf # noqa
|
|
914
911
|
from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 # noqa
|
|
915
912
|
|
|
@@ -925,7 +922,7 @@ class Exporter:
|
|
|
925
922
|
|
|
926
923
|
@try_export
|
|
927
924
|
def export_tflite(self, keras_model, nms, agnostic_nms, prefix=colorstr("TensorFlow Lite:")):
|
|
928
|
-
"""
|
|
925
|
+
"""YOLO TensorFlow Lite export."""
|
|
929
926
|
# BUG https://github.com/ultralytics/ultralytics/issues/13436
|
|
930
927
|
import tensorflow as tf # noqa
|
|
931
928
|
|
|
@@ -941,7 +938,7 @@ class Exporter:
|
|
|
941
938
|
|
|
942
939
|
@try_export
|
|
943
940
|
def export_edgetpu(self, tflite_model="", prefix=colorstr("Edge TPU:")):
|
|
944
|
-
"""
|
|
941
|
+
"""YOLO Edge TPU export https://coral.ai/docs/edgetpu/models-intro/."""
|
|
945
942
|
LOGGER.warning(f"{prefix} WARNING ⚠️ Edge TPU known bug https://github.com/ultralytics/ultralytics/issues/1185")
|
|
946
943
|
|
|
947
944
|
cmd = "edgetpu_compiler --version"
|
|
@@ -963,7 +960,15 @@ class Exporter:
|
|
|
963
960
|
LOGGER.info(f"\n{prefix} starting export with Edge TPU compiler {ver}...")
|
|
964
961
|
f = str(tflite_model).replace(".tflite", "_edgetpu.tflite") # Edge TPU model
|
|
965
962
|
|
|
966
|
-
cmd =
|
|
963
|
+
cmd = (
|
|
964
|
+
"edgetpu_compiler "
|
|
965
|
+
f'--out_dir "{Path(f).parent}" '
|
|
966
|
+
"--show_operations "
|
|
967
|
+
"--search_delegate "
|
|
968
|
+
"--delegate_search_step 3 "
|
|
969
|
+
"--timeout_sec 180 "
|
|
970
|
+
f'"{tflite_model}"'
|
|
971
|
+
)
|
|
967
972
|
LOGGER.info(f"{prefix} running '{cmd}'")
|
|
968
973
|
subprocess.run(cmd, shell=True)
|
|
969
974
|
self._add_tflite_metadata(f)
|
|
@@ -971,7 +976,7 @@ class Exporter:
|
|
|
971
976
|
|
|
972
977
|
@try_export
|
|
973
978
|
def export_tfjs(self, prefix=colorstr("TensorFlow.js:")):
|
|
974
|
-
"""
|
|
979
|
+
"""YOLO TensorFlow.js export."""
|
|
975
980
|
check_requirements("tensorflowjs")
|
|
976
981
|
if ARM64:
|
|
977
982
|
# Fix error: `np.object` was a deprecated alias for the builtin `object` when exporting to TF.js on ARM64
|
|
@@ -1070,7 +1075,7 @@ class Exporter:
|
|
|
1070
1075
|
tmp_file.unlink()
|
|
1071
1076
|
|
|
1072
1077
|
def _pipeline_coreml(self, model, weights_dir=None, prefix=colorstr("CoreML Pipeline:")):
|
|
1073
|
-
"""
|
|
1078
|
+
"""YOLO CoreML pipeline."""
|
|
1074
1079
|
import coremltools as ct # noqa
|
|
1075
1080
|
|
|
1076
1081
|
LOGGER.info(f"{prefix} starting pipeline with coremltools {ct.__version__}...")
|