| --- |
| tags: |
| - image-feature-extraction |
| - cell representation |
| - histology |
| - medical imaging |
| - self-supervised learning |
| - vision transformer |
| - foundation model |
| license: mit |
| --- |
| |
| # Model card for LEMON |
|
|
| `LEMON` is an open-source foundation model for single-cell histology images. The model is a Vision Transformer (ViT-s/8) trained using self-supervised learning on a dataset of 10 million histology cell images sampled from 10,000 slides from TCGA. |
|
|
| `LEMON` can be used to extract robust features from single-cell histology images for various downstream applications, such as gene expression prediction or cell type classification. |
|
|
|
|
| ## How to use it to extract features. |
|
|
| The code below can be used to run inference. `LEMON` expects images of size 40x40 that were extracted at 0.25 microns per pixel (40X). |
|
|
| ```python |
| import torch |
| from pathlib import Path |
| from torchvision.transforms import ToPILImage |
| from model import prepare_transform, get_vit_feature_extractor |
| |
| device = "cpu" |
| model_name = "vits8" |
| target_cell_size = 40 |
| weight_path = Path("lemon.pth.tar") |
| stats_path = Path("mean_std.json") |
| |
| # Model |
| transform = prepare_transform(stats_path, size=target_cell_size) |
| model = get_vit_feature_extractor(weight_path, model_name, img_size=target_cell_size) |
| model.eval() |
| model.to(device) |
| |
| # Data |
| input = torch.rand(3, target_cell_size, target_cell_size) |
| input = ToPILImage()(input) |
| |
| # Inference |
| with torch.autocast(device_type=device, dtype=torch.float16): |
| with torch.inference_mode(): |
| features = model(transform(input).unsqueeze(0).to(device)) |
| |
| assert features.shape == (1, 384) |
| ``` |
|
|
|
|