-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🆕 Integrate Foundation Models Available VIA timm
: UNI
, Prov-GigaPath
, H-optimus-0
#856
🆕 Integrate Foundation Models Available VIA timm
: UNI
, Prov-GigaPath
, H-optimus-0
#856
Conversation
Only added UNI and Prov-GigaPath for now. Will add more after initial comments. I do not like that |
I found this file for testing: https://github.com/TissueImageAnalytics/tiatoolbox/blob/develop/tests/models/test_arch_vanilla.py There might be a problem regarding memory and compute resources when running some of the larger feature extractors through GitHub actions, e.g. Prov-GigaPath needs a considerable amount of memory just to be loaded. |
As this is just testing the functionality and not loading weights, I hope this would work. |
In that case, you can inherit
PatchPredictor uses all the functionalities of EngineABC other than the ones defined explicitly.
|
allows to reuse the `infer_batch` method of `CNNBackbone`
timm: UNI
, Virchow
, Hibou
, H-optimus-0
I have updated this branch to make sure that tests pass on Ubuntu-24 before we merge it with develop. |
- remove explicit assert statement for `timm` version - add `timm` version into in if statement for prov-gigapath - add comment about `timm` version for timm-based models Co-authored-by: Shan E Ahmed Raza <13048456+shaneahmed@users.noreply.github.com>
for more information, see https://pre-commit.ci
was not removed while accepting suggested changes
…fied during the init of super(), which is CNNModel
I think we should add a notebook to show how to
This is precisely what I wanted to know how to do, and there was no end-to-end example notebook. Alternatively, we can add code for saving a mask into the Masking Notebook, which currently does not show how to save the masks: wsi = WSIReader.open(slide_path)
mask = wsi.tissue_mask(resolution=1.25, units="power")
mask_thumbnail = mask.slide_thumbnail(resolution=1.25, units="power",)
mask_thumbnail_path = os.path.join(f"{slide_name}_mask.png")
imwrite(mask_thumbnail_path, np.uint8(mask_thumbnail * 255)) And add |
There are 3 more families of models that can be integrated, but they require their own files to be created: Hibou -b and -L, Phikon v1 and v2, Virchow v1 and v2 Should I add those files and call them from Hibou requires to trust remote code when creating the model, which I do not really like. |
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
…et50") into the full pipelines version of slide-graph
4a7ad04
to
5c93e9a
Compare
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
@shaneahmed, I think this branch is ready to be merged into I added code for saving a mask into the Masking Notebook, which currently does not show how to save the masks: I also added a comment showing that TimmBackbone could be used as an alternative: model = CNNBackbone("resnet50") # TimmBackbone(backbone="UNI", pretrained=True) in both slide graph notebooks: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @GeorgeBatch This would be very helpful.
## TIAToolbox v1.6.0 (2024-12-12) ### Major Updates and Feature Improvements - **Foundation Models Support via `timm` API** (#856, contributed by @GeorgeBatch) - Introduced `TimmBackbone` for running additional PyTorch Image Models. - Tested models include `UNI`, `Prov-GigaPath`, and `H-optimus-0`. - Added an example notebook demonstrating feature extraction with foundation models. - `timm` added as a dependency. - **Performance Enhancements with `torch.compile`** (#716) - Improved performance on newer GPUs using `torch.compile`. - **Multichannel Input Support in `WSIReader`** (#742) - **AnnotationStore Filtering for Patch Extraction** (#822) - **Python 3.12 Support** - **Deprecation of Python 3.8 Support** - **CLI Response Time Improvements** (#795) ### API Changes - **Device Specification Update** (#882) - Replaced `has_gpu` with `device` for specifying GPU or CPU usage, aligning with PyTorch's `Model.to()` functionality. - **Windows Compatibility Enhancement** (#769) - Replaced `POWER` with explicit multiplication. ### Bug Fixes and Other Changes - **TIFFWSIReader Bound Reading Adjustment** (#777) - Fixed `read_bound` to use adjusted bounds. - Reduced code complexity in `WSIReader` (#814). - **Annotation Rendering Fixes** (#813) - Corrected rendering of annotations with holes. - **Non-Tiled TIFF Support in `WSIReader`** (#807, contributed by @GeorgeBatch) - **HoVer-Net Documentation Update** (#751) - Corrected class output information. - **Citation File Fix for `cffconvert`** (#869, contributed by @Alon-Alexander) - **Bokeh Compatibility Updates** - Updated `bokeh_app` for compatibility with `bokeh>=3.5.0`. - Switched from `size` to `radius` for `bokeh>3.4.0` compatibility (#796). - **JSON Extraction Fixes** (#772) - Restructured SQL expression construction for JSON properties with dots in keys. - **VahadaneExtractor Warning** (#871) - Added warning due to changes in `scikit-learn>0.23.0` dictionary learning (#382). - **PatchExtractor Error Message Refinement** (#883) - **Immutable Output Fix in `WSIReader`** (#850) ### Development-Related Changes - **Mypy Checks Added** - Applied to `utils`, `tools`, `data`, `annotation`, and `cli/common`. - **ReadTheDocs PDF Build Deprecation** - **Formatter Update** - Replaced `black` with `ruff-format`. - **Dependency Removal** - Removed `jinja2`. - **Test Environment Update** - Updated to `Ubuntu 24.04`. - **Conda Environment Workflow Update** - Implemented `micromamba` setup. - **Codecov Reporting Fix** (#811) **Full Changelog:** v1.5.1...v1.6.0 --------- Co-authored-by: John Pocock <John-P@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Adam Shephard <39619155+adamshephard@users.noreply.github.com> Co-authored-by: Mark Eastwood <20169086+measty@users.noreply.github.com> Co-authored-by: Mostafa Jahanifar <74412979+mostafajahanifar@users.noreply.github.com> Co-authored-by: Simon Graham <20071401+simongraham@users.noreply.github.com> Co-authored-by: Abdol A <u2271662@live.warwick.ac.uk> Co-authored-by: Jiaqi-Lv <60471431+Jiaqi-Lv@users.noreply.github.com> Co-authored-by: Dmitrii Blaginin <blaginin@mbp.lan> Co-authored-by: behnazelhaminia <30952176+behnazelhaminia@users.noreply.github.com> Co-authored-by: George Batchkala <46561186+GeorgeBatch@users.noreply.github.com> Co-authored-by: vqdang <24943262+vqdang@users.noreply.github.com> Co-authored-by: Jiaqi Lv <lvjiaqi9@gmail.com> Co-authored-by: Alon Alexander <alon008@gmail.com>
## TIAToolbox v1.6.0 (2024-12-12) ### Major Updates and Feature Improvements - **Foundation Models Support via `timm` API** (#856, contributed by @GeorgeBatch) - Introduced `TimmBackbone` for running additional PyTorch Image Models. - Tested models include `UNI`, `Prov-GigaPath`, and `H-optimus-0`. - Added an example notebook demonstrating feature extraction with foundation models. - `timm` added as a dependency. - **Performance Enhancements with `torch.compile`** (#716) - Improved performance on newer GPUs using `torch.compile`. - **Multichannel Input Support in `WSIReader`** (#742) - **AnnotationStore Filtering for Patch Extraction** (#822) - **Python 3.12 Support** - **Deprecation of Python 3.8 Support** - **CLI Response Time Improvements** (#795) ### API Changes - **Device Specification Update** (#882) - Replaced `has_gpu` with `device` for specifying GPU or CPU usage, aligning with PyTorch's `Model.to()` functionality. - **Windows Compatibility Enhancement** (#769) - Replaced `POWER` with explicit multiplication. ### Bug Fixes and Other Changes - **TIFFWSIReader Bound Reading Adjustment** (#777) - Fixed `read_bound` to use adjusted bounds. - Reduced code complexity in `WSIReader` (#814). - **Annotation Rendering Fixes** (#813) - Corrected rendering of annotations with holes. - **Non-Tiled TIFF Support in `WSIReader`** (#807, contributed by @GeorgeBatch) - **HoVer-Net Documentation Update** (#751) - Corrected class output information. - **Citation File Fix for `cffconvert`** (#869, contributed by @Alon-Alexander) - **Bokeh Compatibility Updates** - Updated `bokeh_app` for compatibility with `bokeh>=3.5.0`. - Switched from `size` to `radius` for `bokeh>3.4.0` compatibility (#796). - **JSON Extraction Fixes** (#772) - Restructured SQL expression construction for JSON properties with dots in keys. - **VahadaneExtractor Warning** (#871) - Added warning due to changes in `scikit-learn>0.23.0` dictionary learning (#382). - **PatchExtractor Error Message Refinement** (#883) - **Immutable Output Fix in `WSIReader`** (#850) ### Development-Related Changes - **Mypy Checks Added** - Applied to `utils`, `tools`, `data`, `annotation`, and `cli/common`. - **ReadTheDocs PDF Build Deprecation** - **Formatter Update** - Replaced `black` with `ruff-format`. - **Dependency Removal** - Removed `jinja2`. - **Test Environment Update** - Updated to `Ubuntu 24.04`. - **Conda Environment Workflow Update** - Implemented `micromamba` setup. - **Codecov Reporting Fix** (#811) **Full Changelog:** v1.5.1...v1.6.0
Making a pull request as discussed in issue #855
Copied from the issue:
I think it would be useful to integrate pre-trained foundation models from other labs into tiatoolbox.models.architecture.vanilla.py.
Currently, the
_get_architecture()
function allows the use of models fromtorchvision.models
.But another function
_get_timm_architecture()
could be made to incorporate foundation models which are available fromtimm
with weights on HuggingFace Hub. All the models fromtimm
that I've used require users to sign the licence agreement with the authors, so the licencing question seems to be solved itself since there is no way users will get access to the model weights just through Tiatoolbox without getting the access request approved by the authors first.