ultralytics 8.3.62__tar.gz → 8.3.64__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.62/ultralytics.egg-info → ultralytics-8.3.64}/PKG-INFO +1 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/__init__.py +1 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/build.py +5 -4
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/utils.py +1 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/exporter.py +12 -4
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/results.py +1 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/trainer.py +1 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/tuner.py +2 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/block.py +3 -3
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/tasks.py +8 -6
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/__init__.py +11 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/checks.py +13 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/torch_utils.py +2 -9
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/tuner.py +4 -2
- {ultralytics-8.3.62 → ultralytics-8.3.64/ultralytics.egg-info}/PKG-INFO +1 -1
- {ultralytics-8.3.62 → ultralytics-8.3.64}/LICENSE +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/README.md +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/pyproject.toml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/setup.cfg +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/conftest.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_cli.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_cuda.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_engine.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_exports.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_integrations.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_python.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/tests/test_solutions.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/solutions/default.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/base.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/dataset.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/hub/google/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/blocks.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/memory_attention.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/modules/utils.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/activation.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/region_counter.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/security_alarm.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/solutions.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/solutions/trackzone.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/ultralytics.egg-info/requires.txt +0 -0
- {ultralytics-8.3.62 → ultralytics-8.3.64}/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.64
|
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>
|
@@ -49,10 +49,11 @@ class InfiniteDataLoader(dataloader.DataLoader):
|
|
49
49
|
|
50
50
|
def __del__(self):
|
51
51
|
"""Ensure that workers are terminated."""
|
52
|
-
|
53
|
-
|
54
|
-
w.
|
55
|
-
|
52
|
+
if hasattr(self.iterator, "_workers"):
|
53
|
+
for w in self.iterator._workers: # force terminate
|
54
|
+
if w.is_alive():
|
55
|
+
w.terminate()
|
56
|
+
self.iterator._shutdown_workers() # cleanup
|
56
57
|
|
57
58
|
def reset(self):
|
58
59
|
"""
|
@@ -567,7 +567,7 @@ class HUBDatasetStats:
|
|
567
567
|
|
568
568
|
# Get dataset statistics
|
569
569
|
if self.task == "classify":
|
570
|
-
from torchvision.datasets import ImageFolder
|
570
|
+
from torchvision.datasets import ImageFolder # scope for faster 'import ultralytics'
|
571
571
|
|
572
572
|
dataset = ImageFolder(self.data[split])
|
573
573
|
|
@@ -91,7 +91,13 @@ from ultralytics.utils import (
|
|
91
91
|
get_default_args,
|
92
92
|
yaml_save,
|
93
93
|
)
|
94
|
-
from ultralytics.utils.checks import
|
94
|
+
from ultralytics.utils.checks import (
|
95
|
+
check_imgsz,
|
96
|
+
check_is_path_safe,
|
97
|
+
check_requirements,
|
98
|
+
check_version,
|
99
|
+
is_sudo_available,
|
100
|
+
)
|
95
101
|
from ultralytics.utils.downloads import attempt_download_asset, get_github_assets, safe_download
|
96
102
|
from ultralytics.utils.files import file_size, spaces_in_path
|
97
103
|
from ultralytics.utils.ops import Profile
|
@@ -1071,7 +1077,6 @@ class Exporter:
|
|
1071
1077
|
assert LINUX, f"export only supported on Linux. See {help_url}"
|
1072
1078
|
if subprocess.run(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True).returncode != 0:
|
1073
1079
|
LOGGER.info(f"\n{prefix} export requires Edge TPU compiler. Attempting install from {help_url}")
|
1074
|
-
sudo = subprocess.run("sudo --version >/dev/null", shell=True).returncode == 0 # sudo installed on system
|
1075
1080
|
for c in (
|
1076
1081
|
"curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -",
|
1077
1082
|
'echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | '
|
@@ -1079,7 +1084,7 @@ class Exporter:
|
|
1079
1084
|
"sudo apt-get update",
|
1080
1085
|
"sudo apt-get install edgetpu-compiler",
|
1081
1086
|
):
|
1082
|
-
subprocess.run(c if
|
1087
|
+
subprocess.run(c if is_sudo_available() else c.replace("sudo ", ""), shell=True, check=True)
|
1083
1088
|
ver = subprocess.run(cmd, shell=True, capture_output=True, check=True).stdout.decode().split()[-1]
|
1084
1089
|
|
1085
1090
|
LOGGER.info(f"\n{prefix} starting export with Edge TPU compiler {ver}...")
|
@@ -1160,7 +1165,10 @@ class Exporter:
|
|
1160
1165
|
if "openjdk 17" not in str(out.stdout):
|
1161
1166
|
raise FileNotFoundError
|
1162
1167
|
except FileNotFoundError:
|
1163
|
-
|
1168
|
+
c = ["apt", "install", "-y", "openjdk-17-jdk", "openjdk-17-jre"]
|
1169
|
+
if is_sudo_available():
|
1170
|
+
c.insert(0, "sudo")
|
1171
|
+
subprocess.run(c, check=True)
|
1164
1172
|
|
1165
1173
|
def representative_dataset_gen(dataloader=self.get_int8_calibration_dataloader(prefix)):
|
1166
1174
|
for batch in dataloader:
|
@@ -839,7 +839,7 @@ class Results(SimpleClass):
|
|
839
839
|
>>> df_result = results[0].to_df()
|
840
840
|
>>> print(df_result)
|
841
841
|
"""
|
842
|
-
import pandas as pd
|
842
|
+
import pandas as pd # scope for faster 'import ultralytics'
|
843
843
|
|
844
844
|
return pd.DataFrame(self.summary(normalize=normalize, decimals=decimals))
|
845
845
|
|
@@ -271,6 +271,7 @@ class BaseTrainer:
|
|
271
271
|
)
|
272
272
|
if world_size > 1:
|
273
273
|
self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK], find_unused_parameters=True)
|
274
|
+
self.set_model_attributes() # set again after DDP wrapper
|
274
275
|
|
275
276
|
# Check imgsz
|
276
277
|
gs = max(int(self.model.stride.max() if hasattr(self.model, "stride") else 32), 32) # grid size (max stride)
|
@@ -101,7 +101,8 @@ class Tuner:
|
|
101
101
|
"copy_paste": (0.0, 1.0), # segment copy-paste (probability)
|
102
102
|
}
|
103
103
|
self.args = get_cfg(overrides=args)
|
104
|
-
self.tune_dir = get_save_dir(self.args, name="tune")
|
104
|
+
self.tune_dir = get_save_dir(self.args, name=self.args.name or "tune")
|
105
|
+
self.args.name = None # reset to not affect training directory
|
105
106
|
self.tune_csv = self.tune_dir / "tune_results.csv"
|
106
107
|
self.callbacks = _callbacks or callbacks.get_default_callbacks()
|
107
108
|
self.prefix = colorstr("Tuner: ")
|
@@ -1131,7 +1131,7 @@ class TorchVision(nn.Module):
|
|
1131
1131
|
|
1132
1132
|
def __init__(self, c1, c2, model, weights="DEFAULT", unwrap=True, truncate=2, split=False):
|
1133
1133
|
"""Load the model and weights from torchvision."""
|
1134
|
-
import torchvision
|
1134
|
+
import torchvision # scope for faster 'import ultralytics'
|
1135
1135
|
|
1136
1136
|
super().__init__()
|
1137
1137
|
if hasattr(torchvision.models, "get_model"):
|
@@ -1139,10 +1139,10 @@ class TorchVision(nn.Module):
|
|
1139
1139
|
else:
|
1140
1140
|
self.m = torchvision.models.__dict__[model](pretrained=bool(weights))
|
1141
1141
|
if unwrap:
|
1142
|
-
layers = list(self.m.children())
|
1142
|
+
layers = list(self.m.children())
|
1143
1143
|
if isinstance(layers[0], nn.Sequential): # Second-level for some models like EfficientNet, Swin
|
1144
1144
|
layers = [*list(layers[0].children()), *layers[1:]]
|
1145
|
-
self.m = nn.Sequential(*layers)
|
1145
|
+
self.m = nn.Sequential(*(layers[:-truncate] if truncate else layers))
|
1146
1146
|
self.split = split
|
1147
1147
|
else:
|
1148
1148
|
self.split = False
|
@@ -7,6 +7,7 @@ import types
|
|
7
7
|
from copy import deepcopy
|
8
8
|
from pathlib import Path
|
9
9
|
|
10
|
+
import thop
|
10
11
|
import torch
|
11
12
|
import torch.nn as nn
|
12
13
|
|
@@ -86,11 +87,6 @@ from ultralytics.utils.torch_utils import (
|
|
86
87
|
time_sync,
|
87
88
|
)
|
88
89
|
|
89
|
-
try:
|
90
|
-
import thop
|
91
|
-
except ImportError:
|
92
|
-
thop = None
|
93
|
-
|
94
90
|
|
95
91
|
class BaseModel(nn.Module):
|
96
92
|
"""The BaseModel class serves as a base class for all the models in the Ultralytics YOLO family."""
|
@@ -959,7 +955,13 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
|
|
959
955
|
ch = [ch]
|
960
956
|
layers, save, c2 = [], [], ch[-1] # layers, savelist, ch out
|
961
957
|
for i, (f, n, m, args) in enumerate(d["backbone"] + d["head"]): # from, number, module, args
|
962
|
-
m =
|
958
|
+
m = (
|
959
|
+
getattr(torch.nn, m[3:])
|
960
|
+
if "nn." in m
|
961
|
+
else getattr(__import__("torchvision").ops, m[16:])
|
962
|
+
if "torchvision.ops." in m
|
963
|
+
else globals()[m]
|
964
|
+
) # get module
|
963
965
|
for j, a in enumerate(args):
|
964
966
|
if isinstance(a, str):
|
965
967
|
with contextlib.suppress(ValueError):
|
@@ -577,6 +577,16 @@ def is_jupyter():
|
|
577
577
|
return IS_COLAB or IS_KAGGLE
|
578
578
|
|
579
579
|
|
580
|
+
def is_runpod():
|
581
|
+
"""
|
582
|
+
Check if the current script is running inside a RunPod container.
|
583
|
+
|
584
|
+
Returns:
|
585
|
+
(bool): True if running in RunPod, False otherwise.
|
586
|
+
"""
|
587
|
+
return "RUNPOD_POD_ID" in os.environ
|
588
|
+
|
589
|
+
|
580
590
|
def is_docker() -> bool:
|
581
591
|
"""
|
582
592
|
Determine if the script is running inside a Docker container.
|
@@ -1042,7 +1052,7 @@ def set_sentry():
|
|
1042
1052
|
auto_enabling_integrations=False,
|
1043
1053
|
traces_sample_rate=1.0,
|
1044
1054
|
release=__version__,
|
1045
|
-
environment="
|
1055
|
+
environment="runpod" if is_runpod() else "production",
|
1046
1056
|
before_send=before_send,
|
1047
1057
|
ignore_errors=[KeyboardInterrupt, FileNotFoundError],
|
1048
1058
|
)
|
@@ -782,6 +782,19 @@ def cuda_is_available() -> bool:
|
|
782
782
|
return cuda_device_count() > 0
|
783
783
|
|
784
784
|
|
785
|
+
def is_sudo_available() -> bool:
|
786
|
+
"""
|
787
|
+
Check if the sudo command is available in the environment.
|
788
|
+
|
789
|
+
Returns:
|
790
|
+
(bool): True if the sudo command is available, False otherwise.
|
791
|
+
"""
|
792
|
+
if WINDOWS:
|
793
|
+
return False
|
794
|
+
cmd = "sudo --version"
|
795
|
+
return subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0
|
796
|
+
|
797
|
+
|
785
798
|
# Run checks and define constants
|
786
799
|
check_python("3.8", hard=False, verbose=True) # check python version
|
787
800
|
check_torchvision() # check torch-torchvision compatibility
|
@@ -12,6 +12,7 @@ from pathlib import Path
|
|
12
12
|
from typing import Union
|
13
13
|
|
14
14
|
import numpy as np
|
15
|
+
import thop
|
15
16
|
import torch
|
16
17
|
import torch.distributed as dist
|
17
18
|
import torch.nn as nn
|
@@ -30,11 +31,6 @@ from ultralytics.utils import (
|
|
30
31
|
)
|
31
32
|
from ultralytics.utils.checks import check_version
|
32
33
|
|
33
|
-
try:
|
34
|
-
import thop
|
35
|
-
except ImportError:
|
36
|
-
thop = None
|
37
|
-
|
38
34
|
# Version checks (all default to version>=min_version)
|
39
35
|
TORCH_1_9 = check_version(torch.__version__, "1.9.0")
|
40
36
|
TORCH_1_13 = check_version(torch.__version__, "1.13.0")
|
@@ -367,9 +363,6 @@ def model_info_for_loggers(trainer):
|
|
367
363
|
|
368
364
|
def get_flops(model, imgsz=640):
|
369
365
|
"""Return a YOLO model's FLOPs."""
|
370
|
-
if not thop:
|
371
|
-
return 0.0 # if not installed return 0.0 GFLOPs
|
372
|
-
|
373
366
|
try:
|
374
367
|
model = de_parallel(model)
|
375
368
|
p = next(model.parameters())
|
@@ -674,7 +667,7 @@ def profile(input, ops, n=10, device=None, max_num_obj=0):
|
|
674
667
|
m = m.half() if hasattr(m, "half") and isinstance(x, torch.Tensor) and x.dtype is torch.float16 else m
|
675
668
|
tf, tb, t = 0, 0, [0, 0, 0] # dt forward, backward
|
676
669
|
try:
|
677
|
-
flops = thop.profile(m, inputs=[x], verbose=False)[0] / 1e9 * 2
|
670
|
+
flops = thop.profile(m, inputs=[x], verbose=False)[0] / 1e9 * 2 # GFLOPs
|
678
671
|
except Exception:
|
679
672
|
flops = 0
|
680
673
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
2
|
|
3
|
-
from ultralytics.cfg import TASK2DATA, TASK2METRIC, get_save_dir
|
3
|
+
from ultralytics.cfg import TASK2DATA, TASK2METRIC, get_cfg, get_save_dir
|
4
4
|
from ultralytics.utils import DEFAULT_CFG, DEFAULT_CFG_DICT, LOGGER, NUM_THREADS, checks
|
5
5
|
|
6
6
|
|
@@ -134,7 +134,9 @@ def run_ray_tune(
|
|
134
134
|
tuner_callbacks = [WandbLoggerCallback(project="YOLOv8-tune")] if wandb else []
|
135
135
|
|
136
136
|
# Create the Ray Tune hyperparameter search tuner
|
137
|
-
tune_dir = get_save_dir(
|
137
|
+
tune_dir = get_save_dir(
|
138
|
+
get_cfg(DEFAULT_CFG, train_args), name=train_args.pop("name", "tune")
|
139
|
+
).resolve() # must be absolute dir
|
138
140
|
tune_dir.mkdir(parents=True, exist_ok=True)
|
139
141
|
tuner = tune.Tuner(
|
140
142
|
trainable_with_resources,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ultralytics
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.64
|
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.62 → ultralytics-8.3.64}/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.62 → ultralytics-8.3.64}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
File without changes
|
{ultralytics-8.3.62 → ultralytics-8.3.64}/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.62 → ultralytics-8.3.64}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
File without changes
|
{ultralytics-8.3.62 → ultralytics-8.3.64}/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
|