Skip to content
LiheYoungPublic

About

[ICLR 2026] SigLIP-HD by Fine-to-Coarse Supervision

Topics

Resources

Stars

19 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

SigLIP-HD

This codebase contains the official PyTorch implementation of SigLIP-HD:

SigLIP-HD by Fine-to-Coarse Supervision
Lihe Yang, Zhen Zhao, Hengshuang Zhao
International Conference on Learning Representations (ICLR), 2026

Note: This work was finished in mid-2025 and accepted by ICLR in early 2026. Sorry for the delay in open-sourcing.

Image

This is a simple distillation framework for better performance: a frozen teacher runs on multi-scale images to produce high-quality features, and a student is optimized to match those features at a medium-scale image.

SigLIP-HD exhibits better performance than SigLIP 2 in MLLMs, especially in OCR scenarios.

Results

Below is a brief comparison with the SigLIP 2-So400m/16-512px baseline. Refer to our paper for more details.

Encoder DocVQA ChartQA TextVQA InfoVQA TextCaps HRBench MMBench
SigLIP 2 56.0 61.6 65.8 23.2 67.5 43.5 68.4
SigLIP-HD 59.6 65.2 65.7 25.5 68.1 48.3 70.3

Pre-trained model

SigLIP-HD is fine-tuned from SigLIP 2-So400m/16-512px. It is a drop-in replacement: identical architecture and I/O to the original encoder. To use it in an MLLM, keep your existing SigLIP 2 pipeline and only change the vision-tower path to the SigLIP-HD checkpoint.

Model Resolution #Params Download
SigLIP-HD-So400m/16 512² 429M Hugging Face

The model can be used from transformers:

import torch
from PIL import Image
from transformers import SiglipVisionModel, AutoImageProcessor

model = SiglipVisionModel.from_pretrained("LiheYoung/SigLIP-HD").eval()
processor = AutoImageProcessor.from_pretrained("LiheYoung/SigLIP-HD")

image = Image.open("example.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")

with torch.no_grad():
    features = model(**inputs, output_hidden_states=True).hidden_states[-1]  # (1, 1024, 1152)

This is a vision encoder only (no text tower), intended for better visual representations in MLLMs.

Installation

pip install -r requirements.txt

Data preparation

We train on the 4.5M raw images from the Cambrian-1 collection. List all file paths in the file:

/path/to/cambrian/images/000001.jpg
/path/to/cambrian/images/000002.jpg
...

Training

Single node:

# We use global batch size 512. Please modify the config correspondingly.
torchrun --nproc_per_node=8 siglip_hd/train/train.py \
    --config-file siglip_hd/configs/train/siglip_hd_from_siglip2_so400m.yaml \
    --output-dir exp/siglip_hd_from_siglip2_so400m

Multi-node with Slurm: see this script.

Citation

If you find this work useful, please consider citing:

@inproceedings{sigliphd,
  title={SigLIP-HD by Fine-to-Coarse Supervision},
  author={Yang, Lihe and Zhao, Zhen and Zhao, Hengshuang},
  booktitle={ICLR},
  year={2026}
}

Acknowledgement

We sincerely thank SigLIP 2 authors for open-sourcing their capable vision encoder and thank DINOv2 authors for open-sourcing their clean training code.

License

This project is released under the MIT license.

About

[ICLR 2026] SigLIP-HD by Fine-to-Coarse Supervision

Topics

Resources

Stars

19 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages