ultralytics 8.1.16__tar.gz → 8.1.18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ultralytics might be problematic. Click here for more details.
- {ultralytics-8.1.16/ultralytics.egg-info → ultralytics-8.1.18}/PKG-INFO +2 -2
- {ultralytics-8.1.16 → ultralytics-8.1.18}/pyproject.toml +1 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_explorer.py +5 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_python.py +2 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/__init__.py +1 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/dataset.py +22 -15
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/utils.py +2 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/exporter.py +10 -4
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/model.py +4 -5
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/trainer.py +1 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/obb/train.py +1 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/speed_estimation.py +3 -2
- {ultralytics-8.1.16 → ultralytics-8.1.18/ultralytics.egg-info}/PKG-INFO +2 -2
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics.egg-info/requires.txt +1 -1
- {ultralytics-8.1.16 → ultralytics-8.1.18}/LICENSE +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/README.md +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/setup.cfg +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_cli.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_cuda.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_engine.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/tests/test_integrations.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/assets/bus.jpg +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/assets/zidane.jpg +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/VOC.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco128.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/coco8.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/dota8.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/datasets/xView.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/default.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-world-t2i.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/trackers/botsort.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/annotator.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/augment.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/base.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/build.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/converter.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/explorer/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/explorer/explorer.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/explorer/gui/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/explorer/gui/dash.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/explorer/utils.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/loaders.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/data/split_dota.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/predictor.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/results.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/tuner.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/engine/validator.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/hub/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/hub/auth.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/hub/session.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/hub/utils.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/model.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/prompt.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/utils.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/fastsam/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/nas/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/nas/model.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/nas/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/nas/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/rtdetr/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/rtdetr/model.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/rtdetr/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/rtdetr/train.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/rtdetr/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/amg.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/build.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/model.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/decoders.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/encoders.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/sam.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/modules/transformer.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/sam/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/utils/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/utils/loss.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/utils/ops.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/classify/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/classify/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/classify/train.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/classify/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/detect/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/detect/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/detect/train.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/detect/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/model.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/obb/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/obb/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/obb/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/pose/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/pose/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/pose/train.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/pose/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/segment/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/segment/predict.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/segment/train.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/models/yolo/segment/val.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/autobackend.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/block.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/conv.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/head.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/transformer.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/modules/utils.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/nn/tasks.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/ai_gym.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/distance_calculation.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/heatmap.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/solutions/object_counter.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/basetrack.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/bot_sort.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/byte_tracker.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/track.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/utils/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/utils/gmc.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/utils/kalman_filter.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/trackers/utils/matching.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/autobatch.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/benchmarks.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/__init__.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/base.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/clearml.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/comet.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/dvc.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/hub.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/mlflow.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/neptune.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/raytune.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/tensorboard.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/callbacks/wb.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/checks.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/dist.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/downloads.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/errors.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/files.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/instance.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/loss.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/metrics.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/ops.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/patches.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/plotting.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/tal.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/torch_utils.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/triton.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/utils/tuner.py +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics.egg-info/SOURCES.txt +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics.egg-info/dependency_links.txt +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics.egg-info/entry_points.txt +0 -0
- {ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.18
|
|
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
|
|
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
|
|
55
55
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
|
56
56
|
Requires-Dist: mkdocs-jupyter; extra == "dev"
|
|
57
57
|
Requires-Dist: mkdocs-redirects; extra == "dev"
|
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin>=0.0.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.0.44; extra == "dev"
|
|
59
59
|
Provides-Extra: export
|
|
60
60
|
Requires-Dist: onnx>=1.12.0; extra == "export"
|
|
61
61
|
Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_version <= "3.11") and extra == "export"
|
|
@@ -93,7 +93,7 @@ dev = [
|
|
|
93
93
|
"mkdocstrings[python]",
|
|
94
94
|
"mkdocs-jupyter", # for notebooks
|
|
95
95
|
"mkdocs-redirects", # for 301 redirects
|
|
96
|
-
"mkdocs-ultralytics-plugin>=0.0.
|
|
96
|
+
"mkdocs-ultralytics-plugin>=0.0.44", # for meta descriptions and images, dates and authors
|
|
97
97
|
]
|
|
98
98
|
export = [
|
|
99
99
|
"onnx>=1.12.0", # ONNX export
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
2
2
|
|
|
3
3
|
import PIL
|
|
4
|
+
import pytest
|
|
4
5
|
|
|
5
6
|
from ultralytics import Explorer
|
|
6
7
|
from ultralytics.utils import ASSETS
|
|
7
8
|
|
|
8
9
|
|
|
10
|
+
@pytest.mark.slow
|
|
9
11
|
def test_similarity():
|
|
10
12
|
"""Test similarity calculations and SQL queries for correctness and response length."""
|
|
11
13
|
exp = Explorer()
|
|
@@ -22,6 +24,7 @@ def test_similarity():
|
|
|
22
24
|
assert len(sql) > 0
|
|
23
25
|
|
|
24
26
|
|
|
27
|
+
@pytest.mark.slow
|
|
25
28
|
def test_det():
|
|
26
29
|
"""Test detection functionalities and ensure the embedding table has bounding boxes."""
|
|
27
30
|
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
|
|
@@ -34,6 +37,7 @@ def test_det():
|
|
|
34
37
|
assert isinstance(similar, PIL.Image.Image)
|
|
35
38
|
|
|
36
39
|
|
|
40
|
+
@pytest.mark.slow
|
|
37
41
|
def test_seg():
|
|
38
42
|
"""Test segmentation functionalities and verify the embedding table includes masks."""
|
|
39
43
|
exp = Explorer(data="coco8-seg.yaml", model="yolov8n-seg.pt")
|
|
@@ -45,6 +49,7 @@ def test_seg():
|
|
|
45
49
|
assert isinstance(similar, PIL.Image.Image)
|
|
46
50
|
|
|
47
51
|
|
|
52
|
+
@pytest.mark.slow
|
|
48
53
|
def test_pose():
|
|
49
54
|
"""Test pose estimation functionalities and check the embedding table for keypoints."""
|
|
50
55
|
exp = Explorer(data="coco8-pose.yaml", model="yolov8n-pose.pt")
|
|
@@ -555,6 +555,7 @@ def test_hub():
|
|
|
555
555
|
|
|
556
556
|
@pytest.fixture
|
|
557
557
|
def image():
|
|
558
|
+
"""Loads an image from a predefined source using OpenCV."""
|
|
558
559
|
return cv2.imread(str(SOURCE))
|
|
559
560
|
|
|
560
561
|
|
|
@@ -568,6 +569,7 @@ def image():
|
|
|
568
569
|
],
|
|
569
570
|
)
|
|
570
571
|
def test_classify_transforms_train(image, auto_augment, erasing, force_color_jitter):
|
|
572
|
+
"""Tests classification transforms during training with various augmentation settings."""
|
|
571
573
|
import torchvision.transforms as T
|
|
572
574
|
|
|
573
575
|
from ultralytics.data.augment import classify_augmentations
|
|
@@ -226,35 +226,42 @@ class YOLODataset(BaseDataset):
|
|
|
226
226
|
# Classification dataloaders -------------------------------------------------------------------------------------------
|
|
227
227
|
class ClassificationDataset(torchvision.datasets.ImageFolder):
|
|
228
228
|
"""
|
|
229
|
-
YOLO
|
|
229
|
+
Extends torchvision ImageFolder to support YOLO classification tasks, offering functionalities like image
|
|
230
|
+
augmentation, caching, and verification. It's designed to efficiently handle large datasets for training deep
|
|
231
|
+
learning models, with optional image transformations and caching mechanisms to speed up training.
|
|
230
232
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
+
This class allows for augmentations using both torchvision and Albumentations libraries, and supports caching images
|
|
234
|
+
in RAM or on disk to reduce IO overhead during training. Additionally, it implements a robust verification process
|
|
235
|
+
to ensure data integrity and consistency.
|
|
233
236
|
|
|
234
237
|
Attributes:
|
|
235
|
-
cache_ram (bool):
|
|
236
|
-
cache_disk (bool):
|
|
237
|
-
samples (list):
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
cache_ram (bool): Indicates if caching in RAM is enabled.
|
|
239
|
+
cache_disk (bool): Indicates if caching on disk is enabled.
|
|
240
|
+
samples (list): A list of tuples, each containing the path to an image, its class index, path to its .npy cache
|
|
241
|
+
file (if caching on disk), and optionally the loaded image array (if caching in RAM).
|
|
242
|
+
torch_transforms (callable): PyTorch transforms to be applied to the images.
|
|
240
243
|
"""
|
|
241
244
|
|
|
242
|
-
def __init__(self, root, args, augment=False,
|
|
245
|
+
def __init__(self, root, args, augment=False, prefix=""):
|
|
243
246
|
"""
|
|
244
247
|
Initialize YOLO object with root, image size, augmentations, and cache settings.
|
|
245
248
|
|
|
246
249
|
Args:
|
|
247
|
-
root (str):
|
|
248
|
-
args (Namespace):
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
root (str): Path to the dataset directory where images are stored in a class-specific folder structure.
|
|
251
|
+
args (Namespace): Configuration containing dataset-related settings such as image size, augmentation
|
|
252
|
+
parameters, and cache settings. It includes attributes like `imgsz` (image size), `fraction` (fraction
|
|
253
|
+
of data to use), `scale`, `fliplr`, `flipud`, `cache` (disk or RAM caching for faster training),
|
|
254
|
+
`auto_augment`, `hsv_h`, `hsv_s`, `hsv_v`, and `crop_fraction`.
|
|
255
|
+
augment (bool, optional): Whether to apply augmentations to the dataset. Default is False.
|
|
256
|
+
prefix (str, optional): Prefix for logging and cache filenames, aiding in dataset identification and
|
|
257
|
+
debugging. Default is an empty string.
|
|
251
258
|
"""
|
|
252
259
|
super().__init__(root=root)
|
|
253
260
|
if augment and args.fraction < 1.0: # reduce training fraction
|
|
254
261
|
self.samples = self.samples[: round(len(self.samples) * args.fraction)]
|
|
255
262
|
self.prefix = colorstr(f"{prefix}: ") if prefix else ""
|
|
256
|
-
self.cache_ram = cache is True or cache == "ram"
|
|
257
|
-
self.cache_disk = cache == "disk"
|
|
263
|
+
self.cache_ram = args.cache is True or args.cache == "ram" # cache images into RAM
|
|
264
|
+
self.cache_disk = args.cache == "disk" # cache images on hard drive as uncompressed *.npy files
|
|
258
265
|
self.samples = self.verify_images() # filter out bad images
|
|
259
266
|
self.samples = [list(x) + [Path(x[0]).with_suffix(".npy"), None] for x in self.samples] # file, index, npy, im
|
|
260
267
|
scale = (1.0 - args.scale, 1.0) # (0.08, 1.0)
|
|
@@ -467,7 +467,6 @@ class HUBDatasetStats:
|
|
|
467
467
|
|
|
468
468
|
self.hub_dir = Path(f'{data["path"]}-hub')
|
|
469
469
|
self.im_dir = self.hub_dir / "images"
|
|
470
|
-
self.im_dir.mkdir(parents=True, exist_ok=True) # makes /images
|
|
471
470
|
self.stats = {"nc": len(data["names"]), "names": list(data["names"].values())} # statistics dictionary
|
|
472
471
|
self.data = data
|
|
473
472
|
|
|
@@ -551,6 +550,7 @@ class HUBDatasetStats:
|
|
|
551
550
|
|
|
552
551
|
# Save, print and return
|
|
553
552
|
if save:
|
|
553
|
+
self.hub_dir.mkdir(parents=True, exist_ok=True) # makes dataset-hub/
|
|
554
554
|
stats_path = self.hub_dir / "stats.json"
|
|
555
555
|
LOGGER.info(f"Saving {stats_path.resolve()}...")
|
|
556
556
|
with open(stats_path, "w") as f:
|
|
@@ -563,6 +563,7 @@ class HUBDatasetStats:
|
|
|
563
563
|
"""Compress images for Ultralytics HUB."""
|
|
564
564
|
from ultralytics.data import YOLODataset # ClassificationDataset
|
|
565
565
|
|
|
566
|
+
self.im_dir.mkdir(parents=True, exist_ok=True) # makes dataset-hub/images/
|
|
566
567
|
for split in "train", "val", "test":
|
|
567
568
|
if self.data.get(split) is None:
|
|
568
569
|
continue
|
|
@@ -343,6 +343,8 @@ class Exporter:
|
|
|
343
343
|
requirements = ["onnx>=1.12.0"]
|
|
344
344
|
if self.args.simplify:
|
|
345
345
|
requirements += ["onnxsim>=0.4.33", "onnxruntime-gpu" if torch.cuda.is_available() else "onnxruntime"]
|
|
346
|
+
if ARM64:
|
|
347
|
+
check_requirements("cmake") # 'cmake' is needed to build onnxsim on aarch64
|
|
346
348
|
check_requirements(requirements)
|
|
347
349
|
import onnx # noqa
|
|
348
350
|
|
|
@@ -712,16 +714,21 @@ class Exporter:
|
|
|
712
714
|
try:
|
|
713
715
|
import tensorflow as tf # noqa
|
|
714
716
|
except ImportError:
|
|
715
|
-
|
|
717
|
+
suffix = "-macos" if MACOS else "-aarch64" if ARM64 else "" if cuda else "-cpu"
|
|
718
|
+
version = "" if ARM64 else "<=2.13.1"
|
|
719
|
+
check_requirements(f"tensorflow{suffix}{version}")
|
|
716
720
|
import tensorflow as tf # noqa
|
|
721
|
+
if ARM64:
|
|
722
|
+
check_requirements("cmake") # 'cmake' is needed to build onnxsim on aarch64
|
|
717
723
|
check_requirements(
|
|
718
724
|
(
|
|
719
|
-
"onnx",
|
|
725
|
+
"onnx>=1.12.0",
|
|
720
726
|
"onnx2tf>=1.15.4,<=1.17.5",
|
|
721
727
|
"sng4onnx>=1.0.1",
|
|
722
728
|
"onnxsim>=0.4.33",
|
|
723
729
|
"onnx_graphsurgeon>=0.3.26",
|
|
724
730
|
"tflite_support",
|
|
731
|
+
"flatbuffers>=23.5.26,<100", # update old 'flatbuffers' included inside tensorflow package
|
|
725
732
|
"onnxruntime-gpu" if cuda else "onnxruntime",
|
|
726
733
|
),
|
|
727
734
|
cmds="--extra-index-url https://pypi.ngc.nvidia.com",
|
|
@@ -860,8 +867,7 @@ class Exporter:
|
|
|
860
867
|
@try_export
|
|
861
868
|
def export_tfjs(self, prefix=colorstr("TensorFlow.js:")):
|
|
862
869
|
"""YOLOv8 TensorFlow.js export."""
|
|
863
|
-
|
|
864
|
-
check_requirements(["jax<=0.4.21", "jaxlib<=0.4.21", "tensorflowjs"])
|
|
870
|
+
check_requirements("tensorflowjs")
|
|
865
871
|
import tensorflow as tf
|
|
866
872
|
import tensorflowjs as tfjs # noqa
|
|
867
873
|
|
|
@@ -5,7 +5,6 @@ import sys
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Union
|
|
7
7
|
|
|
8
|
-
import PIL
|
|
9
8
|
import numpy as np
|
|
10
9
|
import torch
|
|
11
10
|
|
|
@@ -146,7 +145,7 @@ class Model(nn.Module):
|
|
|
146
145
|
|
|
147
146
|
def __call__(
|
|
148
147
|
self,
|
|
149
|
-
source: Union[str, Path, int, list, tuple,
|
|
148
|
+
source: Union[str, Path, int, list, tuple, np.ndarray, torch.Tensor] = None,
|
|
150
149
|
stream: bool = False,
|
|
151
150
|
**kwargs,
|
|
152
151
|
) -> list:
|
|
@@ -345,7 +344,7 @@ class Model(nn.Module):
|
|
|
345
344
|
|
|
346
345
|
def embed(
|
|
347
346
|
self,
|
|
348
|
-
source: Union[str, Path, int, list, tuple,
|
|
347
|
+
source: Union[str, Path, int, list, tuple, np.ndarray, torch.Tensor] = None,
|
|
349
348
|
stream: bool = False,
|
|
350
349
|
**kwargs,
|
|
351
350
|
) -> list:
|
|
@@ -373,7 +372,7 @@ class Model(nn.Module):
|
|
|
373
372
|
|
|
374
373
|
def predict(
|
|
375
374
|
self,
|
|
376
|
-
source: Union[str, Path, int, list, tuple,
|
|
375
|
+
source: Union[str, Path, int, list, tuple, np.ndarray, torch.Tensor] = None,
|
|
377
376
|
stream: bool = False,
|
|
378
377
|
predictor=None,
|
|
379
378
|
**kwargs,
|
|
@@ -431,7 +430,7 @@ class Model(nn.Module):
|
|
|
431
430
|
|
|
432
431
|
def track(
|
|
433
432
|
self,
|
|
434
|
-
source: Union[str, Path, int, list, tuple,
|
|
433
|
+
source: Union[str, Path, int, list, tuple, np.ndarray, torch.Tensor] = None,
|
|
435
434
|
stream: bool = False,
|
|
436
435
|
persist: bool = False,
|
|
437
436
|
**kwargs,
|
|
@@ -252,7 +252,7 @@ class BaseTrainer:
|
|
|
252
252
|
if any(x in k for x in freeze_layer_names):
|
|
253
253
|
LOGGER.info(f"Freezing layer '{k}'")
|
|
254
254
|
v.requires_grad = False
|
|
255
|
-
elif not v.requires_grad:
|
|
255
|
+
elif not v.requires_grad and v.dtype.is_floating_point: # only floating point Tensor can require gradients
|
|
256
256
|
LOGGER.info(
|
|
257
257
|
f"WARNING ⚠️ setting 'requires_grad=True' for frozen layer '{k}'. "
|
|
258
258
|
"See ultralytics.engine.trainer for customization of frozen layers."
|
|
@@ -15,7 +15,7 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
|
|
|
15
15
|
```python
|
|
16
16
|
from ultralytics.models.yolo.obb import OBBTrainer
|
|
17
17
|
|
|
18
|
-
args = dict(model='yolov8n-
|
|
18
|
+
args = dict(model='yolov8n-obb.pt', data='dota8.yaml', epochs=3)
|
|
19
19
|
trainer = OBBTrainer(overrides=args)
|
|
20
20
|
trainer.train()
|
|
21
21
|
```
|
|
@@ -154,13 +154,14 @@ class SpeedEstimator:
|
|
|
154
154
|
self.trk_previous_times[trk_id] = time()
|
|
155
155
|
self.trk_previous_points[trk_id] = track[-1]
|
|
156
156
|
|
|
157
|
-
def estimate_speed(self, im0, tracks):
|
|
157
|
+
def estimate_speed(self, im0, tracks, region_color=(255, 0, 0)):
|
|
158
158
|
"""
|
|
159
159
|
Calculate object based on tracking data.
|
|
160
160
|
|
|
161
161
|
Args:
|
|
162
162
|
im0 (nd array): Image
|
|
163
163
|
tracks (list): List of tracks obtained from the object tracking process.
|
|
164
|
+
region_color (tuple): Color to use when drawing regions.
|
|
164
165
|
"""
|
|
165
166
|
self.im0 = im0
|
|
166
167
|
if tracks[0].boxes.id is None:
|
|
@@ -170,7 +171,7 @@ class SpeedEstimator:
|
|
|
170
171
|
self.extract_tracks(tracks)
|
|
171
172
|
|
|
172
173
|
self.annotator = Annotator(self.im0, line_width=2)
|
|
173
|
-
self.annotator.draw_region(reg_pts=self.reg_pts, color=
|
|
174
|
+
self.annotator.draw_region(reg_pts=self.reg_pts, color=region_color, thickness=self.region_thickness)
|
|
174
175
|
|
|
175
176
|
for box, trk_id, cls in zip(self.boxes, self.trk_ids, self.clss):
|
|
176
177
|
track = self.store_track_info(trk_id, box)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ultralytics
|
|
3
|
-
Version: 8.1.
|
|
3
|
+
Version: 8.1.18
|
|
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
|
|
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
|
|
|
55
55
|
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
|
56
56
|
Requires-Dist: mkdocs-jupyter; extra == "dev"
|
|
57
57
|
Requires-Dist: mkdocs-redirects; extra == "dev"
|
|
58
|
-
Requires-Dist: mkdocs-ultralytics-plugin>=0.0.
|
|
58
|
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.0.44; extra == "dev"
|
|
59
59
|
Provides-Extra: export
|
|
60
60
|
Requires-Dist: onnx>=1.12.0; extra == "export"
|
|
61
61
|
Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_version <= "3.11") and extra == "export"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
RENAMED
|
File without changes
|
{ultralytics-8.1.16 → ultralytics-8.1.18}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|