kaiko-eva 0.0.0.dev8__tar.gz → 0.0.2__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.0.0.dev8 → kaiko_eva-0.0.2}/PKG-INFO +71 -27
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/README.md +62 -20
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/pyproject.toml +6 -4
- kaiko_eva-0.0.2/src/eva/core/callbacks/__init__.py +6 -0
- kaiko_eva-0.0.2/src/eva/core/callbacks/config.py +143 -0
- kaiko_eva-0.0.2/src/eva/core/data/datasets/__init__.py +15 -0
- kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/__init__.py +13 -0
- kaiko_eva-0.0.0.dev8/src/eva/core/data/datasets/classification/embeddings.py → kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/base.py +41 -43
- kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/__init__.py +10 -0
- kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/embeddings.py +66 -0
- kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/multi_embeddings.py +106 -0
- kaiko_eva-0.0.2/src/eva/core/data/transforms/__init__.py +7 -0
- kaiko_eva-0.0.2/src/eva/core/data/transforms/padding/__init__.py +5 -0
- kaiko_eva-0.0.2/src/eva/core/data/transforms/padding/pad_2d_tensor.py +38 -0
- kaiko_eva-0.0.2/src/eva/core/data/transforms/sampling/__init__.py +5 -0
- kaiko_eva-0.0.2/src/eva/core/data/transforms/sampling/sample_from_axis.py +40 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/__init__.py +7 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/dummy.py +38 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/experimental_loggers.py +8 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/log/__init__.py +5 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/log/parameters.py +64 -0
- kaiko_eva-0.0.2/src/eva/core/loggers/log/utils.py +13 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/head.py +6 -11
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/module.py +25 -1
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_recorder.py +69 -7
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/functional.py +22 -5
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/trainer.py +20 -6
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/__init__.py +1 -1
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/__init__.py +1 -8
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/_utils.py +3 -3
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/__init__.py +1 -8
- kaiko_eva-0.0.2/src/eva/vision/data/datasets/segmentation/base.py +97 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/segmentation/total_segmentator.py +88 -69
- kaiko_eva-0.0.2/src/eva/vision/models/.DS_Store +0 -0
- kaiko_eva-0.0.2/src/eva/vision/models/networks/.DS_Store +0 -0
- kaiko_eva-0.0.2/src/eva/vision/utils/convert.py +24 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/nifti.py +10 -6
- kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/semantic_labels/masks.nii.gz +0 -0
- kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/semantic_labels/masks.nii.gz +0 -0
- kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/semantic_labels/masks.nii.gz +0 -0
- kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/__init__.py +1 -0
- kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/classification/__init__.py +1 -0
- kaiko_eva-0.0.0.dev8/tests/eva/core/data/datasets/classification/test_embedding_datasets.py → kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/classification/test_embeddings.py +16 -16
- kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/classification/test_multi_embeddings.py +106 -0
- kaiko_eva-0.0.2/tests/eva/core/data/transforms/__init__.py +1 -0
- kaiko_eva-0.0.2/tests/eva/core/data/transforms/padding/__init__.py +1 -0
- kaiko_eva-0.0.2/tests/eva/core/data/transforms/padding/test_pad_2d_tensor.py +49 -0
- kaiko_eva-0.0.2/tests/eva/core/data/transforms/sampling/__init__.py +1 -0
- kaiko_eva-0.0.2/tests/eva/core/data/transforms/sampling/test_sample_from_axis.py +71 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/segmentation/test_total_segmentator.py +9 -7
- kaiko_eva-0.0.2/tests/eva/vision/utils/test_convert.py +50 -0
- kaiko_eva-0.0.0.dev8/src/eva/core/callbacks/__init__.py +0 -5
- kaiko_eva-0.0.0.dev8/src/eva/core/data/datasets/__init__.py +0 -7
- kaiko_eva-0.0.0.dev8/src/eva/core/data/datasets/classification/__init__.py +0 -5
- kaiko_eva-0.0.0.dev8/src/eva/core/data/transforms/__init__.py +0 -5
- kaiko_eva-0.0.0.dev8/src/eva/vision/data/datasets/classification/total_segmentator.py +0 -213
- kaiko_eva-0.0.0.dev8/src/eva/vision/data/datasets/segmentation/base.py +0 -112
- kaiko_eva-0.0.0.dev8/tests/eva/core/data/datasets/classification/__init__.py +0 -1
- kaiko_eva-0.0.0.dev8/tests/eva/vision/data/datasets/classification/test_total_segmentator.py +0 -63
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/LICENSE +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/.DS_Store +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__main__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__version__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/embeddings.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/typings.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/cli.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/logo.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/setup.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/dataloaders/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/dataloaders/dataloader.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/call.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/datamodule.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/schemas.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datasets/base.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datasets/dataset.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/samplers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/samplers/sampler.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/transforms/dtype/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/transforms/dtype/array.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/interface/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/interface/interface.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/average_loss.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/binary_balanced_accuracy.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/binary.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/multiclass.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/collection.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/metric.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/module.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/schemas.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/typings.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/inference.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/typings.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/batch_postprocess.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/grad.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/_utils.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/mlp.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/transforms/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/transforms/extract_cls_features.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/base.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/from_function.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/huggingface.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/onnx.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_logging.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_utils.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/io/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/io/dataframe.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/multiprocessing.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/workers.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/_validators.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/bach.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/base.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/crc.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/mhist.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/patch_camelyon.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/segmentation/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/structs.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/vision.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/common/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/common/resize_and_crop.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/abmil.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/postprocesses/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/postprocesses/cls.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/_utils.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/image.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/text.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/_cli.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_0_shape_8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_1_shape_8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_2_shape_8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_3_shape_8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_4_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_5_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_6_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/embeddings/tensor_7_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/manifest.csv +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_0_shape_6x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_1_shape_3x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_2_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_3_shape_2x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_4_shape_5x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_5_shape_3x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_6_shape_1x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_7_shape_6x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_8_shape_2x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/embeddings/tensor_9_shape_5x8.pt +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/manifest.csv +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/images/random_bgr_32x32.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/images/random_grayscale_32x32.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b001.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b002.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b003.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b004.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b005.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Benign/b006.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is001.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is002.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is003.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is004.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is005.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/InSitu/is006.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv001.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv002.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv003.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv004.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv005.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Invasive/iv006.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n001.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n002.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n003.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n004.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n005.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/bach/ICIAR2018_BACH_Challenge/Photos/Normal/n006.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/CRC-VAL-HE-7K/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/ADI/ADI-SIHVHHPH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/ADI/ADI-SIHWWQMY.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/BACK/BACK-YYYHKNMK.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/BACK/BACK-YYYMDTNW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/DEB/DEB-YYYRSHLP.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/DEB/DEB-YYYTCTDR.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/LYM/LYM-YYWRPGDD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/LYM/LYM-YYYTKMWW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUC/MUC-YYYNWSAM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUC/MUC-YYYRQDLW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUS/MUS-YYYNVQVQ.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/MUS/MUS-YYYRWWNH.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/NORM/NORM-YYTTIRVD.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/NORM/NORM-YYVAFTKA.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/STR/STR-YYYHNSSM.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/STR/STR-YYYWVWFG.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/TUM/TUM-YYYSGWYW.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/crc/NCT-CRC-HE-100K-NONORM/TUM/TUM-YYYYQFVN.tif +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/annotations.csv +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaa.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aab.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aac.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aae.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaf.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aag.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aah.png +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_test_x.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_test_y.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_train_x.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_train_y.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_valid_x.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/patch_camelyon/camelyonpatch_level_2_split_valid_y.h5 +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/ct.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/ct.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/ct.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/aorta_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/brain_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/colon_small.nii.gz +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/conftest.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/conftest.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/writers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/writers/test_embeddings.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/dataloaders/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/dataloaders/test_dataloader.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/_utils.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/test_datamodule.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/test_schemas.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datasets/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/test_metric_module.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/test_schemas.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/test_binary.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/test_multiclass.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/test_average_loss.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/test_binary_balanced_accuracy.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/conftest.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/test_head.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/test_inference.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/utils/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/utils/test_batch_postproces.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/test_mlp.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_from_function.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_huggingface.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_onnx.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/test_cli.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/trainers/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/trainers/test_recorder.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_bach.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_crc.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_mhist.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_patch_camelyon.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/segmentation/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/common/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/common/test_resize_and_crop.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/networks/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/networks/test_abmil.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/test_vision_cli.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/utils/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/utils/io/__init__.py +0 -0
- {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/utils/io/test_image.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaiko-eva
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: Evaluation Framework for oncology foundation models.
|
|
5
|
-
Keywords: machine-learning
|
|
6
|
-
Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>,
|
|
7
|
-
Maintainer-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>,
|
|
5
|
+
Keywords: machine-learning,evaluation-framework,oncology,foundation-models
|
|
6
|
+
Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
|
|
7
|
+
Maintainer-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
|
|
8
8
|
License: Apache License
|
|
9
9
|
Version 2.0, January 2004
|
|
10
10
|
http://www.apache.org/licenses/
|
|
@@ -215,15 +215,17 @@ Project-URL: Homepage, https://kaiko-ai.github.io/eva/dev/
|
|
|
215
215
|
Project-URL: Repository, https://github.com/kaiko-ai/eva
|
|
216
216
|
Project-URL: Documentation, https://kaiko-ai.github.io/eva/dev/
|
|
217
217
|
Requires-Python: >=3.10
|
|
218
|
-
Requires-Dist:
|
|
219
|
-
Requires-Dist:
|
|
218
|
+
Requires-Dist: torch==2.3.0
|
|
219
|
+
Requires-Dist: lightning>=2.2.2
|
|
220
|
+
Requires-Dist: jsonargparse[omegaconf]==4.28
|
|
220
221
|
Requires-Dist: tensorboard>=2.16.2
|
|
221
222
|
Requires-Dist: loguru>=0.7.2
|
|
222
223
|
Requires-Dist: pandas>=2.2.0
|
|
223
224
|
Requires-Dist: transformers>=4.38.2
|
|
224
225
|
Requires-Dist: onnxruntime>=1.17.1
|
|
225
|
-
Requires-Dist: onnx>=1.
|
|
226
|
+
Requires-Dist: onnx>=1.16.0
|
|
226
227
|
Requires-Dist: toolz>=0.12.1
|
|
228
|
+
Requires-Dist: rich>=13.7.1
|
|
227
229
|
Requires-Dist: h5py>=3.10.0; extra == "vision"
|
|
228
230
|
Requires-Dist: nibabel>=5.2.0; extra == "vision"
|
|
229
231
|
Requires-Dist: opencv-python-headless>=4.9.0.80; extra == "vision"
|
|
@@ -240,15 +242,19 @@ Description-Content-Type: text/markdown
|
|
|
240
242
|
|
|
241
243
|
<div align="center">
|
|
242
244
|
|
|
243
|
-
<
|
|
245
|
+
<br />
|
|
246
|
+
|
|
247
|
+
<img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/eva-logo.png?raw=true" width="340">
|
|
244
248
|
|
|
249
|
+
<br />
|
|
245
250
|
<br />
|
|
246
251
|
|
|
247
252
|
_Oncology FM Evaluation Framework by kaiko.ai_
|
|
248
253
|
|
|
249
254
|
[](https://pypi.python.org/pypi/kaiko-eva)
|
|
250
|
-
[](https://kaiko-ai.github.io/eva/latest)
|
|
256
|
+
[](https://github.com/kaiko-ai/eva#license)<br>
|
|
257
|
+
[](https://openreview.net/forum?id=FNBQOPj18N¬eId=FNBQOPj18N)
|
|
252
258
|
|
|
253
259
|
<p align="center">
|
|
254
260
|
<a href="https://github.com/kaiko-ai/eva#installation">Installation</a> •
|
|
@@ -264,7 +270,8 @@ _Oncology FM Evaluation Framework by kaiko.ai_
|
|
|
264
270
|
|
|
265
271
|
<br />
|
|
266
272
|
|
|
267
|
-
_`eva`_ is an evaluation framework for oncology foundation models (FMs) by [kaiko.ai](https://kaiko.ai/).
|
|
273
|
+
_`eva`_ is an evaluation framework for oncology foundation models (FMs) by [kaiko.ai](https://kaiko.ai/).
|
|
274
|
+
Check out the [documentation](https://kaiko-ai.github.io/eva/) for more information.
|
|
268
275
|
|
|
269
276
|
### Highlights:
|
|
270
277
|
- Easy and reliable benchmark of Oncology FMs
|
|
@@ -298,18 +305,33 @@ eva --version
|
|
|
298
305
|
|
|
299
306
|
## How To Use
|
|
300
307
|
|
|
301
|
-
|
|
308
|
+
_`eva`_ can be used directly from the terminal as a CLI tool as follows:
|
|
302
309
|
```sh
|
|
303
310
|
eva {fit,predict,predict_fit} --config url/or/path/to/the/config.yaml
|
|
304
311
|
```
|
|
305
312
|
|
|
306
|
-
|
|
313
|
+
When used as a CLI tool, _`eva`_ supports configuration files (`.yaml`) as an argument to define its functionality.
|
|
314
|
+
Native supported configs can be found at the [configs](https://github.com/kaiko-ai/eva/tree/main/configs) directory
|
|
315
|
+
of the repo. Apart from cloning the repo, you can download the latest config folder as `.zip` from your browser from
|
|
316
|
+
[here](https://download-directory.github.io/?url=https://github.com/kaiko-ai/eva/tree/main/configs). Alternatively,
|
|
317
|
+
from a specific release the configs can be downloaded from the terminal as follows:
|
|
318
|
+
```sh
|
|
319
|
+
curl -LO https://github.com/kaiko-ai/eva/releases/download/0.0.1/configs.zip | unzip configs
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
For example, to perform a downstream evaluation of DINO ViT-S/16 on the BACH dataset with
|
|
323
|
+
linear probing by first inferring the embeddings and performing 5 sequential fits, execute:
|
|
307
324
|
```sh
|
|
325
|
+
# from a locally stored config file
|
|
326
|
+
eva predict_fit --config ./configs/vision/dino_vit/offline/bach.yaml
|
|
327
|
+
|
|
328
|
+
# from a remote stored config file
|
|
308
329
|
eva predict_fit --config https://raw.githubusercontent.com/kaiko-ai/eva/main/configs/vision/dino_vit/offline/bach.yaml
|
|
309
330
|
```
|
|
310
331
|
|
|
311
332
|
> [!NOTE]
|
|
312
|
-
> All the datasets that support automatic download in the repo have by default the option to automatically download set to false.
|
|
333
|
+
> All the datasets that support automatic download in the repo have by default the option to automatically download set to false.
|
|
334
|
+
> For automatic download you have to manually set download=true.
|
|
313
335
|
|
|
314
336
|
|
|
315
337
|
To view all the possibles, execute:
|
|
@@ -317,11 +339,12 @@ To view all the possibles, execute:
|
|
|
317
339
|
eva --help
|
|
318
340
|
```
|
|
319
341
|
|
|
320
|
-
For more information, please refer to the [documentation](https://kaiko-ai.github.io/eva/dev/user-guide/tutorials/offline_vs_online/)
|
|
342
|
+
For more information, please refer to the [documentation](https://kaiko-ai.github.io/eva/dev/user-guide/tutorials/offline_vs_online/)
|
|
343
|
+
and [tutorials](https://kaiko-ai.github.io/eva/dev/user-guide/advanced/replicate_evaluations/).
|
|
321
344
|
|
|
322
345
|
## Benchmarks
|
|
323
346
|
|
|
324
|
-
In this section you will find model benchmarks which were generated with
|
|
347
|
+
In this section you will find model benchmarks which were generated with _`eva`_.
|
|
325
348
|
|
|
326
349
|
### Table I: WSI patch-level benchmark
|
|
327
350
|
|
|
@@ -334,13 +357,15 @@ In this section you will find model benchmarks which were generated with _eva_.
|
|
|
334
357
|
| ViT-S/16 _(random)_ <sup>[1]</sup> | 0.410 | 0.617 | 0.501 | 0.753 | 0.728 |
|
|
335
358
|
| ViT-S/16 _(ImageNet)_ <sup>[1]</sup> | 0.695 | 0.935 | 0.831 | 0.864 | 0.849 |
|
|
336
359
|
| ViT-B/8 _(ImageNet)_ <sup>[1]</sup> | 0.710 | 0.939 | 0.814 | 0.870 | 0.856 |
|
|
360
|
+
| ViT-L/14 _(ImageNet)_ <sup>[1]</sup> | 0.707 | 0.916 | 0.832 | 0.873 | 0.888 |
|
|
337
361
|
| DINO<sub>(p=16)</sub> <sup>[2]</sup> | 0.801 | 0.934 | 0.768 | 0.889 | 0.895 |
|
|
338
362
|
| Phikon <sup>[3]</sup> | 0.725 | 0.935 | 0.777 | 0.912 | 0.915 |
|
|
339
|
-
|
|
|
340
|
-
| ViT-S/
|
|
341
|
-
| ViT-
|
|
342
|
-
| ViT-B/
|
|
343
|
-
| ViT-
|
|
363
|
+
| UNI <sup>[4]</sup> | 0.814 | 0.950 | 0.837 | 0.936 | 0.938 |
|
|
364
|
+
| ViT-S/16 _(kaiko.ai)_ <sup>[5]</sup> | 0.797 | 0.943 | 0.828 | 0.903 | 0.893 |
|
|
365
|
+
| ViT-S/8 _(kaiko.ai)_ <sup>[5]</sup> | 0.834 | 0.946 | 0.832 | 0.897 | 0.887 |
|
|
366
|
+
| ViT-B/16 _(kaiko.ai)_ <sup>[5]</sup> | 0.810 | 0.960 | 0.826 | 0.900 | 0.898 |
|
|
367
|
+
| ViT-B/8 _(kaiko.ai)_ <sup>[5]</sup> | 0.865 | 0.956 | 0.809 | 0.913 | 0.921 |
|
|
368
|
+
| ViT-L/14 _(kaiko.ai)_ <sup>[5]</sup> | 0.870 | 0.930 | 0.809 | 0.908 | 0.898 |
|
|
344
369
|
|
|
345
370
|
_Table I: Linear probing evaluation of FMs on patch-level downstream datasets.<br> We report averaged balanced accuracy
|
|
346
371
|
over 5 runs, with an average standard deviation of ±0.003._
|
|
@@ -350,14 +375,16 @@ over 5 runs, with an average standard deviation of ±0.003._
|
|
|
350
375
|
<br />
|
|
351
376
|
|
|
352
377
|
_References_:
|
|
353
|
-
1. _"Emerging properties in self-supervised vision transformers”_
|
|
354
|
-
2. _"Benchmarking self-supervised learning on diverse pathology datasets”_
|
|
355
|
-
3. _"Scaling self-supervised learning for histopathology with masked image modeling”_
|
|
356
|
-
4. _"
|
|
378
|
+
1. _"Emerging properties in self-supervised vision transformers”_, [arXiv](https://arxiv.org/abs/2104.14294)
|
|
379
|
+
2. _"Benchmarking self-supervised learning on diverse pathology datasets”_, [arXiv](https://arxiv.org/abs/2212.04690)
|
|
380
|
+
3. _"Scaling self-supervised learning for histopathology with masked image modeling”_, [medRxiv](https://www.medrxiv.org/content/10.1101/2023.07.21.23292757v1)
|
|
381
|
+
4. _"A General-Purpose Self-Supervised Model for Computational Pathology”_, [arXiv](https://arxiv.org/abs/2308.15474)
|
|
382
|
+
5. _"Towards Training Large-Scale Pathology Foundation Models: from TCGA to Hospital Scale”_, [arXiv](https://arxiv.org/pdf/2404.15217)
|
|
357
383
|
|
|
358
384
|
## Contributing
|
|
359
385
|
|
|
360
|
-
|
|
386
|
+
_`eva`_ is an open source project and welcomes contributions of all kinds. Please checkout the [developer](./docs/DEVELOPER_GUIDE.md)
|
|
387
|
+
and [contributing guide](./docs/CONTRIBUTING.md) for help on how to do so.
|
|
361
388
|
|
|
362
389
|
All contributors must follow the [code of conduct](./docs/CODE_OF_CONDUCT.md).
|
|
363
390
|
|
|
@@ -381,7 +408,24 @@ Our codebase is built using multiple opensource contributions
|
|
|
381
408
|
|
|
382
409
|
</div>
|
|
383
410
|
|
|
384
|
-
|
|
411
|
+
|
|
412
|
+
## Citation
|
|
413
|
+
|
|
414
|
+
If you find this repository useful, please consider giving a star ⭐ and adding the following citation:
|
|
415
|
+
|
|
416
|
+
```
|
|
417
|
+
@inproceedings{
|
|
418
|
+
kaiko.ai2024eva,
|
|
419
|
+
title={eva: Evaluation framework for pathology foundation models},
|
|
420
|
+
author={kaiko.ai and Ioannis Gatopoulos and Nicolas K{\"a}nzig and Roman Moser and Sebastian Ot{\'a}lora},
|
|
421
|
+
booktitle={Medical Imaging with Deep Learning},
|
|
422
|
+
year={2024},
|
|
423
|
+
url={https://openreview.net/forum?id=FNBQOPj18N}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
<br />
|
|
428
|
+
|
|
385
429
|
<div align="center">
|
|
386
430
|
<img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/kaiko-logo.png?raw=true" width="200">
|
|
387
431
|
</div>
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
<
|
|
3
|
+
<br />
|
|
4
|
+
|
|
5
|
+
<img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/eva-logo.png?raw=true" width="340">
|
|
4
6
|
|
|
7
|
+
<br />
|
|
5
8
|
<br />
|
|
6
9
|
|
|
7
10
|
_Oncology FM Evaluation Framework by kaiko.ai_
|
|
8
11
|
|
|
9
12
|
[](https://pypi.python.org/pypi/kaiko-eva)
|
|
10
|
-
[](https://kaiko-ai.github.io/eva/latest)
|
|
14
|
+
[](https://github.com/kaiko-ai/eva#license)<br>
|
|
15
|
+
[](https://openreview.net/forum?id=FNBQOPj18N¬eId=FNBQOPj18N)
|
|
12
16
|
|
|
13
17
|
<p align="center">
|
|
14
18
|
<a href="https://github.com/kaiko-ai/eva#installation">Installation</a> •
|
|
@@ -24,7 +28,8 @@ _Oncology FM Evaluation Framework by kaiko.ai_
|
|
|
24
28
|
|
|
25
29
|
<br />
|
|
26
30
|
|
|
27
|
-
_`eva`_ is an evaluation framework for oncology foundation models (FMs) by [kaiko.ai](https://kaiko.ai/).
|
|
31
|
+
_`eva`_ is an evaluation framework for oncology foundation models (FMs) by [kaiko.ai](https://kaiko.ai/).
|
|
32
|
+
Check out the [documentation](https://kaiko-ai.github.io/eva/) for more information.
|
|
28
33
|
|
|
29
34
|
### Highlights:
|
|
30
35
|
- Easy and reliable benchmark of Oncology FMs
|
|
@@ -58,18 +63,33 @@ eva --version
|
|
|
58
63
|
|
|
59
64
|
## How To Use
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
_`eva`_ can be used directly from the terminal as a CLI tool as follows:
|
|
62
67
|
```sh
|
|
63
68
|
eva {fit,predict,predict_fit} --config url/or/path/to/the/config.yaml
|
|
64
69
|
```
|
|
65
70
|
|
|
66
|
-
|
|
71
|
+
When used as a CLI tool, _`eva`_ supports configuration files (`.yaml`) as an argument to define its functionality.
|
|
72
|
+
Native supported configs can be found at the [configs](https://github.com/kaiko-ai/eva/tree/main/configs) directory
|
|
73
|
+
of the repo. Apart from cloning the repo, you can download the latest config folder as `.zip` from your browser from
|
|
74
|
+
[here](https://download-directory.github.io/?url=https://github.com/kaiko-ai/eva/tree/main/configs). Alternatively,
|
|
75
|
+
from a specific release the configs can be downloaded from the terminal as follows:
|
|
76
|
+
```sh
|
|
77
|
+
curl -LO https://github.com/kaiko-ai/eva/releases/download/0.0.1/configs.zip | unzip configs
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
For example, to perform a downstream evaluation of DINO ViT-S/16 on the BACH dataset with
|
|
81
|
+
linear probing by first inferring the embeddings and performing 5 sequential fits, execute:
|
|
67
82
|
```sh
|
|
83
|
+
# from a locally stored config file
|
|
84
|
+
eva predict_fit --config ./configs/vision/dino_vit/offline/bach.yaml
|
|
85
|
+
|
|
86
|
+
# from a remote stored config file
|
|
68
87
|
eva predict_fit --config https://raw.githubusercontent.com/kaiko-ai/eva/main/configs/vision/dino_vit/offline/bach.yaml
|
|
69
88
|
```
|
|
70
89
|
|
|
71
90
|
> [!NOTE]
|
|
72
|
-
> All the datasets that support automatic download in the repo have by default the option to automatically download set to false.
|
|
91
|
+
> All the datasets that support automatic download in the repo have by default the option to automatically download set to false.
|
|
92
|
+
> For automatic download you have to manually set download=true.
|
|
73
93
|
|
|
74
94
|
|
|
75
95
|
To view all the possibles, execute:
|
|
@@ -77,11 +97,12 @@ To view all the possibles, execute:
|
|
|
77
97
|
eva --help
|
|
78
98
|
```
|
|
79
99
|
|
|
80
|
-
For more information, please refer to the [documentation](https://kaiko-ai.github.io/eva/dev/user-guide/tutorials/offline_vs_online/)
|
|
100
|
+
For more information, please refer to the [documentation](https://kaiko-ai.github.io/eva/dev/user-guide/tutorials/offline_vs_online/)
|
|
101
|
+
and [tutorials](https://kaiko-ai.github.io/eva/dev/user-guide/advanced/replicate_evaluations/).
|
|
81
102
|
|
|
82
103
|
## Benchmarks
|
|
83
104
|
|
|
84
|
-
In this section you will find model benchmarks which were generated with
|
|
105
|
+
In this section you will find model benchmarks which were generated with _`eva`_.
|
|
85
106
|
|
|
86
107
|
### Table I: WSI patch-level benchmark
|
|
87
108
|
|
|
@@ -94,13 +115,15 @@ In this section you will find model benchmarks which were generated with _eva_.
|
|
|
94
115
|
| ViT-S/16 _(random)_ <sup>[1]</sup> | 0.410 | 0.617 | 0.501 | 0.753 | 0.728 |
|
|
95
116
|
| ViT-S/16 _(ImageNet)_ <sup>[1]</sup> | 0.695 | 0.935 | 0.831 | 0.864 | 0.849 |
|
|
96
117
|
| ViT-B/8 _(ImageNet)_ <sup>[1]</sup> | 0.710 | 0.939 | 0.814 | 0.870 | 0.856 |
|
|
118
|
+
| ViT-L/14 _(ImageNet)_ <sup>[1]</sup> | 0.707 | 0.916 | 0.832 | 0.873 | 0.888 |
|
|
97
119
|
| DINO<sub>(p=16)</sub> <sup>[2]</sup> | 0.801 | 0.934 | 0.768 | 0.889 | 0.895 |
|
|
98
120
|
| Phikon <sup>[3]</sup> | 0.725 | 0.935 | 0.777 | 0.912 | 0.915 |
|
|
99
|
-
|
|
|
100
|
-
| ViT-S/
|
|
101
|
-
| ViT-
|
|
102
|
-
| ViT-B/
|
|
103
|
-
| ViT-
|
|
121
|
+
| UNI <sup>[4]</sup> | 0.814 | 0.950 | 0.837 | 0.936 | 0.938 |
|
|
122
|
+
| ViT-S/16 _(kaiko.ai)_ <sup>[5]</sup> | 0.797 | 0.943 | 0.828 | 0.903 | 0.893 |
|
|
123
|
+
| ViT-S/8 _(kaiko.ai)_ <sup>[5]</sup> | 0.834 | 0.946 | 0.832 | 0.897 | 0.887 |
|
|
124
|
+
| ViT-B/16 _(kaiko.ai)_ <sup>[5]</sup> | 0.810 | 0.960 | 0.826 | 0.900 | 0.898 |
|
|
125
|
+
| ViT-B/8 _(kaiko.ai)_ <sup>[5]</sup> | 0.865 | 0.956 | 0.809 | 0.913 | 0.921 |
|
|
126
|
+
| ViT-L/14 _(kaiko.ai)_ <sup>[5]</sup> | 0.870 | 0.930 | 0.809 | 0.908 | 0.898 |
|
|
104
127
|
|
|
105
128
|
_Table I: Linear probing evaluation of FMs on patch-level downstream datasets.<br> We report averaged balanced accuracy
|
|
106
129
|
over 5 runs, with an average standard deviation of ±0.003._
|
|
@@ -110,14 +133,16 @@ over 5 runs, with an average standard deviation of ±0.003._
|
|
|
110
133
|
<br />
|
|
111
134
|
|
|
112
135
|
_References_:
|
|
113
|
-
1. _"Emerging properties in self-supervised vision transformers”_
|
|
114
|
-
2. _"Benchmarking self-supervised learning on diverse pathology datasets”_
|
|
115
|
-
3. _"Scaling self-supervised learning for histopathology with masked image modeling”_
|
|
116
|
-
4. _"
|
|
136
|
+
1. _"Emerging properties in self-supervised vision transformers”_, [arXiv](https://arxiv.org/abs/2104.14294)
|
|
137
|
+
2. _"Benchmarking self-supervised learning on diverse pathology datasets”_, [arXiv](https://arxiv.org/abs/2212.04690)
|
|
138
|
+
3. _"Scaling self-supervised learning for histopathology with masked image modeling”_, [medRxiv](https://www.medrxiv.org/content/10.1101/2023.07.21.23292757v1)
|
|
139
|
+
4. _"A General-Purpose Self-Supervised Model for Computational Pathology”_, [arXiv](https://arxiv.org/abs/2308.15474)
|
|
140
|
+
5. _"Towards Training Large-Scale Pathology Foundation Models: from TCGA to Hospital Scale”_, [arXiv](https://arxiv.org/pdf/2404.15217)
|
|
117
141
|
|
|
118
142
|
## Contributing
|
|
119
143
|
|
|
120
|
-
|
|
144
|
+
_`eva`_ is an open source project and welcomes contributions of all kinds. Please checkout the [developer](./docs/DEVELOPER_GUIDE.md)
|
|
145
|
+
and [contributing guide](./docs/CONTRIBUTING.md) for help on how to do so.
|
|
121
146
|
|
|
122
147
|
All contributors must follow the [code of conduct](./docs/CODE_OF_CONDUCT.md).
|
|
123
148
|
|
|
@@ -141,7 +166,24 @@ Our codebase is built using multiple opensource contributions
|
|
|
141
166
|
|
|
142
167
|
</div>
|
|
143
168
|
|
|
144
|
-
|
|
169
|
+
|
|
170
|
+
## Citation
|
|
171
|
+
|
|
172
|
+
If you find this repository useful, please consider giving a star ⭐ and adding the following citation:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
@inproceedings{
|
|
176
|
+
kaiko.ai2024eva,
|
|
177
|
+
title={eva: Evaluation framework for pathology foundation models},
|
|
178
|
+
author={kaiko.ai and Ioannis Gatopoulos and Nicolas K{\"a}nzig and Roman Moser and Sebastian Ot{\'a}lora},
|
|
179
|
+
booktitle={Medical Imaging with Deep Learning},
|
|
180
|
+
year={2024},
|
|
181
|
+
url={https://openreview.net/forum?id=FNBQOPj18N}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
<br />
|
|
186
|
+
|
|
145
187
|
<div align="center">
|
|
146
188
|
<img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/kaiko-logo.png?raw=true" width="200">
|
|
147
189
|
</div>
|
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "kaiko-eva"
|
|
9
|
-
version = "0.0.
|
|
9
|
+
version = "0.0.2"
|
|
10
10
|
description = "Evaluation Framework for oncology foundation models."
|
|
11
11
|
keywords = [
|
|
12
12
|
"machine-learning",
|
|
@@ -34,15 +34,17 @@ maintainers = [
|
|
|
34
34
|
]
|
|
35
35
|
requires-python = ">=3.10"
|
|
36
36
|
dependencies = [
|
|
37
|
-
"
|
|
38
|
-
"
|
|
37
|
+
"torch==2.3.0",
|
|
38
|
+
"lightning>=2.2.2",
|
|
39
|
+
"jsonargparse[omegaconf]==4.28",
|
|
39
40
|
"tensorboard>=2.16.2",
|
|
40
41
|
"loguru>=0.7.2",
|
|
41
42
|
"pandas>=2.2.0",
|
|
42
43
|
"transformers>=4.38.2",
|
|
43
44
|
"onnxruntime>=1.17.1",
|
|
44
|
-
"onnx>=1.
|
|
45
|
+
"onnx>=1.16.0",
|
|
45
46
|
"toolz>=0.12.1",
|
|
47
|
+
"rich>=13.7.1",
|
|
46
48
|
]
|
|
47
49
|
|
|
48
50
|
[project.urls]
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""Configuration logger callback."""
|
|
2
|
+
|
|
3
|
+
import ast
|
|
4
|
+
import os
|
|
5
|
+
import sys
|
|
6
|
+
from types import BuiltinFunctionType
|
|
7
|
+
from typing import Any, Dict, List
|
|
8
|
+
|
|
9
|
+
import lightning.pytorch as pl
|
|
10
|
+
import yaml
|
|
11
|
+
from lightning_fabric.utilities import cloud_io
|
|
12
|
+
from loguru import logger as cli_logger
|
|
13
|
+
from omegaconf import OmegaConf
|
|
14
|
+
from typing_extensions import TypeGuard, override
|
|
15
|
+
|
|
16
|
+
from eva.core import loggers
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ConfigurationLogger(pl.Callback):
|
|
20
|
+
"""Logs the submitted configuration to the experimental logger."""
|
|
21
|
+
|
|
22
|
+
_save_as: str = "config.yaml"
|
|
23
|
+
|
|
24
|
+
def __init__(self, verbose: bool = True) -> None:
|
|
25
|
+
"""Initializes the callback.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
verbose: Whether to print the configurations to print the
|
|
29
|
+
configuration to the terminal.
|
|
30
|
+
"""
|
|
31
|
+
super().__init__()
|
|
32
|
+
|
|
33
|
+
self._verbose = verbose
|
|
34
|
+
|
|
35
|
+
@override
|
|
36
|
+
def setup(
|
|
37
|
+
self,
|
|
38
|
+
trainer: pl.Trainer,
|
|
39
|
+
pl_module: pl.LightningModule,
|
|
40
|
+
stage: str | None = None,
|
|
41
|
+
) -> None:
|
|
42
|
+
log_dir = trainer.log_dir
|
|
43
|
+
if not _logdir_exists(log_dir):
|
|
44
|
+
return
|
|
45
|
+
|
|
46
|
+
configuration = _load_submitted_config()
|
|
47
|
+
|
|
48
|
+
if self._verbose:
|
|
49
|
+
config_as_text = yaml.dump(configuration, sort_keys=False)
|
|
50
|
+
print(f"Configuration:\033[94m\n---\n{config_as_text}\033[0m")
|
|
51
|
+
|
|
52
|
+
save_as = os.path.join(log_dir, self._save_as)
|
|
53
|
+
fs = cloud_io.get_filesystem(log_dir)
|
|
54
|
+
with fs.open(save_as, "w") as output_file:
|
|
55
|
+
yaml.dump(configuration, output_file, sort_keys=False)
|
|
56
|
+
|
|
57
|
+
loggers.log_parameters(trainer.loggers, tag="configuration", parameters=configuration)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _logdir_exists(logdir: str | None, verbose: bool = True) -> TypeGuard[str]:
|
|
61
|
+
"""Checks if the trainer has a log directory.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
logdir: Trainer's logdir.
|
|
65
|
+
name: The name to log with.
|
|
66
|
+
verbose: Whether to log if it does not exist.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
A bool indicating if the log directory exists or not.
|
|
70
|
+
"""
|
|
71
|
+
exists = isinstance(logdir, str)
|
|
72
|
+
if not exists and verbose:
|
|
73
|
+
print("\n")
|
|
74
|
+
cli_logger.warning("Log directory is `None`. Configuration file will not be logged.\n")
|
|
75
|
+
return exists
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _load_submitted_config() -> Dict[str, Any]:
|
|
79
|
+
"""Retrieves and loads the submitted configuration.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
The path to the configuration file.
|
|
83
|
+
"""
|
|
84
|
+
config_paths = _fetch_submitted_config_path()
|
|
85
|
+
return _load_yaml_files(config_paths)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _fetch_submitted_config_path() -> List[str]:
|
|
89
|
+
"""Fetches the config path from command line arguments.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
The path to the configuration file.
|
|
93
|
+
"""
|
|
94
|
+
return list(filter(lambda f: f.endswith(".yaml"), sys.argv))
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _load_yaml_files(paths: List[str]) -> Dict[str, Any]:
|
|
98
|
+
"""Loads yaml files and merge them from multiple paths.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
paths: The paths to the yaml files.
|
|
102
|
+
|
|
103
|
+
Returns:
|
|
104
|
+
The merged configurations as a dictionary.
|
|
105
|
+
"""
|
|
106
|
+
merged_config = {}
|
|
107
|
+
for config_path in paths:
|
|
108
|
+
fs = cloud_io.get_filesystem(config_path)
|
|
109
|
+
with fs.open(config_path, "r") as file:
|
|
110
|
+
omegaconf_file = OmegaConf.load(file) # type: ignore
|
|
111
|
+
config_dict = OmegaConf.to_object(omegaconf_file) # type: ignore
|
|
112
|
+
parsed_config = _type_resolver(config_dict) # type: ignore
|
|
113
|
+
merged_config.update(parsed_config)
|
|
114
|
+
return merged_config
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def _type_resolver(mapping: Dict[str, Any]) -> Dict[str, Any]:
|
|
118
|
+
"""Parses the string values of a dictionary in-place.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
mapping: A dictionary object.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
The mapping with the formatted values.
|
|
125
|
+
"""
|
|
126
|
+
for key, value in mapping.items():
|
|
127
|
+
if isinstance(value, dict):
|
|
128
|
+
formatted_value = _type_resolver(value)
|
|
129
|
+
elif isinstance(value, list) and isinstance(value[0], dict):
|
|
130
|
+
formatted_value = [_type_resolver(subvalue) for subvalue in value]
|
|
131
|
+
else:
|
|
132
|
+
try:
|
|
133
|
+
parsed_value = ast.literal_eval(value) # type: ignore
|
|
134
|
+
formatted_value = (
|
|
135
|
+
value if isinstance(parsed_value, BuiltinFunctionType) else parsed_value
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
except Exception:
|
|
139
|
+
formatted_value = value
|
|
140
|
+
|
|
141
|
+
mapping[key] = formatted_value
|
|
142
|
+
|
|
143
|
+
return mapping
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Datasets API."""
|
|
2
|
+
|
|
3
|
+
from eva.core.data.datasets.base import Dataset
|
|
4
|
+
from eva.core.data.datasets.dataset import TorchDataset
|
|
5
|
+
from eva.core.data.datasets.embeddings import (
|
|
6
|
+
EmbeddingsClassificationDataset,
|
|
7
|
+
MultiEmbeddingsClassificationDataset,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"Dataset",
|
|
12
|
+
"EmbeddingsClassificationDataset",
|
|
13
|
+
"MultiEmbeddingsClassificationDataset",
|
|
14
|
+
"TorchDataset",
|
|
15
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Datasets API."""
|
|
2
|
+
|
|
3
|
+
from eva.core.data.datasets.embeddings.base import EmbeddingsDataset
|
|
4
|
+
from eva.core.data.datasets.embeddings.classification import (
|
|
5
|
+
EmbeddingsClassificationDataset,
|
|
6
|
+
MultiEmbeddingsClassificationDataset,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"EmbeddingsDataset",
|
|
11
|
+
"EmbeddingsClassificationDataset",
|
|
12
|
+
"MultiEmbeddingsClassificationDataset",
|
|
13
|
+
]
|