kaiko-eva 0.1.6__tar.gz → 0.1.8__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 kaiko-eva might be problematic. Click here for more details.
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/PKG-INFO +3 -2
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/pyproject.toml +3 -2
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/dataloaders/dataloader.py +5 -2
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datamodules/datamodule.py +42 -5
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datamodules/schemas.py +18 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/__init__.py +4 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/base.py +23 -0
- kaiko_eva-0.1.8/src/eva/core/data/datasets/typings.py +18 -0
- kaiko_eva-0.1.8/src/eva/core/data/samplers/__init__.py +7 -0
- kaiko_eva-0.1.8/src/eva/core/data/samplers/classification/__init__.py +5 -0
- kaiko_eva-0.1.8/src/eva/core/data/samplers/classification/balanced.py +96 -0
- kaiko_eva-0.1.8/src/eva/core/data/samplers/random.py +39 -0
- kaiko_eva-0.1.8/src/eva/core/data/samplers/sampler.py +33 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/module.py +30 -9
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/__init__.py +8 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/head.py +19 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/utils/__init__.py +2 -1
- kaiko_eva-0.1.8/src/eva/core/models/modules/utils/checkpoint.py +21 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/__init__.py +3 -1
- kaiko_eva-0.1.8/src/eva/core/models/wrappers/from_torchhub.py +93 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/functional.py +4 -2
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/trainer.py +8 -4
- kaiko_eva-0.1.8/src/eva/vision/data/datasets/segmentation/_total_segmentator.py +91 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/consep.py +4 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/lits.py +3 -3
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/total_segmentator_2d.py +92 -37
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/vision.py +1 -18
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/losses/dice.py +0 -3
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/__init__.py +5 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/defaults/segmentation/multiclass.py +30 -6
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/segmentation/__init__.py +4 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/segmentation/_utils.py +1 -2
- kaiko_eva-0.1.8/src/eva/vision/metrics/segmentation/dice.py +69 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/segmentation/generalized_dice.py +2 -4
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/segmentation/mean_iou.py +4 -8
- kaiko_eva-0.1.8/src/eva/vision/metrics/segmentation/monai_dice.py +57 -0
- kaiko_eva-0.1.8/src/eva/vision/metrics/wrappers/__init__.py +5 -0
- kaiko_eva-0.1.8/src/eva/vision/metrics/wrappers/monai.py +32 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/modules/semantic_segmentation.py +19 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/__init__.py +2 -2
- kaiko_eva-0.1.8/src/eva/vision/models/networks/backbones/torchhub/__init__.py +5 -0
- kaiko_eva-0.1.8/src/eva/vision/models/networks/backbones/torchhub/backbones.py +61 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/decoder2d.py +1 -1
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/wrappers/__init__.py +1 -1
- kaiko_eva-0.1.8/tests/eva/core/data/samplers/__init__.py +1 -0
- kaiko_eva-0.1.8/tests/eva/core/data/samplers/_utils.py +30 -0
- kaiko_eva-0.1.8/tests/eva/core/data/samplers/classification/__init__.py +1 -0
- kaiko_eva-0.1.8/tests/eva/core/data/samplers/classification/test_balanced.py +75 -0
- kaiko_eva-0.1.8/tests/eva/core/models/wrappers/test_from_torchub.py +76 -0
- kaiko_eva-0.1.8/tests/eva/vision/data/datasets/segmentation/test_total_segmentator.py +130 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/defaults/segmentation/test_multiclass.py +6 -1
- kaiko_eva-0.1.8/tests/eva/vision/metrics/segmentation/test_dice.py +48 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/test_vision_cli.py +2 -2
- kaiko_eva-0.1.6/src/eva/core/data/samplers/__init__.py +0 -5
- kaiko_eva-0.1.6/src/eva/core/data/samplers/sampler.py +0 -6
- kaiko_eva-0.1.6/tests/eva/vision/data/datasets/segmentation/test_total_segmentator.py +0 -68
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/LICENSE +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/README.md +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/__main__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/__version__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/config.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/_manifest.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/classification.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/segmentation.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/callbacks/writers/embeddings/typings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/cli/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/cli/cli.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/cli/logo.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/cli/setup.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/dataloaders/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datamodules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datamodules/call.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/classification/embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/classification/multi_embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/dataset.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/datasets/embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/splitting/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/splitting/random.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/splitting/stratified.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/dtype/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/dtype/array.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/padding/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/padding/pad_2d_tensor.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/sampling/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/data/transforms/sampling/sample_from_axis.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/interface/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/interface/interface.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/dummy.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/experimental_loggers.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/log/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/log/image.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/log/parameters.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/log/utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/loggers/loggers.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/losses/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/losses/cross_entropy.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/average_loss.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/binary_balanced_accuracy.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/defaults/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/defaults/classification/binary.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/defaults/classification/multiclass.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/collection.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/metric.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/schemas.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/metrics/structs/typings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/inference.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/module.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/typings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/utils/batch_postprocess.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/modules/utils/grad.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/networks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/networks/mlp.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/transforms/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/transforms/extract_cls_features.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/transforms/extract_patch_features.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/from_function.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/huggingface.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/models/wrappers/onnx.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/_logging.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/_recorder.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/trainers/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/clone.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/io/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/io/dataframe.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/io/gz.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/memory.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/multiprocessing.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/operations.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/parser.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/progress_bar.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/core/utils/workers.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/callbacks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/callbacks/loggers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/callbacks/loggers/batch/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/callbacks/loggers/batch/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/callbacks/loggers/batch/segmentation.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/_validators.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/bach.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/camelyon16.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/crc.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/mhist.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/panda.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/patch_camelyon.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/classification/wsi.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/bcss.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/lits_balanced.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/segmentation/monusac.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/structs.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/datasets/wsi.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/common/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/common/resize_and_clamp.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/common/resize_and_crop.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/normalization/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/normalization/clamp.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/normalization/functional/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/normalization/functional/rescale_intensity.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/transforms/normalization/rescale_intensity.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/backends/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/backends/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/backends/openslide.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/backends/pil.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/backends/tiffslide.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/coordinates.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/mask.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/foreground_grid.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/grid.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/data/wsi/patching/samplers/random.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/losses/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/defaults/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/metrics/segmentation/BUILD +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/modules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/abmil.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/bioptimus.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/gigapath.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/histai.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/kaiko.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/lunit.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/mahmood.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/owkin.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/pathology/paige.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/registry.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/timm/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/timm/backbones.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/universal/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/backbones/universal/vit.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/base.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/linear.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/semantic/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/semantic/common.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/semantic/with_image.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/networks/decoders/segmentation/typings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/wrappers/from_registry.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/models/wrappers/from_timm.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/colormap.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/convert.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/image.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/mat.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/nifti.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/src/eva/vision/utils/io/text.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/_cli.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/archives/test.txt.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_0_shape_8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_1_shape_8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_2_shape_8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_3_shape_8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_4_shape_1x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_5_shape_1x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_6_shape_1x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_7_shape_1x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/embeddings/manifest.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_0_shape_6x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_1_shape_3x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_2_shape_1x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_3_shape_2x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_4_shape_5x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_5_shape_3x8.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_6_shape_1x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_7_shape_6x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_8_shape_2x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_9_shape_5x8_list.pt +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/core/datasets/multi-embeddings/manifest.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/images/random_bgr_32x32.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/images/random_grayscale_32x32.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b003.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b004.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b005.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b006.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is003.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is004.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is005.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is006.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv003.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv004.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv005.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv006.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n003.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n004.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n005.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n006.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-A2-A0CM-DX1_xmin18562_ymin56852_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-A7-A4SD-DX1_xmin53807_ymin11871_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-AR-A0TS-DX1_xmin118843_ymin22812_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-AR-A1AQ-DX1_xmin18171_ymin38296_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-C8-A3XY-DX1_xmin76297_ymin35510_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-D8-A1XQ-DX1_xmin61261_ymin33317_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-EW-A1P4-DX1_xmin17256_ymin35430_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-GI-A2C9-DX1_xmin20882_ymin11843_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-OL-A5D6-DX1_xmin115108_ymin40554_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/masks/TCGA-OL-A5D7-DX1_xmin114443_ymin22490_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-A2-A0CM-DX1_xmin18562_ymin56852_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-A7-A4SD-DX1_xmin53807_ymin11871_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-AR-A0TS-DX1_xmin118843_ymin22812_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-AR-A1AQ-DX1_xmin18171_ymin38296_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-C8-A3XY-DX1_xmin76297_ymin35510_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-D8-A1XQ-DX1_xmin61261_ymin33317_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-EW-A1P4-DX1_xmin17256_ymin35430_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-GI-A2C9-DX1_xmin20882_ymin11843_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-OL-A5D6-DX1_xmin115108_ymin40554_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/bcss/rgbs_colorNormalized/TCGA-OL-A5D7-DX1_xmin114443_ymin22490_MPP-0.2500.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/testing/images/test_001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/testing/images/test_002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/testing/reference.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/training/normal/normal_001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/training/normal/normal_002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/training/tumor/tumor_001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/camelyon16/training/tumor/tumor_002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Images/test_1.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Images/test_2.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Images/test_3.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Labels/test_1.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Labels/test_2.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Test/Labels/test_3.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Images/train_1.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Images/train_2.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Images/train_3.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Images/train_4.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Labels/train_1.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Labels/train_2.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Labels/train_3.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/consep/Train/Labels/train_4.mat +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/lits/Training_Batch2/segmentation-31.nii +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/lits/Training_Batch2/segmentation-45.nii +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/lits/Training_Batch2/volume-31.nii +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/lits/Training_Batch2/volume-45.nii +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/annotations.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaa.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aab.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aac.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aae.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaf.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aag.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aah.png +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_1.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_1.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_2.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_2.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_3.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JG-01Z-00-DX1/TCGA-2Z-A9JG-01Z-00-DX1_3.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JN-01Z-00-DX1/TCGA-2Z-A9JN-01Z-00-DX1_1.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC Testing Data and Annotations/TCGA-2Z-A9JN-01Z-00-DX1/TCGA-2Z-A9JN-01Z-00-DX1_1.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-55-1594-01Z-00-DX1/TCGA-55-1594-01Z-00-DX1_003.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-55-1594-01Z-00-DX1/TCGA-55-1594-01Z-00-DX1_003.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-5P-A9K0-01Z-00-DX1/TCGA-5P-A9K0-01Z-00-DX1_3.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-5P-A9K0-01Z-00-DX1/TCGA-5P-A9K0-01Z-00-DX1_3.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-7760-01Z-00-DX1/TCGA-69-7760-01Z-00-DX1_001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-7760-01Z-00-DX1/TCGA-69-7760-01Z-00-DX1_001.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-A59K-01Z-00-DX1/TCGA-69-A59K-01Z-00-DX1_001.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-A59K-01Z-00-DX1/TCGA-69-A59K-01Z-00-DX1_001.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-A59K-01Z-00-DX1/TCGA-69-A59K-01Z-00-DX1_002.tif +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/monusac/MoNuSAC_images_and_annotations/TCGA-69-A59K-01Z-00-DX1/TCGA-69-A59K-01Z-00-DX1_002.xml +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/0214df71ae527e2144021178c453d204.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/02d302a8d723fa00331f373091b29135.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/157565e23ba28d5a42f63f34f3dd4425.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/682a1fd346b6fff340afbdb80c2f7caf.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/8582b59b41635fa38401d1bddad66707.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/8c357871e57c5c60277230412f2d9028.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/979cf5a2fa4079eaf74343d6ff5e1b51.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/9dd40c0127d217bc4917e4db40e06e94.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/9ed8ec7bf90653bc4ca86b3ca53cbb96.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/a04310d441e8d2c7a5066627baeec9b6.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_images/fb8886059879eaac70139336cb525838.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/panda/train_with_noisy_labels.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_test_x.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_test_y.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_train_x.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_train_y.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_valid_x.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_valid_y.h5 +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/meta.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/ct.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/semantic_labels/masks.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/ct.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/semantic_labels/masks.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/ct.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/semantic_labels/masks.nii.gz +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/wsi/0/a.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/wsi/0/b.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/wsi/1/a.tiff +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/assets/vision/datasets/wsi/manifest.csv +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/conftest.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/callbacks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/callbacks/conftest.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/callbacks/writers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/callbacks/writers/embeddings/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/callbacks/writers/embeddings/test_classification.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/dataloaders/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/dataloaders/test_dataloader.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datamodules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datamodules/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datamodules/test_datamodule.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datamodules/test_schemas.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datasets/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datasets/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datasets/classification/test_embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/datasets/classification/test_multi_embeddings.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/splitting/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/splitting/test_random.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/splitting/test_stratified.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/transforms/padding/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/transforms/padding/test_pad_2d_tensor.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/transforms/sampling/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/data/transforms/sampling/test_sample_from_axis.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/core/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/core/test_metric_module.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/core/test_schemas.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/defaults/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/defaults/classification/test_binary.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/defaults/classification/test_multiclass.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/test_average_loss.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/metrics/test_binary_balanced_accuracy.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/conftest.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/test_head.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/test_inference.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/utils/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/modules/utils/test_batch_postproces.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/networks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/networks/test_mlp.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/wrappers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/wrappers/test_from_function.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/wrappers/test_huggingface.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/models/wrappers/test_onnx.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/test_cli.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/trainers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/trainers/test_recorder.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/utils/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/utils/io/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/utils/io/test_gz.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/core/utils/test_operations.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_bach.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_camelyon16.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_crc.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_mhist.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_panda.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_patch_camelyon.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/classification/test_wsi.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/test_bcss.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/test_consep.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/test_lits.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/test_lits_balanced.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/segmentation/test_monusac.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/datasets/test_wsi.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/common/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/common/test_resize_and_clamp.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/common/test_resize_and_crop.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/normalization/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/normalization/functional/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/transforms/normalization/functional/test_rescale_intensity.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/samplers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/samplers/test_foreground_grid.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/samplers/test_grid.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/samplers/test_random.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/data/wsi/patching/test_mask.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/defaults/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/segmentation/_utils.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/segmentation/test_generalized_dice.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/metrics/segmentation/test_mean_iou.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/modules/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/modules/conftest.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/modules/test_semantic_segmentation.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/backbones/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/backbones/test_registry.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/decoders/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/decoders/segmentation/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/decoders/segmentation/conv.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/decoders/segmentation/linear.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/networks/test_abmil.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/wrappers/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/wrappers/test_backbone.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/models/wrappers/test_from_timm.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/utils/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/utils/io/__init__.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/utils/io/test_image.py +0 -0
- {kaiko_eva-0.1.6 → kaiko_eva-0.1.8}/tests/eva/vision/utils/test_convert.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaiko-eva
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Evaluation Framework for oncology foundation models.
|
|
5
5
|
Keywords: machine-learning,evaluation-framework,oncology,foundation-models
|
|
6
6
|
Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
|
|
@@ -227,7 +227,8 @@ Requires-Dist: onnxruntime>=1.15.1
|
|
|
227
227
|
Requires-Dist: onnx>=1.16.0
|
|
228
228
|
Requires-Dist: toolz>=0.12.1
|
|
229
229
|
Requires-Dist: rich>=13.7.1
|
|
230
|
-
Requires-Dist: torchmetrics>=1.
|
|
230
|
+
Requires-Dist: torchmetrics>=1.6.0
|
|
231
|
+
Requires-Dist: nibabel>=3.2.2
|
|
231
232
|
Provides-Extra: vision
|
|
232
233
|
Requires-Dist: h5py>=3.10.0; extra == "vision"
|
|
233
234
|
Requires-Dist: nibabel>=4.0.1; extra == "vision"
|
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "kaiko-eva"
|
|
9
|
-
version = "0.1.
|
|
9
|
+
version = "0.1.8"
|
|
10
10
|
description = "Evaluation Framework for oncology foundation models."
|
|
11
11
|
keywords = [
|
|
12
12
|
"machine-learning",
|
|
@@ -45,7 +45,8 @@ dependencies = [
|
|
|
45
45
|
"onnx>=1.16.0",
|
|
46
46
|
"toolz>=0.12.1",
|
|
47
47
|
"rich>=13.7.1",
|
|
48
|
-
"torchmetrics>=1.
|
|
48
|
+
"torchmetrics>=1.6.0",
|
|
49
|
+
"nibabel>=3.2.2",
|
|
49
50
|
]
|
|
50
51
|
|
|
51
52
|
[project.urls]
|
|
@@ -59,17 +59,20 @@ class DataLoader:
|
|
|
59
59
|
prefetch_factor: int | None = 2
|
|
60
60
|
"""Number of batches loaded in advance by each worker."""
|
|
61
61
|
|
|
62
|
-
def __call__(
|
|
62
|
+
def __call__(
|
|
63
|
+
self, dataset: datasets.TorchDataset, sampler: samplers.Sampler | None = None
|
|
64
|
+
) -> dataloader.DataLoader:
|
|
63
65
|
"""Returns the dataloader on the provided dataset.
|
|
64
66
|
|
|
65
67
|
Args:
|
|
66
68
|
dataset: dataset from which to load the data.
|
|
69
|
+
sampler: defines the strategy to draw samples from the dataset.
|
|
67
70
|
"""
|
|
68
71
|
return dataloader.DataLoader(
|
|
69
72
|
dataset=dataset,
|
|
70
73
|
batch_size=self.batch_size,
|
|
71
74
|
shuffle=self.shuffle,
|
|
72
|
-
sampler=self.sampler,
|
|
75
|
+
sampler=sampler or self.sampler,
|
|
73
76
|
batch_sampler=self.batch_sampler,
|
|
74
77
|
num_workers=self.num_workers or multiprocessing.cpu_count(),
|
|
75
78
|
collate_fn=self.collate_fn,
|
|
@@ -8,6 +8,7 @@ from typing_extensions import override
|
|
|
8
8
|
|
|
9
9
|
from eva.core.data import dataloaders as dataloaders_lib
|
|
10
10
|
from eva.core.data import datasets as datasets_lib
|
|
11
|
+
from eva.core.data import samplers as samplers_lib
|
|
11
12
|
from eva.core.data.datamodules import call, schemas
|
|
12
13
|
|
|
13
14
|
|
|
@@ -24,17 +25,20 @@ class DataModule(pl.LightningDataModule):
|
|
|
24
25
|
self,
|
|
25
26
|
datasets: schemas.DatasetsSchema | None = None,
|
|
26
27
|
dataloaders: schemas.DataloadersSchema | None = None,
|
|
28
|
+
samplers: schemas.SamplersSchema | None = None,
|
|
27
29
|
) -> None:
|
|
28
30
|
"""Initializes the datamodule.
|
|
29
31
|
|
|
30
32
|
Args:
|
|
31
33
|
datasets: The desired datasets.
|
|
32
34
|
dataloaders: The desired dataloaders.
|
|
35
|
+
samplers: The desired samplers for the dataloaders.
|
|
33
36
|
"""
|
|
34
37
|
super().__init__()
|
|
35
38
|
|
|
36
39
|
self.datasets = datasets or self.default_datasets
|
|
37
40
|
self.dataloaders = dataloaders or self.default_dataloaders
|
|
41
|
+
self.samplers = samplers or self.default_samplers
|
|
38
42
|
|
|
39
43
|
@property
|
|
40
44
|
def default_datasets(self) -> schemas.DatasetsSchema:
|
|
@@ -46,6 +50,11 @@ class DataModule(pl.LightningDataModule):
|
|
|
46
50
|
"""Returns the default dataloader schema."""
|
|
47
51
|
return schemas.DataloadersSchema()
|
|
48
52
|
|
|
53
|
+
@property
|
|
54
|
+
def default_samplers(self) -> schemas.SamplersSchema:
|
|
55
|
+
"""Returns the default samplers schema."""
|
|
56
|
+
return schemas.SamplersSchema()
|
|
57
|
+
|
|
49
58
|
@override
|
|
50
59
|
def prepare_data(self) -> None:
|
|
51
60
|
call.call_method_if_exists(self.datasets.tolist(), "prepare_data")
|
|
@@ -64,7 +73,12 @@ class DataModule(pl.LightningDataModule):
|
|
|
64
73
|
raise ValueError(
|
|
65
74
|
"Train dataloader can not be initialized as `self.datasets.train` is `None`."
|
|
66
75
|
)
|
|
67
|
-
|
|
76
|
+
if isinstance(self.datasets.train, list) and len(self.datasets.train) > 1:
|
|
77
|
+
raise ValueError("Train dataloader can not be initialized with multiple datasets.")
|
|
78
|
+
|
|
79
|
+
return self._initialize_dataloaders(
|
|
80
|
+
self.dataloaders.train, self.datasets.train, self.samplers.train
|
|
81
|
+
)[0]
|
|
68
82
|
|
|
69
83
|
@override
|
|
70
84
|
def val_dataloader(self) -> EVAL_DATALOADERS:
|
|
@@ -72,7 +86,9 @@ class DataModule(pl.LightningDataModule):
|
|
|
72
86
|
raise ValueError(
|
|
73
87
|
"Validation dataloader can not be initialized as `self.datasets.val` is `None`."
|
|
74
88
|
)
|
|
75
|
-
return self._initialize_dataloaders(
|
|
89
|
+
return self._initialize_dataloaders(
|
|
90
|
+
self.dataloaders.val, self.datasets.val, self.samplers.val
|
|
91
|
+
)
|
|
76
92
|
|
|
77
93
|
@override
|
|
78
94
|
def test_dataloader(self) -> EVAL_DATALOADERS:
|
|
@@ -80,7 +96,9 @@ class DataModule(pl.LightningDataModule):
|
|
|
80
96
|
raise ValueError(
|
|
81
97
|
"Test dataloader can not be initialized as `self.datasets.test` is `None`."
|
|
82
98
|
)
|
|
83
|
-
return self._initialize_dataloaders(
|
|
99
|
+
return self._initialize_dataloaders(
|
|
100
|
+
self.dataloaders.test, self.datasets.test, self.samplers.test
|
|
101
|
+
)
|
|
84
102
|
|
|
85
103
|
@override
|
|
86
104
|
def predict_dataloader(self) -> EVAL_DATALOADERS:
|
|
@@ -88,21 +106,40 @@ class DataModule(pl.LightningDataModule):
|
|
|
88
106
|
raise ValueError(
|
|
89
107
|
"Predict dataloader can not be initialized as `self.datasets.predict` is `None`."
|
|
90
108
|
)
|
|
91
|
-
|
|
109
|
+
if isinstance(self.datasets.predict, list) and len(self.datasets.predict) > 1:
|
|
110
|
+
# Only apply sampler to the first predict dataset (should correspond to train split)
|
|
111
|
+
train_dataloader = self._initialize_dataloaders(
|
|
112
|
+
self.dataloaders.predict, self.datasets.predict[0], self.samplers.predict
|
|
113
|
+
)
|
|
114
|
+
return train_dataloader + self._initialize_dataloaders(
|
|
115
|
+
self.dataloaders.predict, self.datasets.predict[1:]
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
return self._initialize_dataloaders(
|
|
119
|
+
self.dataloaders.predict, self.datasets.predict, self.samplers.predict
|
|
120
|
+
)
|
|
92
121
|
|
|
93
122
|
def _initialize_dataloaders(
|
|
94
123
|
self,
|
|
95
124
|
dataloader: dataloaders_lib.DataLoader,
|
|
96
125
|
datasets: datasets_lib.TorchDataset | List[datasets_lib.TorchDataset],
|
|
126
|
+
sampler: samplers_lib.Sampler | None = None,
|
|
97
127
|
) -> EVAL_DATALOADERS:
|
|
98
128
|
"""Initializes dataloaders from a given set of dataset.
|
|
99
129
|
|
|
100
130
|
Args:
|
|
101
131
|
dataloader: The dataloader to apply to the provided datasets.
|
|
102
132
|
datasets: The desired dataset(s) to allocate dataloader(s).
|
|
133
|
+
sampler: The sampler to use for the dataloader.
|
|
103
134
|
|
|
104
135
|
Returns:
|
|
105
136
|
A list with the dataloaders of the provided dataset(s).
|
|
106
137
|
"""
|
|
107
138
|
datasets = datasets if isinstance(datasets, list) else [datasets]
|
|
108
|
-
|
|
139
|
+
|
|
140
|
+
dataloaders = []
|
|
141
|
+
for dataset in datasets:
|
|
142
|
+
if sampler is not None and isinstance(sampler, samplers_lib.SamplerWithDataSource):
|
|
143
|
+
sampler.set_dataset(dataset) # type: ignore
|
|
144
|
+
dataloaders.append(dataloader(dataset, sampler=sampler))
|
|
145
|
+
return dataloaders
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
from typing import List
|
|
5
5
|
|
|
6
|
-
from eva.core.data import dataloaders, datasets
|
|
6
|
+
from eva.core.data import dataloaders, datasets, samplers
|
|
7
7
|
|
|
8
8
|
TRAIN_DATASET = datasets.TorchDataset | None
|
|
9
9
|
"""Train dataset."""
|
|
@@ -60,3 +60,20 @@ class DataloadersSchema:
|
|
|
60
60
|
|
|
61
61
|
predict: dataloaders.DataLoader = dataclasses.field(default_factory=dataloaders.DataLoader)
|
|
62
62
|
"""Predict dataloader."""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@dataclasses.dataclass(frozen=True)
|
|
66
|
+
class SamplersSchema:
|
|
67
|
+
"""Samplers schema used in DataModule."""
|
|
68
|
+
|
|
69
|
+
train: samplers.Sampler | None = None
|
|
70
|
+
"""Train sampler."""
|
|
71
|
+
|
|
72
|
+
val: samplers.Sampler | None = None
|
|
73
|
+
"""Validation sampler."""
|
|
74
|
+
|
|
75
|
+
test: samplers.Sampler | None = None
|
|
76
|
+
"""Test sampler."""
|
|
77
|
+
|
|
78
|
+
predict: samplers.Sampler | None = None
|
|
79
|
+
"""Predict sampler."""
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"""Datasets API."""
|
|
2
2
|
|
|
3
|
-
from eva.core.data.datasets.base import Dataset
|
|
3
|
+
from eva.core.data.datasets.base import Dataset, MapDataset
|
|
4
4
|
from eva.core.data.datasets.classification import (
|
|
5
5
|
EmbeddingsClassificationDataset,
|
|
6
6
|
MultiEmbeddingsClassificationDataset,
|
|
7
7
|
)
|
|
8
8
|
from eva.core.data.datasets.dataset import TorchDataset
|
|
9
|
+
from eva.core.data.datasets.typings import DataSample
|
|
9
10
|
|
|
10
11
|
__all__ = [
|
|
11
12
|
"Dataset",
|
|
13
|
+
"MapDataset",
|
|
12
14
|
"EmbeddingsClassificationDataset",
|
|
13
15
|
"MultiEmbeddingsClassificationDataset",
|
|
14
16
|
"TorchDataset",
|
|
17
|
+
"DataSample",
|
|
15
18
|
]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""Base dataset class."""
|
|
2
2
|
|
|
3
|
+
import abc
|
|
4
|
+
|
|
3
5
|
from eva.core.data.datasets import dataset
|
|
4
6
|
|
|
5
7
|
|
|
@@ -51,3 +53,24 @@ class Dataset(dataset.TorchDataset):
|
|
|
51
53
|
of fit (train + validate), validate, test, or predict and it will be
|
|
52
54
|
called from every process (i.e. GPU) across all the nodes in DDP.
|
|
53
55
|
"""
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class MapDataset(Dataset):
|
|
59
|
+
"""Abstract base class for all map-style datasets."""
|
|
60
|
+
|
|
61
|
+
@abc.abstractmethod
|
|
62
|
+
def __getitem__(self, index: int):
|
|
63
|
+
"""Retrieves the item at the given index.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
index: Index of the item to retrieve.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
The data at the given index.
|
|
70
|
+
"""
|
|
71
|
+
raise NotImplementedError
|
|
72
|
+
|
|
73
|
+
@abc.abstractmethod
|
|
74
|
+
def __len__(self) -> int:
|
|
75
|
+
"""Returns the length of the dataset."""
|
|
76
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Typing definitions for the datasets module."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, NamedTuple
|
|
4
|
+
|
|
5
|
+
import torch
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DataSample(NamedTuple):
|
|
9
|
+
"""The default input batch data scheme."""
|
|
10
|
+
|
|
11
|
+
data: torch.Tensor
|
|
12
|
+
"""The data batch."""
|
|
13
|
+
|
|
14
|
+
targets: torch.Tensor | None = None
|
|
15
|
+
"""The target batch."""
|
|
16
|
+
|
|
17
|
+
metadata: Dict[str, Any] | None = None
|
|
18
|
+
"""The associated metadata."""
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Data samplers API."""
|
|
2
|
+
|
|
3
|
+
from eva.core.data.samplers.classification.balanced import BalancedSampler
|
|
4
|
+
from eva.core.data.samplers.random import RandomSampler
|
|
5
|
+
from eva.core.data.samplers.sampler import Sampler, SamplerWithDataSource
|
|
6
|
+
|
|
7
|
+
__all__ = ["Sampler", "SamplerWithDataSource", "RandomSampler", "BalancedSampler"]
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""Random class sampler for data loading."""
|
|
2
|
+
|
|
3
|
+
from collections import defaultdict
|
|
4
|
+
from typing import Dict, Iterator, List
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
from typing_extensions import override
|
|
8
|
+
|
|
9
|
+
from eva.core.data import datasets
|
|
10
|
+
from eva.core.data.datasets.typings import DataSample
|
|
11
|
+
from eva.core.data.samplers.sampler import SamplerWithDataSource
|
|
12
|
+
from eva.core.utils.progress_bar import tqdm
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BalancedSampler(SamplerWithDataSource[int]):
|
|
16
|
+
"""Balanced class sampler for data loading.
|
|
17
|
+
|
|
18
|
+
The sampler ensures that:
|
|
19
|
+
1. Each class has the same number of samples
|
|
20
|
+
2. Samples within each class are randomly selected
|
|
21
|
+
3. Samples of different classes appear in random order
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(self, num_samples: int, replacement: bool = False, seed: int | None = 42):
|
|
25
|
+
"""Initializes the balanced sampler.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
num_samples: The number of samples to draw per class.
|
|
29
|
+
replacement: samples are drawn on-demand with replacement if ``True``, default=``False``
|
|
30
|
+
seed: Random seed for reproducibility.
|
|
31
|
+
"""
|
|
32
|
+
self._num_samples = num_samples
|
|
33
|
+
self._replacement = replacement
|
|
34
|
+
self._class_indices: Dict[int, List[int]] = defaultdict(list)
|
|
35
|
+
self._random_generator = np.random.default_rng(seed)
|
|
36
|
+
|
|
37
|
+
def __len__(self) -> int:
|
|
38
|
+
"""Returns the total number of samples."""
|
|
39
|
+
return self._num_samples * len(self._class_indices)
|
|
40
|
+
|
|
41
|
+
def __iter__(self) -> Iterator[int]:
|
|
42
|
+
"""Creates an iterator that yields indices in a class balanced way.
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
Iterator yielding dataset indices.
|
|
46
|
+
"""
|
|
47
|
+
indices = []
|
|
48
|
+
|
|
49
|
+
for class_idx in self._class_indices:
|
|
50
|
+
class_indices = self._class_indices[class_idx]
|
|
51
|
+
sampled_indices = self._random_generator.choice(
|
|
52
|
+
class_indices, size=self._num_samples, replace=self._replacement
|
|
53
|
+
).tolist()
|
|
54
|
+
indices.extend(sampled_indices)
|
|
55
|
+
|
|
56
|
+
self._random_generator.shuffle(indices)
|
|
57
|
+
|
|
58
|
+
return iter(indices)
|
|
59
|
+
|
|
60
|
+
@override
|
|
61
|
+
def set_dataset(self, data_source: datasets.MapDataset):
|
|
62
|
+
"""Sets the dataset and builds class indices.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
data_source: The dataset to sample from.
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
ValueError: If the dataset doesn't have targets or if any class has
|
|
69
|
+
fewer samples than `num_samples` and `replacement` is `False`.
|
|
70
|
+
"""
|
|
71
|
+
super().set_dataset(data_source)
|
|
72
|
+
self._make_indices()
|
|
73
|
+
|
|
74
|
+
def _make_indices(self):
|
|
75
|
+
"""Builds indices for each class in the dataset."""
|
|
76
|
+
self._class_indices.clear()
|
|
77
|
+
|
|
78
|
+
for idx in tqdm(
|
|
79
|
+
range(len(self.data_source)), desc="Fetching class indices for balanced sampler"
|
|
80
|
+
):
|
|
81
|
+
_, target, _ = DataSample(*self.data_source[idx])
|
|
82
|
+
if target is None:
|
|
83
|
+
raise ValueError("The dataset must return non-empty targets.")
|
|
84
|
+
if target.numel() != 1:
|
|
85
|
+
raise ValueError("The dataset must return a single & scalar target.")
|
|
86
|
+
|
|
87
|
+
class_idx = int(target.item())
|
|
88
|
+
self._class_indices[class_idx].append(idx)
|
|
89
|
+
|
|
90
|
+
if not self._replacement:
|
|
91
|
+
for class_idx, indices in self._class_indices.items():
|
|
92
|
+
if len(indices) < self._num_samples:
|
|
93
|
+
raise ValueError(
|
|
94
|
+
f"Class {class_idx} has only {len(indices)} samples, "
|
|
95
|
+
f"which is less than the required {self._num_samples} samples."
|
|
96
|
+
)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Random sampler for data loading."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from torch.utils import data
|
|
6
|
+
from typing_extensions import override
|
|
7
|
+
|
|
8
|
+
from eva.core.data import datasets
|
|
9
|
+
from eva.core.data.samplers.sampler import SamplerWithDataSource
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class RandomSampler(data.RandomSampler, SamplerWithDataSource[int]):
|
|
13
|
+
"""Samples elements randomly."""
|
|
14
|
+
|
|
15
|
+
data_source: datasets.MapDataset # type: ignore
|
|
16
|
+
|
|
17
|
+
def __init__(
|
|
18
|
+
self, replacement: bool = False, num_samples: Optional[int] = None, generator=None
|
|
19
|
+
) -> None:
|
|
20
|
+
"""Initializes the random sampler.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
data_source: dataset to sample from
|
|
24
|
+
replacement: samples are drawn on-demand with replacement if ``True``, default=``False``
|
|
25
|
+
num_samples: number of samples to draw, default=`len(dataset)`.
|
|
26
|
+
generator: Generator used in sampling.
|
|
27
|
+
"""
|
|
28
|
+
self.replacement = replacement
|
|
29
|
+
self._num_samples = num_samples
|
|
30
|
+
self.generator = generator
|
|
31
|
+
|
|
32
|
+
@override
|
|
33
|
+
def set_dataset(self, data_source: datasets.MapDataset) -> None:
|
|
34
|
+
super().__init__(
|
|
35
|
+
data_source,
|
|
36
|
+
replacement=self.replacement,
|
|
37
|
+
num_samples=self.num_samples,
|
|
38
|
+
generator=self.generator,
|
|
39
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Core data sampler."""
|
|
2
|
+
|
|
3
|
+
from typing import Generic, TypeVar
|
|
4
|
+
|
|
5
|
+
from torch.utils import data
|
|
6
|
+
|
|
7
|
+
from eva.core.data import datasets
|
|
8
|
+
|
|
9
|
+
Sampler = data.Sampler
|
|
10
|
+
"""Core abstract data sampler class."""
|
|
11
|
+
|
|
12
|
+
T_co = TypeVar("T_co", covariant=True)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SamplerWithDataSource(Sampler, Generic[T_co]):
|
|
16
|
+
"""A sampler base class that enables to specify the data source after initialization.
|
|
17
|
+
|
|
18
|
+
The `set_dataset` can also be overwritten to expand the functionality of the derived
|
|
19
|
+
sampler classes.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
data_source: datasets.MapDataset
|
|
23
|
+
|
|
24
|
+
def set_dataset(self, data_source: datasets.MapDataset) -> None:
|
|
25
|
+
"""Sets the dataset to sample from.
|
|
26
|
+
|
|
27
|
+
This is not done in the constructor because the dataset might not be
|
|
28
|
+
available at that time.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
data_source: The dataset to sample from.
|
|
32
|
+
"""
|
|
33
|
+
self.data_source = data_source
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from typing import List
|
|
6
|
+
|
|
5
7
|
from torch import nn
|
|
6
8
|
|
|
7
9
|
from eva.core.metrics.structs import collection, schemas
|
|
@@ -46,6 +48,7 @@ class MetricModule(nn.Module):
|
|
|
46
48
|
test: MetricModuleType | None,
|
|
47
49
|
*,
|
|
48
50
|
separator: str = "/",
|
|
51
|
+
compute_groups: bool | List[List[str]] = True,
|
|
49
52
|
) -> MetricModule:
|
|
50
53
|
"""Initializes a metric module from a list of metrics.
|
|
51
54
|
|
|
@@ -55,19 +58,25 @@ class MetricModule(nn.Module):
|
|
|
55
58
|
test: Metrics for the test stage.
|
|
56
59
|
separator: The separator between the group name of the metric
|
|
57
60
|
and the metric itself.
|
|
61
|
+
compute_groups: All metrics in a compute group share the same metric state
|
|
62
|
+
and are therefore only different in their compute step. To disable this
|
|
63
|
+
behavior, set to `False`.
|
|
58
64
|
"""
|
|
59
65
|
return cls(
|
|
60
|
-
train=_create_collection_from_metrics(
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
train=_create_collection_from_metrics(
|
|
67
|
+
train, prefix="train" + separator, compute_groups=compute_groups
|
|
68
|
+
),
|
|
69
|
+
val=_create_collection_from_metrics(
|
|
70
|
+
val, prefix="val" + separator, compute_groups=compute_groups
|
|
71
|
+
),
|
|
72
|
+
test=_create_collection_from_metrics(
|
|
73
|
+
test, prefix="test" + separator, compute_groups=compute_groups
|
|
74
|
+
),
|
|
63
75
|
)
|
|
64
76
|
|
|
65
77
|
@classmethod
|
|
66
78
|
def from_schema(
|
|
67
|
-
cls,
|
|
68
|
-
schema: schemas.MetricsSchema,
|
|
69
|
-
*,
|
|
70
|
-
separator: str = "/",
|
|
79
|
+
cls, schema: schemas.MetricsSchema, *, separator: str = "/", compute_groups: bool = True
|
|
71
80
|
) -> MetricModule:
|
|
72
81
|
"""Initializes a metric module from the metrics schema.
|
|
73
82
|
|
|
@@ -75,12 +84,16 @@ class MetricModule(nn.Module):
|
|
|
75
84
|
schema: The dataclass metric schema.
|
|
76
85
|
separator: The separator between the group name of the metric
|
|
77
86
|
and the metric itself.
|
|
87
|
+
compute_groups: All metrics in a compute group share the same metric state
|
|
88
|
+
and are therefore only different in their compute step. To disable this
|
|
89
|
+
behavior, set to `False`.
|
|
78
90
|
"""
|
|
79
91
|
return cls.from_metrics(
|
|
80
92
|
train=schema.training_metrics,
|
|
81
93
|
val=schema.evaluation_metrics,
|
|
82
94
|
test=schema.evaluation_metrics,
|
|
83
95
|
separator=separator,
|
|
96
|
+
compute_groups=compute_groups,
|
|
84
97
|
)
|
|
85
98
|
|
|
86
99
|
@property
|
|
@@ -100,16 +113,24 @@ class MetricModule(nn.Module):
|
|
|
100
113
|
|
|
101
114
|
|
|
102
115
|
def _create_collection_from_metrics(
|
|
103
|
-
metrics: MetricModuleType | None,
|
|
116
|
+
metrics: MetricModuleType | None,
|
|
117
|
+
*,
|
|
118
|
+
prefix: str | None = None,
|
|
119
|
+
compute_groups: bool | List[List[str]] = True,
|
|
104
120
|
) -> collection.MetricCollection | None:
|
|
105
121
|
"""Create a unique collection from metrics.
|
|
106
122
|
|
|
107
123
|
Args:
|
|
108
124
|
metrics: The desired metrics.
|
|
109
125
|
prefix: A prefix to added to the collection.
|
|
126
|
+
compute_groups: All metrics in a compute group share the same metric state
|
|
127
|
+
and are therefore only different in their compute step. To disable this
|
|
128
|
+
behavior, set to `False`.
|
|
110
129
|
|
|
111
130
|
Returns:
|
|
112
131
|
The resulted metrics collection.
|
|
113
132
|
"""
|
|
114
|
-
metrics_collection = collection.MetricCollection(
|
|
133
|
+
metrics_collection = collection.MetricCollection(
|
|
134
|
+
metrics=metrics or [], prefix=prefix, compute_groups=compute_groups # type: ignore
|
|
135
|
+
)
|
|
115
136
|
return metrics_collection.clone()
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
from eva.core.models.modules import HeadModule, InferenceModule
|
|
4
4
|
from eva.core.models.networks import MLP
|
|
5
|
-
from eva.core.models.wrappers import
|
|
5
|
+
from eva.core.models.wrappers import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
HuggingFaceModel,
|
|
8
|
+
ModelFromFunction,
|
|
9
|
+
ONNXModel,
|
|
10
|
+
TorchHubModel,
|
|
11
|
+
)
|
|
6
12
|
|
|
7
13
|
__all__ = [
|
|
8
14
|
"HeadModule",
|
|
@@ -12,4 +18,5 @@ __all__ = [
|
|
|
12
18
|
"HuggingFaceModel",
|
|
13
19
|
"ModelFromFunction",
|
|
14
20
|
"ONNXModel",
|
|
21
|
+
"TorchHubModel",
|
|
15
22
|
]
|
|
@@ -12,7 +12,7 @@ from typing_extensions import override
|
|
|
12
12
|
from eva.core.metrics import structs as metrics_lib
|
|
13
13
|
from eva.core.models.modules import module
|
|
14
14
|
from eva.core.models.modules.typings import INPUT_BATCH, MODEL_TYPE
|
|
15
|
-
from eva.core.models.modules.utils import batch_postprocess, grad
|
|
15
|
+
from eva.core.models.modules.utils import batch_postprocess, grad, submodule_state_dict
|
|
16
16
|
from eva.core.utils import parser
|
|
17
17
|
|
|
18
18
|
|
|
@@ -32,6 +32,7 @@ class HeadModule(module.ModelModule):
|
|
|
32
32
|
lr_scheduler: LRSchedulerCallable = lr_scheduler.ConstantLR,
|
|
33
33
|
metrics: metrics_lib.MetricsSchema | None = None,
|
|
34
34
|
postprocess: batch_postprocess.BatchPostProcess | None = None,
|
|
35
|
+
save_head_only: bool = True,
|
|
35
36
|
) -> None:
|
|
36
37
|
"""Initializes the neural net head module.
|
|
37
38
|
|
|
@@ -48,6 +49,8 @@ class HeadModule(module.ModelModule):
|
|
|
48
49
|
postprocess: A list of helper functions to apply after the
|
|
49
50
|
loss and before the metrics calculation to the model
|
|
50
51
|
predictions and targets.
|
|
52
|
+
save_head_only: Whether to save only the head during checkpointing. If False,
|
|
53
|
+
will also save the backbone (not recommended when frozen).
|
|
51
54
|
"""
|
|
52
55
|
super().__init__(metrics=metrics, postprocess=postprocess)
|
|
53
56
|
|
|
@@ -56,6 +59,7 @@ class HeadModule(module.ModelModule):
|
|
|
56
59
|
self.backbone = backbone
|
|
57
60
|
self.optimizer = optimizer
|
|
58
61
|
self.lr_scheduler = lr_scheduler
|
|
62
|
+
self.save_head_only = save_head_only
|
|
59
63
|
|
|
60
64
|
@override
|
|
61
65
|
def configure_model(self) -> Any:
|
|
@@ -72,6 +76,20 @@ class HeadModule(module.ModelModule):
|
|
|
72
76
|
lr_scheduler = self.lr_scheduler(optimizer)
|
|
73
77
|
return {"optimizer": optimizer, "lr_scheduler": lr_scheduler}
|
|
74
78
|
|
|
79
|
+
@override
|
|
80
|
+
def on_save_checkpoint(self, checkpoint: Dict[str, Any]) -> None:
|
|
81
|
+
if self.save_head_only:
|
|
82
|
+
checkpoint["state_dict"] = submodule_state_dict(checkpoint["state_dict"], "head")
|
|
83
|
+
super().on_save_checkpoint(checkpoint)
|
|
84
|
+
|
|
85
|
+
@override
|
|
86
|
+
def on_load_checkpoint(self, checkpoint: Dict[str, Any]) -> None:
|
|
87
|
+
if self.save_head_only and self.backbone is not None:
|
|
88
|
+
checkpoint["state_dict"].update(
|
|
89
|
+
{f"backbone.{k}": v for k, v in self.backbone.state_dict().items()}
|
|
90
|
+
)
|
|
91
|
+
super().on_load_checkpoint(checkpoint)
|
|
92
|
+
|
|
75
93
|
@override
|
|
76
94
|
def forward(self, tensor: torch.Tensor, *args: Any, **kwargs: Any) -> torch.Tensor:
|
|
77
95
|
features = tensor if self.backbone is None else self.backbone(tensor)
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from eva.core.models.modules.utils import grad
|
|
4
4
|
from eva.core.models.modules.utils.batch_postprocess import BatchPostProcess
|
|
5
|
+
from eva.core.models.modules.utils.checkpoint import submodule_state_dict
|
|
5
6
|
|
|
6
|
-
__all__ = ["grad", "BatchPostProcess"]
|
|
7
|
+
__all__ = ["grad", "BatchPostProcess", "submodule_state_dict"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Checkpointing related utilities and helper functions."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def submodule_state_dict(state_dict: Dict[str, Any], submodule_key: str) -> Dict[str, Any]:
|
|
7
|
+
"""Get the state dict of a specific submodule.
|
|
8
|
+
|
|
9
|
+
Args:
|
|
10
|
+
state_dict: The state dict to extract the submodule from.
|
|
11
|
+
submodule_key: The key of the submodule to extract.
|
|
12
|
+
|
|
13
|
+
Returns:
|
|
14
|
+
The subset of the state dict corresponding to the specified submodule.
|
|
15
|
+
"""
|
|
16
|
+
submodule_key = submodule_key if submodule_key.endswith(".") else submodule_key + "."
|
|
17
|
+
return {
|
|
18
|
+
module: weights
|
|
19
|
+
for module, weights in state_dict.items()
|
|
20
|
+
if module.startswith(submodule_key)
|
|
21
|
+
}
|