File size: 1,594 Bytes
55a8cfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
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)
```