Evaluation Framework for oncology foundation models.
Project description
Oncology FM Evaluation Framework by kaiko.ai
Installation •
How To Use •
Quick Start •
Documentation •
Datasets •
Benchmarks
Contribute •
Acknowledgements
eva is an evaluation framework for oncology foundation models (FMs) by kaiko.ai.
Check out the documentation for more information.
Highlights:
- Easy and reliable benchmark of Oncology FMs
- Supports patch-level classification, slide-level classification, semantic segmentation, and (visual) question answering tasks.
- Automatic embedding inference and evaluation of a downstream task
- Native support of popular medical datasets and models
- Produce statistics over multiple evaluation fits and multiple metrics
Installation
Simple installation from PyPI:
# to install the core version only
pip install kaiko-eva
# to install the expanded `vision` version
pip install 'kaiko-eva[vision]'
# to install the expanded `language` version
pip install 'kaiko-eva[language]'
# to install the expanded `multimodal` version
pip install 'kaiko-eva[multimodal]'
# to install everything
pip install 'kaiko-eva[all]'
To install the latest version of the main branch:
pip install "kaiko-eva[all] @ git+https://github.com/kaiko-ai/eva.git"
You can verify that the installation was successful by executing:
eva --version
How To Use
eva can be used directly from the terminal as a CLI tool as follows:
eva {fit,predict,predict_fit} --config url/or/path/to/the/config.yaml
eva uses jsonargparse to
make it easily configurable by automatically generating command line interfaces (CLIs),
which allows to call any Python object from the command line. Moreover, the configuration structure is always in sync with the code. Thus, eva can be used either directly from Python or as a CLI tool (recommended).
For more information, please refer to the documentation.
Learn about Configs
The following interfaces are identical:
| Python interface | Configuration file |
|---|---|
# main.py
# execute with: `python main.py`
from torch import nn
from eva import core
from eva.vision import datasets, transforms
# initialize trainer
trainer = core.Trainer(max_steps=100)
# initialize model
model = core.HeadModule(
backbone=nn.Flatten(),
head=nn.Linear(150528, 4),
criterion=nn.CrossEntropyLoss(),
)
# initialize data
data = core.DataModule(
datasets=core.DatasetsSchema(
train=datasets.BACH(
root="data/bach",
split="train",
download=True,
transforms=transforms.ResizeAndCrop(),
),
),
dataloaders=core.DataloadersSchema(
train=core.DataLoader(batch_size=32),
),
)
# perform fit
pipeline = core.Interface()
pipeline.fit(trainer, model=model, data=data)
|
# main.yaml
# execute with: `eva fit --config main.yaml`
---
trainer:
class_path: eva.Trainer
init_args:
max_steps: 100
model:
class_path: eva.HeadModule
init_args:
backbone: torch.nn.Flatten
head:
class_path: torch.nn.Linear
init_args:
in_features: 150528
out_features: 4
criterion: torch.nn.CrossEntropyLoss
data:
class_path: eva.DataModule
init_args:
datasets:
train:
class_path: eva.vision.datasets.BACH
init_args:
root: ./data/bach
split: train
download: true
transforms: eva.vision.transforms.ResizeAndCrop
dataloaders:
train:
batch_size: 32
|
The .yaml file defines the functionality of eva
by parsing and translating its content to Python objects directly.
Native supported configs can be found at the
configs directory
of the repo, which can be both locally stored or remote.
Quick Start
We define two types of evaluations: online and offline. While online fit uses the backbone (FM) to perform forward passes during the fitting process, offline fit first generates embeddings with the backbone and then fits the model using these embeddings as input, resulting in a faster evaluation.
Here are some examples to get you started:
-
Perform a downstream offline classification evaluation of
DINO ViT-S/16on theBACHdataset with linear probing by first pre-calculating the embeddings:DOWNLOAD_DATA=true \ MODEL_NAME=universal/vit_small_patch16_224_dino \ eva predict_fit --config https://raw.githubusercontent.com/kaiko-ai/eva/main/configs/vision/pathology/offline/classification/bach.yaml
-
Perform a downstream online segmentation evaluation of
DINO ViT-S/16on theMoNuSACdataset with theConvDecoderWithImagedecoder:DOWNLOAD_DATA=true \ MODEL_NAME=universal/vit_small_patch16_224_dino \ eva fit --config https://raw.githubusercontent.com/kaiko-ai/eva/main/configs/vision/pathology/online/segmentation/monusac.yaml
By default eva will perform 5 evaluation runs using different seeds, however, you can control the number of runs through the N_RUNS environment variable or in the configuration file. The results will be saved to ./logs by default, or to OUTPUT_ROOT if specified.
For more examples, take a look at the configs and tutorials.
[!NOTE] 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 the environment variable
DOWNLOAD_DATA=trueor in the configuration filedownload=true.
Leaderboards
The following table shows the FMs we have evaluated with eva. For more detailed information about the evaluation process, please refer to our documentation.
Pathology
Radiology
Contributing
eva is an open source project and welcomes contributions of all kinds. Please checkout the developer
and contributing guide for help on how to do so.
All contributors must follow the code of conduct.
Acknowledgements
Our codebase is built using multiple opensource contributions
Citation
If you find this repository useful, please consider giving a star ⭐ and adding the following citation:
@inproceedings{kaiko.ai2024eva,
title={eva: Evaluation framework for pathology foundation models},
author={kaiko.ai and Ioannis Gatopoulos and Nicolas K{\"a}nzig and Roman Moser and Sebastian Ot{\'a}lora},
booktitle={Medical Imaging with Deep Learning},
year={2024},
url={https://openreview.net/forum?id=FNBQOPj18N}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kaiko_eva-0.4.3.tar.gz.
File metadata
- Download URL: kaiko_eva-0.4.3.tar.gz
- Upload date:
- Size: 283.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.26.4 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
756d4e441c8c1a61de765d1f78693109a2f8d56d50c7bfc1a14f9b3b463edc5f
|
|
| MD5 |
3f746948bf379bb6f249059b91831fdf
|
|
| BLAKE2b-256 |
a6e2ff30cffa77309310475e515c28f9e029306cebecddf8b2eb72062e22eb46
|
File details
Details for the file kaiko_eva-0.4.3-py3-none-any.whl.
File metadata
- Download URL: kaiko_eva-0.4.3-py3-none-any.whl
- Upload date:
- Size: 352.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.26.4 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f60abd70e6fcf49b42cd605eac7363c85672775f6dc7c0b06607600971477e53
|
|
| MD5 |
9babb60f3e017fa815d8f5ba10bf6487
|
|
| BLAKE2b-256 |
5ef1bd2a17817659bdd58121c309465a5f2629e4bf149e98a4df577383a562de
|