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.

Files changed (335) hide show
  1. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/PKG-INFO +71 -27
  2. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/README.md +62 -20
  3. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/pyproject.toml +6 -4
  4. kaiko_eva-0.0.2/src/eva/core/callbacks/__init__.py +6 -0
  5. kaiko_eva-0.0.2/src/eva/core/callbacks/config.py +143 -0
  6. kaiko_eva-0.0.2/src/eva/core/data/datasets/__init__.py +15 -0
  7. kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/__init__.py +13 -0
  8. 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
  9. kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/__init__.py +10 -0
  10. kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/embeddings.py +66 -0
  11. kaiko_eva-0.0.2/src/eva/core/data/datasets/embeddings/classification/multi_embeddings.py +106 -0
  12. kaiko_eva-0.0.2/src/eva/core/data/transforms/__init__.py +7 -0
  13. kaiko_eva-0.0.2/src/eva/core/data/transforms/padding/__init__.py +5 -0
  14. kaiko_eva-0.0.2/src/eva/core/data/transforms/padding/pad_2d_tensor.py +38 -0
  15. kaiko_eva-0.0.2/src/eva/core/data/transforms/sampling/__init__.py +5 -0
  16. kaiko_eva-0.0.2/src/eva/core/data/transforms/sampling/sample_from_axis.py +40 -0
  17. kaiko_eva-0.0.2/src/eva/core/loggers/__init__.py +7 -0
  18. kaiko_eva-0.0.2/src/eva/core/loggers/dummy.py +38 -0
  19. kaiko_eva-0.0.2/src/eva/core/loggers/experimental_loggers.py +8 -0
  20. kaiko_eva-0.0.2/src/eva/core/loggers/log/__init__.py +5 -0
  21. kaiko_eva-0.0.2/src/eva/core/loggers/log/parameters.py +64 -0
  22. kaiko_eva-0.0.2/src/eva/core/loggers/log/utils.py +13 -0
  23. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/head.py +6 -11
  24. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/module.py +25 -1
  25. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_recorder.py +69 -7
  26. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/functional.py +22 -5
  27. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/trainer.py +20 -6
  28. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/__init__.py +1 -1
  29. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/__init__.py +1 -8
  30. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/_utils.py +3 -3
  31. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/__init__.py +1 -8
  32. kaiko_eva-0.0.2/src/eva/vision/data/datasets/segmentation/base.py +97 -0
  33. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/segmentation/total_segmentator.py +88 -69
  34. kaiko_eva-0.0.2/src/eva/vision/models/.DS_Store +0 -0
  35. kaiko_eva-0.0.2/src/eva/vision/models/networks/.DS_Store +0 -0
  36. kaiko_eva-0.0.2/src/eva/vision/utils/convert.py +24 -0
  37. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/nifti.py +10 -6
  38. kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0011/segmentations/semantic_labels/masks.nii.gz +0 -0
  39. kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0461/segmentations/semantic_labels/masks.nii.gz +0 -0
  40. kaiko_eva-0.0.2/tests/eva/assets/vision/datasets/total_segmentator/Totalsegmentator_dataset_v201/s0762/segmentations/semantic_labels/masks.nii.gz +0 -0
  41. kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/__init__.py +1 -0
  42. kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/classification/__init__.py +1 -0
  43. 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
  44. kaiko_eva-0.0.2/tests/eva/core/data/datasets/embeddings/classification/test_multi_embeddings.py +106 -0
  45. kaiko_eva-0.0.2/tests/eva/core/data/transforms/__init__.py +1 -0
  46. kaiko_eva-0.0.2/tests/eva/core/data/transforms/padding/__init__.py +1 -0
  47. kaiko_eva-0.0.2/tests/eva/core/data/transforms/padding/test_pad_2d_tensor.py +49 -0
  48. kaiko_eva-0.0.2/tests/eva/core/data/transforms/sampling/__init__.py +1 -0
  49. kaiko_eva-0.0.2/tests/eva/core/data/transforms/sampling/test_sample_from_axis.py +71 -0
  50. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/segmentation/test_total_segmentator.py +9 -7
  51. kaiko_eva-0.0.2/tests/eva/vision/utils/test_convert.py +50 -0
  52. kaiko_eva-0.0.0.dev8/src/eva/core/callbacks/__init__.py +0 -5
  53. kaiko_eva-0.0.0.dev8/src/eva/core/data/datasets/__init__.py +0 -7
  54. kaiko_eva-0.0.0.dev8/src/eva/core/data/datasets/classification/__init__.py +0 -5
  55. kaiko_eva-0.0.0.dev8/src/eva/core/data/transforms/__init__.py +0 -5
  56. kaiko_eva-0.0.0.dev8/src/eva/vision/data/datasets/classification/total_segmentator.py +0 -213
  57. kaiko_eva-0.0.0.dev8/src/eva/vision/data/datasets/segmentation/base.py +0 -112
  58. kaiko_eva-0.0.0.dev8/tests/eva/core/data/datasets/classification/__init__.py +0 -1
  59. kaiko_eva-0.0.0.dev8/tests/eva/vision/data/datasets/classification/test_total_segmentator.py +0 -63
  60. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/LICENSE +0 -0
  61. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/.DS_Store +0 -0
  62. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__init__.py +0 -0
  63. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__main__.py +0 -0
  64. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/__version__.py +0 -0
  65. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/__init__.py +0 -0
  66. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/__init__.py +0 -0
  67. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/embeddings.py +0 -0
  68. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/callbacks/writers/typings.py +0 -0
  69. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/__init__.py +0 -0
  70. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/cli.py +0 -0
  71. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/logo.py +0 -0
  72. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/cli/setup.py +0 -0
  73. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/__init__.py +0 -0
  74. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/dataloaders/__init__.py +0 -0
  75. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/dataloaders/dataloader.py +0 -0
  76. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/__init__.py +0 -0
  77. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/call.py +0 -0
  78. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/datamodule.py +0 -0
  79. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datamodules/schemas.py +0 -0
  80. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datasets/base.py +0 -0
  81. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/datasets/dataset.py +0 -0
  82. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/samplers/__init__.py +0 -0
  83. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/samplers/sampler.py +0 -0
  84. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/transforms/dtype/__init__.py +0 -0
  85. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/data/transforms/dtype/array.py +0 -0
  86. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/interface/__init__.py +0 -0
  87. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/interface/interface.py +0 -0
  88. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/__init__.py +0 -0
  89. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/average_loss.py +0 -0
  90. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/binary_balanced_accuracy.py +0 -0
  91. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/__init__.py +0 -0
  92. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/__init__.py +0 -0
  93. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/binary.py +0 -0
  94. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/defaults/classification/multiclass.py +0 -0
  95. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/__init__.py +0 -0
  96. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/collection.py +0 -0
  97. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/metric.py +0 -0
  98. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/module.py +0 -0
  99. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/schemas.py +0 -0
  100. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/metrics/structs/typings.py +0 -0
  101. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/__init__.py +0 -0
  102. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/__init__.py +0 -0
  103. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/inference.py +0 -0
  104. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/typings.py +0 -0
  105. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/__init__.py +0 -0
  106. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/batch_postprocess.py +0 -0
  107. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/modules/utils/grad.py +0 -0
  108. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/__init__.py +0 -0
  109. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/_utils.py +0 -0
  110. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/mlp.py +0 -0
  111. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/transforms/__init__.py +0 -0
  112. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/transforms/extract_cls_features.py +0 -0
  113. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/__init__.py +0 -0
  114. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/base.py +0 -0
  115. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/from_function.py +0 -0
  116. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/huggingface.py +0 -0
  117. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/models/networks/wrappers/onnx.py +0 -0
  118. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/__init__.py +0 -0
  119. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_logging.py +0 -0
  120. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/trainers/_utils.py +0 -0
  121. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/__init__.py +0 -0
  122. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/io/__init__.py +0 -0
  123. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/io/dataframe.py +0 -0
  124. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/multiprocessing.py +0 -0
  125. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/core/utils/workers.py +0 -0
  126. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/__init__.py +0 -0
  127. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/_validators.py +0 -0
  128. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/bach.py +0 -0
  129. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/base.py +0 -0
  130. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/crc.py +0 -0
  131. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/mhist.py +0 -0
  132. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/classification/patch_camelyon.py +0 -0
  133. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/segmentation/__init__.py +0 -0
  134. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/structs.py +0 -0
  135. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/datasets/vision.py +0 -0
  136. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/__init__.py +0 -0
  137. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/common/__init__.py +0 -0
  138. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/data/transforms/common/resize_and_crop.py +0 -0
  139. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/__init__.py +0 -0
  140. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/__init__.py +0 -0
  141. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/abmil.py +0 -0
  142. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/postprocesses/__init__.py +0 -0
  143. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/models/networks/postprocesses/cls.py +0 -0
  144. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/__init__.py +0 -0
  145. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/__init__.py +0 -0
  146. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/_utils.py +0 -0
  147. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/image.py +0 -0
  148. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/src/eva/vision/utils/io/text.py +0 -0
  149. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/__init__.py +0 -0
  150. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/__init__.py +0 -0
  151. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/_cli.py +0 -0
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/embeddings/manifest.csv +0 -0
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/core/datasets/multi-embeddings/manifest.csv +0 -0
  172. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/images/random_bgr_32x32.png +0 -0
  173. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/images/random_grayscale_32x32.png +0 -0
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {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
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/annotations.csv +0 -0
  253. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaa.png +0 -0
  254. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aab.png +0 -0
  255. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aac.png +0 -0
  256. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aae.png +0 -0
  257. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aaf.png +0 -0
  258. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aag.png +0 -0
  259. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/assets/vision/datasets/mhist/images/MHIST_aah.png +0 -0
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/conftest.py +0 -0
  279. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/__init__.py +0 -0
  280. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/conftest.py +0 -0
  281. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/writers/__init__.py +0 -0
  282. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/callbacks/writers/test_embeddings.py +0 -0
  283. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/__init__.py +0 -0
  284. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/dataloaders/__init__.py +0 -0
  285. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/dataloaders/test_dataloader.py +0 -0
  286. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/__init__.py +0 -0
  287. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/_utils.py +0 -0
  288. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/test_datamodule.py +0 -0
  289. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datamodules/test_schemas.py +0 -0
  290. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/data/datasets/__init__.py +0 -0
  291. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/__init__.py +0 -0
  292. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/__init__.py +0 -0
  293. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/test_metric_module.py +0 -0
  294. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/core/test_schemas.py +0 -0
  295. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/__init__.py +0 -0
  296. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/__init__.py +0 -0
  297. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/test_binary.py +0 -0
  298. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/defaults/classification/test_multiclass.py +0 -0
  299. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/test_average_loss.py +0 -0
  300. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/metrics/test_binary_balanced_accuracy.py +0 -0
  301. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/__init__.py +0 -0
  302. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/__init__.py +0 -0
  303. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/conftest.py +0 -0
  304. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/test_head.py +0 -0
  305. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/test_inference.py +0 -0
  306. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/utils/__init__.py +0 -0
  307. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/modules/utils/test_batch_postproces.py +0 -0
  308. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/__init__.py +0 -0
  309. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/test_mlp.py +0 -0
  310. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/__init__.py +0 -0
  311. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_from_function.py +0 -0
  312. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_huggingface.py +0 -0
  313. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/models/networks/wrappers/test_onnx.py +0 -0
  314. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/test_cli.py +0 -0
  315. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/trainers/__init__.py +0 -0
  316. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/core/trainers/test_recorder.py +0 -0
  317. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/__init__.py +0 -0
  318. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/__init__.py +0 -0
  319. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/__init__.py +0 -0
  320. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/__init__.py +0 -0
  321. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_bach.py +0 -0
  322. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_crc.py +0 -0
  323. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_mhist.py +0 -0
  324. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/classification/test_patch_camelyon.py +0 -0
  325. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/datasets/segmentation/__init__.py +0 -0
  326. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/__init__.py +0 -0
  327. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/common/__init__.py +0 -0
  328. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/data/transforms/common/test_resize_and_crop.py +0 -0
  329. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/__init__.py +0 -0
  330. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/networks/__init__.py +0 -0
  331. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/models/networks/test_abmil.py +0 -0
  332. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/test_vision_cli.py +0 -0
  333. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/utils/__init__.py +0 -0
  334. {kaiko_eva-0.0.0.dev8 → kaiko_eva-0.0.2}/tests/eva/vision/utils/io/__init__.py +0 -0
  335. {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.0.dev8
3
+ Version: 0.0.2
4
4
  Summary: Evaluation Framework for oncology foundation models.
5
- Keywords: machine-learning evaluation-framework oncology foundation-models
6
- Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, Nicolas Känzig <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
7
- Maintainer-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, Nicolas Känzig <nicolas@kaiko.ai>, Roman Moser <roman@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: lightning>=2.2.1
219
- Requires-Dist: jsonargparse[omegaconf]>=4.27.4
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.15.0
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
- <img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/eva-logo.png?raw=true" width="400">
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
  [![PyPI](https://img.shields.io/pypi/v/kaiko-eva.svg?logo=python)](https://pypi.python.org/pypi/kaiko-eva)
250
- [![CI](https://github.com/kaiko-ai/eva/workflows/CI/badge.svg)](https://github.com/kaiko-ai/eva/actions?query=workflow%3ACI)
251
- [![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg?labelColor=gray)](https://github.com/kaiko-ai/eva#license)
255
+ [![docs](https://img.shields.io/badge/📚_docs-latest-green)](https://kaiko-ai.github.io/eva/latest)
256
+ [![license](https://img.shields.io/badge/⚖️_License-Apache%202.0-blue.svg?labelColor=gray)](https://github.com/kaiko-ai/eva#license)<br>
257
+ [![paper](http://img.shields.io/badge/OpenReview-MIDL_2024-B31B1B.svg)](https://openreview.net/forum?id=FNBQOPj18N&noteId=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/). Check out the [documentation](https://kaiko-ai.github.io/eva/) for more information.
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
- _eva_ can be used directly from the terminal as a CLI tool as follows:
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
- For example, to perform a downstream evaluation of DINO ViT-S/16 on the BACH dataset with linear probing by first inferring the embeddings and performing 5 sequential fits, execute:
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. For automatic download you have to manually set download=true.
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/) and [tutorials](https://kaiko-ai.github.io/eva/dev/user-guide/advanced/replicate_evaluations/).
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 _eva_.
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
- | ViT-S/16 _(kaiko.ai)_ <sup>[4]</sup> | 0.797 | 0.943 | 0.828 | 0.903 | 0.893 |
340
- | ViT-S/8 _(kaiko.ai)_ <sup>[4]</sup> | 0.834 | 0.946 | 0.832 | 0.897 | 0.887 |
341
- | ViT-B/16 _(kaiko.ai)_ <sup>[4]</sup> | 0.810 | 0.960 | 0.826 | 0.900 | 0.898 |
342
- | ViT-B/8 _(kaiko.ai)_ <sup>[4]</sup> | 0.865 | 0.956 | 0.809 | 0.913 | 0.921 |
343
- | ViT-L/14 _(kaiko.ai)_ <sup>[4]</sup> | 0.870 | 0.930 | 0.809 | 0.908 | 0.898 |
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. _"Towards Training Large-Scale Pathology Foundation Models: from TCGA to Hospital Scale”_
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
- _eva_ is an open source project and welcomes contributions of all kinds. Please checkout the [developer](./docs/DEVELOPER_GUIDE.md) and [contributing guide](./docs/CONTRIBUTING.md) for help on how to do so.
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
- <img src="https://github.com/kaiko-ai/eva/blob/main/docs/images/eva-logo.png?raw=true" width="400">
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
  [![PyPI](https://img.shields.io/pypi/v/kaiko-eva.svg?logo=python)](https://pypi.python.org/pypi/kaiko-eva)
10
- [![CI](https://github.com/kaiko-ai/eva/workflows/CI/badge.svg)](https://github.com/kaiko-ai/eva/actions?query=workflow%3ACI)
11
- [![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg?labelColor=gray)](https://github.com/kaiko-ai/eva#license)
13
+ [![docs](https://img.shields.io/badge/📚_docs-latest-green)](https://kaiko-ai.github.io/eva/latest)
14
+ [![license](https://img.shields.io/badge/⚖️_License-Apache%202.0-blue.svg?labelColor=gray)](https://github.com/kaiko-ai/eva#license)<br>
15
+ [![paper](http://img.shields.io/badge/OpenReview-MIDL_2024-B31B1B.svg)](https://openreview.net/forum?id=FNBQOPj18N&noteId=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/). Check out the [documentation](https://kaiko-ai.github.io/eva/) for more information.
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
- _eva_ can be used directly from the terminal as a CLI tool as follows:
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
- For example, to perform a downstream evaluation of DINO ViT-S/16 on the BACH dataset with linear probing by first inferring the embeddings and performing 5 sequential fits, execute:
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. For automatic download you have to manually set download=true.
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/) and [tutorials](https://kaiko-ai.github.io/eva/dev/user-guide/advanced/replicate_evaluations/).
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 _eva_.
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
- | ViT-S/16 _(kaiko.ai)_ <sup>[4]</sup> | 0.797 | 0.943 | 0.828 | 0.903 | 0.893 |
100
- | ViT-S/8 _(kaiko.ai)_ <sup>[4]</sup> | 0.834 | 0.946 | 0.832 | 0.897 | 0.887 |
101
- | ViT-B/16 _(kaiko.ai)_ <sup>[4]</sup> | 0.810 | 0.960 | 0.826 | 0.900 | 0.898 |
102
- | ViT-B/8 _(kaiko.ai)_ <sup>[4]</sup> | 0.865 | 0.956 | 0.809 | 0.913 | 0.921 |
103
- | ViT-L/14 _(kaiko.ai)_ <sup>[4]</sup> | 0.870 | 0.930 | 0.809 | 0.908 | 0.898 |
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. _"Towards Training Large-Scale Pathology Foundation Models: from TCGA to Hospital Scale”_
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
- _eva_ is an open source project and welcomes contributions of all kinds. Please checkout the [developer](./docs/DEVELOPER_GUIDE.md) and [contributing guide](./docs/CONTRIBUTING.md) for help on how to do so.
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.0.dev8"
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
- "lightning>=2.2.1",
38
- "jsonargparse[omegaconf]>=4.27.4",
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.15.0",
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,6 @@
1
+ """Callbacks API."""
2
+
3
+ from eva.core.callbacks.config import ConfigurationLogger
4
+ from eva.core.callbacks.writers import EmbeddingsWriter
5
+
6
+ __all__ = ["ConfigurationLogger", "EmbeddingsWriter"]
@@ -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
+ ]