ultralytics 8.3.70__tar.gz → 8.3.71__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.70/ultralytics.egg-info → ultralytics-8.3.71}/PKG-INFO +2 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/pyproject.toml +1 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v6/yolov6.yaml +1 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/model.py +9 -9
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/results.py +25 -20
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/sam.py +1 -2
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/val.py +1 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/autobackend.py +1 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/tasks.py +30 -32
- {ultralytics-8.3.70 → ultralytics-8.3.71/ultralytics.egg-info}/PKG-INFO +2 -1
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/requires.txt +1 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/LICENSE +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/README.md +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/setup.cfg +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/conftest.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_cli.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_engine.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_exports.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_python.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/solutions/default.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.71
|
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>
|
@@ -54,6 +54,7 @@ Requires-Dist: pytest; extra == "dev"
|
|
54
54
|
Requires-Dist: pytest-cov; extra == "dev"
|
55
55
|
Requires-Dist: coverage[toml]; extra == "dev"
|
56
56
|
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
57
|
+
Requires-Dist: beautifulsoup4<=4.12.3; extra == "dev"
|
57
58
|
Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
58
59
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
59
60
|
Requires-Dist: mkdocs-redirects; extra == "dev"
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
# Parameters
|
8
8
|
nc: 80 # number of classes
|
9
|
-
activation: nn.ReLU() # (optional) model default activation function
|
9
|
+
activation: torch.nn.ReLU() # (optional) model default activation function
|
10
10
|
scales: # model compound scaling constants, i.e. 'model=yolov6n.yaml' will call yolov8.yaml with scale 'n'
|
11
11
|
# [depth, width, max_channels]
|
12
12
|
n: [0.33, 0.25, 1024]
|
@@ -11,7 +11,7 @@ from PIL import Image
|
|
11
11
|
from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir
|
12
12
|
from ultralytics.engine.results import Results
|
13
13
|
from ultralytics.hub import HUB_WEB_ROOT, HUBTrainingSession
|
14
|
-
from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task,
|
14
|
+
from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, yaml_model_load
|
15
15
|
from ultralytics.utils import (
|
16
16
|
ARGV,
|
17
17
|
ASSETS,
|
@@ -26,7 +26,7 @@ from ultralytics.utils import (
|
|
26
26
|
)
|
27
27
|
|
28
28
|
|
29
|
-
class Model(nn.Module):
|
29
|
+
class Model(torch.nn.Module):
|
30
30
|
"""
|
31
31
|
A base class for implementing YOLO models, unifying APIs across different model types.
|
32
32
|
|
@@ -37,7 +37,7 @@ class Model(nn.Module):
|
|
37
37
|
Attributes:
|
38
38
|
callbacks (Dict): A dictionary of callback functions for various events during model operations.
|
39
39
|
predictor (BasePredictor): The predictor object used for making predictions.
|
40
|
-
model (nn.Module): The underlying PyTorch model.
|
40
|
+
model (torch.nn.Module): The underlying PyTorch model.
|
41
41
|
trainer (BaseTrainer): The trainer object used for training the model.
|
42
42
|
ckpt (Dict): The checkpoint data if the model is loaded from a *.pt file.
|
43
43
|
cfg (str): The configuration of the model if loaded from a *.yaml file.
|
@@ -317,7 +317,7 @@ class Model(nn.Module):
|
|
317
317
|
>>> model._check_is_pytorch_model() # Raises TypeError
|
318
318
|
"""
|
319
319
|
pt_str = isinstance(self.model, (str, Path)) and Path(self.model).suffix == ".pt"
|
320
|
-
pt_module = isinstance(self.model, nn.Module)
|
320
|
+
pt_module = isinstance(self.model, torch.nn.Module)
|
321
321
|
if not (pt_module or pt_str):
|
322
322
|
raise TypeError(
|
323
323
|
f"model='{self.model}' should be a *.pt PyTorch model to run this method, but is a different format. "
|
@@ -405,7 +405,7 @@ class Model(nn.Module):
|
|
405
405
|
from ultralytics import __version__
|
406
406
|
|
407
407
|
updates = {
|
408
|
-
"model": deepcopy(self.model).half() if isinstance(self.model, nn.Module) else self.model,
|
408
|
+
"model": deepcopy(self.model).half() if isinstance(self.model, torch.nn.Module) else self.model,
|
409
409
|
"date": datetime.now().isoformat(),
|
410
410
|
"version": __version__,
|
411
411
|
"license": "AGPL-3.0 License (https://ultralytics.com/license)",
|
@@ -452,7 +452,7 @@ class Model(nn.Module):
|
|
452
452
|
performs both convolution and normalization in one step.
|
453
453
|
|
454
454
|
Raises:
|
455
|
-
TypeError: If the model is not a PyTorch nn.Module.
|
455
|
+
TypeError: If the model is not a PyTorch torch.nn.Module.
|
456
456
|
|
457
457
|
Examples:
|
458
458
|
>>> model = Model("yolo11n.pt")
|
@@ -921,13 +921,13 @@ class Model(nn.Module):
|
|
921
921
|
Retrieves the device on which the model's parameters are allocated.
|
922
922
|
|
923
923
|
This property determines the device (CPU or GPU) where the model's parameters are currently stored. It is
|
924
|
-
applicable only to models that are instances of nn.Module.
|
924
|
+
applicable only to models that are instances of torch.nn.Module.
|
925
925
|
|
926
926
|
Returns:
|
927
927
|
(torch.device): The device (CPU/GPU) of the model.
|
928
928
|
|
929
929
|
Raises:
|
930
|
-
AttributeError: If the model is not a
|
930
|
+
AttributeError: If the model is not a torch.nn.Module instance.
|
931
931
|
|
932
932
|
Examples:
|
933
933
|
>>> model = YOLO("yolo11n.pt")
|
@@ -937,7 +937,7 @@ class Model(nn.Module):
|
|
937
937
|
>>> print(model.device)
|
938
938
|
device(type='cpu')
|
939
939
|
"""
|
940
|
-
return next(self.model.parameters()).device if isinstance(self.model, nn.Module) else None
|
940
|
+
return next(self.model.parameters()).device if isinstance(self.model, torch.nn.Module) else None
|
941
941
|
|
942
942
|
@property
|
943
943
|
def transforms(self):
|
@@ -494,8 +494,8 @@ class Results(SimpleClass):
|
|
494
494
|
Examples:
|
495
495
|
>>> results = model("image.jpg")
|
496
496
|
>>> for result in results:
|
497
|
-
|
498
|
-
|
497
|
+
>>> im = result.plot()
|
498
|
+
>>> im.show()
|
499
499
|
"""
|
500
500
|
assert color_mode in {"instance", "class"}, f"Expected color_mode='instance' or 'class', not {color_mode}."
|
501
501
|
if img is None and isinstance(self.orig_img, torch.Tensor):
|
@@ -600,7 +600,7 @@ class Results(SimpleClass):
|
|
600
600
|
>>> results = model("path/to/image.jpg")
|
601
601
|
>>> results[0].show() # Display the first result
|
602
602
|
>>> for result in results:
|
603
|
-
|
603
|
+
>>> result.show() # Display all results
|
604
604
|
"""
|
605
605
|
self.plot(show=True, *args, **kwargs)
|
606
606
|
|
@@ -620,10 +620,10 @@ class Results(SimpleClass):
|
|
620
620
|
Examples:
|
621
621
|
>>> results = model("path/to/image.jpg")
|
622
622
|
>>> for result in results:
|
623
|
-
|
623
|
+
>>> result.save("annotated_image.jpg")
|
624
624
|
>>> # Or with custom plot arguments
|
625
625
|
>>> for result in results:
|
626
|
-
|
626
|
+
>>> result.save("annotated_image.jpg", conf=False, line_width=2)
|
627
627
|
"""
|
628
628
|
if not filename:
|
629
629
|
filename = f"results_{Path(self.path).name}"
|
@@ -644,7 +644,7 @@ class Results(SimpleClass):
|
|
644
644
|
Examples:
|
645
645
|
>>> results = model("path/to/image.jpg")
|
646
646
|
>>> for result in results:
|
647
|
-
|
647
|
+
>>> print(result.verbose())
|
648
648
|
2 persons, 1 car, 3 traffic lights,
|
649
649
|
dog 0.92, cat 0.78, horse 0.64,
|
650
650
|
|
@@ -681,7 +681,7 @@ class Results(SimpleClass):
|
|
681
681
|
>>> model = YOLO("yolo11n.pt")
|
682
682
|
>>> results = model("path/to/image.jpg")
|
683
683
|
>>> for result in results:
|
684
|
-
|
684
|
+
>>> result.save_txt("output.txt")
|
685
685
|
|
686
686
|
Notes:
|
687
687
|
- The file will contain one line per detection or classification with the following structure:
|
@@ -740,7 +740,7 @@ class Results(SimpleClass):
|
|
740
740
|
Examples:
|
741
741
|
>>> results = model("path/to/image.jpg")
|
742
742
|
>>> for result in results:
|
743
|
-
|
743
|
+
>>> result.save_crop(save_dir="path/to/crops", file_name="detection")
|
744
744
|
"""
|
745
745
|
if self.probs is not None:
|
746
746
|
LOGGER.warning("WARNING ⚠️ Classify task do not support `save_crop`.")
|
@@ -776,8 +776,9 @@ class Results(SimpleClass):
|
|
776
776
|
|
777
777
|
Examples:
|
778
778
|
>>> results = model("image.jpg")
|
779
|
-
>>>
|
780
|
-
>>>
|
779
|
+
>>> for result in results:
|
780
|
+
>>> summary = result.summary()
|
781
|
+
>>> print(summary)
|
781
782
|
"""
|
782
783
|
# Create list of detection dictionaries
|
783
784
|
results = []
|
@@ -839,8 +840,9 @@ class Results(SimpleClass):
|
|
839
840
|
|
840
841
|
Examples:
|
841
842
|
>>> results = model("path/to/image.jpg")
|
842
|
-
>>>
|
843
|
-
>>>
|
843
|
+
>>> for result in results:
|
844
|
+
>>> df_result = result.to_df()
|
845
|
+
>>> print(df_result)
|
844
846
|
"""
|
845
847
|
import pandas as pd # scope for faster 'import ultralytics'
|
846
848
|
|
@@ -867,8 +869,9 @@ class Results(SimpleClass):
|
|
867
869
|
|
868
870
|
Examples:
|
869
871
|
>>> results = model("path/to/image.jpg")
|
870
|
-
>>>
|
871
|
-
>>>
|
872
|
+
>>> for result in results:
|
873
|
+
>>> csv_result = result.to_csv()
|
874
|
+
>>> print(csv_result)
|
872
875
|
"""
|
873
876
|
return self.to_df(normalize=normalize, decimals=decimals).to_csv(*args, **kwargs)
|
874
877
|
|
@@ -892,8 +895,9 @@ class Results(SimpleClass):
|
|
892
895
|
|
893
896
|
Examples:
|
894
897
|
>>> results = model("path/to/image.jpg")
|
895
|
-
>>>
|
896
|
-
>>>
|
898
|
+
>>> for result in results:
|
899
|
+
>>> xml_result = result.to_xml()
|
900
|
+
>>> print(xml_result)
|
897
901
|
"""
|
898
902
|
check_requirements("lxml")
|
899
903
|
df = self.to_df(normalize=normalize, decimals=decimals)
|
@@ -922,8 +926,9 @@ class Results(SimpleClass):
|
|
922
926
|
|
923
927
|
Examples:
|
924
928
|
>>> results = model("path/to/image.jpg")
|
925
|
-
>>>
|
926
|
-
>>>
|
929
|
+
>>> for result in results:
|
930
|
+
>>> json_result = result.to_json()
|
931
|
+
>>> print(json_result)
|
927
932
|
|
928
933
|
Notes:
|
929
934
|
- For classification tasks, the JSON will contain class probabilities instead of bounding boxes.
|
@@ -954,8 +959,8 @@ class Results(SimpleClass):
|
|
954
959
|
|
955
960
|
Examples:
|
956
961
|
>>> results = model("path/to/image.jpg")
|
957
|
-
>>> results
|
958
|
-
>>>
|
962
|
+
>>> for result in results:
|
963
|
+
>>> result.to_sql()
|
959
964
|
"""
|
960
965
|
import json
|
961
966
|
import sqlite3
|
@@ -426,8 +426,7 @@ class SAM2Model(torch.nn.Module):
|
|
426
426
|
high_res_masks: Tensor of shape (B, 1, H*16, W*16) with the best high-resolution mask.
|
427
427
|
obj_ptr: Tensor of shape (B, C) with object pointer vector for the output mask.
|
428
428
|
object_score_logits: Tensor of shape (B) with object score logits.
|
429
|
-
|
430
|
-
Where M is 3 if multimask_output=True, and 1 if multimask_output=False.
|
429
|
+
Where M is 3 if multimask_output=True, and 1 if multimask_output=False.
|
431
430
|
|
432
431
|
Examples:
|
433
432
|
>>> backbone_features = torch.rand(1, 256, 32, 32)
|
@@ -158,7 +158,7 @@ class PoseValidator(DetectionValidator):
|
|
158
158
|
gt_kpts (torch.Tensor | None): Optional tensor with shape (N, 51) representing ground truth keypoints.
|
159
159
|
|
160
160
|
Returns:
|
161
|
-
torch.Tensor: A tensor with shape (N, 10) representing the correct prediction matrix for 10 IoU levels,
|
161
|
+
(torch.Tensor): A tensor with shape (N, 10) representing the correct prediction matrix for 10 IoU levels,
|
162
162
|
where N is the number of detections.
|
163
163
|
|
164
164
|
Example:
|
@@ -780,7 +780,7 @@ class AutoBackend(nn.Module):
|
|
780
780
|
saved_model, pb, tflite, edgetpu, tfjs, ncnn or paddle.
|
781
781
|
|
782
782
|
Args:
|
783
|
-
p: path to the model file. Defaults to path/to/model.pt
|
783
|
+
p (str): path to the model file. Defaults to path/to/model.pt
|
784
784
|
|
785
785
|
Examples:
|
786
786
|
>>> model = AutoBackend(weights="path/to/model.onnx")
|
@@ -9,7 +9,6 @@ from pathlib import Path
|
|
9
9
|
|
10
10
|
import thop
|
11
11
|
import torch
|
12
|
-
import torch.nn as nn
|
13
12
|
|
14
13
|
from ultralytics.nn.modules import (
|
15
14
|
AIFI,
|
@@ -88,7 +87,7 @@ from ultralytics.utils.torch_utils import (
|
|
88
87
|
)
|
89
88
|
|
90
89
|
|
91
|
-
class BaseModel(nn.Module):
|
90
|
+
class BaseModel(torch.nn.Module):
|
92
91
|
"""The BaseModel class serves as a base class for all the models in the Ultralytics YOLO family."""
|
93
92
|
|
94
93
|
def forward(self, x, *args, **kwargs):
|
@@ -151,7 +150,7 @@ class BaseModel(nn.Module):
|
|
151
150
|
if visualize:
|
152
151
|
feature_visualization(x, m.type, m.i, save_dir=visualize)
|
153
152
|
if embed and m.i in embed:
|
154
|
-
embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
153
|
+
embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
155
154
|
if m.i == max(embed):
|
156
155
|
return torch.unbind(torch.cat(embeddings, 1), dim=0)
|
157
156
|
return x
|
@@ -170,12 +169,9 @@ class BaseModel(nn.Module):
|
|
170
169
|
the provided list.
|
171
170
|
|
172
171
|
Args:
|
173
|
-
m (nn.Module): The layer to be profiled.
|
172
|
+
m (torch.nn.Module): The layer to be profiled.
|
174
173
|
x (torch.Tensor): The input data to the layer.
|
175
174
|
dt (list): A list to store the computation time of the layer.
|
176
|
-
|
177
|
-
Returns:
|
178
|
-
None
|
179
175
|
"""
|
180
176
|
c = m == self.model[-1] and isinstance(x, list) # is final layer list, copy input as inplace fix
|
181
177
|
flops = thop.profile(m, inputs=[x.copy() if c else x], verbose=False)[0] / 1e9 * 2 if thop else 0 # GFLOPs
|
@@ -195,7 +191,7 @@ class BaseModel(nn.Module):
|
|
195
191
|
computation efficiency.
|
196
192
|
|
197
193
|
Returns:
|
198
|
-
(nn.Module): The fused model is returned.
|
194
|
+
(torch.nn.Module): The fused model is returned.
|
199
195
|
"""
|
200
196
|
if not self.is_fused():
|
201
197
|
for m in self.model.modules():
|
@@ -229,7 +225,7 @@ class BaseModel(nn.Module):
|
|
229
225
|
Returns:
|
230
226
|
(bool): True if the number of BatchNorm layers in the model is less than the threshold, False otherwise.
|
231
227
|
"""
|
232
|
-
bn = tuple(v for k, v in nn.__dict__.items() if "Norm" in k) # normalization layers, i.e. BatchNorm2d()
|
228
|
+
bn = tuple(v for k, v in torch.nn.__dict__.items() if "Norm" in k) # normalization layers, i.e. BatchNorm2d()
|
233
229
|
return sum(isinstance(v, bn) for v in self.modules()) < thresh # True if < 'thresh' BatchNorm layers in model
|
234
230
|
|
235
231
|
def info(self, detailed=False, verbose=True, imgsz=640):
|
@@ -304,7 +300,7 @@ class DetectionModel(BaseModel):
|
|
304
300
|
self.yaml = cfg if isinstance(cfg, dict) else yaml_model_load(cfg) # cfg dict
|
305
301
|
if self.yaml["backbone"][0][2] == "Silence":
|
306
302
|
LOGGER.warning(
|
307
|
-
"WARNING ⚠️ YOLOv9 `Silence` module is deprecated in favor of nn.Identity. "
|
303
|
+
"WARNING ⚠️ YOLOv9 `Silence` module is deprecated in favor of torch.nn.Identity. "
|
308
304
|
"Please delete local *.pt file and re-download the latest model checkpoint."
|
309
305
|
)
|
310
306
|
self.yaml["backbone"][0][2] = "nn.Identity"
|
@@ -458,20 +454,22 @@ class ClassificationModel(BaseModel):
|
|
458
454
|
name, m = list((model.model if hasattr(model, "model") else model).named_children())[-1] # last module
|
459
455
|
if isinstance(m, Classify): # YOLO Classify() head
|
460
456
|
if m.linear.out_features != nc:
|
461
|
-
m.linear = nn.Linear(m.linear.in_features, nc)
|
462
|
-
elif isinstance(m, nn.Linear): # ResNet, EfficientNet
|
457
|
+
m.linear = torch.nn.Linear(m.linear.in_features, nc)
|
458
|
+
elif isinstance(m, torch.nn.Linear): # ResNet, EfficientNet
|
463
459
|
if m.out_features != nc:
|
464
|
-
setattr(model, name, nn.Linear(m.in_features, nc))
|
465
|
-
elif isinstance(m, nn.Sequential):
|
460
|
+
setattr(model, name, torch.nn.Linear(m.in_features, nc))
|
461
|
+
elif isinstance(m, torch.nn.Sequential):
|
466
462
|
types = [type(x) for x in m]
|
467
|
-
if nn.Linear in types:
|
468
|
-
i = len(types) - 1 - types[::-1].index(nn.Linear) # last nn.Linear index
|
463
|
+
if torch.nn.Linear in types:
|
464
|
+
i = len(types) - 1 - types[::-1].index(torch.nn.Linear) # last torch.nn.Linear index
|
469
465
|
if m[i].out_features != nc:
|
470
|
-
m[i] = nn.Linear(m[i].in_features, nc)
|
471
|
-
elif nn.Conv2d in types:
|
472
|
-
i = len(types) - 1 - types[::-1].index(nn.Conv2d) # last nn.Conv2d index
|
466
|
+
m[i] = torch.nn.Linear(m[i].in_features, nc)
|
467
|
+
elif torch.nn.Conv2d in types:
|
468
|
+
i = len(types) - 1 - types[::-1].index(torch.nn.Conv2d) # last torch.nn.Conv2d index
|
473
469
|
if m[i].out_channels != nc:
|
474
|
-
m[i] = nn.Conv2d(
|
470
|
+
m[i] = torch.nn.Conv2d(
|
471
|
+
m[i].in_channels, nc, m[i].kernel_size, m[i].stride, bias=m[i].bias is not None
|
472
|
+
)
|
475
473
|
|
476
474
|
def init_criterion(self):
|
477
475
|
"""Initialize the loss criterion for the ClassificationModel."""
|
@@ -587,7 +585,7 @@ class RTDETRDetectionModel(DetectionModel):
|
|
587
585
|
if visualize:
|
588
586
|
feature_visualization(x, m.type, m.i, save_dir=visualize)
|
589
587
|
if embed and m.i in embed:
|
590
|
-
embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
588
|
+
embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
591
589
|
if m.i == max(embed):
|
592
590
|
return torch.unbind(torch.cat(embeddings, 1), dim=0)
|
593
591
|
head = self.model[-1]
|
@@ -663,7 +661,7 @@ class WorldModel(DetectionModel):
|
|
663
661
|
if visualize:
|
664
662
|
feature_visualization(x, m.type, m.i, save_dir=visualize)
|
665
663
|
if embed and m.i in embed:
|
666
|
-
embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
664
|
+
embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
|
667
665
|
if m.i == max(embed):
|
668
666
|
return torch.unbind(torch.cat(embeddings, 1), dim=0)
|
669
667
|
return x
|
@@ -684,7 +682,7 @@ class WorldModel(DetectionModel):
|
|
684
682
|
return self.criterion(preds, batch)
|
685
683
|
|
686
684
|
|
687
|
-
class Ensemble(nn.ModuleList):
|
685
|
+
class Ensemble(torch.nn.ModuleList):
|
688
686
|
"""Ensemble of models."""
|
689
687
|
|
690
688
|
def __init__(self):
|
@@ -887,7 +885,7 @@ def attempt_load_weights(weights, device=None, inplace=True, fuse=False):
|
|
887
885
|
for m in ensemble.modules():
|
888
886
|
if hasattr(m, "inplace"):
|
889
887
|
m.inplace = inplace
|
890
|
-
elif isinstance(m, nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
|
888
|
+
elif isinstance(m, torch.nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
|
891
889
|
m.recompute_scale_factor = None # torch 1.11.0 compatibility
|
892
890
|
|
893
891
|
# Return model
|
@@ -922,7 +920,7 @@ def attempt_load_one_weight(weight, device=None, inplace=True, fuse=False):
|
|
922
920
|
for m in model.modules():
|
923
921
|
if hasattr(m, "inplace"):
|
924
922
|
m.inplace = inplace
|
925
|
-
elif isinstance(m, nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
|
923
|
+
elif isinstance(m, torch.nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
|
926
924
|
m.recompute_scale_factor = None # torch 1.11.0 compatibility
|
927
925
|
|
928
926
|
# Return model and ckpt
|
@@ -946,7 +944,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
946
944
|
depth, width, max_channels = scales[scale]
|
947
945
|
|
948
946
|
if act:
|
949
|
-
Conv.default_act = eval(act) # redefine default activation, i.e. Conv.default_act = nn.SiLU()
|
947
|
+
Conv.default_act = eval(act) # redefine default activation, i.e. Conv.default_act = torch.nn.SiLU()
|
950
948
|
if verbose:
|
951
949
|
LOGGER.info(f"{colorstr('activation:')} {act}") # print
|
952
950
|
|
@@ -982,7 +980,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
982
980
|
C3,
|
983
981
|
C3TR,
|
984
982
|
C3Ghost,
|
985
|
-
nn.ConvTranspose2d,
|
983
|
+
torch.nn.ConvTranspose2d,
|
986
984
|
DWConvTranspose2d,
|
987
985
|
C3x,
|
988
986
|
RepC3,
|
@@ -1048,7 +1046,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
1048
1046
|
n = 1
|
1049
1047
|
elif m is ResNetLayer:
|
1050
1048
|
c2 = args[1] if args[3] else args[1] * 4
|
1051
|
-
elif m is nn.BatchNorm2d:
|
1049
|
+
elif m is torch.nn.BatchNorm2d:
|
1052
1050
|
args = [ch[f]]
|
1053
1051
|
elif m is Concat:
|
1054
1052
|
c2 = sum(ch[x] for x in f)
|
@@ -1073,7 +1071,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
1073
1071
|
else:
|
1074
1072
|
c2 = ch[f]
|
1075
1073
|
|
1076
|
-
m_ = nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module
|
1074
|
+
m_ = torch.nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module
|
1077
1075
|
t = str(m)[8:-2].replace("__main__.", "") # module type
|
1078
1076
|
m_.np = sum(x.numel() for x in m_.parameters()) # number params
|
1079
1077
|
m_.i, m_.f, m_.type = i, f, t # attach index, 'from' index, type
|
@@ -1084,7 +1082,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
1084
1082
|
if i == 0:
|
1085
1083
|
ch = []
|
1086
1084
|
ch.append(c2)
|
1087
|
-
return nn.Sequential(*layers), sorted(save)
|
1085
|
+
return torch.nn.Sequential(*layers), sorted(save)
|
1088
1086
|
|
1089
1087
|
|
1090
1088
|
def yaml_model_load(path):
|
@@ -1126,7 +1124,7 @@ def guess_model_task(model):
|
|
1126
1124
|
Guess the task of a PyTorch model from its architecture or configuration.
|
1127
1125
|
|
1128
1126
|
Args:
|
1129
|
-
model (nn.Module | dict): PyTorch model or model configuration in YAML format.
|
1127
|
+
model (torch.nn.Module | dict): PyTorch model or model configuration in YAML format.
|
1130
1128
|
|
1131
1129
|
Returns:
|
1132
1130
|
(str): Task of the model ('detect', 'segment', 'classify', 'pose').
|
@@ -1154,7 +1152,7 @@ def guess_model_task(model):
|
|
1154
1152
|
with contextlib.suppress(Exception):
|
1155
1153
|
return cfg2task(model)
|
1156
1154
|
# Guess from PyTorch model
|
1157
|
-
if isinstance(model, nn.Module): # PyTorch model
|
1155
|
+
if isinstance(model, torch.nn.Module): # PyTorch model
|
1158
1156
|
for x in "model.args", "model.model.args", "model.model.model.args":
|
1159
1157
|
with contextlib.suppress(Exception):
|
1160
1158
|
return eval(x)["task"]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.71
|
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>
|
@@ -54,6 +54,7 @@ Requires-Dist: pytest; extra == "dev"
|
|
54
54
|
Requires-Dist: pytest-cov; extra == "dev"
|
55
55
|
Requires-Dist: coverage[toml]; extra == "dev"
|
56
56
|
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
|
57
|
+
Requires-Dist: beautifulsoup4<=4.12.3; extra == "dev"
|
57
58
|
Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
58
59
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
59
60
|
Requires-Dist: mkdocs-redirects; extra == "dev"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|