ultralytics 8.2.46__tar.gz → 8.2.48__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.46/ultralytics.egg-info → ultralytics-8.2.48}/PKG-INFO +1 -1
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/__init__.py +1 -1
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/default.yaml +1 -1
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10b.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10l.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10m.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10n.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10s.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v10/yolov10x.yaml +2 -2
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/tasks.py +3 -3
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/ai_gym.py +12 -7
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/__init__.py +2 -5
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/loss.py +43 -34
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/torch_utils.py +14 -7
- {ultralytics-8.2.46 → ultralytics-8.2.48/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.2.46 → ultralytics-8.2.48}/LICENSE +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/README.md +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/pyproject.toml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/setup.cfg +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/conftest.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_cli.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_cuda.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_engine.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_explorer.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_exports.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_integrations.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/tests/test_python.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/base.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/build.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.2.46 → ultralytics-8.2.48}/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.48
|
|
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
|
|
@@ -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
|
|
@@ -788,14 +788,14 @@ def torch_safe_load(weight):
|
|
|
788
788
|
f"with https://github.com/ultralytics/yolov5.\nThis model is NOT forwards compatible with "
|
|
789
789
|
f"YOLOv8 at https://github.com/ultralytics/ultralytics."
|
|
790
790
|
f"\nRecommend fixes are to train a new model using the latest 'ultralytics' package or to "
|
|
791
|
-
f"run a command with an official
|
|
791
|
+
f"run a command with an official Ultralytics model, i.e. 'yolo predict model=yolov8n.pt'"
|
|
792
792
|
)
|
|
793
793
|
) from e
|
|
794
794
|
LOGGER.warning(
|
|
795
|
-
f"WARNING ⚠️ {weight} appears to require '{e.name}', which is not in
|
|
795
|
+
f"WARNING ⚠️ {weight} appears to require '{e.name}', which is not in Ultralytics requirements."
|
|
796
796
|
f"\nAutoInstall will run now for '{e.name}' but this feature will be removed in the future."
|
|
797
797
|
f"\nRecommend fixes are to train a new model using the latest 'ultralytics' package or to "
|
|
798
|
-
f"run a command with an official
|
|
798
|
+
f"run a command with an official Ultralytics model, i.e. 'yolo predict model=yolov8n.pt'"
|
|
799
799
|
)
|
|
800
800
|
check_requirements(e.name) # install missing module
|
|
801
801
|
ckpt = torch.load(file, map_location="cpu")
|
|
@@ -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."""
|
|
@@ -511,23 +511,30 @@ def strip_optimizer(f: Union[str, Path] = "best.pt", s: str = "") -> None:
|
|
|
511
511
|
```
|
|
512
512
|
"""
|
|
513
513
|
x = torch.load(f, map_location=torch.device("cpu"))
|
|
514
|
-
if "model" not in x:
|
|
514
|
+
if not isinstance(x, dict) or "model" not in x:
|
|
515
515
|
LOGGER.info(f"Skipping {f}, not a valid Ultralytics model.")
|
|
516
516
|
return
|
|
517
517
|
|
|
518
|
+
# Update model
|
|
519
|
+
if x.get("ema"):
|
|
520
|
+
x["model"] = x["ema"] # replace model with EMA
|
|
518
521
|
if hasattr(x["model"], "args"):
|
|
519
522
|
x["model"].args = dict(x["model"].args) # convert from IterableSimpleNamespace to dict
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
x["model"] = x["ema"] # replace model with ema
|
|
523
|
-
for k in "optimizer", "best_fitness", "ema", "updates": # keys
|
|
524
|
-
x[k] = None
|
|
525
|
-
x["epoch"] = -1
|
|
523
|
+
if hasattr(x["model"], "criterion"):
|
|
524
|
+
x["model"].criterion = None # strip loss criterion
|
|
526
525
|
x["model"].half() # to FP16
|
|
527
526
|
for p in x["model"].parameters():
|
|
528
527
|
p.requires_grad = False
|
|
528
|
+
|
|
529
|
+
# Update other keys
|
|
530
|
+
args = {**DEFAULT_CFG_DICT, **x.get("train_args", {})} # combine args
|
|
531
|
+
for k in "optimizer", "best_fitness", "ema", "updates": # keys
|
|
532
|
+
x[k] = None
|
|
533
|
+
x["epoch"] = -1
|
|
529
534
|
x["train_args"] = {k: v for k, v in args.items() if k in DEFAULT_CFG_KEYS} # strip non-default keys
|
|
530
535
|
# x['model'].args = x['train_args']
|
|
536
|
+
|
|
537
|
+
# Save
|
|
531
538
|
torch.save(x, s or f)
|
|
532
539
|
mb = os.path.getsize(s or f) / 1e6 # file size
|
|
533
540
|
LOGGER.info(f"Optimizer stripped from {f},{f' saved as {s},' if s else ''} {mb:.1f}MB")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.48
|
|
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
|
|
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.2.46 → ultralytics-8.2.48}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.46 → ultralytics-8.2.48}/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.46 → ultralytics-8.2.48}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.46 → ultralytics-8.2.48}/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
|
|
File without changes
|
|
File without changes
|