ultralytics 8.3.74__tar.gz → 8.3.76__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ultralytics-8.3.74/ultralytics.egg-info → ultralytics-8.3.76}/PKG-INFO +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/utils.py +2 -2
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/exporter.py +18 -15
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/model.py +1 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/results.py +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/trainer.py +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/track.py +5 -7
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/comet.py +31 -20
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/metrics.py +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/ops.py +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/torch_utils.py +16 -9
- {ultralytics-8.3.74 → ultralytics-8.3.76/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.3.74 → ultralytics-8.3.76}/LICENSE +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/README.md +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/pyproject.toml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/setup.cfg +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/conftest.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_cli.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_engine.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_exports.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_python.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/solutions/default.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/build.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.76
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -714,8 +714,8 @@ def save_dataset_cache_file(prefix, path, x, version):
|
|
714
714
|
if is_dir_writeable(path.parent):
|
715
715
|
if path.exists():
|
716
716
|
path.unlink() # remove *.cache file if exists
|
717
|
-
|
718
|
-
|
717
|
+
with open(str(path), "wb") as file: # context manager here fixes windows async np.save bug
|
718
|
+
np.save(file, x)
|
719
719
|
LOGGER.info(f"{prefix}New cache created: {path}")
|
720
720
|
else:
|
721
721
|
LOGGER.warning(f"{prefix}WARNING ⚠️ Cache directory {path.parent} is not writeable, cache not saved.")
|
@@ -288,8 +288,10 @@ class Exporter:
|
|
288
288
|
self.args.nms = False
|
289
289
|
self.args.conf = self.args.conf or 0.25 # set conf default value for nms export
|
290
290
|
if edgetpu:
|
291
|
-
if not LINUX:
|
292
|
-
raise SystemError(
|
291
|
+
if ARM64 and not LINUX:
|
292
|
+
raise SystemError(
|
293
|
+
"Edge TPU export only supported on non-aarch64 Linux. See https://coral.ai/docs/edgetpu/compiler"
|
294
|
+
)
|
293
295
|
elif self.args.batch != 1: # see github.com/ultralytics/ultralytics/pull/13420
|
294
296
|
LOGGER.warning("WARNING ⚠️ Edge TPU export requires batch size 1, setting batch=1.")
|
295
297
|
self.args.batch = 1
|
@@ -307,6 +309,9 @@ class Exporter:
|
|
307
309
|
"WARNING ⚠️ INT8 export requires a missing 'data' arg for calibration. "
|
308
310
|
f"Using default 'data={self.args.data}'."
|
309
311
|
)
|
312
|
+
if tfjs:
|
313
|
+
if ARM64 and LINUX:
|
314
|
+
raise SystemError("TensorFlow.js export not supported on ARM64 Linux")
|
310
315
|
|
311
316
|
# Input
|
312
317
|
im = torch.zeros(self.args.batch, 3, *self.imgsz).to(self.device)
|
@@ -986,6 +991,7 @@ class Exporter:
|
|
986
991
|
"tflite_support<=0.4.3" if IS_JETSON else "tflite_support", # fix ImportError 'GLIBCXX_3.4.29'
|
987
992
|
"flatbuffers>=23.5.26,<100", # update old 'flatbuffers' included inside tensorflow package
|
988
993
|
"onnxruntime-gpu" if cuda else "onnxruntime",
|
994
|
+
"protobuf>=5", # tflite_support pins <=4 but >=5 works
|
989
995
|
),
|
990
996
|
cmds="--extra-index-url https://pypi.ngc.nvidia.com", # onnx_graphsurgeon only on NVIDIA
|
991
997
|
)
|
@@ -1127,9 +1133,6 @@ class Exporter:
|
|
1127
1133
|
def export_tfjs(self, prefix=colorstr("TensorFlow.js:")):
|
1128
1134
|
"""YOLO TensorFlow.js export."""
|
1129
1135
|
check_requirements("tensorflowjs")
|
1130
|
-
if ARM64:
|
1131
|
-
# Fix error: `np.object` was a deprecated alias for the builtin `object` when exporting to TF.js on ARM64
|
1132
|
-
check_requirements("numpy==1.23.5")
|
1133
1136
|
import tensorflow as tf
|
1134
1137
|
import tensorflowjs as tfjs # noqa
|
1135
1138
|
|
@@ -1557,20 +1560,20 @@ class NMSModel(torch.nn.Module):
|
|
1557
1560
|
|
1558
1561
|
preds = self.model(x)
|
1559
1562
|
pred = preds[0] if isinstance(preds, tuple) else preds
|
1563
|
+
kwargs = dict(device=pred.device, dtype=pred.dtype)
|
1564
|
+
bs = pred.shape[0]
|
1560
1565
|
pred = pred.transpose(-1, -2) # shape(1,84,6300) to shape(1,6300,84)
|
1561
1566
|
extra_shape = pred.shape[-1] - (4 + len(self.model.names)) # extras from Segment, OBB, Pose
|
1567
|
+
if self.args.dynamic and self.args.batch > 1: # batch size needs to always be same due to loop unroll
|
1568
|
+
pad = torch.zeros(torch.max(torch.tensor(self.args.batch - bs), torch.tensor(0)), *pred.shape[1:], **kwargs)
|
1569
|
+
pred = torch.cat((pred, pad))
|
1562
1570
|
boxes, scores, extras = pred.split([4, len(self.model.names), extra_shape], dim=2)
|
1563
1571
|
scores, classes = scores.max(dim=-1)
|
1564
1572
|
self.args.max_det = min(pred.shape[1], self.args.max_det) # in case num_anchors < max_det
|
1565
1573
|
# (N, max_det, 4 coords + 1 class score + 1 class label + extra_shape).
|
1566
|
-
out = torch.zeros(
|
1567
|
-
|
1568
|
-
|
1569
|
-
boxes.shape[-1] + 2 + extra_shape,
|
1570
|
-
device=boxes.device,
|
1571
|
-
dtype=boxes.dtype,
|
1572
|
-
)
|
1573
|
-
for i, (box, cls, score, extra) in enumerate(zip(boxes, classes, scores, extras)):
|
1574
|
+
out = torch.zeros(bs, self.args.max_det, boxes.shape[-1] + 2 + extra_shape, **kwargs)
|
1575
|
+
for i in range(bs):
|
1576
|
+
box, cls, score, extra = boxes[i], classes[i], scores[i], extras[i]
|
1574
1577
|
mask = score > self.args.conf
|
1575
1578
|
if self.is_tf:
|
1576
1579
|
# TFLite GatherND error if mask is empty
|
@@ -1590,7 +1593,7 @@ class NMSModel(torch.nn.Module):
|
|
1590
1593
|
if self.args.format == "tflite": # TFLite is already normalized
|
1591
1594
|
nmsbox *= multiplier
|
1592
1595
|
else:
|
1593
|
-
nmsbox = multiplier * nmsbox / torch.tensor(x.shape[2:],
|
1596
|
+
nmsbox = multiplier * nmsbox / torch.tensor(x.shape[2:], **kwargs).max()
|
1594
1597
|
if not self.args.agnostic_nms: # class-specific NMS
|
1595
1598
|
end = 2 if self.obb else 4
|
1596
1599
|
# fully explicit expansion otherwise reshape error
|
@@ -1621,4 +1624,4 @@ class NMSModel(torch.nn.Module):
|
|
1621
1624
|
# Zero-pad to max_det size to avoid reshape error
|
1622
1625
|
pad = (0, 0, 0, self.args.max_det - dets.shape[0])
|
1623
1626
|
out[i] = torch.nn.functional.pad(dets, pad)
|
1624
|
-
return (out, preds[1]) if self.model.task == "segment" else out
|
1627
|
+
return (out[:bs], preds[1]) if self.model.task == "segment" else out[:bs]
|
@@ -122,6 +122,7 @@ class Model(torch.nn.Module):
|
|
122
122
|
self.metrics = None # validation/training metrics
|
123
123
|
self.session = None # HUB session
|
124
124
|
self.task = task # task type
|
125
|
+
self.model_name = None # model name
|
125
126
|
model = str(model).strip()
|
126
127
|
|
127
128
|
# Check if Ultralytics HUB model from https://hub.ultralytics.com
|
@@ -1016,7 +1016,7 @@ class Boxes(BaseTensor):
|
|
1016
1016
|
xyxy (torch.Tensor | numpy.ndarray): Boxes in [x1, y1, x2, y2] format.
|
1017
1017
|
conf (torch.Tensor | numpy.ndarray): Confidence scores for each box.
|
1018
1018
|
cls (torch.Tensor | numpy.ndarray): Class labels for each box.
|
1019
|
-
id (torch.Tensor |
|
1019
|
+
id (torch.Tensor | None): Tracking IDs for each box (if available).
|
1020
1020
|
xywh (torch.Tensor | numpy.ndarray): Boxes in [x, y, width, height] format.
|
1021
1021
|
xyxyn (torch.Tensor | numpy.ndarray): Normalized [x1, y1, x2, y2] boxes relative to orig_shape.
|
1022
1022
|
xywhn (torch.Tensor | numpy.ndarray): Normalized [x, y, width, height] boxes relative to orig_shape.
|
@@ -66,25 +66,23 @@ def on_predict_postprocess_end(predictor: object, persist: bool = False) -> None
|
|
66
66
|
>>> predictor = YourPredictorClass()
|
67
67
|
>>> on_predict_postprocess_end(predictor, persist=True)
|
68
68
|
"""
|
69
|
-
path, im0s = predictor.batch[:2]
|
70
|
-
|
71
69
|
is_obb = predictor.args.task == "obb"
|
72
70
|
is_stream = predictor.dataset.mode == "stream"
|
73
|
-
for i in
|
71
|
+
for i, result in enumerate(predictor.results):
|
74
72
|
tracker = predictor.trackers[i if is_stream else 0]
|
75
|
-
vid_path = predictor.save_dir / Path(path
|
73
|
+
vid_path = predictor.save_dir / Path(result.path).name
|
76
74
|
if not persist and predictor.vid_path[i if is_stream else 0] != vid_path:
|
77
75
|
tracker.reset()
|
78
76
|
predictor.vid_path[i if is_stream else 0] = vid_path
|
79
77
|
|
80
|
-
det = (
|
78
|
+
det = (result.obb if is_obb else result.boxes).cpu().numpy()
|
81
79
|
if len(det) == 0:
|
82
80
|
continue
|
83
|
-
tracks = tracker.update(det,
|
81
|
+
tracks = tracker.update(det, result.orig_img)
|
84
82
|
if len(tracks) == 0:
|
85
83
|
continue
|
86
84
|
idx = tracks[:, -1].astype(int)
|
87
|
-
predictor.results[i] =
|
85
|
+
predictor.results[i] = result[idx]
|
88
86
|
|
89
87
|
update_args = {"obb" if is_obb else "boxes": torch.as_tensor(tracks[:, :-1])}
|
90
88
|
predictor.results[i].update(**update_args)
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
2
|
|
3
|
+
from types import SimpleNamespace
|
4
|
+
|
3
5
|
from ultralytics.utils import LOGGER, RANK, SETTINGS, TESTS_RUNNING, ops
|
4
6
|
from ultralytics.utils.metrics import ClassifyMetrics, DetMetrics, OBBMetrics, PoseMetrics, SegmentMetrics
|
5
7
|
|
@@ -29,9 +31,19 @@ except (ImportError, AssertionError):
|
|
29
31
|
comet_ml = None
|
30
32
|
|
31
33
|
|
32
|
-
def _get_comet_mode():
|
34
|
+
def _get_comet_mode() -> str:
|
33
35
|
"""Returns the mode of comet set in the environment variables, defaults to 'online' if not set."""
|
34
|
-
|
36
|
+
comet_mode = os.getenv("COMET_MODE")
|
37
|
+
if comet_mode is not None:
|
38
|
+
LOGGER.warning(
|
39
|
+
"WARNING ⚠️ The COMET_MODE environment variable is deprecated. "
|
40
|
+
"Please use COMET_START_ONLINE to set the Comet experiment mode. "
|
41
|
+
"To start an offline Comet experiment, use 'export COMET_START_ONLINE=0'. "
|
42
|
+
"If COMET_START_ONLINE is not set or is set to '1', an online Comet experiment will be created."
|
43
|
+
)
|
44
|
+
return comet_mode
|
45
|
+
|
46
|
+
return "online"
|
35
47
|
|
36
48
|
|
37
49
|
def _get_comet_model_name():
|
@@ -65,22 +77,24 @@ def _should_log_image_predictions():
|
|
65
77
|
return os.getenv("COMET_EVAL_LOG_IMAGE_PREDICTIONS", "true").lower() == "true"
|
66
78
|
|
67
79
|
|
68
|
-
def
|
69
|
-
"""
|
70
|
-
|
71
|
-
return comet_ml.OfflineExperiment(project_name=project_name)
|
72
|
-
|
73
|
-
return comet_ml.Experiment(project_name=project_name)
|
74
|
-
|
80
|
+
def _resume_or_create_experiment(args: SimpleNamespace) -> None:
|
81
|
+
"""
|
82
|
+
Resumes CometML experiment or creates a new experiment based on args.
|
75
83
|
|
76
|
-
|
77
|
-
"""
|
84
|
+
Ensures that the experiment object is only created in a single process during distributed training.
|
85
|
+
"""
|
78
86
|
if RANK not in {-1, 0}:
|
79
87
|
return
|
80
|
-
|
88
|
+
|
89
|
+
# Set environment variable (if not set by the user) to configure the Comet experiment's online mode under the hood.
|
90
|
+
# IF COMET_START_ONLINE is set by the user it will override COMET_MODE value.
|
91
|
+
if os.getenv("COMET_START_ONLINE") is None:
|
81
92
|
comet_mode = _get_comet_mode()
|
93
|
+
os.environ["COMET_START_ONLINE"] = "1" if comet_mode != "offline" else "0"
|
94
|
+
|
95
|
+
try:
|
82
96
|
_project_name = os.getenv("COMET_PROJECT_NAME", args.project)
|
83
|
-
experiment =
|
97
|
+
experiment = comet_ml.start(project_name=_project_name)
|
84
98
|
experiment.log_parameters(vars(args))
|
85
99
|
experiment.log_others(
|
86
100
|
{
|
@@ -313,15 +327,12 @@ def _log_model(experiment, trainer):
|
|
313
327
|
|
314
328
|
def on_pretrain_routine_start(trainer):
|
315
329
|
"""Creates or resumes a CometML experiment at the start of a YOLO pre-training routine."""
|
316
|
-
|
317
|
-
is_alive = getattr(experiment, "alive", False)
|
318
|
-
if not experiment or not is_alive:
|
319
|
-
_create_experiment(trainer.args)
|
330
|
+
_resume_or_create_experiment(trainer.args)
|
320
331
|
|
321
332
|
|
322
333
|
def on_train_epoch_end(trainer):
|
323
334
|
"""Log metrics and save batch images at the end of training epochs."""
|
324
|
-
experiment = comet_ml.
|
335
|
+
experiment = comet_ml.get_running_experiment()
|
325
336
|
if not experiment:
|
326
337
|
return
|
327
338
|
|
@@ -334,7 +345,7 @@ def on_train_epoch_end(trainer):
|
|
334
345
|
|
335
346
|
def on_fit_epoch_end(trainer):
|
336
347
|
"""Logs model assets at the end of each epoch."""
|
337
|
-
experiment = comet_ml.
|
348
|
+
experiment = comet_ml.get_running_experiment()
|
338
349
|
if not experiment:
|
339
350
|
return
|
340
351
|
|
@@ -362,7 +373,7 @@ def on_fit_epoch_end(trainer):
|
|
362
373
|
|
363
374
|
def on_train_end(trainer):
|
364
375
|
"""Perform operations at the end of training."""
|
365
|
-
experiment = comet_ml.
|
376
|
+
experiment = comet_ml.get_running_experiment()
|
366
377
|
if not experiment:
|
367
378
|
return
|
368
379
|
|
@@ -302,15 +302,22 @@ def model_info(model, detailed=False, verbose=True, imgsz=640):
|
|
302
302
|
return
|
303
303
|
n_p = get_num_params(model) # number of parameters
|
304
304
|
n_g = get_num_gradients(model) # number of gradients
|
305
|
-
|
305
|
+
layers = __import__("collections").OrderedDict((n, m) for n, m in model.named_modules() if len(m._modules) == 0)
|
306
|
+
n_l = len(layers) # number of layers
|
306
307
|
if detailed:
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
308
|
+
h = f"{'layer':>5}{'name':>40}{'type':>20}{'gradient':>10}{'parameters':>12}{'shape':>20}{'mu':>10}{'sigma':>10}"
|
309
|
+
LOGGER.info(h)
|
310
|
+
for i, (mn, m) in enumerate(layers.items()):
|
311
|
+
mn = mn.replace("module_list.", "")
|
312
|
+
mt = m.__class__.__name__
|
313
|
+
if len(m._parameters):
|
314
|
+
for pn, p in m.named_parameters():
|
315
|
+
LOGGER.info(
|
316
|
+
f"{i:>5g}{mn + '.' + pn:>40}{mt:>20}{p.requires_grad!r:>10}{p.numel():>12g}"
|
317
|
+
f"{str(list(p.shape)):>20}{p.mean():>10.3g}{p.std():>10.3g}{str(p.dtype).replace('torch.', ''):>15}"
|
318
|
+
)
|
319
|
+
else: # layers with no learnable params
|
320
|
+
LOGGER.info(f"{i:>5g}{mn:>40}{mt:>20}{False!r:>10}{0:>12g}{str([]):>20}{'-':>10}{'-':>10}{'-':>15}")
|
314
321
|
|
315
322
|
flops = get_flops(model, imgsz) # imgsz may be int or list, i.e. imgsz=640 or imgsz=[640, 320]
|
316
323
|
fused = " (fused)" if getattr(model, "is_fused", lambda: False)() else ""
|
@@ -746,7 +753,7 @@ class EarlyStopping:
|
|
746
753
|
if fitness is None: # check if fitness=None (happens when val=False)
|
747
754
|
return False
|
748
755
|
|
749
|
-
if fitness
|
756
|
+
if fitness > self.best_fitness or self.best_fitness == 0: # allow for early zero-fitness stage of training
|
750
757
|
self.best_epoch = epoch
|
751
758
|
self.best_fitness = fitness
|
752
759
|
delta = epoch - self.best_epoch # epochs without improvement
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.76
|
4
4
|
Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
File without changes
|
{ultralytics-8.3.74 → ultralytics-8.3.76}/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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ultralytics-8.3.74 → ultralytics-8.3.76}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
File without changes
|
{ultralytics-8.3.74 → ultralytics-8.3.76}/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
|