ultralytics 8.2.13__tar.gz → 8.2.15__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.13 → ultralytics-8.2.15}/PKG-INFO +1 -1
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_python.py +8 -2
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/__init__.py +1 -1
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/utils.py +3 -2
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/results.py +3 -3
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/hub/__init__.py +7 -3
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/__init__.py +3 -1
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/plotting.py +19 -18
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/torch_utils.py +24 -10
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics.egg-info/PKG-INFO +1 -1
- {ultralytics-8.2.13 → ultralytics-8.2.15}/LICENSE +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/README.md +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/pyproject.toml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/setup.cfg +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_cli.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_cuda.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_engine.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_explorer.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_exports.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/tests/test_integrations.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/base.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/build.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.2.13 → ultralytics-8.2.15}/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.15
|
|
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
|
|
@@ -12,7 +12,7 @@ import yaml
|
|
|
12
12
|
from PIL import Image
|
|
13
13
|
|
|
14
14
|
from ultralytics import RTDETR, YOLO
|
|
15
|
-
from ultralytics.cfg import MODELS, TASK2DATA
|
|
15
|
+
from ultralytics.cfg import MODELS, TASKS, TASK2DATA
|
|
16
16
|
from ultralytics.data.build import load_inference_source
|
|
17
17
|
from ultralytics.utils import (
|
|
18
18
|
ASSETS,
|
|
@@ -98,6 +98,12 @@ def test_predict_img(model_name):
|
|
|
98
98
|
assert len(model(batch, imgsz=32)) == len(batch) # multiple sources in a batch
|
|
99
99
|
|
|
100
100
|
|
|
101
|
+
@pytest.mark.parametrize("model", MODELS)
|
|
102
|
+
def test_predict_visualize(model):
|
|
103
|
+
"""Test model predict methods with 'visualize=True' arguments."""
|
|
104
|
+
YOLO(WEIGHTS_DIR / model)(SOURCE, imgsz=32, visualize=True)
|
|
105
|
+
|
|
106
|
+
|
|
101
107
|
def test_predict_grey_and_4ch():
|
|
102
108
|
"""Test YOLO prediction on SOURCE converted to greyscale and 4-channel images."""
|
|
103
109
|
im = Image.open(SOURCE)
|
|
@@ -267,7 +273,7 @@ def test_data_utils():
|
|
|
267
273
|
# from ultralytics.utils.files import WorkingDirectory
|
|
268
274
|
# with WorkingDirectory(ROOT.parent / 'tests'):
|
|
269
275
|
|
|
270
|
-
for task in
|
|
276
|
+
for task in TASKS:
|
|
271
277
|
file = Path(TASK2DATA[task]).with_suffix(".zip") # i.e. coco8.zip
|
|
272
278
|
download(f"https://github.com/ultralytics/hub/raw/main/example_datasets/{file}", unzip=False, dir=TMP)
|
|
273
279
|
stats = HUBDatasetStats(TMP / file, task=task)
|
|
@@ -441,6 +441,7 @@ class HUBDatasetStats:
|
|
|
441
441
|
stats = HUBDatasetStats('path/to/coco8.zip', task='detect') # detect dataset
|
|
442
442
|
stats = HUBDatasetStats('path/to/coco8-seg.zip', task='segment') # segment dataset
|
|
443
443
|
stats = HUBDatasetStats('path/to/coco8-pose.zip', task='pose') # pose dataset
|
|
444
|
+
stats = HUBDatasetStats('path/to/dota8.zip', task='obb') # OBB dataset
|
|
444
445
|
stats = HUBDatasetStats('path/to/imagenet10.zip', task='classify') # classification dataset
|
|
445
446
|
|
|
446
447
|
stats.get_json(save=True)
|
|
@@ -497,13 +498,13 @@ class HUBDatasetStats:
|
|
|
497
498
|
"""Update labels to integer class and 4 decimal place floats."""
|
|
498
499
|
if self.task == "detect":
|
|
499
500
|
coordinates = labels["bboxes"]
|
|
500
|
-
elif self.task
|
|
501
|
+
elif self.task in {"segment", "obb"}: # Segment and OBB use segments. OBB segments are normalized xyxyxyxy
|
|
501
502
|
coordinates = [x.flatten() for x in labels["segments"]]
|
|
502
503
|
elif self.task == "pose":
|
|
503
504
|
n, nk, nd = labels["keypoints"].shape
|
|
504
505
|
coordinates = np.concatenate((labels["bboxes"], labels["keypoints"].reshape(n, nk * nd)), 1)
|
|
505
506
|
else:
|
|
506
|
-
raise ValueError("Undefined dataset task.")
|
|
507
|
+
raise ValueError(f"Undefined dataset task={self.task}.")
|
|
507
508
|
zipped = zip(labels["cls"], coordinates)
|
|
508
509
|
return [[int(c[0]), *(round(float(x), 4) for x in points)] for c, points in zipped]
|
|
509
510
|
|
|
@@ -407,9 +407,9 @@ class Results(SimpleClass):
|
|
|
407
407
|
class_id, conf = int(row.cls), round(row.conf.item(), decimals)
|
|
408
408
|
box = (row.xyxyxyxy if is_obb else row.xyxy).squeeze().reshape(-1, 2).tolist()
|
|
409
409
|
xy = {}
|
|
410
|
-
for
|
|
411
|
-
xy[f"x{
|
|
412
|
-
xy[f"y{
|
|
410
|
+
for j, b in enumerate(box):
|
|
411
|
+
xy[f"x{j + 1}"] = round(b[0] / w, decimals)
|
|
412
|
+
xy[f"y{j + 1}"] = round(b[1] / h, decimals)
|
|
413
413
|
result = {"name": self.names[class_id], "class": class_id, "confidence": conf, "box": xy}
|
|
414
414
|
if data.is_track:
|
|
415
415
|
result["track_id"] = int(row.id.item()) # track ID
|
|
@@ -106,22 +106,26 @@ def get_export(model_id="", format="torchscript"):
|
|
|
106
106
|
return r.json()
|
|
107
107
|
|
|
108
108
|
|
|
109
|
-
def check_dataset(path
|
|
109
|
+
def check_dataset(path: str, task: str) -> None:
|
|
110
110
|
"""
|
|
111
111
|
Function for error-checking HUB dataset Zip file before upload. It checks a dataset for errors before it is uploaded
|
|
112
112
|
to the HUB. Usage examples are given below.
|
|
113
113
|
|
|
114
114
|
Args:
|
|
115
|
-
path (str
|
|
116
|
-
task (str
|
|
115
|
+
path (str): Path to data.zip (with data.yaml inside data.zip).
|
|
116
|
+
task (str): Dataset task. Options are 'detect', 'segment', 'pose', 'classify', 'obb'.
|
|
117
117
|
|
|
118
118
|
Example:
|
|
119
|
+
Download *.zip files from https://github.com/ultralytics/hub/tree/main/example_datasets
|
|
120
|
+
i.e. https://github.com/ultralytics/hub/raw/main/example_datasets/coco8.zip for coco8.zip.
|
|
119
121
|
```python
|
|
120
122
|
from ultralytics.hub import check_dataset
|
|
121
123
|
|
|
122
124
|
check_dataset('path/to/coco8.zip', task='detect') # detect dataset
|
|
123
125
|
check_dataset('path/to/coco8-seg.zip', task='segment') # segment dataset
|
|
124
126
|
check_dataset('path/to/coco8-pose.zip', task='pose') # pose dataset
|
|
127
|
+
check_dataset('path/to/dota8.zip', task='obb') # OBB dataset
|
|
128
|
+
check_dataset('path/to/imagenet10.zip', task='classify') # classification dataset
|
|
125
129
|
```
|
|
126
130
|
"""
|
|
127
131
|
HUBDatasetStats(path=path, task=task).get_json()
|
|
@@ -102,13 +102,15 @@ HELP_MSG = """
|
|
|
102
102
|
GitHub: https://github.com/ultralytics/ultralytics
|
|
103
103
|
"""
|
|
104
104
|
|
|
105
|
-
# Settings
|
|
105
|
+
# Settings and Environment Variables
|
|
106
106
|
torch.set_printoptions(linewidth=320, precision=4, profile="default")
|
|
107
107
|
np.set_printoptions(linewidth=320, formatter={"float_kind": "{:11.5g}".format}) # format short g, %precision=5
|
|
108
108
|
cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader)
|
|
109
109
|
os.environ["NUMEXPR_MAX_THREADS"] = str(NUM_THREADS) # NumExpr max threads
|
|
110
110
|
os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" # for deterministic training
|
|
111
111
|
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" # suppress verbose TF compiler warnings in Colab
|
|
112
|
+
os.environ["TORCH_CPP_LOG_LEVEL"] = "ERROR" # suppress "NNPACK.cpp could not initialize NNPACK" warnings
|
|
113
|
+
os.environ["KINETO_LOG_LEVEL"] = "5" # suppress verbose PyTorch profiler output when computing FLOPs
|
|
112
114
|
|
|
113
115
|
|
|
114
116
|
class TQDM(tqdm_original):
|
|
@@ -1105,23 +1105,24 @@ def feature_visualization(x, module_type, stage, n=32, save_dir=Path("runs/detec
|
|
|
1105
1105
|
n (int, optional): Maximum number of feature maps to plot. Defaults to 32.
|
|
1106
1106
|
save_dir (Path, optional): Directory to save results. Defaults to Path('runs/detect/exp').
|
|
1107
1107
|
"""
|
|
1108
|
-
for m in
|
|
1108
|
+
for m in {"Detect", "Segment", "Pose", "Classify", "OBB", "RTDETRDecoder"}: # all model heads
|
|
1109
1109
|
if m in module_type:
|
|
1110
1110
|
return
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1111
|
+
if isinstance(x, torch.Tensor):
|
|
1112
|
+
_, channels, height, width = x.shape # batch, channels, height, width
|
|
1113
|
+
if height > 1 and width > 1:
|
|
1114
|
+
f = save_dir / f"stage{stage}_{module_type.split('.')[-1]}_features.png" # filename
|
|
1115
|
+
|
|
1116
|
+
blocks = torch.chunk(x[0].cpu(), channels, dim=0) # select batch index 0, block by channels
|
|
1117
|
+
n = min(n, channels) # number of plots
|
|
1118
|
+
_, ax = plt.subplots(math.ceil(n / 8), 8, tight_layout=True) # 8 rows x n/8 cols
|
|
1119
|
+
ax = ax.ravel()
|
|
1120
|
+
plt.subplots_adjust(wspace=0.05, hspace=0.05)
|
|
1121
|
+
for i in range(n):
|
|
1122
|
+
ax[i].imshow(blocks[i].squeeze()) # cmap='gray'
|
|
1123
|
+
ax[i].axis("off")
|
|
1124
|
+
|
|
1125
|
+
LOGGER.info(f"Saving {f}... ({n}/{channels})")
|
|
1126
|
+
plt.savefig(f, dpi=300, bbox_inches="tight")
|
|
1127
|
+
plt.close()
|
|
1128
|
+
np.save(str(f.with_suffix(".npy")), x[0].cpu().numpy()) # npy save
|
|
@@ -331,19 +331,28 @@ def get_flops(model, imgsz=640):
|
|
|
331
331
|
|
|
332
332
|
|
|
333
333
|
def get_flops_with_torch_profiler(model, imgsz=640):
|
|
334
|
-
"""Compute model FLOPs (thop alternative)."""
|
|
335
|
-
if TORCH_2_0:
|
|
336
|
-
|
|
337
|
-
|
|
334
|
+
"""Compute model FLOPs (thop package alternative, but 2-10x slower unfortunately)."""
|
|
335
|
+
if not TORCH_2_0: # torch profiler implemented in torch>=2.0
|
|
336
|
+
return 0.0
|
|
337
|
+
model = de_parallel(model)
|
|
338
|
+
p = next(model.parameters())
|
|
339
|
+
if not isinstance(imgsz, list):
|
|
340
|
+
imgsz = [imgsz, imgsz] # expand if int/float
|
|
341
|
+
try:
|
|
342
|
+
# Use stride size for input tensor
|
|
338
343
|
stride = (max(int(model.stride.max()), 32) if hasattr(model, "stride") else 32) * 2 # max stride
|
|
339
|
-
im = torch.
|
|
344
|
+
im = torch.empty((1, p.shape[1], stride, stride), device=p.device) # input image in BCHW format
|
|
340
345
|
with torch.profiler.profile(with_flops=True) as prof:
|
|
341
346
|
model(im)
|
|
342
347
|
flops = sum(x.flops for x in prof.key_averages()) / 1e9
|
|
343
|
-
imgsz = imgsz if isinstance(imgsz, list) else [imgsz, imgsz] # expand if int/float
|
|
344
348
|
flops = flops * imgsz[0] / stride * imgsz[1] / stride # 640x640 GFLOPs
|
|
345
|
-
|
|
346
|
-
|
|
349
|
+
except Exception:
|
|
350
|
+
# Use actual image size for input tensor (i.e. required for RTDETR models)
|
|
351
|
+
im = torch.empty((1, p.shape[1], *imgsz), device=p.device) # input image in BCHW format
|
|
352
|
+
with torch.profiler.profile(with_flops=True) as prof:
|
|
353
|
+
model(im)
|
|
354
|
+
flops = sum(x.flops for x in prof.key_averages()) / 1e9
|
|
355
|
+
return flops
|
|
347
356
|
|
|
348
357
|
|
|
349
358
|
def initialize_weights(model):
|
|
@@ -390,8 +399,13 @@ def copy_attr(a, b, include=(), exclude=()):
|
|
|
390
399
|
|
|
391
400
|
|
|
392
401
|
def get_latest_opset():
|
|
393
|
-
"""Return second-most
|
|
394
|
-
|
|
402
|
+
"""Return the second-most recent ONNX opset version supported by this version of PyTorch, adjusted for maturity."""
|
|
403
|
+
if TORCH_1_13:
|
|
404
|
+
# If the PyTorch>=1.13, dynamically compute the latest opset minus one using 'symbolic_opset'
|
|
405
|
+
return max(int(k[14:]) for k in vars(torch.onnx) if "symbolic_opset" in k) - 1
|
|
406
|
+
# Otherwise for PyTorch<=1.12 return the corresponding predefined opset
|
|
407
|
+
version = torch.onnx.producer_version.rsplit(".", 1)[0] # i.e. '2.3'
|
|
408
|
+
return {"1.12": 15, "1.11": 14, "1.10": 13, "1.9": 12, "1.8": 12}.get(version, 12)
|
|
395
409
|
|
|
396
410
|
|
|
397
411
|
def intersect_dicts(da, db, exclude=()):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.15
|
|
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
|
{ultralytics-8.2.13 → ultralytics-8.2.15}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.13 → ultralytics-8.2.15}/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.13 → ultralytics-8.2.15}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.13 → ultralytics-8.2.15}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|