kaiko-eva 0.3.2__py3-none-any.whl → 0.4.0__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/callbacks/config.py +4 -0
- eva/core/cli/setup.py +1 -1
- eva/core/data/dataloaders/__init__.py +1 -2
- eva/core/data/dataloaders/dataloader.py +3 -1
- eva/core/data/samplers/random.py +17 -10
- eva/core/interface/interface.py +21 -0
- eva/core/loggers/log/__init__.py +2 -1
- eva/core/loggers/log/table.py +73 -0
- eva/core/models/modules/module.py +2 -2
- eva/core/models/wrappers/base.py +2 -2
- eva/core/models/wrappers/from_function.py +3 -3
- eva/core/models/wrappers/from_torchhub.py +9 -7
- eva/core/models/wrappers/huggingface.py +4 -5
- eva/core/models/wrappers/onnx.py +5 -5
- eva/core/trainers/trainer.py +2 -0
- eva/language/__init__.py +2 -1
- eva/language/callbacks/__init__.py +5 -0
- eva/language/callbacks/writers/__init__.py +5 -0
- eva/language/callbacks/writers/prediction.py +176 -0
- eva/language/data/dataloaders/__init__.py +5 -0
- eva/language/data/dataloaders/collate_fn/__init__.py +5 -0
- eva/language/data/dataloaders/collate_fn/text.py +57 -0
- eva/language/data/datasets/__init__.py +3 -1
- eva/language/data/datasets/{language.py → base.py} +1 -1
- eva/language/data/datasets/classification/base.py +3 -43
- eva/language/data/datasets/classification/pubmedqa.py +36 -4
- eva/language/data/datasets/prediction.py +151 -0
- eva/language/data/datasets/schemas.py +18 -0
- eva/language/data/datasets/text.py +92 -0
- eva/language/data/datasets/typings.py +39 -0
- eva/language/data/messages.py +60 -0
- eva/language/models/__init__.py +15 -11
- eva/language/models/modules/__init__.py +2 -2
- eva/language/models/modules/language.py +93 -0
- eva/language/models/networks/__init__.py +12 -0
- eva/language/models/networks/alibaba.py +26 -0
- eva/language/models/networks/api/__init__.py +11 -0
- eva/language/models/networks/api/anthropic.py +34 -0
- eva/language/models/networks/registry.py +5 -0
- eva/language/models/typings.py +39 -0
- eva/language/models/wrappers/__init__.py +13 -5
- eva/language/models/wrappers/base.py +47 -0
- eva/language/models/wrappers/from_registry.py +54 -0
- eva/language/models/wrappers/huggingface.py +44 -8
- eva/language/models/wrappers/litellm.py +81 -46
- eva/language/models/wrappers/vllm.py +37 -13
- eva/language/utils/__init__.py +2 -1
- eva/language/utils/str_to_int_tensor.py +20 -12
- eva/language/utils/text/__init__.py +5 -0
- eva/language/utils/text/messages.py +113 -0
- eva/multimodal/__init__.py +6 -0
- eva/multimodal/callbacks/__init__.py +5 -0
- eva/multimodal/callbacks/writers/__init__.py +5 -0
- eva/multimodal/callbacks/writers/prediction.py +39 -0
- eva/multimodal/data/__init__.py +5 -0
- eva/multimodal/data/dataloaders/__init__.py +5 -0
- eva/multimodal/data/dataloaders/collate_fn/__init__.py +5 -0
- eva/multimodal/data/dataloaders/collate_fn/text_image.py +28 -0
- eva/multimodal/data/datasets/__init__.py +6 -0
- eva/multimodal/data/datasets/base.py +13 -0
- eva/multimodal/data/datasets/multiple_choice/__init__.py +5 -0
- eva/multimodal/data/datasets/multiple_choice/patch_camelyon.py +80 -0
- eva/multimodal/data/datasets/schemas.py +14 -0
- eva/multimodal/data/datasets/text_image.py +77 -0
- eva/multimodal/data/datasets/typings.py +27 -0
- eva/multimodal/models/__init__.py +8 -0
- eva/multimodal/models/modules/__init__.py +5 -0
- eva/multimodal/models/modules/vision_language.py +55 -0
- eva/multimodal/models/networks/__init__.py +14 -0
- eva/multimodal/models/networks/alibaba.py +39 -0
- eva/multimodal/models/networks/api/__init__.py +11 -0
- eva/multimodal/models/networks/api/anthropic.py +34 -0
- eva/multimodal/models/networks/others.py +47 -0
- eva/multimodal/models/networks/registry.py +5 -0
- eva/multimodal/models/typings.py +27 -0
- eva/multimodal/models/wrappers/__init__.py +13 -0
- eva/multimodal/models/wrappers/base.py +47 -0
- eva/multimodal/models/wrappers/from_registry.py +54 -0
- eva/multimodal/models/wrappers/huggingface.py +180 -0
- eva/multimodal/models/wrappers/litellm.py +56 -0
- eva/multimodal/utils/__init__.py +1 -0
- eva/multimodal/utils/image/__init__.py +5 -0
- eva/multimodal/utils/image/encode.py +28 -0
- eva/multimodal/utils/text/__init__.py +1 -0
- eva/multimodal/utils/text/messages.py +79 -0
- eva/vision/data/datasets/classification/patch_camelyon.py +8 -6
- eva/vision/data/transforms/__init__.py +2 -1
- eva/vision/data/transforms/spatial/__init__.py +2 -1
- eva/vision/data/transforms/spatial/functional/__init__.py +5 -0
- eva/vision/data/transforms/spatial/functional/resize.py +26 -0
- eva/vision/data/transforms/spatial/resize.py +62 -0
- eva/vision/models/wrappers/from_registry.py +6 -5
- eva/vision/models/wrappers/from_timm.py +6 -4
- {kaiko_eva-0.3.2.dist-info → kaiko_eva-0.4.0.dist-info}/METADATA +10 -2
- {kaiko_eva-0.3.2.dist-info → kaiko_eva-0.4.0.dist-info}/RECORD +98 -40
- eva/core/data/dataloaders/collate_fn/__init__.py +0 -5
- eva/core/data/dataloaders/collate_fn/collate.py +0 -24
- eva/language/models/modules/text.py +0 -85
- {kaiko_eva-0.3.2.dist-info → kaiko_eva-0.4.0.dist-info}/WHEEL +0 -0
- {kaiko_eva-0.3.2.dist-info → kaiko_eva-0.4.0.dist-info}/entry_points.txt +0 -0
- {kaiko_eva-0.3.2.dist-info → kaiko_eva-0.4.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Functional resizing utilities."""
|
|
2
|
+
|
|
3
|
+
import io
|
|
4
|
+
from typing import Tuple
|
|
5
|
+
|
|
6
|
+
from PIL import Image
|
|
7
|
+
from torchvision import tv_tensors
|
|
8
|
+
from torchvision.transforms.v2 import functional as F
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def resize_to_max_bytes(image: tv_tensors.Image, max_bytes: int) -> tv_tensors.Image:
|
|
12
|
+
"""Resize the image to fit within the specified byte size."""
|
|
13
|
+
image_pil = F.to_pil_image(image)
|
|
14
|
+
image_bytes = io.BytesIO()
|
|
15
|
+
image_pil.save(image_bytes, format="PNG", optimize=True)
|
|
16
|
+
|
|
17
|
+
while image_bytes.tell() > max_bytes:
|
|
18
|
+
size: Tuple[int, int] = image_pil.size # type: ignore
|
|
19
|
+
w, h = size
|
|
20
|
+
scale = (max_bytes / image_bytes.tell()) ** 0.5
|
|
21
|
+
new_size = (max(1, int(h * scale)), max(1, int(w * scale)))
|
|
22
|
+
image_pil = image_pil.resize(new_size, Image.Resampling.LANCZOS)
|
|
23
|
+
image_bytes = io.BytesIO()
|
|
24
|
+
image_pil.save(image_bytes, format="PNG", optimize=True)
|
|
25
|
+
|
|
26
|
+
return tv_tensors.Image(F.pil_to_tensor(image_pil))
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Image resize transforms."""
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
|
|
6
|
+
from torchvision import tv_tensors
|
|
7
|
+
from torchvision.transforms import v2
|
|
8
|
+
from typing_extensions import override
|
|
9
|
+
|
|
10
|
+
from eva.vision.data.transforms.spatial import functional
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Resize(v2.Transform):
|
|
14
|
+
"""Resize transform for images with spatial or byte-based constraints.
|
|
15
|
+
|
|
16
|
+
This transform provides two mutually exclusive modes of resizing:
|
|
17
|
+
1. Spatial resizing: Resize to a specific (height, width) dimension
|
|
18
|
+
2. Byte-based resizing: Resize to fit within a maximum byte size
|
|
19
|
+
|
|
20
|
+
The latter is particularly useful for API models (e.g. Claude 3.7) that
|
|
21
|
+
have strict byte size limits for image inputs.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(self, size: tuple[int, int] | None = None, max_bytes: int | None = None) -> None:
|
|
25
|
+
"""Initializes the transform.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
size: Target size as (height, width) tuple for spatial resizing.
|
|
29
|
+
If provided, max_bytes must be None.
|
|
30
|
+
max_bytes: Maximum allowed byte size for the image.
|
|
31
|
+
If provided, size must be None. Must be a positive integer.
|
|
32
|
+
|
|
33
|
+
Raises:
|
|
34
|
+
ValueError: If both size and max_bytes are provided, or if max_bytes
|
|
35
|
+
is not a positive integer.
|
|
36
|
+
"""
|
|
37
|
+
if size is not None and max_bytes is not None:
|
|
38
|
+
raise ValueError("Cannot provide both 'size' and 'max_bytes' parameters.")
|
|
39
|
+
if max_bytes is not None and max_bytes <= 0:
|
|
40
|
+
raise ValueError("'max_bytes' must be a positive integer.")
|
|
41
|
+
|
|
42
|
+
super().__init__()
|
|
43
|
+
|
|
44
|
+
self.size = size
|
|
45
|
+
self.max_bytes = max_bytes
|
|
46
|
+
self.resize_fn = None
|
|
47
|
+
|
|
48
|
+
if size is not None:
|
|
49
|
+
self.resize_fn = v2.Resize(size=size)
|
|
50
|
+
elif max_bytes is not None:
|
|
51
|
+
self.resize_fn = functools.partial(functional.resize_to_max_bytes, max_bytes=max_bytes)
|
|
52
|
+
|
|
53
|
+
@functools.singledispatchmethod
|
|
54
|
+
@override
|
|
55
|
+
def _transform(self, inpt: Any, params: Dict[str, Any]) -> Any:
|
|
56
|
+
return inpt
|
|
57
|
+
|
|
58
|
+
@_transform.register(tv_tensors.Image)
|
|
59
|
+
@_transform.register(tv_tensors.Mask)
|
|
60
|
+
def _(self, inpt: Any, params: Dict[str, Any]) -> Any:
|
|
61
|
+
inpt_resized = self.resize_fn(inpt) if self.resize_fn is not None else inpt
|
|
62
|
+
return tv_tensors.wrap(inpt_resized, like=inpt)
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from typing import Any, Callable, Dict
|
|
4
4
|
|
|
5
5
|
import torch
|
|
6
|
+
from torch import nn
|
|
6
7
|
from typing_extensions import override
|
|
7
8
|
|
|
8
9
|
from eva.core.models.wrappers import base
|
|
@@ -40,14 +41,14 @@ class ModelFromRegistry(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
40
41
|
self._model_kwargs = model_kwargs or {}
|
|
41
42
|
self._model_extra_kwargs = model_extra_kwargs or {}
|
|
42
43
|
|
|
43
|
-
self.load_model()
|
|
44
|
+
self.model = self.load_model()
|
|
44
45
|
|
|
45
46
|
@override
|
|
46
|
-
def load_model(self) ->
|
|
47
|
-
|
|
47
|
+
def load_model(self) -> nn.Module:
|
|
48
|
+
ModelFromRegistry.__name__ = self._model_name
|
|
49
|
+
|
|
50
|
+
return factory.ModuleFactory(
|
|
48
51
|
registry=backbone_registry,
|
|
49
52
|
name=self._model_name,
|
|
50
53
|
init_args=self._model_kwargs | self._model_extra_kwargs,
|
|
51
54
|
)
|
|
52
|
-
|
|
53
|
-
ModelFromRegistry.__name__ = self._model_name
|
|
@@ -5,6 +5,7 @@ from urllib import parse
|
|
|
5
5
|
|
|
6
6
|
import timm
|
|
7
7
|
import torch
|
|
8
|
+
from torch import nn
|
|
8
9
|
from typing_extensions import override
|
|
9
10
|
|
|
10
11
|
from eva.core.models.wrappers import base
|
|
@@ -46,12 +47,14 @@ class TimmModel(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
46
47
|
self._out_indices = out_indices
|
|
47
48
|
self._model_kwargs = model_kwargs or {}
|
|
48
49
|
|
|
49
|
-
self.load_model()
|
|
50
|
+
self.model = self.load_model()
|
|
50
51
|
|
|
51
52
|
@override
|
|
52
|
-
def load_model(self) ->
|
|
53
|
+
def load_model(self) -> nn.Module:
|
|
53
54
|
"""Builds and loads the timm model as feature extractor."""
|
|
54
|
-
|
|
55
|
+
TimmModel.__name__ = self._model_name
|
|
56
|
+
|
|
57
|
+
return timm.create_model(
|
|
55
58
|
model_name=self._model_name,
|
|
56
59
|
pretrained=True if self._checkpoint_path else self._pretrained,
|
|
57
60
|
pretrained_cfg=self._pretrained_cfg,
|
|
@@ -59,7 +62,6 @@ class TimmModel(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
59
62
|
features_only=self._out_indices is not None,
|
|
60
63
|
**self._model_kwargs,
|
|
61
64
|
)
|
|
62
|
-
TimmModel.__name__ = self._model_name
|
|
63
65
|
|
|
64
66
|
@property
|
|
65
67
|
def _pretrained_cfg(self) -> Dict[str, Any]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaiko-eva
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
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>
|
|
@@ -245,6 +245,10 @@ Requires-Dist: einops>=0.8.1; extra == "vision"
|
|
|
245
245
|
Provides-Extra: language
|
|
246
246
|
Requires-Dist: datasets<4.0.0,>=2.19.0; extra == "language"
|
|
247
247
|
Requires-Dist: litellm>=1.61.8; extra == "language"
|
|
248
|
+
Requires-Dist: backoff>=2.2.1; extra == "language"
|
|
249
|
+
Provides-Extra: multimodal
|
|
250
|
+
Requires-Dist: litellm>=1.61.8; extra == "multimodal"
|
|
251
|
+
Requires-Dist: backoff>=2.2.1; extra == "multimodal"
|
|
248
252
|
Provides-Extra: all
|
|
249
253
|
Requires-Dist: h5py>=3.10.0; extra == "all"
|
|
250
254
|
Requires-Dist: nibabel>=4.0.1; extra == "all"
|
|
@@ -260,6 +264,7 @@ Requires-Dist: monai>=1.3.2; extra == "all"
|
|
|
260
264
|
Requires-Dist: einops>=0.8.1; extra == "all"
|
|
261
265
|
Requires-Dist: datasets<4.0.0,>=2.19.0; extra == "all"
|
|
262
266
|
Requires-Dist: litellm>=1.61.8; extra == "all"
|
|
267
|
+
Requires-Dist: backoff>=2.2.1; extra == "all"
|
|
263
268
|
Description-Content-Type: text/markdown
|
|
264
269
|
|
|
265
270
|
<div align="center">
|
|
@@ -298,7 +303,7 @@ Check out the [documentation](https://kaiko-ai.github.io/eva/) for more informat
|
|
|
298
303
|
|
|
299
304
|
### Highlights:
|
|
300
305
|
- Easy and reliable benchmark of Oncology FMs
|
|
301
|
-
- Supports patch-level classification, slide-level classification, semantic segmentation, and
|
|
306
|
+
- Supports patch-level classification, slide-level classification, semantic segmentation, and (visual) question answering tasks.
|
|
302
307
|
- Automatic embedding inference and evaluation of a downstream task
|
|
303
308
|
- Native support of popular medical [datasets](https://kaiko-ai.github.io/eva/dev/datasets/) and models
|
|
304
309
|
- Produce statistics over multiple evaluation fits and multiple metrics
|
|
@@ -316,6 +321,9 @@ pip install 'kaiko-eva[vision]'
|
|
|
316
321
|
# to install the expanded `language` version
|
|
317
322
|
pip install 'kaiko-eva[language]'
|
|
318
323
|
|
|
324
|
+
# to install the expanded `multimodal` version
|
|
325
|
+
pip install 'kaiko-eva[multimodal]'
|
|
326
|
+
|
|
319
327
|
# to install everything
|
|
320
328
|
pip install 'kaiko-eva[all]'
|
|
321
329
|
```
|
|
@@ -3,7 +3,7 @@ eva/__main__.py,sha256=kM5tQ0egTuBWixNLLx9QU-PpS2Bbs3zE3nYE6b2vWa0,282
|
|
|
3
3
|
eva/__version__.py,sha256=YFR4oOlvPg0sS4Ni7GJ_vU42VTs5WiWp6odK7yH4TBY,611
|
|
4
4
|
eva/core/__init__.py,sha256=AYlMZcH76B7I1lOa-E67u2o9DxsCwI4JMLCYXLk9oDQ,451
|
|
5
5
|
eva/core/callbacks/__init__.py,sha256=_XsS4QGf4r9frzFwEx-krmzJm3kbLmXQFtwYCfRyjrM,281
|
|
6
|
-
eva/core/callbacks/config.py,sha256
|
|
6
|
+
eva/core/callbacks/config.py,sha256=X5d-Ex_1irOLtyzSbB4t3BjfctqtJXsIdHEbJUISmDE,4337
|
|
7
7
|
eva/core/callbacks/writers/__init__.py,sha256=z8cNVJOanj-yYyIiX-mOkhur1NExuCOKzPjp4mmm3AE,232
|
|
8
8
|
eva/core/callbacks/writers/embeddings/__init__.py,sha256=zMxP4POf1yFFUVSjGcsQgyPYNY6JsZO_F66ngKJZaG8,301
|
|
9
9
|
eva/core/callbacks/writers/embeddings/_manifest.py,sha256=pB9nGv9ofVbnI4HHPrHY4p7jeFiFQTRc09zszto_DTk,2424
|
|
@@ -14,12 +14,10 @@ eva/core/callbacks/writers/embeddings/typings.py,sha256=qXZSlasaSKHad6HyJeRTeUv-
|
|
|
14
14
|
eva/core/cli/__init__.py,sha256=1lGiomn4JINI0DKy41_D4cEyyH-hN6cfTZfMPxLxTCA,68
|
|
15
15
|
eva/core/cli/cli.py,sha256=AZ4B4OP3D2af9H2RYBd5nxoy5I9DlaClZaadSWpPEPI,422
|
|
16
16
|
eva/core/cli/logo.py,sha256=x6-vGWI0s9gza-xxQrBDi2wneb2wFU_mQGHgpAiq2MQ,786
|
|
17
|
-
eva/core/cli/setup.py,sha256=
|
|
17
|
+
eva/core/cli/setup.py,sha256=q5bLSqlHvR0bgF-uh4tL1JOv2aCn5hoRP-XqCaBKTvo,2690
|
|
18
18
|
eva/core/data/__init__.py,sha256=yG3BeOWhp1EjVYMFqx8M_TBWFDyfIwwksQGQmMdSPaI,340
|
|
19
|
-
eva/core/data/dataloaders/__init__.py,sha256=
|
|
20
|
-
eva/core/data/dataloaders/
|
|
21
|
-
eva/core/data/dataloaders/collate_fn/collate.py,sha256=oBdxaDCIaXBB6H8LB90Qsi2Inw1tyHGF4kAFBINPOeQ,689
|
|
22
|
-
eva/core/data/dataloaders/dataloader.py,sha256=amRIwbmI6Hi2qS-ciKkv7ehgkBbMCHx7XUaEMlttWkw,2688
|
|
19
|
+
eva/core/data/dataloaders/__init__.py,sha256=fbNClVZ8J3QoGi4qiPq635ig1j9GdI7six3RhfwDbjY,110
|
|
20
|
+
eva/core/data/dataloaders/dataloader.py,sha256=v_UL5p78EiyLqXUhWsS0EbfW0iO-DAWOMv7-WTclOvA,2750
|
|
23
21
|
eva/core/data/datamodules/__init__.py,sha256=qZchYbgxo9lxYnGoqdk0C6MfS2IbF0WItO0kCdP9Mqc,229
|
|
24
22
|
eva/core/data/datamodules/call.py,sha256=jjj9w3UXYuQB-qyCcw1EZpRJW10OC1I3dvgvsuQWLck,940
|
|
25
23
|
eva/core/data/datamodules/datamodule.py,sha256=_pK59oXDe53oDkmv6eoJUvfl44WlFkrbC8KXSRMs_20,5533
|
|
@@ -35,7 +33,7 @@ eva/core/data/datasets/typings.py,sha256=KSmckjsU64pGV-8uSLkD1HmvPKYlyypngiRx9yy
|
|
|
35
33
|
eva/core/data/samplers/__init__.py,sha256=rRrKtg4l6YoziD3M0MkctQvX1NdRxaQa5sm6RHH_jXc,315
|
|
36
34
|
eva/core/data/samplers/classification/__init__.py,sha256=gvv7BH4lG9JlkMaTOnaL0f4k1ghiVBgrH64bh1-rreQ,147
|
|
37
35
|
eva/core/data/samplers/classification/balanced.py,sha256=MGTHt-WQaQKiJ5A1D_P6HJ6YzPTD-ERhc0R7rNMFqfg,3788
|
|
38
|
-
eva/core/data/samplers/random.py,sha256=
|
|
36
|
+
eva/core/data/samplers/random.py,sha256=fAlPmlTiXO7QqTh2hLVjgmELsX4P7DrS-9vV2qMAcOQ,1409
|
|
39
37
|
eva/core/data/samplers/sampler.py,sha256=0DOLUzFoweqEubuO1A4bZBRU0AWFoWGWrO3pawRT-eI,877
|
|
40
38
|
eva/core/data/splitting/__init__.py,sha256=VQJ8lfakbv6y2kAk3VDtITAvh7kcZo3H1JwJBc5jT08,198
|
|
41
39
|
eva/core/data/splitting/random.py,sha256=r6iy7j34seRTlyB79_Xy7m6lsKRi8ZM9X5Ln1b-SBjg,1453
|
|
@@ -48,13 +46,14 @@ eva/core/data/transforms/padding/pad_2d_tensor.py,sha256=J4maGFmeQf9IHRxt5kU-6eI
|
|
|
48
46
|
eva/core/data/transforms/sampling/__init__.py,sha256=BFKbvRjlZrwS0GcNrM54ZSWt6PrQARfFlXM1jJ-wpvo,149
|
|
49
47
|
eva/core/data/transforms/sampling/sample_from_axis.py,sha256=Zbhp94lVa70WQKmSOKMTsOMe2c7wLqNZto7JqWhSdtI,1229
|
|
50
48
|
eva/core/interface/__init__.py,sha256=chdpKXipxe1NP-Fgr_d9r6X1gMna0XiEa38waJ6FzTM,98
|
|
51
|
-
eva/core/interface/interface.py,sha256=
|
|
49
|
+
eva/core/interface/interface.py,sha256=pni92cLb4KQMSvOoYMWP2qIn8rtzqxj84hEhjsdCgis,5364
|
|
52
50
|
eva/core/loggers/__init__.py,sha256=4YMLNlN9LnuKqhBI1R1keh69dmMD-2lcH3HKwwyn380,266
|
|
53
51
|
eva/core/loggers/dummy.py,sha256=Y7ypH0ecSAIkkZ5LzTmNNEzlKkqeaHfUNMCDKVOg6D4,1204
|
|
54
52
|
eva/core/loggers/experimental_loggers.py,sha256=p5uCK_9QCYufRhE-LZQUJWbhGElyobX_zRM78yX4p2o,230
|
|
55
|
-
eva/core/loggers/log/__init__.py,sha256=
|
|
53
|
+
eva/core/loggers/log/__init__.py,sha256=TdsUwcaB2jW0--HVGIr7_polTfmr7iOmXtSmr1wK9_c,251
|
|
56
54
|
eva/core/loggers/log/image.py,sha256=iUwntQCdRNLtkSdqu8CvV34l06zPYVo4NAW2gUeiJIM,1490
|
|
57
55
|
eva/core/loggers/log/parameters.py,sha256=7Xi-I5gQvEVv71d58bwdZ-Hb4287NXxaUyMfriq_KDU,1634
|
|
56
|
+
eva/core/loggers/log/table.py,sha256=HULCo5icDB6UOIXXMci0eo32Pl1-YRWzaOAB-ZBVUak,1726
|
|
58
57
|
eva/core/loggers/log/utils.py,sha256=k4Q7uKpAQctfDv0EEYPnPv6wt9LnckEeqGvbYSLfKO0,415
|
|
59
58
|
eva/core/loggers/loggers.py,sha256=igHxdxJSotWSg6nEOKnfFuBszzblHgi8T7sBrE00FEs,166
|
|
60
59
|
eva/core/loggers/utils/wandb.py,sha256=GdwzEeFTAng5kl_kIVRxKL7rvwqyicQHSaZS8VSMXvU,747
|
|
@@ -77,7 +76,7 @@ eva/core/models/__init__.py,sha256=T6Fo886LxMj-Y58_ylzkPkFSnFR2aISiMIbuO_weC4s,4
|
|
|
77
76
|
eva/core/models/modules/__init__.py,sha256=_4VjN9Qs4_mftEVgt0KqVxCRAtDcKYbUnBA3Ox1Pzis,350
|
|
78
77
|
eva/core/models/modules/head.py,sha256=bZ45RBPi3N8sjvKyt2_TeKWI1eB6GyBeGzV6J11ERO8,5225
|
|
79
78
|
eva/core/models/modules/inference.py,sha256=ih-0Rr2oNf2N6maiXPOW7XH5KVwUT1_MOxnJKOhJ1uQ,978
|
|
80
|
-
eva/core/models/modules/module.py,sha256=
|
|
79
|
+
eva/core/models/modules/module.py,sha256=8BHc_NdIXAyA7oUP7LFLYvMjIJSsuR5lvFiHS_wycU4,6695
|
|
81
80
|
eva/core/models/modules/scheduler.py,sha256=orv5TDq9vEItxE7rTj0sQlzdChpx5jHx-3ypnHjUyr4,1650
|
|
82
81
|
eva/core/models/modules/typings.py,sha256=LPR8JdIid2gJZpjMG1FcH5OZ60JlFOj_LupIh__2k_8,803
|
|
83
82
|
eva/core/models/modules/utils/__init__.py,sha256=ScLCHwQfzlg_UsHVi5sf_SavUkh9secwtRn_umC_qA8,325
|
|
@@ -92,17 +91,17 @@ eva/core/models/transforms/extract_cls_features.py,sha256=A-oNNiGYBkMLK_E9DrzJUJ
|
|
|
92
91
|
eva/core/models/transforms/extract_patch_features.py,sha256=5UsHjZnh3Uk2jAfi3GLtxoJ14ALTrfVoWUy8nTspRDY,2218
|
|
93
92
|
eva/core/models/wrappers/__init__.py,sha256=jaiANQdbO-IPgH8U-Y0ftFsuuCAM5i5KuYRHauKw5k8,450
|
|
94
93
|
eva/core/models/wrappers/_utils.py,sha256=ZWe9Ih_0kH5Wg_AQAtAn77LZ_CODAve5u3G12ifLNsc,4902
|
|
95
|
-
eva/core/models/wrappers/base.py,sha256=
|
|
96
|
-
eva/core/models/wrappers/from_function.py,sha256=
|
|
97
|
-
eva/core/models/wrappers/from_torchhub.py,sha256
|
|
98
|
-
eva/core/models/wrappers/huggingface.py,sha256
|
|
99
|
-
eva/core/models/wrappers/onnx.py,sha256=
|
|
94
|
+
eva/core/models/wrappers/base.py,sha256=MvFZcwXvWsgvi9LqJUcUKjqimyFXvJ7P5ftOaNQpecc,1450
|
|
95
|
+
eva/core/models/wrappers/from_function.py,sha256=ccjCMwkdmyKqCxUbNaUDB1V6KvBgKuoXxIb8gH7Giyo,1855
|
|
96
|
+
eva/core/models/wrappers/from_torchhub.py,sha256=VHOigAIkYJfMfaq8WJwYzbex-1ny_ZjszxGSfaDeVbw,3291
|
|
97
|
+
eva/core/models/wrappers/huggingface.py,sha256=rP0DmdZnJ0Zqjy3o7BqwBa8uG3C24Epgb4h1sRPZOJ0,1459
|
|
98
|
+
eva/core/models/wrappers/onnx.py,sha256=BhXlXE0mF3pZ2R8SZtDUF51ooFwdsAjJ47CiJg-wjNY,1837
|
|
100
99
|
eva/core/trainers/__init__.py,sha256=jhsKJF7HAae7EOiG3gKIAHH_h3dZlTE2JRcCHJmOzJc,208
|
|
101
100
|
eva/core/trainers/_logging.py,sha256=gi4FqPy2GuVmh0WZY6mYwF7zMPvnoFA050B0XdCP6PU,2571
|
|
102
101
|
eva/core/trainers/_recorder.py,sha256=M-BJHLgqGxR_MSV6f_WC7GN2JHYEEinV1-hNLpH667A,8062
|
|
103
102
|
eva/core/trainers/_utils.py,sha256=M3h8lVhUmkeSiEXpX9hRdMvThGFCnTP15gv-hd1CZkc,321
|
|
104
103
|
eva/core/trainers/functional.py,sha256=_Mw-NIPU2tPffxpK5t3sHBmVI6u163phCpoJFiauH7E,4583
|
|
105
|
-
eva/core/trainers/trainer.py,sha256=
|
|
104
|
+
eva/core/trainers/trainer.py,sha256=i_Qj76h6BfwK-5Y3UsiLcWrSnUKumg0XLxBdAR2WRHU,4908
|
|
106
105
|
eva/core/utils/__init__.py,sha256=cndVBvtYxEW7hykH39GCNVI86zkXNn8Lw2A0sUJHS04,237
|
|
107
106
|
eva/core/utils/clone.py,sha256=qcThZOuAs1cs0uV3BL5eKeM2VIBjuRPBe1t-NiUFM5Y,569
|
|
108
107
|
eva/core/utils/factory.py,sha256=upWPWkWW7p3_ZoePAzbkkZvEPiAY4OaOQkwNvh0oa-E,2397
|
|
@@ -118,23 +117,79 @@ eva/core/utils/registry.py,sha256=iEDVsQ7DdPXhzfW32z3lWNgwjagR_jh_g4VkvajjRK4,13
|
|
|
118
117
|
eva/core/utils/requirements.py,sha256=u01QPnBDu0YApncxgvg7xEANubyGSptqja12cycg3k0,909
|
|
119
118
|
eva/core/utils/suppress_logs.py,sha256=pOk1076J0mKWn2lgDqEVC1g65FXhA_2IkC4LBEWhnwQ,902
|
|
120
119
|
eva/core/utils/workers.py,sha256=hfx63M82qNg0Dwhre2tl53MnhtRsV7APaDONM9nhVB8,634
|
|
121
|
-
eva/language/__init__.py,sha256=
|
|
120
|
+
eva/language/__init__.py,sha256=W_u2wedmQvEOWVEw8dmkie7c6ATeVuTVn9_Yw7uc3cU,406
|
|
121
|
+
eva/language/callbacks/__init__.py,sha256=gVTSGjKYvovTgERVJmQLssW6Fz7aJwjYpe6gqUtq0_8,131
|
|
122
|
+
eva/language/callbacks/writers/__init__.py,sha256=FV02MK218j3pxCgmTvMPtgNL8-4d2NbUcnyvsZI0CNs,150
|
|
123
|
+
eva/language/callbacks/writers/prediction.py,sha256=MzU8Jc17fwL2SV0tjLl-ravxN9GPDAWARZdT2cr86FY,6894
|
|
122
124
|
eva/language/data/__init__.py,sha256=ONF-CLBK2HO2p1bMCAbdvaHfSsYjdSE9-O3lWgwQQGk,89
|
|
123
|
-
eva/language/data/
|
|
125
|
+
eva/language/data/dataloaders/__init__.py,sha256=6pGDiohDxfNepOyE76XhgQMOYzgL1LYNaR9Qu7xb8fQ,169
|
|
126
|
+
eva/language/data/dataloaders/collate_fn/__init__.py,sha256=QZ22JjL4t8VldudGXTaEPv3rH8XKta_nlip1TszWn9g,171
|
|
127
|
+
eva/language/data/dataloaders/collate_fn/text.py,sha256=BrgbgUOFyaitymVAp2lZNaS2kqU7KzmeMOKfNzGaiYY,1944
|
|
128
|
+
eva/language/data/datasets/__init__.py,sha256=FE5tpQ18z2yRE_q60r2xu7WapLT3oGt5d_iZ6_uJ_DI,308
|
|
129
|
+
eva/language/data/datasets/base.py,sha256=BDpyT_mnYuP5qMlGP_vfRejO-gp-bsQYNMBqM0EmXyY,309
|
|
124
130
|
eva/language/data/datasets/classification/__init__.py,sha256=HXtgJpMt9CgqvdeWc147bOn-9YeUMcL8v-0UHHkY_A4,144
|
|
125
|
-
eva/language/data/datasets/classification/base.py,sha256=
|
|
126
|
-
eva/language/data/datasets/classification/pubmedqa.py,sha256=
|
|
127
|
-
eva/language/data/datasets/
|
|
128
|
-
eva/language/
|
|
129
|
-
eva/language/
|
|
130
|
-
eva/language/
|
|
131
|
+
eva/language/data/datasets/classification/base.py,sha256=Xdy8quqx4lSZtS04yJ1WubXREMEnaB7BiCnn-Ao8wIQ,589
|
|
132
|
+
eva/language/data/datasets/classification/pubmedqa.py,sha256=n3CSwVbQAPU7NJ3m8WeYF1coNRLOiolVyvqVZIFfLg4,6510
|
|
133
|
+
eva/language/data/datasets/prediction.py,sha256=4ZyDFK5IWPuVShKy8z2Bn6Uq0dYgolFhf94EUnzYiC8,5880
|
|
134
|
+
eva/language/data/datasets/schemas.py,sha256=x0IBinezADXzQr71SDFSSeRYXW7uuINmzdPQLemWF-Y,405
|
|
135
|
+
eva/language/data/datasets/text.py,sha256=MpVJa5h7Al572UdU-WtfKwbF7nEAt_jd11rJF3ZIuQk,2778
|
|
136
|
+
eva/language/data/datasets/typings.py,sha256=_JZUD6ZlaCQhvWBD851zQZy3czgCxpsAnbnifSvSRCk,904
|
|
137
|
+
eva/language/data/messages.py,sha256=2x7k-rzZkM8Ow-fIm6cBrsJB6W_vlsjExs6IaQkdDa4,1306
|
|
138
|
+
eva/language/models/__init__.py,sha256=QZHt1uz9bB33Ko5mznlLjY0uGCVmnS7SOLb8Z0Bzgm4,725
|
|
139
|
+
eva/language/models/modules/__init__.py,sha256=Dk2pdjkerDA_Omrue38ia0rYmW84jRvyc9pPKziZH9c,172
|
|
140
|
+
eva/language/models/modules/language.py,sha256=ybDHNDtJ_YCKq_zoXHZorF0rOM1l4jz_URZ2cfdSSok,3097
|
|
131
141
|
eva/language/models/modules/typings.py,sha256=dWq3FTbvGZGoIMTEIX1yWBk_VFKIHsvxaTvBXlbJfCA,379
|
|
132
|
-
eva/language/models/
|
|
133
|
-
eva/language/models/
|
|
134
|
-
eva/language/models/
|
|
135
|
-
eva/language/models/
|
|
136
|
-
eva/language/
|
|
137
|
-
eva/language/
|
|
142
|
+
eva/language/models/networks/__init__.py,sha256=zrRaiFqcIeFsLm6-yJWUeEgh_1xvBY-5QAdRGjEOysg,374
|
|
143
|
+
eva/language/models/networks/alibaba.py,sha256=kSGPdZWnn0q71Dm03HKmoXWACeEyc8V3HVLuk_fIhno,798
|
|
144
|
+
eva/language/models/networks/api/__init__.py,sha256=NrLiFExfplzbiFqOTgQqSUxeXzlAwCoDcbuBH9hbi58,222
|
|
145
|
+
eva/language/models/networks/api/anthropic.py,sha256=EdIKcFS7RCX_vpiOYMh-tS6rM74orOcNRmhw9pETen8,1194
|
|
146
|
+
eva/language/models/networks/registry.py,sha256=yFA1AhIbgoDLRvn9MUU2FPH25H7BODpN49CN_ya7wrY,106
|
|
147
|
+
eva/language/models/typings.py,sha256=SclZPkxg9T3ADl5SVWXzV4ymJyJ5Wf0VxDrWRRlBLIU,906
|
|
148
|
+
eva/language/models/wrappers/__init__.py,sha256=N5DrkKZs_zE7WHY76bnhViO1hpoO88Sm1BOj12tgwJU,626
|
|
149
|
+
eva/language/models/wrappers/base.py,sha256=0MLM-Ds20hftbO3JUUWd7wuXXRn2axz1ITUplw0u_LI,1682
|
|
150
|
+
eva/language/models/wrappers/from_registry.py,sha256=hdGzLfkgjZLrEb9GyqjF1mNlFMTErQ6sY900_tBJHH8,1793
|
|
151
|
+
eva/language/models/wrappers/huggingface.py,sha256=Qz_GAcIwJWt0Ao4gRSII7FEDUBMqYU5u5lVBejI3j_Y,4025
|
|
152
|
+
eva/language/models/wrappers/litellm.py,sha256=sGyaQHaFEjgEHxTcnlMHa2b7L5eln27Tv8g821eXd_U,3442
|
|
153
|
+
eva/language/models/wrappers/vllm.py,sha256=puJVOFeyFrqBplvkjvH5dGALlZD4gduaX3lY5fScbQU,6514
|
|
154
|
+
eva/language/utils/__init__.py,sha256=Bvw7Z5Z-mBQp7rTycycrgrxxrbItD5IqNU4uHRAnD9s,238
|
|
155
|
+
eva/language/utils/str_to_int_tensor.py,sha256=_D2FH_5S1Sc4ywsJ6EWrTwuaw-NJVHygwAaRSRs-NPs,3471
|
|
156
|
+
eva/language/utils/text/__init__.py,sha256=fxMel4GvRx-SKrxGcwXDNG77yj_deEOWc6mkePS2aWo,143
|
|
157
|
+
eva/language/utils/text/messages.py,sha256=9i4AUNjAo8XOF0_gB_MaoQy4SHI2zohz65qtMoTYtWE,3989
|
|
158
|
+
eva/multimodal/__init__.py,sha256=aRq8KCWg4h7XHS68EWSHDepu9VeACxVOU3B4DiQhphE,132
|
|
159
|
+
eva/multimodal/callbacks/__init__.py,sha256=tIwSH9Z1YJfebSU3-rSCGJgaX3Io6rptLX13gmI6Hck,135
|
|
160
|
+
eva/multimodal/callbacks/writers/__init__.py,sha256=6UYVvH3Hbya0haKQh9Dci_lRji9kz1RO4Z_vnTnY24U,154
|
|
161
|
+
eva/multimodal/callbacks/writers/prediction.py,sha256=OSfInVpz2qUDTkzM3MzwWZiJoa3N4y8amMLV5TEK-k0,1316
|
|
162
|
+
eva/multimodal/data/__init__.py,sha256=wL6XCRfIuDp-7YWaHsWZ90CdII-reSW1jQ2dn8_OC0Q,113
|
|
163
|
+
eva/multimodal/data/dataloaders/__init__.py,sha256=OZ4KnLxwfs1ccA6FItyoFBtgUL_vd5JnOycCOhk8H5M,143
|
|
164
|
+
eva/multimodal/data/dataloaders/collate_fn/__init__.py,sha256=1CHJ7cL9ELlo92LakB5ib0YD-kbTjzBrMBZ5j5kYu74,160
|
|
165
|
+
eva/multimodal/data/dataloaders/collate_fn/text_image.py,sha256=Hwf4GOmYtYcJYMTiZSVrSppo_SQqcAmvvahe_4xoVb0,883
|
|
166
|
+
eva/multimodal/data/datasets/__init__.py,sha256=XisAN7MOBncOucelkVOch_rX7KSHPIL7W6lmKUQVQuQ,236
|
|
167
|
+
eva/multimodal/data/datasets/base.py,sha256=mRkxiVpZJ3Rn_YRHvqGGJiAr-I1qY1A2H53vhn59d2g,315
|
|
168
|
+
eva/multimodal/data/datasets/multiple_choice/__init__.py,sha256=tmMLCUQWBAGvDPaUVL4qNoXTabkagoZTgbiAJ9Sci-E,148
|
|
169
|
+
eva/multimodal/data/datasets/multiple_choice/patch_camelyon.py,sha256=r2ZgjStennqHDK4H2Q980sDObvZDjTA6XWSLeBmbWaQ,3100
|
|
170
|
+
eva/multimodal/data/datasets/schemas.py,sha256=44ll-3B8V8ctkmUJ1EuoUSow38EmrRTx9K1nfLw3AgE,366
|
|
171
|
+
eva/multimodal/data/datasets/text_image.py,sha256=CxT8ej6lmcWDdCeimgBcujfgMrdCMEm5LhYnzW0RbL0,2608
|
|
172
|
+
eva/multimodal/data/datasets/typings.py,sha256=dkxszTFljKf8CUlIxblsIlNR0Ckjrl2_NTBq7cAY-fk,641
|
|
173
|
+
eva/multimodal/models/__init__.py,sha256=AILD2D1zLnPW6nelWTjwIBA4jS0kx2iSw3HEQ1wMJTo,130
|
|
174
|
+
eva/multimodal/models/modules/__init__.py,sha256=E6bhjdMGPBEUNI_Lq8foLQjRTbv26B7vgxOB8q3jeSQ,147
|
|
175
|
+
eva/multimodal/models/modules/vision_language.py,sha256=DaBv3_uzNllUeZcixWiDg1Mf5c0vZnALhwS1oC8uSfw,1844
|
|
176
|
+
eva/multimodal/models/networks/__init__.py,sha256=RjW6MZ4lCAAIbstTqIq_rkaZd-fm1_4XwLMetIry9gw,463
|
|
177
|
+
eva/multimodal/models/networks/alibaba.py,sha256=dsGG7QVFxLeMKSWMPOzJRPtWTyuIwFWQZYbf-5ibpGg,1241
|
|
178
|
+
eva/multimodal/models/networks/api/__init__.py,sha256=eE0nB7XjhuSH1itEyyMtJKxHwHg1IfsHU8S69AvfDo8,224
|
|
179
|
+
eva/multimodal/models/networks/api/anthropic.py,sha256=zlPiML2JL0q-l528x29dez-FofO5ktmOjPLFRh1PwTk,1198
|
|
180
|
+
eva/multimodal/models/networks/others.py,sha256=TMBR1cjzLa4azs2mHamdi1tzeRzE8wPtt8lLdYgp9IM,1535
|
|
181
|
+
eva/multimodal/models/networks/registry.py,sha256=beZsRZUrKdUhMPq7UYFOEF7z50FgxGT1OCwE64xBf9A,108
|
|
182
|
+
eva/multimodal/models/typings.py,sha256=bwQbUFIsXhAxk7YTXqRdBYw0RqPA0a6RGNLEt4mBrxk,693
|
|
183
|
+
eva/multimodal/models/wrappers/__init__.py,sha256=RvLw74VGP3mh1CMYPj4Ij09TNkBml4ohvdirXeVBm3I,421
|
|
184
|
+
eva/multimodal/models/wrappers/base.py,sha256=FXRjAekVIovc3kbd8Q6lkwpWTSML8a8XRFAgOCl2Gsk,1719
|
|
185
|
+
eva/multimodal/models/wrappers/from_registry.py,sha256=JBCck-ecIOC9_jSaEVMbU8R2MOgjHQRxzb0SzO4whIQ,1807
|
|
186
|
+
eva/multimodal/models/wrappers/huggingface.py,sha256=qyyhl1C90JKoOD9-p4TeK-hWWLo8T1iJgx8-yBa13O4,6714
|
|
187
|
+
eva/multimodal/models/wrappers/litellm.py,sha256=EyN180LbyfkkHXNMVdEcgKjv-7COqTvall3YOcvmZ_I,2063
|
|
188
|
+
eva/multimodal/utils/__init__.py,sha256=pRJUXvuJtcKOJc1yqKHdQv9dDAn8fOoP0d6Q_9cR7ek,32
|
|
189
|
+
eva/multimodal/utils/image/__init__.py,sha256=7DCx0FgFC0CwcR40872P6w1bQWgP8HXuwyy47ZQiv-Q,126
|
|
190
|
+
eva/multimodal/utils/image/encode.py,sha256=q_tq6MJtsy6yWu6Fei1j0mMmyKGBIf1CmvJcK4ev3eU,898
|
|
191
|
+
eva/multimodal/utils/text/__init__.py,sha256=Uk1vnstlU7hLa2Pn4cacVhdhQwe2vsBoPsB0_ZWjOdc,37
|
|
192
|
+
eva/multimodal/utils/text/messages.py,sha256=IIYKXE-6FwoKM3zNt3edKFqiJdEpNLnZXR4yhSZdjkM,2541
|
|
138
193
|
eva/vision/__init__.py,sha256=oUZXFYjwtkWzi8An0uS5Xc84pLKintlXe2iti8zW6BQ,480
|
|
139
194
|
eva/vision/callbacks/__init__.py,sha256=su1V73L0dDVYWSyvV_lnWbszDi2KikRraF7OsgeaKl4,139
|
|
140
195
|
eva/vision/callbacks/loggers/__init__.py,sha256=td1JRJbE08nsGIZdO64_yLC3FUuMDp0kma0HjpUdXT4,161
|
|
@@ -158,7 +213,7 @@ eva/vision/data/datasets/classification/crc.py,sha256=sv18Lw4iUqGkYXEQN-kyZV_Foc
|
|
|
158
213
|
eva/vision/data/datasets/classification/gleason_arvaniti.py,sha256=z1OQlxZYx-n3S2wcfu-GuchySRw0E70PURJDsvejFjE,5871
|
|
159
214
|
eva/vision/data/datasets/classification/mhist.py,sha256=I-guWIucQZBHdSx-TWP24NXHf9IA9lU4hyfPZbJop0g,3033
|
|
160
215
|
eva/vision/data/datasets/classification/panda.py,sha256=HVfCvByyajdo5o_waqTpzZWCbQXQqPjvvyS5I0NAvns,7277
|
|
161
|
-
eva/vision/data/datasets/classification/patch_camelyon.py,sha256=
|
|
216
|
+
eva/vision/data/datasets/classification/patch_camelyon.py,sha256=mzgbVGQtaoer9yBXV8pXZx3DjbCy1w6aHNDJfC6CAOI,7187
|
|
162
217
|
eva/vision/data/datasets/classification/unitopatho.py,sha256=IO3msEsuOnmdcYZxF-eBpo0K97y54rWFmCb_KxuF4bk,5129
|
|
163
218
|
eva/vision/data/datasets/classification/wsi.py,sha256=YMGxU8ECjudizt_uXUevuPS8k66HxtEQ7M2IZJmL6kE,4079
|
|
164
219
|
eva/vision/data/datasets/segmentation/__init__.py,sha256=f0q9tzk4ahaZfrw_SgIE_puk_D7qmkSCKX1FP9aJITU,668
|
|
@@ -175,7 +230,7 @@ eva/vision/data/datasets/segmentation/msd_task7_pancreas.py,sha256=dTsPD73PAP15V
|
|
|
175
230
|
eva/vision/data/datasets/structs.py,sha256=RaTDW-B36PumcR5gymhCiX-r8GiKqIFcjqoEEjjFyUE,389
|
|
176
231
|
eva/vision/data/datasets/vision.py,sha256=-_WRiyICMgqABR6Ay_RKBMfsPGwgx9MQfCA7WChHo24,3219
|
|
177
232
|
eva/vision/data/datasets/wsi.py,sha256=dEAT_Si_Qb3qdSovUPeoiWeoPb7m-NGYqq44e3UXHk8,8384
|
|
178
|
-
eva/vision/data/transforms/__init__.py,sha256=
|
|
233
|
+
eva/vision/data/transforms/__init__.py,sha256=7CpXeo-oSjft1VpzjK-dmozC0Ds-HeBzBU_KYLTnfIo,885
|
|
179
234
|
eva/vision/data/transforms/base/__init__.py,sha256=d3gAnEHx8WZHuUpKLr0YAC1JR60qhRY02yeoADrx1Yw,143
|
|
180
235
|
eva/vision/data/transforms/base/monai.py,sha256=g2U4eNxKiPm6TXjHjKZ4L8-1zxa1tEf-c73kKI_7WwQ,1081
|
|
181
236
|
eva/vision/data/transforms/common/__init__.py,sha256=LWA5u0VsWzEEugdKpjpePr7fgV_XIGdASGwoaOU29Ac,211
|
|
@@ -191,8 +246,11 @@ eva/vision/data/transforms/intensity/__init__.py,sha256=mNp6pi0pnHcA24kQuiGHzMb4
|
|
|
191
246
|
eva/vision/data/transforms/intensity/rand_scale_intensity.py,sha256=x3gYRRAFbZXFWgqvoUjT0sDFWT6zbhja3PJLXbOBtTg,2184
|
|
192
247
|
eva/vision/data/transforms/intensity/rand_shift_intensity.py,sha256=5ngSHfHgJOR9KQykNKJhQMWhQYj781Mj_JKJ_ADchbM,2117
|
|
193
248
|
eva/vision/data/transforms/intensity/scale_intensity_ranged.py,sha256=VLvYZYG6jQCuR5poJsAlhIFjw6VjPEpcDPKBlJTjYBM,1873
|
|
194
|
-
eva/vision/data/transforms/spatial/__init__.py,sha256=
|
|
249
|
+
eva/vision/data/transforms/spatial/__init__.py,sha256=S2JwmBm98oPWLN497aYM-h1kyPU15Yfg9xPVTvzq6lg,355
|
|
195
250
|
eva/vision/data/transforms/spatial/flip.py,sha256=jfRc-wPBvG58OtCNU3GrOkb57kcRddRqpwcAdCB0_No,2553
|
|
251
|
+
eva/vision/data/transforms/spatial/functional/__init__.py,sha256=OzJ_Hv3CJAvvTQsk6mo_IQS0MqPW2WQ6fwtWE3UQ_Xk,166
|
|
252
|
+
eva/vision/data/transforms/spatial/functional/resize.py,sha256=NBswLluIRs1cJP-dx5Kd3Z01gF57NjPXbtPGKNa0td0,949
|
|
253
|
+
eva/vision/data/transforms/spatial/resize.py,sha256=O7igA-x7jCutw5BE_5MXOEfCeLsZPUz9K2VEIekMCi4,2305
|
|
196
254
|
eva/vision/data/transforms/spatial/rotate.py,sha256=FpMTAPWtgrG10yQ3R1_Ii6obPcn3boNWOuLhsblxUbQ,1793
|
|
197
255
|
eva/vision/data/transforms/spatial/spacing.py,sha256=T1UhqK-OhhbLQxzejMyI8BQzYRF44PNc02Qap4nk1hY,2695
|
|
198
256
|
eva/vision/data/transforms/utility/__init__.py,sha256=TjncS2aOgRJwjjRuIvmr4eRz2nKVg6b76tThp4UlzII,163
|
|
@@ -264,8 +322,8 @@ eva/vision/models/networks/decoders/segmentation/semantic/swin_unetr.py,sha256=e
|
|
|
264
322
|
eva/vision/models/networks/decoders/segmentation/semantic/with_image.py,sha256=I5PyGKKo8DcXYcw4xlCFzuavRJNRrzGT-szpDidMPXI,3516
|
|
265
323
|
eva/vision/models/networks/decoders/segmentation/typings.py,sha256=rY4CXp0MNF16SHnx9TgGjXI_r8bVGSqAWdR835hXndg,537
|
|
266
324
|
eva/vision/models/wrappers/__init__.py,sha256=ogmr-eeVuGaOCcsuxSp6PGyauP2QqWTb8dGTtbC7lRU,210
|
|
267
|
-
eva/vision/models/wrappers/from_registry.py,sha256=
|
|
268
|
-
eva/vision/models/wrappers/from_timm.py,sha256=
|
|
325
|
+
eva/vision/models/wrappers/from_registry.py,sha256=aZTbPqlfbxvx5vmh2aUym9njTlEaFwmTL5fU2zPW0To,1761
|
|
326
|
+
eva/vision/models/wrappers/from_timm.py,sha256=vf5ZoEdh-QJW-wGD6PgpqkkgQzXgQ4lT1YIaI_kwnfU,2367
|
|
269
327
|
eva/vision/utils/__init__.py,sha256=vaUovprE743SmyFH8l6uk4pYSWpI4zxn7lN0EwePTJI,96
|
|
270
328
|
eva/vision/utils/colormap.py,sha256=sP1F0JCX3abZfFgdxEjLJO-LhNYKjXZvXxs03ZgrEvI,2876
|
|
271
329
|
eva/vision/utils/convert.py,sha256=fqGmKrg5-JJLrTkTXB4YDcWTudXPrO1gGjsckVRUesU,1881
|
|
@@ -275,8 +333,8 @@ eva/vision/utils/io/image.py,sha256=IdOkr5MYqhYHz8U9drZ7wULTM3YHwCWSjZlu_Qdl4GQ,
|
|
|
275
333
|
eva/vision/utils/io/mat.py,sha256=qpGifyjmpE0Xhv567Si7-zxKrgkgE0sywP70cHiLFGU,808
|
|
276
334
|
eva/vision/utils/io/nifti.py,sha256=TFMgNhLqIK3sl3RjIRXEABM7FmSQjqVOwk1vXkuvX2w,4983
|
|
277
335
|
eva/vision/utils/io/text.py,sha256=qYgfo_ZaDZWfG02NkVVYzo5QFySqdCCz5uLA9d-zXtI,701
|
|
278
|
-
kaiko_eva-0.
|
|
279
|
-
kaiko_eva-0.
|
|
280
|
-
kaiko_eva-0.
|
|
281
|
-
kaiko_eva-0.
|
|
282
|
-
kaiko_eva-0.
|
|
336
|
+
kaiko_eva-0.4.0.dist-info/METADATA,sha256=tw3KrpA3CqmTlDJ28SxkI_4t32IHcDE0YluzC3-xbq4,26017
|
|
337
|
+
kaiko_eva-0.4.0.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
338
|
+
kaiko_eva-0.4.0.dist-info/entry_points.txt,sha256=6CSLu9bmQYJSXEg8gbOzRhxH0AGs75BB-vPm3VvfcNE,88
|
|
339
|
+
kaiko_eva-0.4.0.dist-info/licenses/LICENSE,sha256=e6AEzr7j_R-PYr2qLO-JwLn8y70jbVD3U2mxbRmwcI4,11338
|
|
340
|
+
kaiko_eva-0.4.0.dist-info/RECORD,,
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""Collate functions for text data."""
|
|
2
|
-
|
|
3
|
-
from typing import Dict, List, Tuple
|
|
4
|
-
|
|
5
|
-
import torch
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def text_collate_fn(
|
|
9
|
-
batch: List[Tuple[str, torch.Tensor, Dict]],
|
|
10
|
-
) -> Tuple[List[str], torch.Tensor, List[Dict]]:
|
|
11
|
-
"""Collate function for text data that keeps texts as separate strings.
|
|
12
|
-
|
|
13
|
-
Args:
|
|
14
|
-
batch: List of tuples containing (text, target, metadata) from the dataset
|
|
15
|
-
|
|
16
|
-
Returns:
|
|
17
|
-
Tuple containing:
|
|
18
|
-
- List of text strings
|
|
19
|
-
- Batched tensor of targets
|
|
20
|
-
- List of metadata dictionaries
|
|
21
|
-
"""
|
|
22
|
-
texts, targets, metadata = zip(*batch, strict=False)
|
|
23
|
-
targets = torch.stack(targets)
|
|
24
|
-
return list(texts), targets, list(metadata)
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"""LLM Text Module for Inference."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, List
|
|
4
|
-
|
|
5
|
-
from lightning.pytorch.utilities.types import STEP_OUTPUT
|
|
6
|
-
from loguru import logger
|
|
7
|
-
from torch import nn
|
|
8
|
-
from typing_extensions import override
|
|
9
|
-
|
|
10
|
-
from eva.core.metrics import structs as metrics_lib
|
|
11
|
-
from eva.core.models.modules import module
|
|
12
|
-
from eva.core.models.modules.utils import batch_postprocess
|
|
13
|
-
from eva.language.models.modules.typings import TEXT_BATCH
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class TextModule(module.ModelModule):
|
|
17
|
-
"""Text-based LLM module for inference.
|
|
18
|
-
|
|
19
|
-
Uses LLM wrappers for text generation and supports evaluation using
|
|
20
|
-
configurable metrics and post-processing transforms.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
def __init__(
|
|
24
|
-
self,
|
|
25
|
-
model: nn.Module,
|
|
26
|
-
prompt: str,
|
|
27
|
-
metrics: metrics_lib.MetricsSchema | None = None,
|
|
28
|
-
postprocess: batch_postprocess.BatchPostProcess | None = None,
|
|
29
|
-
) -> None:
|
|
30
|
-
"""Initializes the text inference module.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
model: An LLM wrapper (PyTorch-compatible) for text generation.
|
|
34
|
-
prompt: The prompt to use for generating text.
|
|
35
|
-
metrics: Metrics schema for evaluation.
|
|
36
|
-
postprocess: A helper function to post-process model outputs before evaluation.
|
|
37
|
-
"""
|
|
38
|
-
super().__init__(metrics=metrics, postprocess=postprocess)
|
|
39
|
-
|
|
40
|
-
self.model = model
|
|
41
|
-
self.prompt = prompt
|
|
42
|
-
|
|
43
|
-
@override
|
|
44
|
-
def forward(self, prompts: List[str], *args: Any, **kwargs: Any) -> List[str]:
|
|
45
|
-
"""Generates text responses for a batch of prompts.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
prompts: List of input texts to generate responses.
|
|
49
|
-
args: Additional arguments.
|
|
50
|
-
kwargs: Additional keyword arguments.
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
List of generated responses.
|
|
54
|
-
"""
|
|
55
|
-
return self.model(prompts)
|
|
56
|
-
|
|
57
|
-
@override
|
|
58
|
-
def validation_step(self, batch: TEXT_BATCH, *args: Any, **kwargs: Any) -> STEP_OUTPUT:
|
|
59
|
-
"""Validation step that runs batch inference and evaluates metrics.
|
|
60
|
-
|
|
61
|
-
Args:
|
|
62
|
-
batch: An input batch.
|
|
63
|
-
args: Additional arguments.
|
|
64
|
-
kwargs: Additional keyword arguments.
|
|
65
|
-
|
|
66
|
-
Returns:
|
|
67
|
-
Dictionary with predictions, ground truth, and evaluation metrics.
|
|
68
|
-
"""
|
|
69
|
-
return self._batch_step(batch)
|
|
70
|
-
|
|
71
|
-
def _batch_step(self, batch: TEXT_BATCH) -> STEP_OUTPUT:
|
|
72
|
-
"""Runs inference on a batch and evaluates model predictions.
|
|
73
|
-
|
|
74
|
-
Args:
|
|
75
|
-
batch: Input batch containing data, targets, and metadata.
|
|
76
|
-
|
|
77
|
-
Returns:
|
|
78
|
-
Dictionary with predictions, ground truth, and evaluation metrics.
|
|
79
|
-
"""
|
|
80
|
-
data, targets, metadata = batch
|
|
81
|
-
messages = [str(d) + "\n" + self.prompt for d in data]
|
|
82
|
-
predictions = self(messages)
|
|
83
|
-
logger.debug(f"Predictions: {predictions}")
|
|
84
|
-
logger.debug(f"Targets: {targets}")
|
|
85
|
-
return {"predictions": predictions, "targets": targets, "metadata": metadata}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|