ultralytics 8.2.45__tar.gz → 8.2.47__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.2.45/ultralytics.egg-info → ultralytics-8.2.47}/PKG-INFO +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/pyproject.toml +1 -1
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_python.py +2 -1
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/__init__.py +1 -1
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/default.yaml +1 -1
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10b.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10l.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10m.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10n.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10s.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v10/yolov10x.yaml +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/results.py +7 -6
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/ai_gym.py +12 -7
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/__init__.py +2 -5
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/loss.py +43 -34
- {ultralytics-8.2.45 → ultralytics-8.2.47/ultralytics.egg-info}/PKG-INFO +2 -2
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics.egg-info/requires.txt +1 -1
- {ultralytics-8.2.45 → ultralytics-8.2.47}/LICENSE +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/README.md +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/setup.cfg +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/conftest.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_cli.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_cuda.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_engine.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_explorer.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_exports.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/tests/test_integrations.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/base.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/build.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.2.45 → ultralytics-8.2.47}/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.2.
|
|
3
|
+
Version: 8.2.47
|
|
4
4
|
Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
6
6
|
Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
@@ -30,7 +30,7 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: numpy<2.0.0,>=1.23.
|
|
33
|
+
Requires-Dist: numpy<2.0.0,>=1.23.0
|
|
34
34
|
Requires-Dist: matplotlib>=3.3.0
|
|
35
35
|
Requires-Dist: opencv-python>=4.6.0
|
|
36
36
|
Requires-Dist: pillow>=7.1.2
|
|
@@ -64,7 +64,7 @@ classifiers = [
|
|
|
64
64
|
|
|
65
65
|
# Required dependencies ------------------------------------------------------------------------------------------------
|
|
66
66
|
dependencies = [
|
|
67
|
-
"numpy>=1.23.
|
|
67
|
+
"numpy>=1.23.0,<2.0.0", # temporary patch for compat errors https://github.com/ultralytics/yolov5/actions/runs/9538130424/job/26286956354
|
|
68
68
|
"matplotlib>=3.3.0",
|
|
69
69
|
"opencv-python>=4.6.0",
|
|
70
70
|
"pillow>=7.1.2",
|
|
@@ -236,13 +236,14 @@ def test_results(model):
|
|
|
236
236
|
results = YOLO(WEIGHTS_DIR / model)([SOURCE, SOURCE], imgsz=160)
|
|
237
237
|
for r in results:
|
|
238
238
|
r = r.cpu().numpy()
|
|
239
|
+
print(r, len(r), r.path) # print numpy attributes
|
|
239
240
|
r = r.to(device="cpu", dtype=torch.float32)
|
|
240
241
|
r.save_txt(txt_file=TMP / "runs/tests/label.txt", save_conf=True)
|
|
241
242
|
r.save_crop(save_dir=TMP / "runs/tests/crops/")
|
|
242
243
|
r.tojson(normalize=True)
|
|
243
244
|
r.plot(pil=True)
|
|
244
245
|
r.plot(conf=True, boxes=True)
|
|
245
|
-
print(r, len(r), r.path)
|
|
246
|
+
print(r, len(r), r.path) # print after methods
|
|
246
247
|
|
|
247
248
|
|
|
248
249
|
def test_labels_and_crops():
|
|
@@ -11,7 +11,7 @@ epochs: 100 # (int) number of epochs to train for
|
|
|
11
11
|
time: # (float, optional) number of hours to train for, overrides epochs if supplied
|
|
12
12
|
patience: 100 # (int) epochs to wait for no observable improvement for early stopping of training
|
|
13
13
|
batch: 16 # (int) number of images per batch (-1 for AutoBatch)
|
|
14
|
-
imgsz: 640 # (int | list) input images size as int for train and val modes, or list[w
|
|
14
|
+
imgsz: 640 # (int | list) input images size as int for train and val modes, or list[h,w] for predict and export modes
|
|
15
15
|
save: True # (bool) save train checkpoints and predict results
|
|
16
16
|
save_period: -1 # (int) Save checkpoint every x epochs (disabled if < 1)
|
|
17
17
|
cache: False # (bool) True/ram, disk or False. Use cache for data loading
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
b: [0.67, 1.00, 512]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
l: [1.00, 1.00, 512]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
m: [0.67, 0.75, 768]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
n: [0.33, 0.25, 1024]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
s: [0.33, 0.50, 1024]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Parameters
|
|
5
5
|
nc: 80 # number of classes
|
|
6
|
-
scales: # model compound scaling constants, i.e. 'model=
|
|
6
|
+
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
|
|
7
7
|
# [depth, width, max_channels]
|
|
8
8
|
x: [1.00, 1.25, 512]
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ backbone:
|
|
|
21
21
|
- [-1, 1, SPPF, [1024, 5]] # 9
|
|
22
22
|
- [-1, 1, PSA, [1024]] # 10
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# YOLOv10.0n head
|
|
25
25
|
head:
|
|
26
26
|
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
|
|
27
27
|
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
|
|
@@ -743,9 +743,10 @@ class OBB(BaseTensor):
|
|
|
743
743
|
|
|
744
744
|
Accepts both torch and numpy boxes.
|
|
745
745
|
"""
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
746
|
+
x = self.xyxyxyxy[..., 0]
|
|
747
|
+
y = self.xyxyxyxy[..., 1]
|
|
748
|
+
return (
|
|
749
|
+
torch.stack([x.amin(1), y.amin(1), x.amax(1), y.amax(1)], -1)
|
|
750
|
+
if isinstance(x, torch.Tensor)
|
|
751
|
+
else np.stack([x.min(1), y.min(1), x.max(1), y.max(1)], -1)
|
|
752
|
+
)
|
|
@@ -53,24 +53,29 @@ class AIGym:
|
|
|
53
53
|
|
|
54
54
|
# Check if environment supports imshow
|
|
55
55
|
self.env_check = check_imshow(warn=True)
|
|
56
|
+
self.count = list()
|
|
57
|
+
self.angle = list()
|
|
58
|
+
self.stage = list()
|
|
56
59
|
|
|
57
|
-
def start_counting(self, im0, results
|
|
60
|
+
def start_counting(self, im0, results):
|
|
58
61
|
"""
|
|
59
62
|
Function used to count the gym steps.
|
|
60
63
|
|
|
61
64
|
Args:
|
|
62
65
|
im0 (ndarray): Current frame from the video stream.
|
|
63
66
|
results (list): Pose estimation data.
|
|
64
|
-
frame_count (int): Current frame count.
|
|
65
67
|
"""
|
|
66
68
|
|
|
67
69
|
self.im0 = im0
|
|
68
70
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
if not len(results[0]):
|
|
72
|
+
return self.im0
|
|
73
|
+
|
|
74
|
+
if len(results[0]) > len(self.count):
|
|
75
|
+
new_human = len(results[0]) - len(self.count)
|
|
76
|
+
self.count += [0] * new_human
|
|
77
|
+
self.angle += [0] * new_human
|
|
78
|
+
self.stage += ["-"] * new_human
|
|
74
79
|
|
|
75
80
|
self.keypoints = results[0].keypoints.data
|
|
76
81
|
self.annotator = Annotator(im0, line_width=self.tf)
|
|
@@ -1026,13 +1026,10 @@ class SettingsManager(dict):
|
|
|
1026
1026
|
self.save()
|
|
1027
1027
|
|
|
1028
1028
|
|
|
1029
|
-
def deprecation_warn(arg, new_arg
|
|
1029
|
+
def deprecation_warn(arg, new_arg):
|
|
1030
1030
|
"""Issue a deprecation warning when a deprecated argument is used, suggesting an updated argument."""
|
|
1031
|
-
if not version:
|
|
1032
|
-
version = float(__version__[:3]) + 0.2 # deprecate after 2nd major release
|
|
1033
1031
|
LOGGER.warning(
|
|
1034
|
-
f"WARNING ⚠️ '{arg}' is deprecated and will be removed in
|
|
1035
|
-
f"Please use '{new_arg}' instead."
|
|
1032
|
+
f"WARNING ⚠️ '{arg}' is deprecated and will be removed in in the future. " f"Please use '{new_arg}' instead."
|
|
1036
1033
|
)
|
|
1037
1034
|
|
|
1038
1035
|
|
|
@@ -61,39 +61,22 @@ class FocalLoss(nn.Module):
|
|
|
61
61
|
return loss.mean(1).sum()
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
class
|
|
65
|
-
"""Criterion class for computing
|
|
64
|
+
class DFLoss(nn.Module):
|
|
65
|
+
"""Criterion class for computing DFL losses during training."""
|
|
66
66
|
|
|
67
|
-
def __init__(self, reg_max
|
|
68
|
-
"""Initialize the
|
|
67
|
+
def __init__(self, reg_max=16) -> None:
|
|
68
|
+
"""Initialize the DFL module."""
|
|
69
69
|
super().__init__()
|
|
70
70
|
self.reg_max = reg_max
|
|
71
|
-
self.use_dfl = use_dfl
|
|
72
|
-
|
|
73
|
-
def forward(self, pred_dist, pred_bboxes, anchor_points, target_bboxes, target_scores, target_scores_sum, fg_mask):
|
|
74
|
-
"""IoU loss."""
|
|
75
|
-
weight = target_scores.sum(-1)[fg_mask].unsqueeze(-1)
|
|
76
|
-
iou = bbox_iou(pred_bboxes[fg_mask], target_bboxes[fg_mask], xywh=False, CIoU=True)
|
|
77
|
-
loss_iou = ((1.0 - iou) * weight).sum() / target_scores_sum
|
|
78
|
-
|
|
79
|
-
# DFL loss
|
|
80
|
-
if self.use_dfl:
|
|
81
|
-
target_ltrb = bbox2dist(anchor_points, target_bboxes, self.reg_max)
|
|
82
|
-
loss_dfl = self._df_loss(pred_dist[fg_mask].view(-1, self.reg_max + 1), target_ltrb[fg_mask]) * weight
|
|
83
|
-
loss_dfl = loss_dfl.sum() / target_scores_sum
|
|
84
|
-
else:
|
|
85
|
-
loss_dfl = torch.tensor(0.0).to(pred_dist.device)
|
|
86
71
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
@staticmethod
|
|
90
|
-
def _df_loss(pred_dist, target):
|
|
72
|
+
def __call__(self, pred_dist, target):
|
|
91
73
|
"""
|
|
92
74
|
Return sum of left and right DFL losses.
|
|
93
75
|
|
|
94
76
|
Distribution Focal Loss (DFL) proposed in Generalized Focal Loss
|
|
95
77
|
https://ieeexplore.ieee.org/document/9792391
|
|
96
78
|
"""
|
|
79
|
+
target = target.clamp_(0, self.reg_max - 1 - 0.01)
|
|
97
80
|
tl = target.long() # target left
|
|
98
81
|
tr = tl + 1 # target right
|
|
99
82
|
wl = tr - target # weight left
|
|
@@ -104,12 +87,37 @@ class BboxLoss(nn.Module):
|
|
|
104
87
|
).mean(-1, keepdim=True)
|
|
105
88
|
|
|
106
89
|
|
|
90
|
+
class BboxLoss(nn.Module):
|
|
91
|
+
"""Criterion class for computing training losses during training."""
|
|
92
|
+
|
|
93
|
+
def __init__(self, reg_max=16):
|
|
94
|
+
"""Initialize the BboxLoss module with regularization maximum and DFL settings."""
|
|
95
|
+
super().__init__()
|
|
96
|
+
self.dfl_loss = DFLoss(reg_max) if reg_max > 1 else None
|
|
97
|
+
|
|
98
|
+
def forward(self, pred_dist, pred_bboxes, anchor_points, target_bboxes, target_scores, target_scores_sum, fg_mask):
|
|
99
|
+
"""IoU loss."""
|
|
100
|
+
weight = target_scores.sum(-1)[fg_mask].unsqueeze(-1)
|
|
101
|
+
iou = bbox_iou(pred_bboxes[fg_mask], target_bboxes[fg_mask], xywh=False, CIoU=True)
|
|
102
|
+
loss_iou = ((1.0 - iou) * weight).sum() / target_scores_sum
|
|
103
|
+
|
|
104
|
+
# DFL loss
|
|
105
|
+
if self.dfl_loss:
|
|
106
|
+
target_ltrb = bbox2dist(anchor_points, target_bboxes, self.dfl_loss.reg_max - 1)
|
|
107
|
+
loss_dfl = self.dfl_loss(pred_dist[fg_mask].view(-1, self.dfl_loss.reg_max), target_ltrb[fg_mask]) * weight
|
|
108
|
+
loss_dfl = loss_dfl.sum() / target_scores_sum
|
|
109
|
+
else:
|
|
110
|
+
loss_dfl = torch.tensor(0.0).to(pred_dist.device)
|
|
111
|
+
|
|
112
|
+
return loss_iou, loss_dfl
|
|
113
|
+
|
|
114
|
+
|
|
107
115
|
class RotatedBboxLoss(BboxLoss):
|
|
108
116
|
"""Criterion class for computing training losses during training."""
|
|
109
117
|
|
|
110
|
-
def __init__(self, reg_max
|
|
118
|
+
def __init__(self, reg_max):
|
|
111
119
|
"""Initialize the BboxLoss module with regularization maximum and DFL settings."""
|
|
112
|
-
super().__init__(reg_max
|
|
120
|
+
super().__init__(reg_max)
|
|
113
121
|
|
|
114
122
|
def forward(self, pred_dist, pred_bboxes, anchor_points, target_bboxes, target_scores, target_scores_sum, fg_mask):
|
|
115
123
|
"""IoU loss."""
|
|
@@ -118,9 +126,9 @@ class RotatedBboxLoss(BboxLoss):
|
|
|
118
126
|
loss_iou = ((1.0 - iou) * weight).sum() / target_scores_sum
|
|
119
127
|
|
|
120
128
|
# DFL loss
|
|
121
|
-
if self.
|
|
122
|
-
target_ltrb = bbox2dist(anchor_points, xywh2xyxy(target_bboxes[..., :4]), self.reg_max)
|
|
123
|
-
loss_dfl = self.
|
|
129
|
+
if self.dfl_loss:
|
|
130
|
+
target_ltrb = bbox2dist(anchor_points, xywh2xyxy(target_bboxes[..., :4]), self.dfl_loss.reg_max - 1)
|
|
131
|
+
loss_dfl = self.dfl_loss(pred_dist[fg_mask].view(-1, self.dfl_loss.reg_max), target_ltrb[fg_mask]) * weight
|
|
124
132
|
loss_dfl = loss_dfl.sum() / target_scores_sum
|
|
125
133
|
else:
|
|
126
134
|
loss_dfl = torch.tensor(0.0).to(pred_dist.device)
|
|
@@ -165,18 +173,19 @@ class v8DetectionLoss:
|
|
|
165
173
|
self.use_dfl = m.reg_max > 1
|
|
166
174
|
|
|
167
175
|
self.assigner = TaskAlignedAssigner(topk=tal_topk, num_classes=self.nc, alpha=0.5, beta=6.0)
|
|
168
|
-
self.bbox_loss = BboxLoss(m.reg_max
|
|
176
|
+
self.bbox_loss = BboxLoss(m.reg_max).to(device)
|
|
169
177
|
self.proj = torch.arange(m.reg_max, dtype=torch.float, device=device)
|
|
170
178
|
|
|
171
179
|
def preprocess(self, targets, batch_size, scale_tensor):
|
|
172
180
|
"""Preprocesses the target counts and matches with the input batch size to output a tensor."""
|
|
173
|
-
|
|
174
|
-
|
|
181
|
+
nl, ne = targets.shape
|
|
182
|
+
if nl == 0:
|
|
183
|
+
out = torch.zeros(batch_size, 0, ne - 1, device=self.device)
|
|
175
184
|
else:
|
|
176
185
|
i = targets[:, 0] # image index
|
|
177
186
|
_, counts = i.unique(return_counts=True)
|
|
178
187
|
counts = counts.to(dtype=torch.int32)
|
|
179
|
-
out = torch.zeros(batch_size, counts.max(),
|
|
188
|
+
out = torch.zeros(batch_size, counts.max(), ne - 1, device=self.device)
|
|
180
189
|
for j in range(batch_size):
|
|
181
190
|
matches = i == j
|
|
182
191
|
n = matches.sum()
|
|
@@ -592,7 +601,7 @@ class v8ClassificationLoss:
|
|
|
592
601
|
|
|
593
602
|
def __call__(self, preds, batch):
|
|
594
603
|
"""Compute the classification loss between predictions and true labels."""
|
|
595
|
-
loss =
|
|
604
|
+
loss = F.cross_entropy(preds, batch["cls"], reduction="mean")
|
|
596
605
|
loss_items = loss.detach()
|
|
597
606
|
return loss, loss_items
|
|
598
607
|
|
|
@@ -606,7 +615,7 @@ class v8OBBLoss(v8DetectionLoss):
|
|
|
606
615
|
"""
|
|
607
616
|
super().__init__(model)
|
|
608
617
|
self.assigner = RotatedTaskAlignedAssigner(topk=10, num_classes=self.nc, alpha=0.5, beta=6.0)
|
|
609
|
-
self.bbox_loss = RotatedBboxLoss(self.reg_max
|
|
618
|
+
self.bbox_loss = RotatedBboxLoss(self.reg_max).to(self.device)
|
|
610
619
|
|
|
611
620
|
def preprocess(self, targets, batch_size, scale_tensor):
|
|
612
621
|
"""Preprocesses the target counts and matches with the input batch size to output a tensor."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.47
|
|
4
4
|
Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
|
5
5
|
Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
6
6
|
Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
|
|
@@ -30,7 +30,7 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: numpy<2.0.0,>=1.23.
|
|
33
|
+
Requires-Dist: numpy<2.0.0,>=1.23.0
|
|
34
34
|
Requires-Dist: matplotlib>=3.3.0
|
|
35
35
|
Requires-Dist: opencv-python>=4.6.0
|
|
36
36
|
Requires-Dist: pillow>=7.1.2
|
|
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.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.45 → ultralytics-8.2.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|