kaiko-eva 0.1.6__py3-none-any.whl → 0.1.7__py3-none-any.whl
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.
- eva/core/data/dataloaders/dataloader.py +5 -2
- eva/core/data/datamodules/datamodule.py +42 -5
- eva/core/data/datamodules/schemas.py +18 -1
- eva/core/data/datasets/__init__.py +4 -1
- eva/core/data/datasets/base.py +23 -0
- eva/core/data/datasets/typings.py +18 -0
- eva/core/data/samplers/__init__.py +4 -2
- eva/core/data/samplers/classification/__init__.py +5 -0
- eva/core/data/samplers/classification/balanced.py +96 -0
- eva/core/data/samplers/random.py +39 -0
- eva/core/data/samplers/sampler.py +27 -0
- eva/core/metrics/structs/module.py +30 -9
- eva/core/models/__init__.py +8 -1
- eva/core/models/modules/head.py +19 -1
- eva/core/models/modules/utils/__init__.py +2 -1
- eva/core/models/modules/utils/checkpoint.py +21 -0
- eva/core/models/wrappers/__init__.py +3 -1
- eva/core/models/wrappers/from_torchhub.py +93 -0
- eva/core/trainers/functional.py +4 -2
- eva/core/trainers/trainer.py +8 -4
- eva/vision/data/datasets/segmentation/_total_segmentator.py +91 -0
- eva/vision/data/datasets/segmentation/consep.py +4 -1
- eva/vision/data/datasets/segmentation/lits.py +3 -3
- eva/vision/data/datasets/segmentation/total_segmentator_2d.py +92 -37
- eva/vision/data/datasets/vision.py +1 -18
- eva/vision/losses/dice.py +0 -3
- eva/vision/metrics/__init__.py +5 -1
- eva/vision/metrics/defaults/segmentation/multiclass.py +30 -6
- eva/vision/metrics/segmentation/__init__.py +4 -0
- eva/vision/metrics/segmentation/_utils.py +1 -2
- eva/vision/metrics/segmentation/dice.py +69 -0
- eva/vision/metrics/segmentation/generalized_dice.py +2 -4
- eva/vision/metrics/segmentation/mean_iou.py +4 -8
- eva/vision/metrics/segmentation/monai_dice.py +57 -0
- eva/vision/metrics/wrappers/__init__.py +5 -0
- eva/vision/metrics/wrappers/monai.py +32 -0
- eva/vision/models/modules/semantic_segmentation.py +19 -1
- eva/vision/models/networks/backbones/__init__.py +2 -2
- eva/vision/models/networks/backbones/torchhub/__init__.py +5 -0
- eva/vision/models/networks/backbones/torchhub/backbones.py +61 -0
- eva/vision/models/networks/decoders/segmentation/decoder2d.py +1 -1
- eva/vision/models/wrappers/__init__.py +1 -1
- {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.7.dist-info}/METADATA +2 -2
- {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.7.dist-info}/RECORD +47 -34
- {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.7.dist-info}/WHEEL +0 -0
- {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.7.dist-info}/entry_points.txt +0 -0
- {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -6,7 +6,7 @@ import torch
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def apply_ignore_index(
|
|
9
|
-
preds: torch.Tensor, target: torch.Tensor, ignore_index: int
|
|
9
|
+
preds: torch.Tensor, target: torch.Tensor, ignore_index: int
|
|
10
10
|
) -> Tuple[torch.Tensor, torch.Tensor]:
|
|
11
11
|
"""Applies the ignore index to the predictions and target tensors.
|
|
12
12
|
|
|
@@ -17,7 +17,6 @@ def apply_ignore_index(
|
|
|
17
17
|
preds: The predictions tensor. Expected to be of shape `(N,C,...)`.
|
|
18
18
|
target: The target tensor. Expected to be of shape `(N,C,...)`.
|
|
19
19
|
ignore_index: The index to ignore.
|
|
20
|
-
num_classes: The number of classes.
|
|
21
20
|
|
|
22
21
|
Returns:
|
|
23
22
|
The modified predictions and target tensors of shape `(N,C-1,...)`.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Generalized Dice Score metric for semantic segmentation."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal
|
|
4
|
+
|
|
5
|
+
import torch
|
|
6
|
+
from torchmetrics import segmentation
|
|
7
|
+
from torchmetrics.functional.segmentation.dice import _dice_score_update
|
|
8
|
+
from typing_extensions import override
|
|
9
|
+
|
|
10
|
+
from eva.vision.metrics.segmentation import _utils
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DiceScore(segmentation.DiceScore):
|
|
14
|
+
"""Defines the Generalized Dice Score.
|
|
15
|
+
|
|
16
|
+
It expands the `torchmetrics` class by including an `ignore_index`
|
|
17
|
+
functionality and converting tensors to one-hot format.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(
|
|
21
|
+
self,
|
|
22
|
+
num_classes: int,
|
|
23
|
+
include_background: bool = True,
|
|
24
|
+
average: Literal["micro", "macro", "weighted", "none"] | None = "micro",
|
|
25
|
+
ignore_index: int | None = None,
|
|
26
|
+
**kwargs: Any,
|
|
27
|
+
) -> None:
|
|
28
|
+
"""Initializes the metric.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
num_classes: The number of classes in the segmentation problem.
|
|
32
|
+
include_background: Whether to include the background class in the computation
|
|
33
|
+
average: The method to average the dice score accross the different classes. Options are
|
|
34
|
+
`"micro"`, `"macro"`, `"weighted"`, `"none"` or `None`.
|
|
35
|
+
ignore_index: Integer specifying a target class to ignore. If given, this class
|
|
36
|
+
index does not contribute to the returned score, regardless of reduction method.
|
|
37
|
+
kwargs: Additional keyword arguments, see :ref:`Metric kwargs` for more info.
|
|
38
|
+
"""
|
|
39
|
+
super().__init__(
|
|
40
|
+
num_classes=num_classes
|
|
41
|
+
- (ignore_index is not None)
|
|
42
|
+
+ (ignore_index == 0 and not include_background),
|
|
43
|
+
include_background=include_background,
|
|
44
|
+
average=average,
|
|
45
|
+
input_format="one-hot",
|
|
46
|
+
**kwargs,
|
|
47
|
+
)
|
|
48
|
+
self.orig_num_classes = num_classes
|
|
49
|
+
self.ignore_index = ignore_index
|
|
50
|
+
|
|
51
|
+
@override
|
|
52
|
+
def update(self, preds: torch.Tensor, target: torch.Tensor) -> None:
|
|
53
|
+
preds = _utils.index_to_one_hot(preds, num_classes=self.orig_num_classes)
|
|
54
|
+
target = _utils.index_to_one_hot(target, num_classes=self.orig_num_classes)
|
|
55
|
+
if self.ignore_index is not None:
|
|
56
|
+
preds, target = _utils.apply_ignore_index(preds, target, self.ignore_index)
|
|
57
|
+
|
|
58
|
+
# TODO: Replace _update by super.update() once the following issue is fixed:
|
|
59
|
+
# https://github.com/Lightning-AI/torchmetrics/issues/2847
|
|
60
|
+
self._update(preds.long(), target.long())
|
|
61
|
+
# super().update(preds=preds.long(), target=target.long())
|
|
62
|
+
|
|
63
|
+
def _update(self, preds: torch.Tensor, target: torch.Tensor) -> None:
|
|
64
|
+
numerator, denominator, support = _dice_score_update(
|
|
65
|
+
preds, target, self.num_classes, self.include_background, self.input_format # type: ignore
|
|
66
|
+
)
|
|
67
|
+
self.numerator.append(numerator)
|
|
68
|
+
self.denominator.append(denominator)
|
|
69
|
+
self.support.append(support)
|
|
@@ -13,7 +13,7 @@ class GeneralizedDiceScore(segmentation.GeneralizedDiceScore):
|
|
|
13
13
|
"""Defines the Generalized Dice Score.
|
|
14
14
|
|
|
15
15
|
It expands the `torchmetrics` class by including an `ignore_index`
|
|
16
|
-
functionality.
|
|
16
|
+
functionality and converting tensors to one-hot format.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
@@ -55,7 +55,5 @@ class GeneralizedDiceScore(segmentation.GeneralizedDiceScore):
|
|
|
55
55
|
preds = _utils.index_to_one_hot(preds, num_classes=self.orig_num_classes)
|
|
56
56
|
target = _utils.index_to_one_hot(target, num_classes=self.orig_num_classes)
|
|
57
57
|
if self.ignore_index is not None:
|
|
58
|
-
preds, target = _utils.apply_ignore_index(
|
|
59
|
-
preds, target, self.ignore_index, self.num_classes
|
|
60
|
-
)
|
|
58
|
+
preds, target = _utils.apply_ignore_index(preds, target, self.ignore_index)
|
|
61
59
|
super().update(preds=preds.long(), target=target.long())
|
|
@@ -13,7 +13,7 @@ class MeanIoU(segmentation.MeanIoU):
|
|
|
13
13
|
"""MeanIoU (mIOU) metric for semantic segmentation.
|
|
14
14
|
|
|
15
15
|
It expands the `torchmetrics` class by including an `ignore_index`
|
|
16
|
-
functionality.
|
|
16
|
+
functionality and converting tensors to one-hot format.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
@@ -36,10 +36,8 @@ class MeanIoU(segmentation.MeanIoU):
|
|
|
36
36
|
kwargs: Additional keyword arguments, see :ref:`Metric kwargs` for more info.
|
|
37
37
|
"""
|
|
38
38
|
super().__init__(
|
|
39
|
-
|
|
40
|
-
- (ignore_index is not None)
|
|
41
|
-
+ (ignore_index == 0 and not include_background),
|
|
42
|
-
include_background=include_background,
|
|
39
|
+
include_background=include_background or (ignore_index == 0),
|
|
40
|
+
num_classes=num_classes - (ignore_index is not None),
|
|
43
41
|
per_class=per_class,
|
|
44
42
|
**kwargs,
|
|
45
43
|
)
|
|
@@ -51,7 +49,5 @@ class MeanIoU(segmentation.MeanIoU):
|
|
|
51
49
|
preds = _utils.index_to_one_hot(preds, num_classes=self.orig_num_classes)
|
|
52
50
|
target = _utils.index_to_one_hot(target, num_classes=self.orig_num_classes)
|
|
53
51
|
if self.ignore_index is not None:
|
|
54
|
-
preds, target = _utils.apply_ignore_index(
|
|
55
|
-
preds, target, self.ignore_index, self.num_classes
|
|
56
|
-
)
|
|
52
|
+
preds, target = _utils.apply_ignore_index(preds, target, self.ignore_index)
|
|
57
53
|
super().update(preds=preds.long(), target=target.long())
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""Wrapper for dice score metric from MONAI."""
|
|
2
|
+
|
|
3
|
+
from monai.metrics.meandice import DiceMetric
|
|
4
|
+
from typing_extensions import override
|
|
5
|
+
|
|
6
|
+
from eva.vision.metrics import wrappers
|
|
7
|
+
from eva.vision.metrics.segmentation import _utils
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class MonaiDiceScore(wrappers.MonaiMetricWrapper):
|
|
11
|
+
"""Wrapper to make MONAI's `DiceMetric` compatible with `torchmetrics`."""
|
|
12
|
+
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
num_classes: int,
|
|
16
|
+
include_background: bool = True,
|
|
17
|
+
reduction: str = "mean",
|
|
18
|
+
ignore_index: int | None = None,
|
|
19
|
+
**kwargs,
|
|
20
|
+
):
|
|
21
|
+
"""Initializes metric.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
num_classes: The number of classes in the dataset.
|
|
25
|
+
include_background: Whether to include the background class in the computation.
|
|
26
|
+
reduction: The method to reduce the dice score. Options are `"mean"`, `"sum"`, `"none"`.
|
|
27
|
+
ignore_index: Integer specifying a target class to ignore. If given, this class
|
|
28
|
+
index does not contribute to the returned score.
|
|
29
|
+
kwargs: Additional keyword arguments for instantiating monai's `DiceMetric` class.
|
|
30
|
+
"""
|
|
31
|
+
super().__init__(
|
|
32
|
+
DiceMetric(
|
|
33
|
+
include_background=include_background or (ignore_index == 0),
|
|
34
|
+
reduction=reduction,
|
|
35
|
+
num_classes=num_classes - (ignore_index is not None),
|
|
36
|
+
**kwargs,
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
self.reduction = reduction
|
|
41
|
+
self.orig_num_classes = num_classes
|
|
42
|
+
self.ignore_index = ignore_index
|
|
43
|
+
|
|
44
|
+
@override
|
|
45
|
+
def update(self, preds, target):
|
|
46
|
+
preds = _utils.index_to_one_hot(preds, num_classes=self.orig_num_classes)
|
|
47
|
+
target = _utils.index_to_one_hot(target, num_classes=self.orig_num_classes)
|
|
48
|
+
if self.ignore_index is not None:
|
|
49
|
+
preds, target = _utils.apply_ignore_index(preds, target, self.ignore_index)
|
|
50
|
+
return super().update(preds, target)
|
|
51
|
+
|
|
52
|
+
@override
|
|
53
|
+
def compute(self):
|
|
54
|
+
result = super().compute()
|
|
55
|
+
if self.reduction == "none" and len(result) > 1:
|
|
56
|
+
result = result.nanmean(dim=0)
|
|
57
|
+
return result
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Monai metrics wrappers."""
|
|
2
|
+
|
|
3
|
+
import torch
|
|
4
|
+
import torchmetrics
|
|
5
|
+
from monai.metrics.metric import CumulativeIterationMetric
|
|
6
|
+
from typing_extensions import override
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class MonaiMetricWrapper(torchmetrics.Metric):
|
|
10
|
+
"""Wrapper class to make MONAI metrics compatible with `torchmetrics`."""
|
|
11
|
+
|
|
12
|
+
def __init__(self, monai_metric: CumulativeIterationMetric):
|
|
13
|
+
"""Initializes the monai metric wrapper.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
monai_metric: The MONAI metric to wrap.
|
|
17
|
+
"""
|
|
18
|
+
super().__init__()
|
|
19
|
+
self._monai_metric = monai_metric
|
|
20
|
+
|
|
21
|
+
@override
|
|
22
|
+
def update(self, preds: torch.Tensor, target: torch.Tensor) -> None:
|
|
23
|
+
self._monai_metric(preds, target)
|
|
24
|
+
|
|
25
|
+
@override
|
|
26
|
+
def compute(self) -> torch.Tensor:
|
|
27
|
+
return self._monai_metric.aggregate()
|
|
28
|
+
|
|
29
|
+
@override
|
|
30
|
+
def reset(self) -> None:
|
|
31
|
+
super().reset()
|
|
32
|
+
self._monai_metric.reset()
|
|
@@ -12,7 +12,7 @@ from typing_extensions import override
|
|
|
12
12
|
from eva.core.metrics import structs as metrics_lib
|
|
13
13
|
from eva.core.models.modules import module
|
|
14
14
|
from eva.core.models.modules.typings import INPUT_BATCH, INPUT_TENSOR_BATCH
|
|
15
|
-
from eva.core.models.modules.utils import batch_postprocess, grad
|
|
15
|
+
from eva.core.models.modules.utils import batch_postprocess, grad, submodule_state_dict
|
|
16
16
|
from eva.core.utils import parser
|
|
17
17
|
from eva.vision.models.networks import decoders
|
|
18
18
|
from eva.vision.models.networks.decoders.segmentation.typings import DecoderInputs
|
|
@@ -31,6 +31,7 @@ class SemanticSegmentationModule(module.ModelModule):
|
|
|
31
31
|
lr_scheduler: LRSchedulerCallable = lr_scheduler.ConstantLR,
|
|
32
32
|
metrics: metrics_lib.MetricsSchema | None = None,
|
|
33
33
|
postprocess: batch_postprocess.BatchPostProcess | None = None,
|
|
34
|
+
save_decoder_only: bool = True,
|
|
34
35
|
) -> None:
|
|
35
36
|
"""Initializes the neural net head module.
|
|
36
37
|
|
|
@@ -49,6 +50,8 @@ class SemanticSegmentationModule(module.ModelModule):
|
|
|
49
50
|
postprocess: A list of helper functions to apply after the
|
|
50
51
|
loss and before the metrics calculation to the model
|
|
51
52
|
predictions and targets.
|
|
53
|
+
save_decoder_only: Whether to save only the decoder during checkpointing. If False,
|
|
54
|
+
will also save the encoder (not recommended when frozen).
|
|
52
55
|
"""
|
|
53
56
|
super().__init__(metrics=metrics, postprocess=postprocess)
|
|
54
57
|
|
|
@@ -58,6 +61,7 @@ class SemanticSegmentationModule(module.ModelModule):
|
|
|
58
61
|
self.lr_multiplier_encoder = lr_multiplier_encoder
|
|
59
62
|
self.optimizer = optimizer
|
|
60
63
|
self.lr_scheduler = lr_scheduler
|
|
64
|
+
self.save_decoder_only = save_decoder_only
|
|
61
65
|
|
|
62
66
|
@override
|
|
63
67
|
def configure_model(self) -> None:
|
|
@@ -83,6 +87,20 @@ class SemanticSegmentationModule(module.ModelModule):
|
|
|
83
87
|
lr_scheduler = self.lr_scheduler(optimizer)
|
|
84
88
|
return {"optimizer": optimizer, "lr_scheduler": lr_scheduler}
|
|
85
89
|
|
|
90
|
+
@override
|
|
91
|
+
def on_save_checkpoint(self, checkpoint: Dict[str, Any]) -> None:
|
|
92
|
+
if self.save_decoder_only:
|
|
93
|
+
checkpoint["state_dict"] = submodule_state_dict(checkpoint["state_dict"], "decoder")
|
|
94
|
+
super().on_save_checkpoint(checkpoint)
|
|
95
|
+
|
|
96
|
+
@override
|
|
97
|
+
def on_load_checkpoint(self, checkpoint: Dict[str, Any]) -> None:
|
|
98
|
+
if self.save_decoder_only and self.encoder is not None:
|
|
99
|
+
checkpoint["state_dict"].update(
|
|
100
|
+
{f"encoder.{k}": v for k, v in self.encoder.state_dict().items()} # type: ignore
|
|
101
|
+
)
|
|
102
|
+
super().on_load_checkpoint(checkpoint)
|
|
103
|
+
|
|
86
104
|
@override
|
|
87
105
|
def forward(
|
|
88
106
|
self,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Vision Model Backbones API."""
|
|
2
2
|
|
|
3
|
-
from eva.vision.models.networks.backbones import pathology, timm, universal
|
|
3
|
+
from eva.vision.models.networks.backbones import pathology, timm, torchhub, universal
|
|
4
4
|
from eva.vision.models.networks.backbones.registry import BackboneModelRegistry, register_model
|
|
5
5
|
|
|
6
|
-
__all__ = ["pathology", "timm", "universal", "BackboneModelRegistry", "register_model"]
|
|
6
|
+
__all__ = ["pathology", "timm", "torchhub", "universal", "BackboneModelRegistry", "register_model"]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""torch.hub backbones."""
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
from typing import Tuple
|
|
5
|
+
|
|
6
|
+
import torch
|
|
7
|
+
from loguru import logger
|
|
8
|
+
from torch import nn
|
|
9
|
+
|
|
10
|
+
from eva.core.models import wrappers
|
|
11
|
+
from eva.vision.models.networks.backbones.registry import BackboneModelRegistry
|
|
12
|
+
|
|
13
|
+
HUB_REPOS = ["facebookresearch/dinov2:main", "kaiko-ai/towards_large_pathology_fms"]
|
|
14
|
+
"""List of torch.hub repositories for which to add the models to the registry."""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def torch_hub_model(
|
|
18
|
+
model_name: str,
|
|
19
|
+
repo_or_dir: str,
|
|
20
|
+
checkpoint_path: str | None = None,
|
|
21
|
+
pretrained: bool = False,
|
|
22
|
+
out_indices: int | Tuple[int, ...] | None = None,
|
|
23
|
+
**kwargs,
|
|
24
|
+
) -> nn.Module:
|
|
25
|
+
"""Initializes any ViT model from torch.hub with weights from a specified checkpoint.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
model_name: The name of the model to load.
|
|
29
|
+
repo_or_dir: The torch.hub repository or local directory to load the model from.
|
|
30
|
+
checkpoint_path: The path to the checkpoint file.
|
|
31
|
+
pretrained: If set to `True`, load pretrained model weights if available.
|
|
32
|
+
out_indices: Whether and which multi-level patch embeddings to return.
|
|
33
|
+
**kwargs: Additional arguments to pass to the model
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
The VIT model instance.
|
|
37
|
+
"""
|
|
38
|
+
logger.info(
|
|
39
|
+
f"Loading torch.hub model {model_name} from {repo_or_dir}"
|
|
40
|
+
+ (f"using checkpoint {checkpoint_path}" if checkpoint_path else "")
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
return wrappers.TorchHubModel(
|
|
44
|
+
model_name=model_name,
|
|
45
|
+
repo_or_dir=repo_or_dir,
|
|
46
|
+
pretrained=pretrained,
|
|
47
|
+
checkpoint_path=checkpoint_path or "",
|
|
48
|
+
out_indices=out_indices,
|
|
49
|
+
model_kwargs=kwargs,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
BackboneModelRegistry._registry.update(
|
|
54
|
+
{
|
|
55
|
+
f"torchhub/{repo}:{model_name}": functools.partial(
|
|
56
|
+
torch_hub_model, model_name=model_name, repo_or_dir=repo
|
|
57
|
+
)
|
|
58
|
+
for repo in HUB_REPOS
|
|
59
|
+
for model_name in torch.hub.list(repo, verbose=False)
|
|
60
|
+
}
|
|
61
|
+
)
|
|
@@ -52,7 +52,7 @@ class Decoder2D(base.Decoder):
|
|
|
52
52
|
"""
|
|
53
53
|
if isinstance(features, torch.Tensor):
|
|
54
54
|
features = [features]
|
|
55
|
-
if not isinstance(features, list) or features[0].ndim != 4:
|
|
55
|
+
if not isinstance(features, (list, tuple)) or features[0].ndim != 4:
|
|
56
56
|
raise ValueError(
|
|
57
57
|
"Input features should be a list of four (4) dimensional inputs of "
|
|
58
58
|
"shape (batch_size, hidden_size, n_patches_height, n_patches_width)."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaiko-eva
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Evaluation Framework for oncology foundation models.
|
|
5
5
|
Keywords: machine-learning,evaluation-framework,oncology,foundation-models
|
|
6
6
|
Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
|
|
@@ -227,7 +227,7 @@ Requires-Dist: onnxruntime>=1.15.1
|
|
|
227
227
|
Requires-Dist: onnx>=1.16.0
|
|
228
228
|
Requires-Dist: toolz>=0.12.1
|
|
229
229
|
Requires-Dist: rich>=13.7.1
|
|
230
|
-
Requires-Dist: torchmetrics>=1.
|
|
230
|
+
Requires-Dist: torchmetrics>=1.6.0
|
|
231
231
|
Provides-Extra: vision
|
|
232
232
|
Requires-Dist: h5py>=3.10.0; extra == "vision"
|
|
233
233
|
Requires-Dist: nibabel>=4.0.1; extra == "vision"
|
|
@@ -17,20 +17,24 @@ eva/core/cli/logo.py,sha256=x6-vGWI0s9gza-xxQrBDi2wneb2wFU_mQGHgpAiq2MQ,786
|
|
|
17
17
|
eva/core/cli/setup.py,sha256=kR-7l4X5Hu8kSLoQZGYGIeLXtn9S_EU52dauDy6fm0w,2663
|
|
18
18
|
eva/core/data/__init__.py,sha256=yG3BeOWhp1EjVYMFqx8M_TBWFDyfIwwksQGQmMdSPaI,340
|
|
19
19
|
eva/core/data/dataloaders/__init__.py,sha256=fbNClVZ8J3QoGi4qiPq635ig1j9GdI7six3RhfwDbjY,110
|
|
20
|
-
eva/core/data/dataloaders/dataloader.py,sha256=
|
|
20
|
+
eva/core/data/dataloaders/dataloader.py,sha256=Ek_OqlOuQSiipFjBJ39DFyWvW3CdqAB2bufOcEs0ChU,2525
|
|
21
21
|
eva/core/data/datamodules/__init__.py,sha256=qZchYbgxo9lxYnGoqdk0C6MfS2IbF0WItO0kCdP9Mqc,229
|
|
22
22
|
eva/core/data/datamodules/call.py,sha256=jjj9w3UXYuQB-qyCcw1EZpRJW10OC1I3dvgvsuQWLck,940
|
|
23
|
-
eva/core/data/datamodules/datamodule.py,sha256=
|
|
24
|
-
eva/core/data/datamodules/schemas.py,sha256=
|
|
25
|
-
eva/core/data/datasets/__init__.py,sha256=
|
|
26
|
-
eva/core/data/datasets/base.py,sha256=
|
|
23
|
+
eva/core/data/datamodules/datamodule.py,sha256=_pK59oXDe53oDkmv6eoJUvfl44WlFkrbC8KXSRMs_20,5533
|
|
24
|
+
eva/core/data/datamodules/schemas.py,sha256=rzcf3uow6T6slVSwxEGDVmpi3QUvkiDoT_gCF3aMAEE,2262
|
|
25
|
+
eva/core/data/datasets/__init__.py,sha256=jWPxT3gjQjwS6HqVZAb7KhMgzgklPgHeH51iPxDh_Tg,493
|
|
26
|
+
eva/core/data/datasets/base.py,sha256=BLzlRFuByhrGmI7NFwn7-Tw0vpSYSRhl2Y65iX4KaMw,2526
|
|
27
27
|
eva/core/data/datasets/classification/__init__.py,sha256=wJ2jD9YODftt-dMcMf0TbCjJt47qXYBKkD4-XXajvRQ,340
|
|
28
28
|
eva/core/data/datasets/classification/embeddings.py,sha256=bgBVQyGxlxVCvGjmwNB52E360QwzrhGZQ44rPNFR4k8,1110
|
|
29
29
|
eva/core/data/datasets/classification/multi_embeddings.py,sha256=j_o0MH2gwn_y3rNFXEUzNg6WErlG3Rq_vn5Og1Yk7J0,4603
|
|
30
30
|
eva/core/data/datasets/dataset.py,sha256=tA6Wd_7vqOE9GsukSWrgN9zaZKtKCHaE58SqIfWxWdg,124
|
|
31
31
|
eva/core/data/datasets/embeddings.py,sha256=zNEO8KxqiOopcN_lTjwtEAm9xbnYDSjOE8X2-iZQIhU,5545
|
|
32
|
-
eva/core/data/
|
|
33
|
-
eva/core/data/samplers/
|
|
32
|
+
eva/core/data/datasets/typings.py,sha256=KSmckjsU64pGV-8uSLkD1HmvPKYlyypngiRx9yy4RDs,383
|
|
33
|
+
eva/core/data/samplers/__init__.py,sha256=rRrKtg4l6YoziD3M0MkctQvX1NdRxaQa5sm6RHH_jXc,315
|
|
34
|
+
eva/core/data/samplers/classification/__init__.py,sha256=gvv7BH4lG9JlkMaTOnaL0f4k1ghiVBgrH64bh1-rreQ,147
|
|
35
|
+
eva/core/data/samplers/classification/balanced.py,sha256=YE6InKu12Jnu7AObi_gjKLzeHAFlQsbJVrggeA8X4DU,3517
|
|
36
|
+
eva/core/data/samplers/random.py,sha256=znl0Z9a-X-3attP-EH9jwwo83n40FXW_JzOLNZAml_c,1252
|
|
37
|
+
eva/core/data/samplers/sampler.py,sha256=0DOLUzFoweqEubuO1A4bZBRU0AWFoWGWrO3pawRT-eI,877
|
|
34
38
|
eva/core/data/splitting/__init__.py,sha256=VQJ8lfakbv6y2kAk3VDtITAvh7kcZo3H1JwJBc5jT08,198
|
|
35
39
|
eva/core/data/splitting/random.py,sha256=r6iy7j34seRTlyB79_Xy7m6lsKRi8ZM9X5Ln1b-SBjg,1453
|
|
36
40
|
eva/core/data/splitting/stratified.py,sha256=dliRHgEyZTOzpJrR8FzaRaAnjUxu_VsZUuy_4MPQjlY,2265
|
|
@@ -63,35 +67,37 @@ eva/core/metrics/defaults/classification/multiclass.py,sha256=8Aesy_rKtp4KxfXJtD
|
|
|
63
67
|
eva/core/metrics/structs/__init__.py,sha256=cvn7E4k5vJmpwJj_zezmtZa_Nl_RddDM1G-MO8TP0po,422
|
|
64
68
|
eva/core/metrics/structs/collection.py,sha256=bNfCekHN8pzD49-YTqVxrmxFtiQfNxnv-RwkxCL6rbc,149
|
|
65
69
|
eva/core/metrics/structs/metric.py,sha256=zdnE0ZVTSYAMl7rW_OL6e1XiZDvLTirYqV0lgJCleXY,109
|
|
66
|
-
eva/core/metrics/structs/module.py,sha256=
|
|
70
|
+
eva/core/metrics/structs/module.py,sha256=pHpIAt5HQDoYWvyFXxYTZleTKMW1iaTCgwAktygjzDw,4681
|
|
67
71
|
eva/core/metrics/structs/schemas.py,sha256=ZaSrx0j_NfIwT7joMUD1LyrKdAXTLaeSzWYTHDsc6h0,1641
|
|
68
72
|
eva/core/metrics/structs/typings.py,sha256=qJd-FiD2IhJgBeo8FyP0vpVUIH4RKb1k6zYvHtjUA04,388
|
|
69
|
-
eva/core/models/__init__.py,sha256=
|
|
73
|
+
eva/core/models/__init__.py,sha256=T6Fo886LxMj-Y58_ylzkPkFSnFR2aISiMIbuO_weC4s,430
|
|
70
74
|
eva/core/models/modules/__init__.py,sha256=QJWJ42BceXZBzDGgk5FHBcCaRrB9egTFKVF6gDsBYfM,255
|
|
71
|
-
eva/core/models/modules/head.py,sha256=
|
|
75
|
+
eva/core/models/modules/head.py,sha256=Wza8IFAXFl_DwVnNqYKproI06iS-oIuUlGjRE6jAKXw,5185
|
|
72
76
|
eva/core/models/modules/inference.py,sha256=ih-0Rr2oNf2N6maiXPOW7XH5KVwUT1_MOxnJKOhJ1uQ,978
|
|
73
77
|
eva/core/models/modules/module.py,sha256=LtjYxTZb7UY0owonmt_yQ5EySw3sX-xD9HLN2io8EK4,6697
|
|
74
78
|
eva/core/models/modules/typings.py,sha256=yFMJCE4Nrfd8VEXU1zk8p6Sz5M7UslwitYPVC2OPLSY,776
|
|
75
|
-
eva/core/models/modules/utils/__init__.py,sha256=
|
|
79
|
+
eva/core/models/modules/utils/__init__.py,sha256=ScLCHwQfzlg_UsHVi5sf_SavUkh9secwtRn_umC_qA8,325
|
|
76
80
|
eva/core/models/modules/utils/batch_postprocess.py,sha256=RwnDcjJy3uvVirpgx_80Q2CUYKfJKipVwjyX7AF2CKw,3088
|
|
81
|
+
eva/core/models/modules/utils/checkpoint.py,sha256=Zp42rtmjgUC4VUMwFyG5aar-E0Hc5i7qUsxkV7AVKkE,700
|
|
77
82
|
eva/core/models/modules/utils/grad.py,sha256=bl8qb8g4Nhg1KAGfbEV_9HTKkoT0azRwfs9KGX9swGs,706
|
|
78
83
|
eva/core/models/networks/__init__.py,sha256=yqx6UmG1Eg3vb1O_tnK_axnJWabEl9ULkDWiPN440Xc,85
|
|
79
84
|
eva/core/models/networks/mlp.py,sha256=thk-x4pviE3fCaMW9k3I2Oe5_DxfC-CqUrtolvVdXug,2418
|
|
80
85
|
eva/core/models/transforms/__init__.py,sha256=oYL3gNUUKZFViTu6GT1jVE2Kv1xFYPuyiYp-sErtVVg,257
|
|
81
86
|
eva/core/models/transforms/extract_cls_features.py,sha256=tFRd4H-eGFIGCfZt6wuZGibDmAoNXKSsn15bBw0IDdc,1482
|
|
82
87
|
eva/core/models/transforms/extract_patch_features.py,sha256=k50jTLPWxbfvciH9QZSzTAGqWwDSVpXAteme_Qg2d6E,2202
|
|
83
|
-
eva/core/models/wrappers/__init__.py,sha256=
|
|
88
|
+
eva/core/models/wrappers/__init__.py,sha256=jaiANQdbO-IPgH8U-Y0ftFsuuCAM5i5KuYRHauKw5k8,450
|
|
84
89
|
eva/core/models/wrappers/_utils.py,sha256=HXUyGcILaa8GK31ViIHCKRU4f9kbjAPYQmhvN2N7jSc,957
|
|
85
90
|
eva/core/models/wrappers/base.py,sha256=xKMUSXk93wI67p_wmh7jujK-bxvIefO1noYaAJN_5Ak,1359
|
|
86
91
|
eva/core/models/wrappers/from_function.py,sha256=_vKBwtfilCNCnOaJTofE6l5bM2K3qJ8GyBT-0CM5FXY,1831
|
|
92
|
+
eva/core/models/wrappers/from_torchhub.py,sha256=OAImGKRG4pfDXHsoriykC_iiO8QvK3nAWnQCE0mIGuk,3285
|
|
87
93
|
eva/core/models/wrappers/huggingface.py,sha256=5CoNieivdjwvoawo7dZtWfYZkW-Mey1j0EjazuxDaqU,1302
|
|
88
94
|
eva/core/models/wrappers/onnx.py,sha256=-iV-IlczTvTTEQuJycZeSVWdSl2kVJXc1eeRLgQQZ7Q,1834
|
|
89
95
|
eva/core/trainers/__init__.py,sha256=jhsKJF7HAae7EOiG3gKIAHH_h3dZlTE2JRcCHJmOzJc,208
|
|
90
96
|
eva/core/trainers/_logging.py,sha256=gi4FqPy2GuVmh0WZY6mYwF7zMPvnoFA050B0XdCP6PU,2571
|
|
91
97
|
eva/core/trainers/_recorder.py,sha256=y6i5hfXftWjeV3eQHmMjUOkWumnZ2QNv_u275LLmvPA,7702
|
|
92
98
|
eva/core/trainers/_utils.py,sha256=M3h8lVhUmkeSiEXpX9hRdMvThGFCnTP15gv-hd1CZkc,321
|
|
93
|
-
eva/core/trainers/functional.py,sha256=
|
|
94
|
-
eva/core/trainers/trainer.py,sha256=
|
|
99
|
+
eva/core/trainers/functional.py,sha256=7OK2BNfX4_amHsyucr1ZNQRG3RgVKoagzd1zNN4nU3U,4472
|
|
100
|
+
eva/core/trainers/trainer.py,sha256=HJNSfTG0k4j2ShqZzuUUSxnSu8NrwJ4karhvAto2Zn0,4229
|
|
95
101
|
eva/core/utils/__init__.py,sha256=cndVBvtYxEW7hykH39GCNVI86zkXNn8Lw2A0sUJHS04,237
|
|
96
102
|
eva/core/utils/clone.py,sha256=qcThZOuAs1cs0uV3BL5eKeM2VIBjuRPBe1t-NiUFM5Y,569
|
|
97
103
|
eva/core/utils/io/__init__.py,sha256=Py03AmoxhmTHkro6CzNps27uXKkXPzdA18mG97xHhWI,172
|
|
@@ -123,17 +129,18 @@ eva/vision/data/datasets/classification/panda.py,sha256=BU_gDoX3ZSDUugwaO2n0XSZh
|
|
|
123
129
|
eva/vision/data/datasets/classification/patch_camelyon.py,sha256=fElKteZKx4M6AjylnhhgNH1jewHegWc1K8h4FFKp0gE,7171
|
|
124
130
|
eva/vision/data/datasets/classification/wsi.py,sha256=x3mQ8iwyiSdfQOjJuV7_cd8-LRjjhY9tjtzuD8O87Lg,4099
|
|
125
131
|
eva/vision/data/datasets/segmentation/__init__.py,sha256=hGNr7BM_StxvmlOKWWfHp615qgsrB6BB3qMOiYhE0Og,791
|
|
132
|
+
eva/vision/data/datasets/segmentation/_total_segmentator.py,sha256=DTaQaAisY7j1h0-zYk1_81Sr4b3D9PTMieYX0PMPtIc,3127
|
|
126
133
|
eva/vision/data/datasets/segmentation/_utils.py,sha256=ps1qpuEkPgvwUw6H-KKaLaYqDBGmN7dNGk3bnS1l6sI,1261
|
|
127
134
|
eva/vision/data/datasets/segmentation/base.py,sha256=11IMODMB7KJ8Bs5p7MyOsBXCyPFJXfYcDLAIMitUwEk,3023
|
|
128
135
|
eva/vision/data/datasets/segmentation/bcss.py,sha256=NHjHd1tgIfIw6TxsZTGb63iMEwXFbWX_JAwRT5WVsj4,8274
|
|
129
|
-
eva/vision/data/datasets/segmentation/consep.py,sha256=
|
|
136
|
+
eva/vision/data/datasets/segmentation/consep.py,sha256=Pw3LvVIK2scj_ys7rVNRb9B8snP8HlDIAbaI3v6ObQk,6056
|
|
130
137
|
eva/vision/data/datasets/segmentation/embeddings.py,sha256=0KaadzPxN6OrKNnFu3YsGBFkG6XqqvkOZYUhERPwL4A,1220
|
|
131
|
-
eva/vision/data/datasets/segmentation/lits.py,sha256=
|
|
138
|
+
eva/vision/data/datasets/segmentation/lits.py,sha256=cBRU5lkiTMAi_ZwyDQUN3ODyXUlLtuMWFLPDajcZnOo,7194
|
|
132
139
|
eva/vision/data/datasets/segmentation/lits_balanced.py,sha256=s5kPfqB41Vkcm5Jh34mLAO0NweMSIlV2fMXJsRjJsF8,3384
|
|
133
140
|
eva/vision/data/datasets/segmentation/monusac.py,sha256=OTWHAD1b48WeT6phVf466w_nJUOGdBCGKWiWw68PAdw,8423
|
|
134
|
-
eva/vision/data/datasets/segmentation/total_segmentator_2d.py,sha256=
|
|
141
|
+
eva/vision/data/datasets/segmentation/total_segmentator_2d.py,sha256=A6A_lXmGDfV_9Mcp9KSgN6K8Q0T8XXjv6lT4I7iLUcw,16833
|
|
135
142
|
eva/vision/data/datasets/structs.py,sha256=RaTDW-B36PumcR5gymhCiX-r8GiKqIFcjqoEEjjFyUE,389
|
|
136
|
-
eva/vision/data/datasets/vision.py,sha256=
|
|
143
|
+
eva/vision/data/datasets/vision.py,sha256=RHcBBNTd5u1OB6l2iA5V8pv8kjZsTehi9At7J-FVqr4,657
|
|
137
144
|
eva/vision/data/datasets/wsi.py,sha256=-rypkcd6CPBM_oPuLszUx9q4zSPzeO1H6JKqvOtLlHw,8282
|
|
138
145
|
eva/vision/data/transforms/__init__.py,sha256=WeFii6JwB0CiOOGLR3tkgAoKgRdmOf2lm0Dadixn8OI,260
|
|
139
146
|
eva/vision/data/transforms/common/__init__.py,sha256=6tvxUgb8wfhgvqejMVulwqssHTJLF7f4_vpf44kxgxY,234
|
|
@@ -160,22 +167,26 @@ eva/vision/data/wsi/patching/samplers/foreground_grid.py,sha256=EhXkr5EFz2-RXEis
|
|
|
160
167
|
eva/vision/data/wsi/patching/samplers/grid.py,sha256=dImrMSyCL3E_j5KRqpVJUWTe-mrJpfttg1Z9rbm3j0k,1363
|
|
161
168
|
eva/vision/data/wsi/patching/samplers/random.py,sha256=0clmwCZ47bnTaSFke7jtjsmrFoY1ID2LjoiaE52dC3o,1228
|
|
162
169
|
eva/vision/losses/__init__.py,sha256=htafabZgVcqbJjPURwsmGJ7AT6hIXc1-9SEuuaGU9SA,121
|
|
163
|
-
eva/vision/losses/dice.py,sha256=
|
|
164
|
-
eva/vision/metrics/__init__.py,sha256=
|
|
170
|
+
eva/vision/losses/dice.py,sha256=8CCtEFB_zPok3WGLMHJX__K5IEm0HmL5WipQo8ZhQwc,3556
|
|
171
|
+
eva/vision/metrics/__init__.py,sha256=zXOc1Idgfk86CGE5yBHn3B22iD5tRyfl4H-kTSB2dCQ,528
|
|
165
172
|
eva/vision/metrics/defaults/__init__.py,sha256=ncQ9uH5q5SpfalyPX6dINPRLk34HLw6z9u8ny_HHbFQ,174
|
|
166
173
|
eva/vision/metrics/defaults/segmentation/__init__.py,sha256=ve6dwyfhJGYBYKS6l6OySCBs32JnEBFnvhAyNvj-Uqo,191
|
|
167
|
-
eva/vision/metrics/defaults/segmentation/multiclass.py,sha256=
|
|
174
|
+
eva/vision/metrics/defaults/segmentation/multiclass.py,sha256=MUBp-PIyiJB2VVV_NintRrP7Ha2lJ75_3xvqSdeDYwE,2855
|
|
168
175
|
eva/vision/metrics/segmentation/BUILD,sha256=Nf7BYWWe1USoFEIsIiEVZ8sa05J5FPkMJ-UIMDLrU8o,17
|
|
169
|
-
eva/vision/metrics/segmentation/__init__.py,sha256=
|
|
170
|
-
eva/vision/metrics/segmentation/_utils.py,sha256=
|
|
171
|
-
eva/vision/metrics/segmentation/
|
|
172
|
-
eva/vision/metrics/segmentation/
|
|
176
|
+
eva/vision/metrics/segmentation/__init__.py,sha256=7iz3fFNd-iBuNyxdeSfsgp6D7oZtmPsbyA0ZKRzzRCw,402
|
|
177
|
+
eva/vision/metrics/segmentation/_utils.py,sha256=_ubv2sP1-f_dLKy8Y4wLkj5ed56fAFLURfv1shQWVcs,2402
|
|
178
|
+
eva/vision/metrics/segmentation/dice.py,sha256=H_U6XSZcieX0xb6aptxxW1s-Jshs8Lp4P1SAwjdwntM,2905
|
|
179
|
+
eva/vision/metrics/segmentation/generalized_dice.py,sha256=T57An-lBVefnlv6dIWVRNghFxy0e0K470xwla0TbCSk,2436
|
|
180
|
+
eva/vision/metrics/segmentation/mean_iou.py,sha256=2PjqTa_VAtnW4nxHzT93uBKgnml7INU-wt_jR68RM54,2104
|
|
181
|
+
eva/vision/metrics/segmentation/monai_dice.py,sha256=febnvA2gtTyydLZMwjQBS1zq2NjZcsXf0EcV0eRn8Aw,2117
|
|
182
|
+
eva/vision/metrics/wrappers/__init__.py,sha256=V4z3hradMa6CQgTkk1bc2cbZzCgcoIYw7-hufMK3D_4,128
|
|
183
|
+
eva/vision/metrics/wrappers/monai.py,sha256=FNa1yHN2U3vO6BGqS0BFm8uJAL6DCzSE4XOFCV4aBjg,885
|
|
173
184
|
eva/vision/models/__init__.py,sha256=a-P6JL73A3miHQnqgqUz07XtVmQB_o4DqPImk5rEATo,275
|
|
174
185
|
eva/vision/models/modules/__init__.py,sha256=vaM_V6OF2s0lYjralP8dzv8mAtv_xIMZItfXgz0NZg8,156
|
|
175
|
-
eva/vision/models/modules/semantic_segmentation.py,sha256=
|
|
186
|
+
eva/vision/models/modules/semantic_segmentation.py,sha256=PSeqm5h6YgbzQ0jA9lUexGYUE3ehfWx-LH1NgZ7cGhw,7300
|
|
176
187
|
eva/vision/models/networks/__init__.py,sha256=j43IurizNlAyKPH2jwDHaeq49L2QvwbHWqUaptA1mG4,100
|
|
177
188
|
eva/vision/models/networks/abmil.py,sha256=N1eH4fn1nXmgXurSQyQIxxonv7nsqeeuPWaQSHeltfs,6796
|
|
178
|
-
eva/vision/models/networks/backbones/__init__.py,sha256=
|
|
189
|
+
eva/vision/models/networks/backbones/__init__.py,sha256=CvK0sHKufUq4chwX-p2cFVBZFReMuwmeHFTG5LUA6CM,318
|
|
179
190
|
eva/vision/models/networks/backbones/_utils.py,sha256=V7xeod4mElEuuO1TRW0xJE051cUyS1Saraw3-KcK1Mw,1667
|
|
180
191
|
eva/vision/models/networks/backbones/pathology/__init__.py,sha256=goR59h8bfzd-Wa3rxPPdaSlAOH_df8SHBkTSKi08TS8,1147
|
|
181
192
|
eva/vision/models/networks/backbones/pathology/bioptimus.py,sha256=wUSKjYgxcRV3FRHGaPwF1uRAQcGO0rHNHGmK1QDJXk4,991
|
|
@@ -189,18 +200,20 @@ eva/vision/models/networks/backbones/pathology/paige.py,sha256=MjOLgdEKk8tdAIpCi
|
|
|
189
200
|
eva/vision/models/networks/backbones/registry.py,sha256=anjILtEHHB6Ltwiw22h1bsgWtIjh_l5_fkPh87K7-d0,1631
|
|
190
201
|
eva/vision/models/networks/backbones/timm/__init__.py,sha256=cZH3av9gIZcvEVD0rwKsI-MEq7zPqaW4dQ0E05CksvQ,128
|
|
191
202
|
eva/vision/models/networks/backbones/timm/backbones.py,sha256=fCTiwqU6NhQ-ccAMzmpPDddXkFzRAB3mw4lcQ9um_PU,1646
|
|
203
|
+
eva/vision/models/networks/backbones/torchhub/__init__.py,sha256=zBLJBvkwKJ1jD7M3Wt5BE6Cx-R8G2YRoyPG7p2V-3nQ,147
|
|
204
|
+
eva/vision/models/networks/backbones/torchhub/backbones.py,sha256=hgCCoP8AdRSsli0w9a_PRNB-UR36-SLLhBIW0BFrkdE,1911
|
|
192
205
|
eva/vision/models/networks/backbones/universal/__init__.py,sha256=MAlkALSJ2_w6spSbB7NmKlL0Jsk1YKEycatdI0xO0_I,252
|
|
193
206
|
eva/vision/models/networks/backbones/universal/vit.py,sha256=kpUCoXpefR34hRNlQDFK9lGr4oqS8Mn5vTLKWZ-gaOs,1820
|
|
194
207
|
eva/vision/models/networks/decoders/__init__.py,sha256=RXFWmoYw2i6E9VOUCJmU8c72icHannVuo-cUKy6fnLM,200
|
|
195
208
|
eva/vision/models/networks/decoders/segmentation/__init__.py,sha256=N6jrhXHj0P7i7RptZbZ-JFehT2BM7meFyNIK0owAkaE,517
|
|
196
209
|
eva/vision/models/networks/decoders/segmentation/base.py,sha256=b2TIJKiJR9vejVRpNyedMJLPTrpHhAEXvco8atb9TPU,411
|
|
197
|
-
eva/vision/models/networks/decoders/segmentation/decoder2d.py,sha256=
|
|
210
|
+
eva/vision/models/networks/decoders/segmentation/decoder2d.py,sha256=A7vz0LJ_YweftpKeEBJm0Y3N7hbVLDSIkAajaQv1UgE,4456
|
|
198
211
|
eva/vision/models/networks/decoders/segmentation/linear.py,sha256=-i9RVaKM1UsB3AXDDKdMmHiD7y2sr5HfF-WvkB47Fhw,4743
|
|
199
212
|
eva/vision/models/networks/decoders/segmentation/semantic/__init__.py,sha256=Ubs8GXyQpEHs26JUeUuiVP3jfn47eiBZM_UVbu749XU,398
|
|
200
213
|
eva/vision/models/networks/decoders/segmentation/semantic/common.py,sha256=fPTb0T-2FiOU-jT81ynASKaW7fJiRk6vQjuPkzHOluc,2530
|
|
201
214
|
eva/vision/models/networks/decoders/segmentation/semantic/with_image.py,sha256=I5PyGKKo8DcXYcw4xlCFzuavRJNRrzGT-szpDidMPXI,3516
|
|
202
215
|
eva/vision/models/networks/decoders/segmentation/typings.py,sha256=8zAqIJLlQdCjsx-Dl4lnF4BB1VxTg_AyIquBVwpZlHg,537
|
|
203
|
-
eva/vision/models/wrappers/__init__.py,sha256=
|
|
216
|
+
eva/vision/models/wrappers/__init__.py,sha256=ogmr-eeVuGaOCcsuxSp6PGyauP2QqWTb8dGTtbC7lRU,210
|
|
204
217
|
eva/vision/models/wrappers/from_registry.py,sha256=gdnxyg9drqlxfTNuS3aLbWGbZIwX1VNl0uudfjzVsXM,1614
|
|
205
218
|
eva/vision/models/wrappers/from_timm.py,sha256=Z38Nb1i6OPKkgvFZOvGx-O3AZQuscf1zRVyrEBXQdJg,2320
|
|
206
219
|
eva/vision/utils/__init__.py,sha256=vaUovprE743SmyFH8l6uk4pYSWpI4zxn7lN0EwePTJI,96
|
|
@@ -212,8 +225,8 @@ eva/vision/utils/io/image.py,sha256=IdOkr5MYqhYHz8U9drZ7wULTM3YHwCWSjZlu_Qdl4GQ,
|
|
|
212
225
|
eva/vision/utils/io/mat.py,sha256=qpGifyjmpE0Xhv567Si7-zxKrgkgE0sywP70cHiLFGU,808
|
|
213
226
|
eva/vision/utils/io/nifti.py,sha256=4YoKjKuoNdE0qY7tYB_WlnSsYAx2oBzZRZXczc_8HAU,2555
|
|
214
227
|
eva/vision/utils/io/text.py,sha256=qYgfo_ZaDZWfG02NkVVYzo5QFySqdCCz5uLA9d-zXtI,701
|
|
215
|
-
kaiko_eva-0.1.
|
|
216
|
-
kaiko_eva-0.1.
|
|
217
|
-
kaiko_eva-0.1.
|
|
218
|
-
kaiko_eva-0.1.
|
|
219
|
-
kaiko_eva-0.1.
|
|
228
|
+
kaiko_eva-0.1.7.dist-info/METADATA,sha256=ToVlQrhgzB06Ptgus3EhUrMNaEBUFGm7YHTuZdy6JMM,24869
|
|
229
|
+
kaiko_eva-0.1.7.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
|
|
230
|
+
kaiko_eva-0.1.7.dist-info/entry_points.txt,sha256=6CSLu9bmQYJSXEg8gbOzRhxH0AGs75BB-vPm3VvfcNE,88
|
|
231
|
+
kaiko_eva-0.1.7.dist-info/licenses/LICENSE,sha256=e6AEzr7j_R-PYr2qLO-JwLn8y70jbVD3U2mxbRmwcI4,11338
|
|
232
|
+
kaiko_eva-0.1.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|