ultralytics 8.1.45__tar.gz → 8.1.46__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.1.45/ultralytics.egg-info → ultralytics-8.1.46}/PKG-INFO +1 -1
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_cuda.py +7 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/__init__.py +1 -1
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/augment.py +7 -2
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/exporter.py +28 -17
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/autobackend.py +51 -20
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/__init__.py +30 -6
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/plotting.py +6 -6
- {ultralytics-8.1.45 → ultralytics-8.1.46/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.1.45 → ultralytics-8.1.46}/LICENSE +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/README.md +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/pyproject.toml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/setup.cfg +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_cli.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_engine.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_explorer.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_integrations.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/tests/test_python.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/base.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/build.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/trainer.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.1.45 → ultralytics-8.1.46}/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.1.
|
|
3
|
+
Version: 8.1.46
|
|
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
|
|
@@ -19,6 +19,13 @@ def test_checks():
|
|
|
19
19
|
assert torch.cuda.is_available() == CUDA_IS_AVAILABLE
|
|
20
20
|
assert torch.cuda.device_count() == CUDA_DEVICE_COUNT
|
|
21
21
|
|
|
22
|
+
@pytest.mark.slow
|
|
23
|
+
@pytest.mark.skipif(not CUDA_IS_AVAILABLE, reason="CUDA is not available")
|
|
24
|
+
def test_export_engine():
|
|
25
|
+
"""Test exporting the YOLO model to NVIDIA TensorRT format."""
|
|
26
|
+
f = YOLO(MODEL).export(format="engine", device=0)
|
|
27
|
+
YOLO(f)(BUS, device=0)
|
|
28
|
+
|
|
22
29
|
|
|
23
30
|
@pytest.mark.skipif(not CUDA_IS_AVAILABLE, reason="CUDA is not available")
|
|
24
31
|
def test_train():
|
|
@@ -975,17 +975,22 @@ class Format:
|
|
|
975
975
|
1 if self.mask_overlap else nl, img.shape[0] // self.mask_ratio, img.shape[1] // self.mask_ratio
|
|
976
976
|
)
|
|
977
977
|
labels["masks"] = masks
|
|
978
|
-
if self.normalize:
|
|
979
|
-
instances.normalize(w, h)
|
|
980
978
|
labels["img"] = self._format_img(img)
|
|
981
979
|
labels["cls"] = torch.from_numpy(cls) if nl else torch.zeros(nl)
|
|
982
980
|
labels["bboxes"] = torch.from_numpy(instances.bboxes) if nl else torch.zeros((nl, 4))
|
|
983
981
|
if self.return_keypoint:
|
|
984
982
|
labels["keypoints"] = torch.from_numpy(instances.keypoints)
|
|
983
|
+
if self.normalize:
|
|
984
|
+
labels["keypoints"][..., 0] /= w
|
|
985
|
+
labels["keypoints"][..., 1] /= h
|
|
985
986
|
if self.return_obb:
|
|
986
987
|
labels["bboxes"] = (
|
|
987
988
|
xyxyxyxy2xywhr(torch.from_numpy(instances.segments)) if len(instances.segments) else torch.zeros((0, 5))
|
|
988
989
|
)
|
|
990
|
+
# NOTE: need to normalize obb in xywhr format for width-height consistency
|
|
991
|
+
if self.normalize:
|
|
992
|
+
labels["bboxes"][:, [0, 2]] /= w
|
|
993
|
+
labels["bboxes"][:, [1, 3]] /= h
|
|
989
994
|
# Then we can use collate_fn
|
|
990
995
|
if self.batch_idx:
|
|
991
996
|
labels["batch_idx"] = torch.zeros(nl)
|
|
@@ -529,12 +529,16 @@ class Exporter:
|
|
|
529
529
|
f"or in {ROOT}. See PNNX repo for full installation instructions."
|
|
530
530
|
)
|
|
531
531
|
system = "macos" if MACOS else "windows" if WINDOWS else "linux-aarch64" if ARM64 else "linux"
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
532
|
+
|
|
533
|
+
# PNNX link fixed at 20240226 due to bug in 20240410
|
|
534
|
+
# try:
|
|
535
|
+
# _, assets = get_github_assets(repo="pnnx/pnnx", retry=True)
|
|
536
|
+
# url = [x for x in assets if f"{system}.zip" in x][0]
|
|
537
|
+
# except Exception as e:
|
|
538
|
+
# url = f"https://github.com/pnnx/pnnx/releases/download/20240226/pnnx-20240226-{system}.zip"
|
|
539
|
+
# LOGGER.warning(f"{prefix} WARNING ⚠️ PNNX GitHub assets not found: {e}, using default {url}")
|
|
540
|
+
|
|
541
|
+
url = f"https://github.com/pnnx/pnnx/releases/download/20240226/pnnx-20240226-{system}.zip"
|
|
538
542
|
asset = attempt_download_asset(url, repo="pnnx/pnnx", release="latest")
|
|
539
543
|
if check_is_path_safe(Path.cwd(), asset): # avoid path traversal security vulnerability
|
|
540
544
|
unzip_dir = Path(asset).with_suffix("")
|
|
@@ -654,6 +658,7 @@ class Exporter:
|
|
|
654
658
|
def export_engine(self, prefix=colorstr("TensorRT:")):
|
|
655
659
|
"""YOLOv8 TensorRT export https://developer.nvidia.com/tensorrt."""
|
|
656
660
|
assert self.im.device.type != "cpu", "export running on CPU but must be on GPU, i.e. use 'device=0'"
|
|
661
|
+
self.args.simplify = True
|
|
657
662
|
f_onnx, _ = self.export_onnx() # run before trt import https://github.com/ultralytics/ultralytics/issues/7016
|
|
658
663
|
|
|
659
664
|
try:
|
|
@@ -662,12 +667,10 @@ class Exporter:
|
|
|
662
667
|
if LINUX:
|
|
663
668
|
check_requirements("nvidia-tensorrt", cmds="-U --index-url https://pypi.ngc.nvidia.com")
|
|
664
669
|
import tensorrt as trt # noqa
|
|
665
|
-
|
|
666
670
|
check_version(trt.__version__, "7.0.0", hard=True) # require tensorrt>=7.0.0
|
|
667
671
|
|
|
668
|
-
self.args.simplify = True
|
|
669
|
-
|
|
670
672
|
LOGGER.info(f"\n{prefix} starting export with TensorRT {trt.__version__}...")
|
|
673
|
+
is_trt10 = int(trt.__version__.split(".")[0]) >= 10 # is TensorRT >= 10
|
|
671
674
|
assert Path(f_onnx).exists(), f"failed to export ONNX file: {f_onnx}"
|
|
672
675
|
f = self.file.with_suffix(".engine") # TensorRT engine file
|
|
673
676
|
logger = trt.Logger(trt.Logger.INFO)
|
|
@@ -676,7 +679,11 @@ class Exporter:
|
|
|
676
679
|
|
|
677
680
|
builder = trt.Builder(logger)
|
|
678
681
|
config = builder.create_builder_config()
|
|
679
|
-
|
|
682
|
+
workspace = int(self.args.workspace * (1 << 30))
|
|
683
|
+
if is_trt10:
|
|
684
|
+
config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, workspace)
|
|
685
|
+
else: # TensorRT versions 7, 8
|
|
686
|
+
config.max_workspace_size = workspace
|
|
680
687
|
flag = 1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)
|
|
681
688
|
network = builder.create_network(flag)
|
|
682
689
|
parser = trt.OnnxParser(network, logger)
|
|
@@ -695,27 +702,31 @@ class Exporter:
|
|
|
695
702
|
if shape[0] <= 1:
|
|
696
703
|
LOGGER.warning(f"{prefix} WARNING ⚠️ 'dynamic=True' model requires max batch size, i.e. 'batch=16'")
|
|
697
704
|
profile = builder.create_optimization_profile()
|
|
705
|
+
min_shape = (1, shape[1], 32, 32) # minimum input shape
|
|
706
|
+
opt_shape = (max(1, shape[0] // 2), *shape[1:]) # optimal input shape
|
|
707
|
+
max_shape = (*shape[:2], *(max(1, self.args.workspace) * d for d in shape[2:])) # max input shape
|
|
698
708
|
for inp in inputs:
|
|
699
|
-
profile.set_shape(inp.name,
|
|
709
|
+
profile.set_shape(inp.name, min_shape, opt_shape, max_shape)
|
|
700
710
|
config.add_optimization_profile(profile)
|
|
701
711
|
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
if builder.platform_has_fast_fp16 and self.args.half:
|
|
712
|
+
half = builder.platform_has_fast_fp16 and self.args.half
|
|
713
|
+
LOGGER.info(f"{prefix} building FP{16 if half else 32} engine as {f}")
|
|
714
|
+
if half:
|
|
706
715
|
config.set_flag(trt.BuilderFlag.FP16)
|
|
707
716
|
|
|
717
|
+
# Free CUDA memory
|
|
708
718
|
del self.model
|
|
709
719
|
torch.cuda.empty_cache()
|
|
710
720
|
|
|
711
721
|
# Write file
|
|
712
|
-
|
|
722
|
+
build = builder.build_serialized_network if is_trt10 else builder.build_engine
|
|
723
|
+
with build(network, config) as engine, open(f, "wb") as t:
|
|
713
724
|
# Metadata
|
|
714
725
|
meta = json.dumps(self.metadata)
|
|
715
726
|
t.write(len(meta).to_bytes(4, byteorder="little", signed=True))
|
|
716
727
|
t.write(meta.encode())
|
|
717
728
|
# Model
|
|
718
|
-
t.write(engine.serialize())
|
|
729
|
+
t.write(engine if is_trt10 else engine.serialize())
|
|
719
730
|
|
|
720
731
|
return f, None
|
|
721
732
|
|
|
@@ -234,23 +234,47 @@ class AutoBackend(nn.Module):
|
|
|
234
234
|
meta_len = int.from_bytes(f.read(4), byteorder="little") # read metadata length
|
|
235
235
|
metadata = json.loads(f.read(meta_len).decode("utf-8")) # read metadata
|
|
236
236
|
model = runtime.deserialize_cuda_engine(f.read()) # read engine
|
|
237
|
-
|
|
237
|
+
|
|
238
|
+
# Model context
|
|
239
|
+
try:
|
|
240
|
+
context = model.create_execution_context()
|
|
241
|
+
except Exception as e: # model is None
|
|
242
|
+
LOGGER.error(f"ERROR: TensorRT model exported with a different version than {trt.__version__}\n")
|
|
243
|
+
raise e
|
|
244
|
+
|
|
238
245
|
bindings = OrderedDict()
|
|
239
246
|
output_names = []
|
|
240
247
|
fp16 = False # default updated below
|
|
241
248
|
dynamic = False
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
if
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
249
|
+
is_trt10 = not hasattr(model, "num_bindings")
|
|
250
|
+
num = range(model.num_io_tensors) if is_trt10 else range(model.num_bindings)
|
|
251
|
+
for i in num:
|
|
252
|
+
if is_trt10:
|
|
253
|
+
name = model.get_tensor_name(i)
|
|
254
|
+
dtype = trt.nptype(model.get_tensor_dtype(name))
|
|
255
|
+
is_input = model.get_tensor_mode(name) == trt.TensorIOMode.INPUT
|
|
256
|
+
if is_input:
|
|
257
|
+
if -1 in tuple(model.get_tensor_shape(name)):
|
|
258
|
+
dynamic = True
|
|
259
|
+
context.set_input_shape(name, tuple(model.get_tensor_profile_shape(name, 0)[1]))
|
|
260
|
+
if dtype == np.float16:
|
|
261
|
+
fp16 = True
|
|
262
|
+
else:
|
|
263
|
+
output_names.append(name)
|
|
264
|
+
shape = tuple(context.get_tensor_shape(name))
|
|
265
|
+
else: # TensorRT < 10.0
|
|
266
|
+
name = model.get_binding_name(i)
|
|
267
|
+
dtype = trt.nptype(model.get_binding_dtype(i))
|
|
268
|
+
is_input = model.binding_is_input(i)
|
|
269
|
+
if model.binding_is_input(i):
|
|
270
|
+
if -1 in tuple(model.get_binding_shape(i)): # dynamic
|
|
271
|
+
dynamic = True
|
|
272
|
+
context.set_binding_shape(i, tuple(model.get_profile_shape(0, i)[1]))
|
|
273
|
+
if dtype == np.float16:
|
|
274
|
+
fp16 = True
|
|
275
|
+
else:
|
|
276
|
+
output_names.append(name)
|
|
277
|
+
shape = tuple(context.get_binding_shape(i))
|
|
254
278
|
im = torch.from_numpy(np.empty(shape, dtype=dtype)).to(device)
|
|
255
279
|
bindings[name] = Binding(name, dtype, shape, im, int(im.data_ptr()))
|
|
256
280
|
binding_addrs = OrderedDict((n, d.ptr) for n, d in bindings.items())
|
|
@@ -463,13 +487,20 @@ class AutoBackend(nn.Module):
|
|
|
463
487
|
|
|
464
488
|
# TensorRT
|
|
465
489
|
elif self.engine:
|
|
466
|
-
if self.dynamic
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
490
|
+
if self.dynamic or im.shape != self.bindings["images"].shape:
|
|
491
|
+
if self.is_trt10:
|
|
492
|
+
self.context.set_input_shape("images", im.shape)
|
|
493
|
+
self.bindings["images"] = self.bindings["images"]._replace(shape=im.shape)
|
|
494
|
+
for name in self.output_names:
|
|
495
|
+
self.bindings[name].data.resize_(tuple(self.context.get_tensor_shape(name)))
|
|
496
|
+
else:
|
|
497
|
+
i = self.model.get_binding_index("images")
|
|
498
|
+
self.context.set_binding_shape(i, im.shape)
|
|
499
|
+
self.bindings["images"] = self.bindings["images"]._replace(shape=im.shape)
|
|
500
|
+
for name in self.output_names:
|
|
501
|
+
i = self.model.get_binding_index(name)
|
|
502
|
+
self.bindings[name].data.resize_(tuple(self.context.get_binding_shape(i)))
|
|
503
|
+
|
|
473
504
|
s = self.bindings["images"].shape
|
|
474
505
|
assert im.shape == s, f"input size {im.shape} {'>' if self.dynamic else 'not equal to'} max model size {s}"
|
|
475
506
|
self.binding_addrs["images"] = int(im.data_ptr())
|
|
@@ -406,6 +406,20 @@ DEFAULT_CFG_KEYS = DEFAULT_CFG_DICT.keys()
|
|
|
406
406
|
DEFAULT_CFG = IterableSimpleNamespace(**DEFAULT_CFG_DICT)
|
|
407
407
|
|
|
408
408
|
|
|
409
|
+
def read_device_model() -> str:
|
|
410
|
+
"""
|
|
411
|
+
Reads the device model information from the system and caches it for quick access. Used by is_jetson() and
|
|
412
|
+
is_raspberrypi().
|
|
413
|
+
|
|
414
|
+
Returns:
|
|
415
|
+
(str): Model file contents if read successfully or empty string otherwise.
|
|
416
|
+
"""
|
|
417
|
+
with contextlib.suppress(Exception):
|
|
418
|
+
with open("/proc/device-tree/model") as f:
|
|
419
|
+
return f.read()
|
|
420
|
+
return ""
|
|
421
|
+
|
|
422
|
+
|
|
409
423
|
def is_ubuntu() -> bool:
|
|
410
424
|
"""
|
|
411
425
|
Check if the OS is Ubuntu.
|
|
@@ -473,10 +487,18 @@ def is_raspberrypi() -> bool:
|
|
|
473
487
|
Returns:
|
|
474
488
|
(bool): True if running on a Raspberry Pi, False otherwise.
|
|
475
489
|
"""
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
490
|
+
return "Raspberry Pi" in PROC_DEVICE_MODEL
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
def is_jetson() -> bool:
|
|
494
|
+
"""
|
|
495
|
+
Determines if the Python environment is running on a Jetson Nano or Jetson Orin device by checking the device model
|
|
496
|
+
information.
|
|
497
|
+
|
|
498
|
+
Returns:
|
|
499
|
+
(bool): True if running on a Jetson Nano or Jetson Orin, False otherwise.
|
|
500
|
+
"""
|
|
501
|
+
return "NVIDIA" in PROC_DEVICE_MODEL # i.e. "NVIDIA Jetson Nano" or "NVIDIA Orin NX"
|
|
480
502
|
|
|
481
503
|
|
|
482
504
|
def is_online() -> bool:
|
|
@@ -658,9 +680,11 @@ def get_user_config_dir(sub_dir="Ultralytics"):
|
|
|
658
680
|
|
|
659
681
|
|
|
660
682
|
# Define constants (required below)
|
|
683
|
+
PROC_DEVICE_MODEL = read_device_model() # is_jetson() and is_raspberrypi() depend on this constant
|
|
661
684
|
ONLINE = is_online()
|
|
662
685
|
IS_COLAB = is_colab()
|
|
663
686
|
IS_DOCKER = is_docker()
|
|
687
|
+
IS_JETSON = is_jetson()
|
|
664
688
|
IS_JUPYTER = is_jupyter()
|
|
665
689
|
IS_KAGGLE = is_kaggle()
|
|
666
690
|
IS_PIP_PACKAGE = is_pip_package()
|
|
@@ -696,8 +720,8 @@ def colorstr(*input):
|
|
|
696
720
|
(str): The input string wrapped with ANSI escape codes for the specified color and style.
|
|
697
721
|
|
|
698
722
|
Examples:
|
|
699
|
-
>>> colorstr(
|
|
700
|
-
>>>
|
|
723
|
+
>>> colorstr("blue", "bold", "hello world")
|
|
724
|
+
>>> "\033[34m\033[1mhello world\033[0m"
|
|
701
725
|
"""
|
|
702
726
|
*args, string = input if len(input) > 1 else ("blue", "bold", input[0]) # color arguments, string
|
|
703
727
|
colors = {
|
|
@@ -838,16 +838,16 @@ def plot_images(
|
|
|
838
838
|
if len(bboxes):
|
|
839
839
|
boxes = bboxes[idx]
|
|
840
840
|
conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
|
|
841
|
-
is_obb = boxes.shape[-1] == 5 # xywhr
|
|
842
|
-
boxes = ops.xywhr2xyxyxyxy(boxes) if is_obb else ops.xywh2xyxy(boxes)
|
|
843
841
|
if len(boxes):
|
|
844
842
|
if boxes[:, :4].max() <= 1.1: # if normalized with tolerance 0.1
|
|
845
|
-
boxes[..., 0
|
|
846
|
-
boxes[..., 1
|
|
843
|
+
boxes[..., [0, 2]] *= w # scale to pixels
|
|
844
|
+
boxes[..., [1, 3]] *= h
|
|
847
845
|
elif scale < 1: # absolute coords need scale if image scales
|
|
848
846
|
boxes[..., :4] *= scale
|
|
849
|
-
boxes[..., 0
|
|
850
|
-
boxes[..., 1
|
|
847
|
+
boxes[..., 0] += x
|
|
848
|
+
boxes[..., 1] += y
|
|
849
|
+
is_obb = boxes.shape[-1] == 5 # xywhr
|
|
850
|
+
boxes = ops.xywhr2xyxyxyxy(boxes) if is_obb else ops.xywh2xyxy(boxes)
|
|
851
851
|
for j, box in enumerate(boxes.astype(np.int64).tolist()):
|
|
852
852
|
c = classes[j]
|
|
853
853
|
color = colors(c)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.46
|
|
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
|
{ultralytics-8.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.1.45 → ultralytics-8.1.46}/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.1.45 → ultralytics-8.1.46}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.1.45 → ultralytics-8.1.46}/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
|