Model reference · open weights
rad-dino is an open-weight embedding model from microsoft. rad-dino (FP32) weighs 393 MB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the microsoft/rad-dino model card, 2026-10-01
What it is
| Released by | microsoft |
|---|---|
| Released | 2024-05-17 |
| Parameters | 87M |
| VRAM | 393 MB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
RAD-DINO is a vision transformer model trained to encode chest X-rays using the self-supervised learning method DINOv2.
RAD-DINO is described in detail in Exploring Scalable Medical Image Encoders Beyond Text Supervision (F. Pérez-García, H. Sharma, S. Bond-Taylor, et al., 2025).
dinov2-baseRAD-DINO is shared for research purposes only. It is not meant to be used for clinical practice.
The model is a vision backbone that can be plugged to other models for downstream tasks. Some potential uses are:
CLS tokenFine-tuning RAD-DINO is typically not necessary to obtain good performance in downstream tasks.
RAD-DINO was trained with data from three countries, therefore it might be biased towards population in the training data. Underlying biases of the training datasets may not be well characterized.
pip install rad-dino
>>> from rad_dino import RadDino
>>> from rad_dino.utils import download_sample_image
>>> encoder = RadDino()
>>> image = download_sample_image()
>>> image
>>> cls_embeddings, patch_embeddings = encoder.extract_features(image)
>>> cls_embeddings.shape, patch_embeddings.shape
(torch.Size([1, 768]), torch.Size([1, 768, 37, 37]))
We have released a checkpoint compatible with the original DINOv2 code to help researchers fine-tune our model.
We can use the hub model and load the RAD-DINO weights. Let's clone the DINOv2 repository so we can import the code for the head.
git clone https://github.com/facebookresearch/dinov2.git
>>> import torch
>>> from rad_dino.utils import safetensors_to_state_dict
>>> rad_dino_gh = torch.hub.load("./dinov2", "dinov2_vitb14")
>>> backbone_state_dict = safetensors_to_state_dict("backbone_compatible.safetensors")
>>> rad_dino_gh.load_state_dict(backbone_state_dict, strict=True)
The weights of the head are also released:
>>> from dinov2.layers import DINOHead
>>> rad_dino_head_gh = DINOHead(
... in_dim=768,
... out_dim=65536,
... hidden_dim=2048,
... bottleneck_dim=256,
... nlayers=3,
... )
>>> head_state_dict = safetensors_to_state_dict("dino_head.safetensors")
>>> rad_dino_head_gh.load_state_dict(head_state_dict, strict=True)
The configuration files ssl_default_config.yaml and vitb14_cxr.yaml, and the augmentations module are also available in the repository to help researchers reproduce the training procedure with our hyperparameters.
We used images from five public, deidentified chest X-ray datasets to train this checkpoint of RAD-DINO.
| Dataset | Num. images |
|---|---|
| MIMIC-CXR | 368 960 |
| CheXpert | 223 648 |
| NIH-CXR | 112 120 |
| PadChest | 136 787 |
| BRAX | 41 260 |
| TOTAL | 882 775 |
Images in the validation and test sets used to train MAIRA were excluded from the training set of RAD-DINO.
The list of image files used for training is available at ./training_images.csv.
Note this checkpoint is different from the one in the paper, where some private data was used (and fewer GPUs). The checkpoint shared here is trained for 35 000 iterations (the total number of iterations in the run was 100 000, but we selected this checkpoint using linear probing on the validation sets of the evaluation datasets described in the paper). We used 16 nodes with 4 A100 GPUs each, and a batch size of 40 images per GPU.
We refer to the manuscript for a detailed description of the training procedure.
All DICOM files were resized using B-spline interpolation so that their shorter size was 518, min-max scaled to [0, 255], and stored as PNG files.
Our evaluation is best described in the manuscript.
RAD-DINO was trained on Azure Machine Learning.
We used 16 Standard_NC96ads_A100_v4 nodes with four NVIDIA A100 (80 GB) GPUs each.
We leveraged the code in DINOv2 for training. We used SimpleITK and Pydicom for processing of DICOM files.
BibTeX:
@article{perez-garcia_exploriQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.