ultralytics 8.2.64__tar.gz → 8.2.66__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- {ultralytics-8.2.64/ultralytics.egg-info → ultralytics-8.2.66}/PKG-INFO +2 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/pyproject.toml +1 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/__init__.py +1 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/dataset.py +6 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/loaders.py +1 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/model.py +2 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/trainer.py +2 -7
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/hub/session.py +6 -4
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/detect/val.py +1 -1
- ultralytics-8.2.66/ultralytics/nn/modules/activation.py +22 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/tasks.py +1 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/checks.py +4 -4
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/torch_utils.py +0 -7
- {ultralytics-8.2.64 → ultralytics-8.2.66/ultralytics.egg-info}/PKG-INFO +2 -1
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics.egg-info/SOURCES.txt +1 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics.egg-info/requires.txt +3 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/LICENSE +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/README.md +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/setup.cfg +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/conftest.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_cli.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_cuda.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_engine.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_explorer.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_exports.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_integrations.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_python.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/tests/test_solutions.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/lvis.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/signature.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/base.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/build.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/data/utils.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/exporter.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/obb/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/world/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/world/train.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/models/yolo/world/train_world.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/analytics.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/parking_management.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/queue_management.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/speed_estimation.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/solutions/streamlit_inference.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.66
|
|
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
|
|
@@ -62,6 +62,7 @@ Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_versio
|
|
|
62
62
|
Requires-Dist: openvino>=2024.0.0; extra == "export"
|
|
63
63
|
Requires-Dist: tensorflow>=2.0.0; extra == "export"
|
|
64
64
|
Requires-Dist: tensorflowjs>=3.9.0; extra == "export"
|
|
65
|
+
Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
|
|
65
66
|
Requires-Dist: keras; extra == "export"
|
|
66
67
|
Requires-Dist: flatbuffers<100,>=23.5.26; platform_machine == "aarch64" and extra == "export"
|
|
67
68
|
Requires-Dist: numpy==1.23.5; platform_machine == "aarch64" and extra == "export"
|
|
@@ -101,6 +101,7 @@ export = [
|
|
|
101
101
|
"openvino>=2024.0.0", # OpenVINO export
|
|
102
102
|
"tensorflow>=2.0.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
|
|
103
103
|
"tensorflowjs>=3.9.0", # TF.js export, automatically installs tensorflow
|
|
104
|
+
"tensorstore>=0.1.63; platform_machine == 'aarch64' and python_version >= '3.9'", # for TF Raspberry Pi exports
|
|
104
105
|
"keras", # not installed automatically by tensorflow>=2.16
|
|
105
106
|
"flatbuffers>=23.5.26,<100; platform_machine == 'aarch64'", # update old 'flatbuffers' included inside tensorflow package
|
|
106
107
|
"numpy==1.23.5; platform_machine == 'aarch64'", # fix error: `np.bool` was a deprecated alias for the builtin `bool` when using TensorRT models on NVIDIA Jetson
|
|
@@ -431,6 +431,12 @@ class ClassificationDataset:
|
|
|
431
431
|
self.samples = self.samples[: round(len(self.samples) * args.fraction)]
|
|
432
432
|
self.prefix = colorstr(f"{prefix}: ") if prefix else ""
|
|
433
433
|
self.cache_ram = args.cache is True or str(args.cache).lower() == "ram" # cache images into RAM
|
|
434
|
+
if self.cache_ram:
|
|
435
|
+
LOGGER.warning(
|
|
436
|
+
"WARNING ⚠️ Classification `cache_ram` training has known memory leak in "
|
|
437
|
+
"https://github.com/ultralytics/ultralytics/issues/9824, setting `cache_ram=False`."
|
|
438
|
+
)
|
|
439
|
+
self.cache_ram = False
|
|
434
440
|
self.cache_disk = str(args.cache).lower() == "disk" # cache images on hard drive as uncompressed *.npy files
|
|
435
441
|
self.samples = self.verify_images() # filter out bad images
|
|
436
442
|
self.samples = [list(x) + [Path(x[0]).with_suffix(".npy"), None] for x in self.samples] # file, index, npy, im
|
|
@@ -545,7 +545,7 @@ def get_best_youtube_url(url, method="pytube"):
|
|
|
545
545
|
"""
|
|
546
546
|
if method == "pytube":
|
|
547
547
|
# Switched from pytube to pytubefix to resolve https://github.com/pytube/pytube/issues/1954
|
|
548
|
-
check_requirements("pytubefix
|
|
548
|
+
check_requirements("pytubefix>=6.5.2")
|
|
549
549
|
from pytubefix import YouTube
|
|
550
550
|
|
|
551
551
|
streams = YouTube(url).streams.filter(file_extension="mp4", only_video=True)
|
|
@@ -17,6 +17,7 @@ from ultralytics.utils import (
|
|
|
17
17
|
DEFAULT_CFG_DICT,
|
|
18
18
|
LOGGER,
|
|
19
19
|
RANK,
|
|
20
|
+
SETTINGS,
|
|
20
21
|
callbacks,
|
|
21
22
|
checks,
|
|
22
23
|
emojis,
|
|
@@ -286,7 +287,7 @@ class Model(nn.Module):
|
|
|
286
287
|
>>> model._load('path/to/weights.pth', task='detect')
|
|
287
288
|
"""
|
|
288
289
|
if weights.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")):
|
|
289
|
-
weights = checks.check_file(weights) #
|
|
290
|
+
weights = checks.check_file(weights, download_dir=SETTINGS["weights_dir"]) # download and return local file
|
|
290
291
|
weights = checks.check_model_file_from_stem(weights) # add suffix, i.e. yolov8n -> yolov8n.pt
|
|
291
292
|
|
|
292
293
|
if Path(weights).suffix == ".pt":
|
|
@@ -41,7 +41,6 @@ from ultralytics.utils.checks import check_amp, check_file, check_imgsz, check_m
|
|
|
41
41
|
from ultralytics.utils.dist import ddp_cleanup, generate_ddp_command
|
|
42
42
|
from ultralytics.utils.files import get_latest_run
|
|
43
43
|
from ultralytics.utils.torch_utils import (
|
|
44
|
-
TORCH_1_13,
|
|
45
44
|
EarlyStopping,
|
|
46
45
|
ModelEMA,
|
|
47
46
|
autocast,
|
|
@@ -266,11 +265,7 @@ class BaseTrainer:
|
|
|
266
265
|
if RANK > -1 and world_size > 1: # DDP
|
|
267
266
|
dist.broadcast(self.amp, src=0) # broadcast the tensor from rank 0 to all other ranks (returns None)
|
|
268
267
|
self.amp = bool(self.amp) # as boolean
|
|
269
|
-
self.scaler = (
|
|
270
|
-
torch.amp.GradScaler("cuda", enabled=self.amp)
|
|
271
|
-
if TORCH_1_13
|
|
272
|
-
else torch.cuda.amp.GradScaler(enabled=self.amp)
|
|
273
|
-
)
|
|
268
|
+
self.scaler = torch.cuda.amp.GradScaler(enabled=self.amp)
|
|
274
269
|
if world_size > 1:
|
|
275
270
|
self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK], find_unused_parameters=True)
|
|
276
271
|
|
|
@@ -512,7 +507,7 @@ class BaseTrainer:
|
|
|
512
507
|
self.last.write_bytes(serialized_ckpt) # save last.pt
|
|
513
508
|
if self.best_fitness == self.fitness:
|
|
514
509
|
self.best.write_bytes(serialized_ckpt) # save best.pt
|
|
515
|
-
if (self.save_period > 0) and (self.epoch
|
|
510
|
+
if (self.save_period > 0) and (self.epoch % self.save_period == 0):
|
|
516
511
|
(self.wdir / f"epoch{self.epoch}.pt").write_bytes(serialized_ckpt) # save epoch, i.e. 'epoch3.pt'
|
|
517
512
|
|
|
518
513
|
def get_dataset(self):
|
|
@@ -48,6 +48,7 @@ class HUBTrainingSession:
|
|
|
48
48
|
self.timers = {} # holds timers in ultralytics/utils/callbacks/hub.py
|
|
49
49
|
self.model = None
|
|
50
50
|
self.model_url = None
|
|
51
|
+
self.model_file = None
|
|
51
52
|
|
|
52
53
|
# Parse input
|
|
53
54
|
api_key, model_id, self.filename = self._parse_identifier(identifier)
|
|
@@ -91,10 +92,13 @@ class HUBTrainingSession:
|
|
|
91
92
|
raise ValueError(emojis("❌ The specified HUB model does not exist")) # TODO: improve error handling
|
|
92
93
|
|
|
93
94
|
self.model_url = f"{HUB_WEB_ROOT}/models/{self.model.id}"
|
|
95
|
+
if self.model.is_trained():
|
|
96
|
+
print(emojis(f"Loading trained HUB model {self.model_url} 🚀"))
|
|
97
|
+
self.model_file = self.model.get_weights_url("best")
|
|
98
|
+
return
|
|
94
99
|
|
|
100
|
+
# Set training args and start heartbeats for HUB to monitor agent
|
|
95
101
|
self._set_train_args()
|
|
96
|
-
|
|
97
|
-
# Start heartbeats for HUB to monitor agent
|
|
98
102
|
self.model.start_heartbeat(self.rate_limits["heartbeat"])
|
|
99
103
|
LOGGER.info(f"{PREFIX}View model at {self.model_url} 🚀")
|
|
100
104
|
|
|
@@ -195,8 +199,6 @@ class HUBTrainingSession:
|
|
|
195
199
|
ValueError: If the model is already trained, if required dataset information is missing, or if there are
|
|
196
200
|
issues with the provided training arguments.
|
|
197
201
|
"""
|
|
198
|
-
if self.model.is_trained():
|
|
199
|
-
raise ValueError(emojis(f"Model is already trained and uploaded to {self.model_url} 🚀"))
|
|
200
202
|
|
|
201
203
|
if self.model.is_resumable():
|
|
202
204
|
# Model has saved weights
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
|
+
"""Activation modules."""
|
|
3
|
+
|
|
4
|
+
import torch
|
|
5
|
+
import torch.nn as nn
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AGLU(nn.Module):
|
|
9
|
+
"""Unified activation function module from https://github.com/kostas1515/AGLU."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, device=None, dtype=None) -> None:
|
|
12
|
+
"""Initialize the Unified activation function."""
|
|
13
|
+
super().__init__()
|
|
14
|
+
self.act = nn.Softplus(beta=-1.0)
|
|
15
|
+
self.lambd = nn.Parameter(nn.init.uniform_(torch.empty(1, device=device, dtype=dtype))) # lambda parameter
|
|
16
|
+
self.kappa = nn.Parameter(nn.init.uniform_(torch.empty(1, device=device, dtype=dtype))) # kappa parameter
|
|
17
|
+
|
|
18
|
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
|
19
|
+
"""Compute the forward pass of the Unified activation function."""
|
|
20
|
+
lam = torch.clamp(self.lambd, min=0.0001)
|
|
21
|
+
y = torch.exp((1 / lam) * self.act((self.kappa * x) - torch.log(lam)))
|
|
22
|
+
return y # for AGLU simply return y * input
|
|
@@ -66,13 +66,13 @@ from ultralytics.utils.loss import (
|
|
|
66
66
|
v8PoseLoss,
|
|
67
67
|
v8SegmentationLoss,
|
|
68
68
|
)
|
|
69
|
+
from ultralytics.utils.ops import make_divisible
|
|
69
70
|
from ultralytics.utils.plotting import feature_visualization
|
|
70
71
|
from ultralytics.utils.torch_utils import (
|
|
71
72
|
fuse_conv_and_bn,
|
|
72
73
|
fuse_deconv_and_bn,
|
|
73
74
|
initialize_weights,
|
|
74
75
|
intersect_dicts,
|
|
75
|
-
make_divisible,
|
|
76
76
|
model_info,
|
|
77
77
|
scale_img,
|
|
78
78
|
time_sync,
|
|
@@ -484,7 +484,7 @@ def check_model_file_from_stem(model="yolov8n"):
|
|
|
484
484
|
return model
|
|
485
485
|
|
|
486
486
|
|
|
487
|
-
def check_file(file, suffix="", download=True, hard=True):
|
|
487
|
+
def check_file(file, suffix="", download=True, download_dir=".", hard=True):
|
|
488
488
|
"""Search/download file (if necessary) and return path."""
|
|
489
489
|
check_suffix(file, suffix) # optional
|
|
490
490
|
file = str(file).strip() # convert to string and strip spaces
|
|
@@ -497,12 +497,12 @@ def check_file(file, suffix="", download=True, hard=True):
|
|
|
497
497
|
return file
|
|
498
498
|
elif download and file.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")): # download
|
|
499
499
|
url = file # warning: Pathlib turns :// -> :/
|
|
500
|
-
file = url2file(file) # '%2F' to '/', split https://url.com/file.txt?auth
|
|
501
|
-
if
|
|
500
|
+
file = Path(download_dir) / url2file(file) # '%2F' to '/', split https://url.com/file.txt?auth
|
|
501
|
+
if file.exists():
|
|
502
502
|
LOGGER.info(f"Found {clean_url(url)} locally at {file}") # file already exists
|
|
503
503
|
else:
|
|
504
504
|
downloads.safe_download(url=url, file=file, unzip=False)
|
|
505
|
-
return file
|
|
505
|
+
return str(file)
|
|
506
506
|
else: # search
|
|
507
507
|
files = glob.glob(str(ROOT / "**" / file), recursive=True) or glob.glob(str(ROOT.parent / file)) # find file
|
|
508
508
|
if not files and hard:
|
|
@@ -424,13 +424,6 @@ def scale_img(img, ratio=1.0, same_shape=False, gs=32):
|
|
|
424
424
|
return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean
|
|
425
425
|
|
|
426
426
|
|
|
427
|
-
def make_divisible(x, divisor):
|
|
428
|
-
"""Returns nearest x divisible by divisor."""
|
|
429
|
-
if isinstance(divisor, torch.Tensor):
|
|
430
|
-
divisor = int(divisor.max()) # to int
|
|
431
|
-
return math.ceil(x / divisor) * divisor
|
|
432
|
-
|
|
433
|
-
|
|
434
427
|
def copy_attr(a, b, include=(), exclude=()):
|
|
435
428
|
"""Copies attributes from object 'b' to object 'a', with options to include/exclude certain attributes."""
|
|
436
429
|
for k, v in b.__dict__.items():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.66
|
|
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
|
|
@@ -62,6 +62,7 @@ Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_versio
|
|
|
62
62
|
Requires-Dist: openvino>=2024.0.0; extra == "export"
|
|
63
63
|
Requires-Dist: tensorflow>=2.0.0; extra == "export"
|
|
64
64
|
Requires-Dist: tensorflowjs>=3.9.0; extra == "export"
|
|
65
|
+
Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
|
|
65
66
|
Requires-Dist: keras; extra == "export"
|
|
66
67
|
Requires-Dist: flatbuffers<100,>=23.5.26; platform_machine == "aarch64" and extra == "export"
|
|
67
68
|
Requires-Dist: numpy==1.23.5; platform_machine == "aarch64" and extra == "export"
|
|
@@ -185,6 +185,7 @@ ultralytics/nn/__init__.py
|
|
|
185
185
|
ultralytics/nn/autobackend.py
|
|
186
186
|
ultralytics/nn/tasks.py
|
|
187
187
|
ultralytics/nn/modules/__init__.py
|
|
188
|
+
ultralytics/nn/modules/activation.py
|
|
188
189
|
ultralytics/nn/modules/block.py
|
|
189
190
|
ultralytics/nn/modules/conv.py
|
|
190
191
|
ultralytics/nn/modules/head.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.64 → ultralytics-8.2.66}/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.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.2.64 → ultralytics-8.2.66}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|