See our collection for all versions of SigLIP 2.

Run SigLIP 2 with Keras 3: JAX, PyTorch, or TensorFlow

GitHub Docs Collection

kerasformers/siglip2_base_p16_256

Paper: SigLIP 2: Multilingual Vision-Language Encoders with Improved Semantic Understanding, Localization, and Dense Features (arXiv:2502.14786) · HF Papers

SigLIP 2 keeps SigLIP's sigmoid loss and adds captioning-based pretraining, self-distillation, and masked prediction for stronger dense features. It uses a 256k multilingual Gemma vocabulary, so many languages work without a separate multilingual checkpoint.

For more details on the model, please go to the upstream model card.

Pure-Keras 3 conversion of google/siglip2-base-patch16-256 for kerasformers. One implementation runs unmodified on TensorFlow / Torch / JAX.

This is a zero-shot image-text checkpoint (SigLIP2ZeroShotClassify): pass image(s) and text prompts at inference time.

✨ Quick start

import os
os.environ["KERAS_BACKEND"] = "torch"  # or "jax" / "tensorflow"

from kerasformers.models.siglip2 import (
    SigLIP2Processor,
    SigLIP2ZeroShotClassify,
)

processor = SigLIP2Processor.from_weights("kerasformers/siglip2_base_p16_256")
model = SigLIP2ZeroShotClassify.from_weights("kerasformers/siglip2_base_p16_256")

labels = [
    "a photo of a cat",
    "a photo of a dog",
    "a photo of a car",
    "a photo of a living room",
]
inputs = processor(text=labels, image_paths="your_image.jpg")
output = model(
    {
        "images": inputs["images"],
        "token_ids": inputs["input_ids"],
    }
)
print(output["image_logits"].shape)

Load any SigLIP 2 variant the same way with from_weights("kerasformers/<variant>"):

Variant Hub
siglip2_base_p16_224 kerasformers/siglip2_base_p16_224
siglip2_base_p16_256 kerasformers/siglip2_base_p16_256
siglip2_base_p16_384 kerasformers/siglip2_base_p16_384
siglip2_base_p16_512 kerasformers/siglip2_base_p16_512
siglip2_base_p32_256 kerasformers/siglip2_base_p32_256
siglip2_large_p16_256 kerasformers/siglip2_large_p16_256
siglip2_large_p16_384 kerasformers/siglip2_large_p16_384
siglip2_large_p16_512 kerasformers/siglip2_large_p16_512
siglip2_so400m_p14_224 kerasformers/siglip2_so400m_p14_224
siglip2_so400m_p14_384 kerasformers/siglip2_so400m_p14_384
siglip2_so400m_p16_256 kerasformers/siglip2_so400m_p16_256
siglip2_so400m_p16_384 kerasformers/siglip2_so400m_p16_384
siglip2_so400m_p16_512 kerasformers/siglip2_so400m_p16_512

Tips

  • Set KERAS_BACKEND before importing Keras / kerasformers.
  • Prefer Processor.from_weights(...) so image size and tokenizer match the variant.
  • Map processor input_ids to model token_ids. No padding mask is required.
  • Tokenizer is Gemma-based (multilingual); prefer Processor.from_weights.
  • See SigLIP 2 docs and Loading Weights.
  • Community / upstream safetensors still work via the hf: prefix, e.g. SigLIP2ZeroShotClassify.from_weights("hf:google/siglip2-base-patch16-256").

Special Thanks

A huge thank you to the Google SigLIP 2 authors for creating and releasing these models.

License: Apache 2.0.

Downloads last month
27
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kerasformers/siglip2_base_p16_256

Finetuned
(11)
this model

Collection including kerasformers/siglip2_base_p16_256

Paper for kerasformers/siglip2_base_p16_256