File size: 5,506 Bytes
8fad42c 9f267a4 aed013c 9f267a4 aed013c 8fad42c 9f267a4 8fad42c 0f760e6 8fad42c a2bc2ec 8fad42c 2f82475 8fad42c 2f82475 8fad42c 6ded986 8fad42c a2bc2ec 8fad42c c1a2b2a 9f267a4 8fad42c 9f267a4 8fad42c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
---
library_name: transformers
tags: []
---
# Model Card for OpenPhenom-S/16
Channel-agnostic image encoding model CA-MAE with a ViT-S/16 encoder backbone designed for microscopy image featurization.
The model uses a vision transformer backbone with channelwise cross-attention over patch tokens to create contextualized representations separately for each channel.
## Model Details
### Model Description
This model is a [channel-agnostic masked autoencoder](https://openaccess.thecvf.com/content/CVPR2024/html/Kraus_Masked_Autoencoders_for_Microscopy_are_Scalable_Learners_of_Cellular_Biology_CVPR_2024_paper.html) trained to reconstruct microscopy images over three datasets:
1. RxRx3
2. JUMP-CP overexpression
3. JUMP-CP gene-knockouts
- **Developed, funded, and shared by:** Recursion
- **Model type:** Vision transformer CA-MAE
- **Image modality:** Optimized for microscopy images from the CellPainting assay
- **License:** [Non-Commercial End User License Agreement](https://huggingface.co/recursionpharma/OpenPhenom/blob/main/LICENSE)
### Model Sources
- **Repository:** [https://github.com/recursionpharma/maes_microscopy](https://github.com/recursionpharma/maes_microscopy)
- **Paper:** [Masked Autoencoders for Microscopy are Scalable Learners of Cellular Biology](https://openaccess.thecvf.com/content/CVPR2024/html/Kraus_Masked_Autoencoders_for_Microscopy_are_Scalable_Learners_of_Cellular_Biology_CVPR_2024_paper.html)
## Uses
NOTE: model embeddings tend to extract features only after using standard batch correction post-processing techniques. **We recommend**, at a *minimum*, after inferencing the model over your images, to do the standard `PCA-CenterScale` pattern or better yet Typical Variation Normalization:
1. Fit a PCA kernel on all the *control images* (or all images if no controls) from across all experimental batches (e.g. the plates of wells from your assay),
2. Transform all the embeddings with that PCA kernel,
3. For each experimental batch, fit a separate StandardScaler on the transformed embeddings of the controls from step 2, then transform the rest of the embeddings from that batch with that StandardScaler.
### Direct Use
- Create biologically useful embeddings of microscopy images
- Create contextualized embeddings of each channel of a microscopy image (set `return_channelwise_embeddings=True`)
- Leverage the full MAE encoder + decoder to predict new channels / stains for images without all 6 CellPainting channels
### Downstream Use
- A determined ML expert could fine-tune the encoder for downstream tasks such as classification
### Out-of-Scope Use
- Unlikely to be especially performant on brightfield microscopy images
- Out-of-domain medical images, such as H&E (maybe it would be a decent baseline though)
## Bias, Risks, and Limitations
- Primary limitation is that the embeddings tend to be more useful at scale. For example, if you only have 1 plate of microscopy images, the embeddings might underperform compared to a supervised bespoke model.
## How to Get Started with the Model
You should be able to successfully run the below tests, which demonstrate how to use the model at inference time.
```python
import pytest
import torch
from huggingface_mae import MAEModel
# huggingface_openphenom_model_dir = "."
huggingface_modelpath = "recursionpharma/OpenPhenom"
@pytest.fixture
def huggingface_model():
# This step downloads the model to a local cache, takes a bit to run
huggingface_model = MAEModel.from_pretrained(huggingface_modelpath)
huggingface_model.eval()
return huggingface_model
@pytest.mark.parametrize("C", [1, 4, 6, 11])
@pytest.mark.parametrize("return_channelwise_embeddings", [True, False])
def test_model_predict(huggingface_model, C, return_channelwise_embeddings):
example_input_array = torch.randint(
low=0,
high=255,
size=(2, C, 256, 256),
dtype=torch.uint8,
device=huggingface_model.device,
)
huggingface_model.return_channelwise_embeddings = return_channelwise_embeddings
embeddings = huggingface_model.predict(example_input_array)
expected_output_dim = 384 * C if return_channelwise_embeddings else 384
assert embeddings.shape == (2, expected_output_dim)
```
We also provide a [notebook](https://huggingface.co/recursionpharma/OpenPhenom/blob/main/RxRx3-core_inference.ipynb) for running inference on [RxRx3-core](https://huggingface.co/datasets/recursionpharma/rxrx3-core).
## Training, evaluation and testing details
See paper linked above for details on model training and evaluation. Primary hyperparameters are included in the repo linked above.
## Environmental Impact
- **Hardware Type:** Nvidia H100 Hopper nodes
- **Hours used:** 400
- **Cloud Provider:** private cloud
- **Carbon Emitted:** 138.24 kg co2 (roughly the equivalent of one car driving from Toronto to Montreal)
**BibTeX:**
```TeX
@inproceedings{kraus2024masked,
title={Masked Autoencoders for Microscopy are Scalable Learners of Cellular Biology},
author={Kraus, Oren and Kenyon-Dean, Kian and Saberian, Saber and Fallah, Maryam and McLean, Peter and Leung, Jess and Sharma, Vasudev and Khan, Ayla and Balakrishnan, Jia and Celik, Safiye and others},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={11757--11768},
year={2024}
}
```
## Model Card Contact
- Kian Kenyon-Dean: kian.kd@recursion.com
- Oren Kraus: oren.kraus@recursion.com
- Or, email: info@rxrx.ai |