ultralytics 8.3.77__tar.gz → 8.3.79__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.77/ultralytics.egg-info → ultralytics-8.3.79}/PKG-INFO +1 -1
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/__init__.py +1 -1
- ultralytics-8.3.79/ultralytics/cfg/models/12/yolo12-cls.yaml +32 -0
- ultralytics-8.3.79/ultralytics/cfg/models/12/yolo12-obb.yaml +48 -0
- ultralytics-8.3.79/ultralytics/cfg/models/12/yolo12-pose.yaml +49 -0
- ultralytics-8.3.79/ultralytics/cfg/models/12/yolo12-seg.yaml +48 -0
- ultralytics-8.3.79/ultralytics/cfg/models/12/yolo12.yaml +48 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/annotator.py +5 -7
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/augment.py +22 -13
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/converter.py +3 -3
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/exporter.py +5 -5
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/trainer.py +4 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/rtdetr/predict.py +2 -2
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/rtdetr/val.py +1 -1
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/detect/val.py +1 -1
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/autobackend.py +8 -7
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/__init__.py +2 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/block.py +202 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/tasks.py +9 -2
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/comet.py +12 -4
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/downloads.py +1 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/metrics.py +1 -1
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/torch_utils.py +1 -2
- {ultralytics-8.3.77 → ultralytics-8.3.79/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics.egg-info/SOURCES.txt +5 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/LICENSE +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/README.md +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/pyproject.toml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/setup.cfg +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/conftest.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_cli.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_engine.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_exports.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_python.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/solutions/default.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.77 → ultralytics-8.3.79}/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.79
|
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>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
# YOLO12-cls image classification model
|
4
|
+
# Model docs: https://docs.ultralytics.com/models/yolo12
|
5
|
+
# Task docs: https://docs.ultralytics.com/tasks/classify
|
6
|
+
|
7
|
+
# Parameters
|
8
|
+
nc: 80 # number of classes
|
9
|
+
scales: # model compound scaling constants, i.e. 'model=yolo12n-cls.yaml' will call yolo12-cls.yaml with scale 'n'
|
10
|
+
# [depth, width, max_channels]
|
11
|
+
n: [0.50, 0.25, 1024] # summary: 152 layers, 1,820,976 parameters, 1,820,976 gradients, 3.7 GFLOPs
|
12
|
+
s: [0.50, 0.50, 1024] # summary: 152 layers, 6,206,992 parameters, 6,206,992 gradients, 13.6 GFLOPs
|
13
|
+
m: [0.50, 1.00, 512] # summary: 172 layers, 12,083,088 parameters, 12,083,088 gradients, 44.2 GFLOPs
|
14
|
+
l: [1.00, 1.00, 512] # summary: 312 layers, 15,558,640 parameters, 15,558,640 gradients, 56.9 GFLOPs
|
15
|
+
x: [1.00, 1.50, 512] # summary: 312 layers, 34,172,592 parameters, 34,172,592 gradients, 126.5 GFLOPs
|
16
|
+
|
17
|
+
# YOLO12n backbone
|
18
|
+
backbone:
|
19
|
+
# [from, repeats, module, args]
|
20
|
+
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
|
21
|
+
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
|
22
|
+
- [-1, 2, C3k2, [256, False, 0.25]]
|
23
|
+
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
|
24
|
+
- [-1, 2, C3k2, [512, False, 0.25]]
|
25
|
+
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
|
26
|
+
- [-1, 4, A2C2f, [512, True, 4]]
|
27
|
+
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
|
28
|
+
- [-1, 4, A2C2f, [1024, True, 1]] # 8
|
29
|
+
|
30
|
+
# YOLO12n head
|
31
|
+
head:
|
32
|
+
- [-1, 1, Classify, [nc]] # Classify
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
# YOLO12-obb Oriented Bounding Boxes (OBB) model with P3/8 - P5/32 outputs
|
4
|
+
# Model docs: https://docs.ultralytics.com/models/yolo12
|
5
|
+
# Task docs: https://docs.ultralytics.com/tasks/obb
|
6
|
+
|
7
|
+
# Parameters
|
8
|
+
nc: 80 # number of classes
|
9
|
+
scales: # model compound scaling constants, i.e. 'model=yolo12n-obb.yaml' will call yolo12-obb.yaml with scale 'n'
|
10
|
+
# [depth, width, max_channels]
|
11
|
+
n: [0.50, 0.25, 1024] # summary: 287 layers, 2,673,955 parameters, 2,673,939 gradients, 6.9 GFLOPs
|
12
|
+
s: [0.50, 0.50, 1024] # summary: 287 layers, 9,570,275 parameters, 9,570,259 gradients, 22.7 GFLOPs
|
13
|
+
m: [0.50, 1.00, 512] # summary: 307 layers, 21,048,003 parameters, 21,047,987 gradients, 71.8 GFLOPs
|
14
|
+
l: [1.00, 1.00, 512] # summary: 503 layers, 27,299,619 parameters, 27,299,603 gradients, 93.4 GFLOPs
|
15
|
+
x: [1.00, 1.50, 512] # summary: 503 layers, 61,119,939 parameters, 61,119,923 gradients, 208.6 GFLOPs
|
16
|
+
|
17
|
+
# YOLO12n backbone
|
18
|
+
backbone:
|
19
|
+
# [from, repeats, module, args]
|
20
|
+
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
|
21
|
+
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
|
22
|
+
- [-1, 2, C3k2, [256, False, 0.25]]
|
23
|
+
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
|
24
|
+
- [-1, 2, C3k2, [512, False, 0.25]]
|
25
|
+
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
|
26
|
+
- [-1, 4, A2C2f, [512, True, 4]]
|
27
|
+
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
|
28
|
+
- [-1, 4, A2C2f, [1024, True, 1]] # 8
|
29
|
+
|
30
|
+
# YOLO12n head
|
31
|
+
head:
|
32
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
33
|
+
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
34
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 11
|
35
|
+
|
36
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
37
|
+
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
|
38
|
+
- [-1, 2, A2C2f, [256, False, -1]] # 14
|
39
|
+
|
40
|
+
- [-1, 1, Conv, [256, 3, 2]]
|
41
|
+
- [[-1, 11], 1, Concat, [1]] # cat head P4
|
42
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 17
|
43
|
+
|
44
|
+
- [-1, 1, Conv, [512, 3, 2]]
|
45
|
+
- [[-1, 8], 1, Concat, [1]] # cat head P5
|
46
|
+
- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)
|
47
|
+
|
48
|
+
- [[14, 17, 20], 1, OBB, [nc, 1]] # Detect(P3, P4, P5)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
# YOLO12-pose keypoints/pose estimation model with P3/8 - P5/32 outputs
|
4
|
+
# Model docs: https://docs.ultralytics.com/models/yolo12
|
5
|
+
# Task docs: https://docs.ultralytics.com/tasks/pose
|
6
|
+
|
7
|
+
# Parameters
|
8
|
+
nc: 80 # number of classes
|
9
|
+
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
|
10
|
+
scales: # model compound scaling constants, i.e. 'model=yolo12n-pose.yaml' will call yolo12-pose.yaml with scale 'n'
|
11
|
+
# [depth, width, max_channels]
|
12
|
+
n: [0.50, 0.25, 1024] # summary: 287 layers, 2,886,715 parameters, 2,886,699 gradients, 7.8 GFLOPs
|
13
|
+
s: [0.50, 0.50, 1024] # summary: 287 layers, 9,774,155 parameters, 9,774,139 gradients, 23.5 GFLOPs
|
14
|
+
m: [0.50, 1.00, 512] # summary: 307 layers, 21,057,753 parameters, 21,057,737 gradients, 71.8 GFLOPs
|
15
|
+
l: [1.00, 1.00, 512] # summary: 503 layers, 27,309,369 parameters, 27,309,353 gradients, 93.5 GFLOPs
|
16
|
+
x: [1.00, 1.50, 512] # summary: 503 layers, 61,134,489 parameters, 61,134,473 gradients, 208.7 GFLOPs
|
17
|
+
|
18
|
+
# YOLO12n backbone
|
19
|
+
backbone:
|
20
|
+
# [from, repeats, module, args]
|
21
|
+
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
|
22
|
+
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
|
23
|
+
- [-1, 2, C3k2, [256, False, 0.25]]
|
24
|
+
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
|
25
|
+
- [-1, 2, C3k2, [512, False, 0.25]]
|
26
|
+
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
|
27
|
+
- [-1, 4, A2C2f, [512, True, 4]]
|
28
|
+
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
|
29
|
+
- [-1, 4, A2C2f, [1024, True, 1]] # 8
|
30
|
+
|
31
|
+
# YOLO12n head
|
32
|
+
head:
|
33
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
34
|
+
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
35
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 11
|
36
|
+
|
37
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
38
|
+
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
|
39
|
+
- [-1, 2, A2C2f, [256, False, -1]] # 14
|
40
|
+
|
41
|
+
- [-1, 1, Conv, [256, 3, 2]]
|
42
|
+
- [[-1, 11], 1, Concat, [1]] # cat head P4
|
43
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 17
|
44
|
+
|
45
|
+
- [-1, 1, Conv, [512, 3, 2]]
|
46
|
+
- [[-1, 8], 1, Concat, [1]] # cat head P5
|
47
|
+
- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)
|
48
|
+
|
49
|
+
- [[14, 17, 20], 1, Pose, [nc, kpt_shape]] # Detect(P3, P4, P5)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
# YOLO12-seg instance segmentation model with P3/8 - P5/32 outputs
|
4
|
+
# Model docs: https://docs.ultralytics.com/models/yolo12
|
5
|
+
# Task docs: https://docs.ultralytics.com/tasks/segment
|
6
|
+
|
7
|
+
# Parameters
|
8
|
+
nc: 80 # number of classes
|
9
|
+
scales: # model compound scaling constants, i.e. 'model=yolo12n-seg.yaml' will call yolo12-seg.yaml with scale 'n'
|
10
|
+
# [depth, width, max_channels]
|
11
|
+
n: [0.50, 0.25, 1024] # summary: 294 layers, 2,855,056 parameters, 2,855,040 gradients, 10.6 GFLOPs
|
12
|
+
s: [0.50, 0.50, 1024] # summary: 294 layers, 9,938,592 parameters, 9,938,576 gradients, 35.7 GFLOPs
|
13
|
+
m: [0.50, 1.00, 512] # summary: 314 layers, 22,505,376 parameters, 22,505,360 gradients, 123.5 GFLOPs
|
14
|
+
l: [1.00, 1.00, 512] # summary: 510 layers, 28,756,992 parameters, 28,756,976 gradients, 145.1 GFLOPs
|
15
|
+
x: [1.00, 1.50, 512] # summary: 510 layers, 64,387,264 parameters, 64,387,248 gradients, 324.6 GFLOPs
|
16
|
+
|
17
|
+
# YOLO12n backbone
|
18
|
+
backbone:
|
19
|
+
# [from, repeats, module, args]
|
20
|
+
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
|
21
|
+
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
|
22
|
+
- [-1, 2, C3k2, [256, False, 0.25]]
|
23
|
+
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
|
24
|
+
- [-1, 2, C3k2, [512, False, 0.25]]
|
25
|
+
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
|
26
|
+
- [-1, 4, A2C2f, [512, True, 4]]
|
27
|
+
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
|
28
|
+
- [-1, 4, A2C2f, [1024, True, 1]] # 8
|
29
|
+
|
30
|
+
# YOLO12n head
|
31
|
+
head:
|
32
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
33
|
+
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
34
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 11
|
35
|
+
|
36
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
37
|
+
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
|
38
|
+
- [-1, 2, A2C2f, [256, False, -1]] # 14
|
39
|
+
|
40
|
+
- [-1, 1, Conv, [256, 3, 2]]
|
41
|
+
- [[-1, 11], 1, Concat, [1]] # cat head P4
|
42
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 17
|
43
|
+
|
44
|
+
- [-1, 1, Conv, [512, 3, 2]]
|
45
|
+
- [[-1, 8], 1, Concat, [1]] # cat head P5
|
46
|
+
- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)
|
47
|
+
|
48
|
+
- [[14, 17, 20], 1, Segment, [nc, 32, 256]] # Detect(P3, P4, P5)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
|
+
|
3
|
+
# YOLO12 object detection model with P3/8 - P5/32 outputs
|
4
|
+
# Model docs: https://docs.ultralytics.com/models/yolo12
|
5
|
+
# Task docs: https://docs.ultralytics.com/tasks/detect
|
6
|
+
|
7
|
+
# Parameters
|
8
|
+
nc: 80 # number of classes
|
9
|
+
scales: # model compound scaling constants, i.e. 'model=yolo12n.yaml' will call yolo12.yaml with scale 'n'
|
10
|
+
# [depth, width, max_channels]
|
11
|
+
n: [0.50, 0.25, 1024] # summary: 272 layers, 2,602,288 parameters, 2,602,272 gradients, 6.7 GFLOPs
|
12
|
+
s: [0.50, 0.50, 1024] # summary: 272 layers, 9,284,096 parameters, 9,284,080 gradients, 21.7 GFLOPs
|
13
|
+
m: [0.50, 1.00, 512] # summary: 292 layers, 20,199,168 parameters, 20,199,152 gradients, 68.1 GFLOPs
|
14
|
+
l: [1.00, 1.00, 512] # summary: 488 layers, 26,450,784 parameters, 26,450,768 gradients, 89.7 GFLOPs
|
15
|
+
x: [1.00, 1.50, 512] # summary: 488 layers, 59,210,784 parameters, 59,210,768 gradients, 200.3 GFLOPs
|
16
|
+
|
17
|
+
# YOLO12n backbone
|
18
|
+
backbone:
|
19
|
+
# [from, repeats, module, args]
|
20
|
+
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
|
21
|
+
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
|
22
|
+
- [-1, 2, C3k2, [256, False, 0.25]]
|
23
|
+
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
|
24
|
+
- [-1, 2, C3k2, [512, False, 0.25]]
|
25
|
+
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
|
26
|
+
- [-1, 4, A2C2f, [512, True, 4]]
|
27
|
+
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
|
28
|
+
- [-1, 4, A2C2f, [1024, True, 1]] # 8
|
29
|
+
|
30
|
+
# YOLO12n head
|
31
|
+
head:
|
32
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
33
|
+
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
34
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 11
|
35
|
+
|
36
|
+
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
37
|
+
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
|
38
|
+
- [-1, 2, A2C2f, [256, False, -1]] # 14
|
39
|
+
|
40
|
+
- [-1, 1, Conv, [256, 3, 2]]
|
41
|
+
- [[-1, 11], 1, Concat, [1]] # cat head P4
|
42
|
+
- [-1, 2, A2C2f, [512, False, -1]] # 17
|
43
|
+
|
44
|
+
- [-1, 1, Conv, [512, 3, 2]]
|
45
|
+
- [[-1, 8], 1, Concat, [1]] # cat head P5
|
46
|
+
- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)
|
47
|
+
|
48
|
+
- [[14, 17, 20], 1, Detect, [nc]] # Detect(P3, P4, P5)
|
@@ -58,15 +58,13 @@ def auto_annotate(
|
|
58
58
|
|
59
59
|
for result in det_results:
|
60
60
|
class_ids = result.boxes.cls.int().tolist() # noqa
|
61
|
-
if
|
61
|
+
if class_ids:
|
62
62
|
boxes = result.boxes.xyxy # Boxes object for bbox outputs
|
63
63
|
sam_results = sam_model(result.orig_img, bboxes=boxes, verbose=False, save=False, device=device)
|
64
64
|
segments = sam_results[0].masks.xyn # noqa
|
65
65
|
|
66
66
|
with open(f"{Path(output_dir) / Path(result.path).stem}.txt", "w") as f:
|
67
|
-
for i in
|
68
|
-
s
|
69
|
-
|
70
|
-
|
71
|
-
segment = map(str, segments[i].reshape(-1).tolist())
|
72
|
-
f.write(f"{class_ids[i]} " + " ".join(segment) + "\n")
|
67
|
+
for i, s in enumerate(segments):
|
68
|
+
if s.any():
|
69
|
+
segment = map(str, s.reshape(-1).tolist())
|
70
|
+
f.write(f"{class_ids[i]} " + " ".join(segment) + "\n")
|
@@ -1364,17 +1364,26 @@ class RandomHSV:
|
|
1364
1364
|
>>> hsv_augmenter(labels)
|
1365
1365
|
>>> augmented_img = labels["img"]
|
1366
1366
|
"""
|
1367
|
-
img = labels["img"]
|
1368
1367
|
if self.hgain or self.sgain or self.vgain:
|
1369
|
-
|
1370
|
-
hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
|
1368
|
+
img = labels["img"]
|
1371
1369
|
dtype = img.dtype # uint8
|
1372
1370
|
|
1371
|
+
# Original implementation (bug) from ultralytics<=8.3.78
|
1372
|
+
# r = np.random.uniform(-1, 1, 3) * [self.hgain, self.sgain, self.vgain] + 1 # random gains
|
1373
|
+
# x = np.arange(0, 256, dtype=r.dtype)
|
1374
|
+
# lut_hue = ((x * r[0]) % 180).astype(dtype)
|
1375
|
+
# lut_sat = np.clip(x * r[1], 0, 255).astype(dtype)
|
1376
|
+
# lut_val = np.clip(x * r[2], 0, 255).astype(dtype)
|
1377
|
+
|
1378
|
+
# Fixed implementation in https://github.com/ultralytics/ultralytics/pull/19311
|
1379
|
+
r = np.random.uniform(-1, 1, 3) * (self.hgain, self.sgain, self.vgain) * (180, 255, 255) # random gains
|
1373
1380
|
x = np.arange(0, 256, dtype=r.dtype)
|
1374
|
-
lut_hue = ((x
|
1375
|
-
lut_sat = np.clip(x
|
1376
|
-
lut_val = np.clip(x
|
1381
|
+
lut_hue = ((x + r[0]) % 180).astype(dtype)
|
1382
|
+
lut_sat = np.clip(x + r[1], 0, 255).astype(dtype)
|
1383
|
+
lut_val = np.clip(x + r[2], 0, 255).astype(dtype)
|
1384
|
+
lut_sat[0] = 0 # prevent pure white changing color
|
1377
1385
|
|
1386
|
+
hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
|
1378
1387
|
im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))
|
1379
1388
|
cv2.cvtColor(im_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed
|
1380
1389
|
return labels
|
@@ -1484,7 +1493,7 @@ class LetterBox:
|
|
1484
1493
|
Attributes:
|
1485
1494
|
new_shape (tuple): Target shape (height, width) for resizing.
|
1486
1495
|
auto (bool): Whether to use minimum rectangle.
|
1487
|
-
|
1496
|
+
scale_fill (bool): Whether to stretch the image to new_shape.
|
1488
1497
|
scaleup (bool): Whether to allow scaling up. If False, only scale down.
|
1489
1498
|
stride (int): Stride for rounding padding.
|
1490
1499
|
center (bool): Whether to center the image or align to top-left.
|
@@ -1499,7 +1508,7 @@ class LetterBox:
|
|
1499
1508
|
>>> updated_instances = result["instances"]
|
1500
1509
|
"""
|
1501
1510
|
|
1502
|
-
def __init__(self, new_shape=(640, 640), auto=False,
|
1511
|
+
def __init__(self, new_shape=(640, 640), auto=False, scale_fill=False, scaleup=True, center=True, stride=32):
|
1503
1512
|
"""
|
1504
1513
|
Initialize LetterBox object for resizing and padding images.
|
1505
1514
|
|
@@ -1509,7 +1518,7 @@ class LetterBox:
|
|
1509
1518
|
Args:
|
1510
1519
|
new_shape (Tuple[int, int]): Target size (height, width) for the resized image.
|
1511
1520
|
auto (bool): If True, use minimum rectangle to resize. If False, use new_shape directly.
|
1512
|
-
|
1521
|
+
scale_fill (bool): If True, stretch the image to new_shape without padding.
|
1513
1522
|
scaleup (bool): If True, allow scaling up. If False, only scale down.
|
1514
1523
|
center (bool): If True, center the placed image. If False, place image in top-left corner.
|
1515
1524
|
stride (int): Stride of the model (e.g., 32 for YOLOv5).
|
@@ -1517,17 +1526,17 @@ class LetterBox:
|
|
1517
1526
|
Attributes:
|
1518
1527
|
new_shape (Tuple[int, int]): Target size for the resized image.
|
1519
1528
|
auto (bool): Flag for using minimum rectangle resizing.
|
1520
|
-
|
1529
|
+
scale_fill (bool): Flag for stretching image without padding.
|
1521
1530
|
scaleup (bool): Flag for allowing upscaling.
|
1522
1531
|
stride (int): Stride value for ensuring image size is divisible by stride.
|
1523
1532
|
|
1524
1533
|
Examples:
|
1525
|
-
>>> letterbox = LetterBox(new_shape=(640, 640), auto=False,
|
1534
|
+
>>> letterbox = LetterBox(new_shape=(640, 640), auto=False, scale_fill=False, scaleup=True, stride=32)
|
1526
1535
|
>>> resized_img = letterbox(original_img)
|
1527
1536
|
"""
|
1528
1537
|
self.new_shape = new_shape
|
1529
1538
|
self.auto = auto
|
1530
|
-
self.
|
1539
|
+
self.scale_fill = scale_fill
|
1531
1540
|
self.scaleup = scaleup
|
1532
1541
|
self.stride = stride
|
1533
1542
|
self.center = center # Put the image in the middle or top-left
|
@@ -1573,7 +1582,7 @@ class LetterBox:
|
|
1573
1582
|
dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding
|
1574
1583
|
if self.auto: # minimum rectangle
|
1575
1584
|
dw, dh = np.mod(dw, self.stride), np.mod(dh, self.stride) # wh padding
|
1576
|
-
elif self.
|
1585
|
+
elif self.scale_fill: # stretch
|
1577
1586
|
dw, dh = 0.0, 0.0
|
1578
1587
|
new_unpad = (new_shape[1], new_shape[0])
|
1579
1588
|
ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios
|
@@ -274,13 +274,13 @@ def convert_coco(
|
|
274
274
|
# Create image dict
|
275
275
|
images = {f"{x['id']:d}": x for x in data["images"]}
|
276
276
|
# Create image-annotations dict
|
277
|
-
|
277
|
+
annotations = defaultdict(list)
|
278
278
|
for ann in data["annotations"]:
|
279
|
-
|
279
|
+
annotations[ann["image_id"]].append(ann)
|
280
280
|
|
281
281
|
image_txt = []
|
282
282
|
# Write labels file
|
283
|
-
for img_id, anns in TQDM(
|
283
|
+
for img_id, anns in TQDM(annotations.items(), desc=f"Annotations {json_file}"):
|
284
284
|
img = images[f"{img_id:d}"]
|
285
285
|
h, w = img["height"], img["width"]
|
286
286
|
f = str(Path(img["coco_url"]).relative_to("http://images.cocodataset.org")) if lvis else img["file_name"]
|
@@ -170,6 +170,7 @@ def try_export(inner_func):
|
|
170
170
|
def outer_func(*args, **kwargs):
|
171
171
|
"""Export a model."""
|
172
172
|
prefix = inner_args["prefix"]
|
173
|
+
dt = 0.0
|
173
174
|
try:
|
174
175
|
with Profile() as dt:
|
175
176
|
f, model = inner_func(*args, **kwargs)
|
@@ -309,9 +310,8 @@ class Exporter:
|
|
309
310
|
"WARNING ⚠️ INT8 export requires a missing 'data' arg for calibration. "
|
310
311
|
f"Using default 'data={self.args.data}'."
|
311
312
|
)
|
312
|
-
if tfjs:
|
313
|
-
|
314
|
-
raise SystemError("TensorFlow.js export not supported on ARM64 Linux")
|
313
|
+
if tfjs and (ARM64 and LINUX):
|
314
|
+
raise SystemError("TensorFlow.js export not supported on ARM64 Linux")
|
315
315
|
|
316
316
|
# Input
|
317
317
|
im = torch.zeros(self.args.batch, 3, *self.imgsz).to(self.device)
|
@@ -419,7 +419,7 @@ class Exporter:
|
|
419
419
|
if pb or tfjs: # pb prerequisite to tfjs
|
420
420
|
f[6], _ = self.export_pb(keras_model=keras_model)
|
421
421
|
if tflite:
|
422
|
-
f[7], _ = self.export_tflite(
|
422
|
+
f[7], _ = self.export_tflite()
|
423
423
|
if edgetpu:
|
424
424
|
f[8], _ = self.export_edgetpu(tflite_model=Path(f[5]) / f"{self.file.stem}_full_integer_quant.tflite")
|
425
425
|
if tfjs:
|
@@ -1077,7 +1077,7 @@ class Exporter:
|
|
1077
1077
|
return f, None
|
1078
1078
|
|
1079
1079
|
@try_export
|
1080
|
-
def export_tflite(self,
|
1080
|
+
def export_tflite(self, prefix=colorstr("TensorFlow Lite:")):
|
1081
1081
|
"""YOLO TensorFlow Lite export."""
|
1082
1082
|
# BUG https://github.com/ultralytics/ultralytics/issues/13436
|
1083
1083
|
import tensorflow as tf # noqa
|
@@ -567,6 +567,10 @@ class BaseTrainer:
|
|
567
567
|
except Exception as e:
|
568
568
|
raise RuntimeError(emojis(f"Dataset '{clean_url(self.args.data)}' error ❌ {e}")) from e
|
569
569
|
self.data = data
|
570
|
+
if self.args.single_cls:
|
571
|
+
LOGGER.info("Overriding class names with single class.")
|
572
|
+
self.data["names"] = {0: "item"}
|
573
|
+
self.data["nc"] = 1
|
570
574
|
return data["train"], data.get("val") or data.get("test")
|
571
575
|
|
572
576
|
def setup_model(self):
|
@@ -72,7 +72,7 @@ class RTDETRPredictor(BasePredictor):
|
|
72
72
|
def pre_transform(self, im):
|
73
73
|
"""
|
74
74
|
Pre-transforms the input images before feeding them into the model for inference. The input images are
|
75
|
-
letterboxed to ensure a square aspect ratio and scale-filled. The size must be square(640) and
|
75
|
+
letterboxed to ensure a square aspect ratio and scale-filled. The size must be square(640) and scale_filled.
|
76
76
|
|
77
77
|
Args:
|
78
78
|
im (list[np.ndarray] |torch.Tensor): Input images of shape (N,3,h,w) for tensor, [(h,w,3) x N] for list.
|
@@ -80,5 +80,5 @@ class RTDETRPredictor(BasePredictor):
|
|
80
80
|
Returns:
|
81
81
|
(list): List of pre-transformed images ready for model inference.
|
82
82
|
"""
|
83
|
-
letterbox = LetterBox(self.imgsz, auto=False,
|
83
|
+
letterbox = LetterBox(self.imgsz, auto=False, scale_fill=True)
|
84
84
|
return [letterbox(image=x) for x in im]
|
@@ -34,7 +34,7 @@ class RTDETRDataset(YOLODataset):
|
|
34
34
|
hyp.mixup = hyp.mixup if self.augment and not self.rect else 0.0
|
35
35
|
transforms = v8_transforms(self, self.imgsz, hyp, stretch=True)
|
36
36
|
else:
|
37
|
-
# transforms = Compose([LetterBox(new_shape=(self.imgsz, self.imgsz), auto=False,
|
37
|
+
# transforms = Compose([LetterBox(new_shape=(self.imgsz, self.imgsz), auto=False, scale_fill=True)])
|
38
38
|
transforms = Compose([])
|
39
39
|
transforms.append(
|
40
40
|
Format(
|
@@ -186,7 +186,7 @@ class DetectionValidator(BaseValidator):
|
|
186
186
|
self.nt_per_class = np.bincount(stats["target_cls"].astype(int), minlength=self.nc)
|
187
187
|
self.nt_per_image = np.bincount(stats["target_img"].astype(int), minlength=self.nc)
|
188
188
|
stats.pop("target_img", None)
|
189
|
-
if len(stats)
|
189
|
+
if len(stats):
|
190
190
|
self.metrics.process(**stats)
|
191
191
|
return self.metrics.results_dict
|
192
192
|
|
@@ -197,12 +197,13 @@ class AutoBackend(nn.Module):
|
|
197
197
|
import onnxruntime
|
198
198
|
|
199
199
|
providers = ["CPUExecutionProvider"]
|
200
|
-
if cuda
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
200
|
+
if cuda:
|
201
|
+
if "CUDAExecutionProvider" in onnxruntime.get_available_providers():
|
202
|
+
providers.insert(0, "CUDAExecutionProvider")
|
203
|
+
else: # Only log warning if CUDA was requested but unavailable
|
204
|
+
LOGGER.warning("WARNING ⚠️ Failed to start ONNX Runtime with CUDA. Using CPU...")
|
205
|
+
device = torch.device("cpu")
|
206
|
+
cuda = False
|
206
207
|
LOGGER.info(f"Using ONNX Runtime {providers[0]}")
|
207
208
|
if onnx:
|
208
209
|
session = onnxruntime.InferenceSession(w, providers=providers)
|
@@ -223,7 +224,7 @@ class AutoBackend(nn.Module):
|
|
223
224
|
output_names = [x.name for x in session.get_outputs()]
|
224
225
|
metadata = session.get_modelmeta().custom_metadata_map
|
225
226
|
dynamic = isinstance(session.get_outputs()[0].shape[0], str)
|
226
|
-
fp16 =
|
227
|
+
fp16 = "float16" in session.get_inputs()[0].type
|
227
228
|
if not dynamic:
|
228
229
|
io = session.io_binding()
|
229
230
|
bindings = []
|