kaiko-eva 0.1.6__py3-none-any.whl → 0.1.8__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.

Files changed (47) hide show
  1. eva/core/data/dataloaders/dataloader.py +5 -2
  2. eva/core/data/datamodules/datamodule.py +42 -5
  3. eva/core/data/datamodules/schemas.py +18 -1
  4. eva/core/data/datasets/__init__.py +4 -1
  5. eva/core/data/datasets/base.py +23 -0
  6. eva/core/data/datasets/typings.py +18 -0
  7. eva/core/data/samplers/__init__.py +4 -2
  8. eva/core/data/samplers/classification/__init__.py +5 -0
  9. eva/core/data/samplers/classification/balanced.py +96 -0
  10. eva/core/data/samplers/random.py +39 -0
  11. eva/core/data/samplers/sampler.py +27 -0
  12. eva/core/metrics/structs/module.py +30 -9
  13. eva/core/models/__init__.py +8 -1
  14. eva/core/models/modules/head.py +19 -1
  15. eva/core/models/modules/utils/__init__.py +2 -1
  16. eva/core/models/modules/utils/checkpoint.py +21 -0
  17. eva/core/models/wrappers/__init__.py +3 -1
  18. eva/core/models/wrappers/from_torchhub.py +93 -0
  19. eva/core/trainers/functional.py +4 -2
  20. eva/core/trainers/trainer.py +8 -4
  21. eva/vision/data/datasets/segmentation/_total_segmentator.py +91 -0
  22. eva/vision/data/datasets/segmentation/consep.py +4 -1
  23. eva/vision/data/datasets/segmentation/lits.py +3 -3
  24. eva/vision/data/datasets/segmentation/total_segmentator_2d.py +92 -37
  25. eva/vision/data/datasets/vision.py +1 -18
  26. eva/vision/losses/dice.py +0 -3
  27. eva/vision/metrics/__init__.py +5 -1
  28. eva/vision/metrics/defaults/segmentation/multiclass.py +30 -6
  29. eva/vision/metrics/segmentation/__init__.py +4 -0
  30. eva/vision/metrics/segmentation/_utils.py +1 -2
  31. eva/vision/metrics/segmentation/dice.py +69 -0
  32. eva/vision/metrics/segmentation/generalized_dice.py +2 -4
  33. eva/vision/metrics/segmentation/mean_iou.py +4 -8
  34. eva/vision/metrics/segmentation/monai_dice.py +57 -0
  35. eva/vision/metrics/wrappers/__init__.py +5 -0
  36. eva/vision/metrics/wrappers/monai.py +32 -0
  37. eva/vision/models/modules/semantic_segmentation.py +19 -1
  38. eva/vision/models/networks/backbones/__init__.py +2 -2
  39. eva/vision/models/networks/backbones/torchhub/__init__.py +5 -0
  40. eva/vision/models/networks/backbones/torchhub/backbones.py +61 -0
  41. eva/vision/models/networks/decoders/segmentation/decoder2d.py +1 -1
  42. eva/vision/models/wrappers/__init__.py +1 -1
  43. {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.8.dist-info}/METADATA +3 -2
  44. {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.8.dist-info}/RECORD +47 -34
  45. {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.8.dist-info}/WHEEL +0 -0
  46. {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.8.dist-info}/entry_points.txt +0 -0
  47. {kaiko_eva-0.1.6.dist-info → kaiko_eva-0.1.8.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, num_classes: 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
- num_classes=num_classes
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,5 @@
1
+ """Metrics wrappers API."""
2
+
3
+ from eva.vision.metrics.wrappers.monai import MonaiMetricWrapper
4
+
5
+ __all__ = ["MonaiMetricWrapper"]
@@ -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,5 @@
1
+ """torch.hub backbones API."""
2
+
3
+ from eva.vision.models.networks.backbones.torchhub.backbones import torch_hub_model
4
+
5
+ __all__ = ["torch_hub_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)."
@@ -3,4 +3,4 @@
3
3
  from eva.vision.models.wrappers.from_registry import ModelFromRegistry
4
4
  from eva.vision.models.wrappers.from_timm import TimmModel
5
5
 
6
- __all__ = ["TimmModel", "ModelFromRegistry"]
6
+ __all__ = ["ModelFromRegistry", "TimmModel"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaiko-eva
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Evaluation Framework for oncology foundation models.
5
5
  Keywords: machine-learning,evaluation-framework,oncology,foundation-models
6
6
  Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
@@ -227,7 +227,8 @@ Requires-Dist: onnxruntime>=1.15.1
227
227
  Requires-Dist: onnx>=1.16.0
228
228
  Requires-Dist: toolz>=0.12.1
229
229
  Requires-Dist: rich>=13.7.1
230
- Requires-Dist: torchmetrics>=1.4.2
230
+ Requires-Dist: torchmetrics>=1.6.0
231
+ Requires-Dist: nibabel>=3.2.2
231
232
  Provides-Extra: vision
232
233
  Requires-Dist: h5py>=3.10.0; extra == "vision"
233
234
  Requires-Dist: nibabel>=4.0.1; extra == "vision"
@@ -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=n2NNlWKurEC1TVis347l6YmPgNOGTaoxwIyoClyPt7s,2383
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=dclC2YJAXUGEUpV9ZRWQS43-ksFIPgVeFudsyrj9kdc,3878
24
- eva/core/data/datamodules/schemas.py,sha256=EXnUPNd9Pj3RjnxJIzAcC2qp6TtBSvPDx28fV_ovWAA,1869
25
- eva/core/data/datasets/__init__.py,sha256=YfbHEVy9AXdvPAobZ8btV-mVEaWAVDr7feK8xydLW2w,391
26
- eva/core/data/datasets/base.py,sha256=NLZlxznB4SCYNf070OhfNJztaOpqwQWemwpGkFv_CA0,2005
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/samplers/__init__.py,sha256=WikBo1DemCx6o2vFfNwSwODlmCT2zWUXtCNwiWCVAFE,100
33
- eva/core/data/samplers/sampler.py,sha256=vrrXERWC67fjmTk_uwD7s9-8-rdhvnx7OlSipHE6sdY,119
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=qAyk9uSGTFdvSg6ukl2c-OC-FdaCCsUf3Lh8UbUD-r8,3619
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=bQSpfQJKuDMWosjcMhP7t5jdOSV6OyxdxTOIW9w1woE,369
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=iHrEOjYfshFI6OdXxJJTZyfCoUs2fimitINNcB6ENsc,4321
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=pnbxlEhT87JimWNr-NSNCv7VNR-IyDi_A9qRWmvlzwQ,227
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=P-ipr4NtKqPU6ubAjKLGxFf1Qt2yDSNtgS2Xz5sBahQ,364
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=NPxFCtU5KgquVowjeXAf_xj4-Thj7ZxN9F3sHRDrDUA,4388
94
- eva/core/trainers/trainer.py,sha256=Vw_KhTyh-3YV5qo_XHxz9oy-v2PxrgoOWMeYi8-41R0,3949
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=dCD8VsZSvI3-RbHHHAwGWfsNwOJCPkzHpVtzrcuAEVo,5871
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=_R5AGFX8jVPwK3UKaYQfIRLBpM5ZmDg6KRziisUDYps,7175
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=oyb38pAV8GN5Ph1-NSVooFhNP1TfOuXSUjUIAf6rdiY,14376
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=hKKFMb65UJQzOyYm8FTGkOGBOinMRu7R8sOFMbCmQX4,1100
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=qIMxtQlBbzES3hJ7x7pq0bd0GvIFpfGNL3KnMi0vRds,3669
164
- eva/vision/metrics/__init__.py,sha256=NtbcCrAUhVMMxSygTnbvNceJZBUzUD2tZp4nDmFjG3w,360
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=Qk4-OC0oujg99MEwRIjif-fS2mbAiWSFTZVRq4cY_Vo,1758
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=lfuyjuo2XjS7_dvaL-8e_LhLsyK2mc_mNGwyGqcb5X4,234
170
- eva/vision/metrics/segmentation/_utils.py,sha256=ebxTqymtxZ0iwMiH2snQHV_NVfDhZUSBlBS9AShWu_8,2464
171
- eva/vision/metrics/segmentation/generalized_dice.py,sha256=FqFzo7YWBwSlihmlgQg-O_ld1ZBQma0YTXk5XZ7faZM,2443
172
- eva/vision/metrics/segmentation/mean_iou.py,sha256=xR3wQOHT77SNKTRRPdDaWpJ88qgk9PIBT5n2lnKTUfM,2161
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=i1hYgWnVLf7RTzt_ZrO76bQYNOKmyjt_Hl8AFQqFhAk,6400
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=LsMx92eEoCQ5aNVFp7mHjrD-9ZeNawMiK6zZSYzl_PU,296
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=0jZrgFSdH5nlMYlbBmDb1E4kIQ3cG-LNOsiij51_NSA,4447
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=8MT8qFM4nUXGpK1_i3rp70ODkOjn2KhhRo2I17qZCPM,210
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.6.dist-info/METADATA,sha256=3pDsvMybfMJ6LpX3dRxqRFXvI6JC8x5EmKH2sYccV_4,24869
216
- kaiko_eva-0.1.6.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
217
- kaiko_eva-0.1.6.dist-info/entry_points.txt,sha256=6CSLu9bmQYJSXEg8gbOzRhxH0AGs75BB-vPm3VvfcNE,88
218
- kaiko_eva-0.1.6.dist-info/licenses/LICENSE,sha256=e6AEzr7j_R-PYr2qLO-JwLn8y70jbVD3U2mxbRmwcI4,11338
219
- kaiko_eva-0.1.6.dist-info/RECORD,,
228
+ kaiko_eva-0.1.8.dist-info/METADATA,sha256=rjAETMOw3T9oYRqiWvzsedU0hFHFa6ivyZfiS0WCjKA,24899
229
+ kaiko_eva-0.1.8.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
230
+ kaiko_eva-0.1.8.dist-info/entry_points.txt,sha256=6CSLu9bmQYJSXEg8gbOzRhxH0AGs75BB-vPm3VvfcNE,88
231
+ kaiko_eva-0.1.8.dist-info/licenses/LICENSE,sha256=e6AEzr7j_R-PYr2qLO-JwLn8y70jbVD3U2mxbRmwcI4,11338
232
+ kaiko_eva-0.1.8.dist-info/RECORD,,