--- pipeline_tag: zero-shot-image-classification license: apache-2.0 base_model: google/siglip-base-patch16-384 library_name: zeromodels tags: - keras - zeromodels - siglip - zero-shot-image-classification - vision - arxiv:2303.15343 - pytorch - jax - tf --- ## ***See [our collection](https://huggingface.co/collections/zeromodels/siglip-6a8eaf41ca17669e8cf9976b) for all versions of SigLIP.*** # Run SigLIP with Keras 3: JAX, PyTorch, or TensorFlow [![GitHub](https://img.shields.io/badge/GitHub-ZeroModels-black?logo=github)](https://github.com/IMvision12/ZeroModels) [![Docs](https://img.shields.io/badge/Docs-SigLIP-blue)](https://imvision12.github.io/ZeroModels/siglip/) [![Collection](https://img.shields.io/badge/HF-SigLIP%20collection-yellow)](https://huggingface.co/collections/zeromodels/siglip-6a8eaf41ca17669e8cf9976b) # zeromodels/siglip_base_p16_384 Paper: [Sigmoid Loss for Language Image Pre-Training (arXiv:2303.15343)](https://arxiv.org/abs/2303.15343) · [HF Papers](https://huggingface.co/papers/2303.15343) SigLIP is a vision + text dual encoder trained with a pairwise sigmoid loss instead of CLIP's softmax contrastive loss. Per-pair training scales to large batches and often improves zero-shot accuracy at the same model size. For more details on the model, please go to the upstream [model card](https://huggingface.co/google/siglip-base-patch16-384). Pure-**Keras 3** conversion of [`google/siglip-base-patch16-384`](https://huggingface.co/google/siglip-base-patch16-384) for [zeromodels](https://github.com/IMvision12/ZeroModels). One implementation runs unmodified on **TensorFlow / Torch / JAX**. This is a **zero-shot image-text** checkpoint (`SigLIPZeroShotClassify`): pass image(s) and text prompts at inference time. ## ✨ Quick start ```python import os os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow" from zeromodels.models.siglip import ( SigLIPProcessor, SigLIPZeroShotClassify, ) processor = SigLIPProcessor.from_weights("zeromodels/siglip_base_p16_384") model = SigLIPZeroShotClassify.from_weights("zeromodels/siglip_base_p16_384") 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 variant the same way with `from_weights("zeromodels/")`: | Variant | Hub | |---|---| | `siglip_base_p16_224` | [`zeromodels/siglip_base_p16_224`](https://huggingface.co/zeromodels/siglip_base_p16_224) | | `siglip_base_p16_256` | [`zeromodels/siglip_base_p16_256`](https://huggingface.co/zeromodels/siglip_base_p16_256) | | `siglip_base_p16_multilingual_256` | [`zeromodels/siglip_base_p16_multilingual_256`](https://huggingface.co/zeromodels/siglip_base_p16_multilingual_256) | | `siglip_base_p16_384` | [`zeromodels/siglip_base_p16_384`](https://huggingface.co/zeromodels/siglip_base_p16_384) | | `siglip_base_p16_512` | [`zeromodels/siglip_base_p16_512`](https://huggingface.co/zeromodels/siglip_base_p16_512) | | `siglip_large_p16_256` | [`zeromodels/siglip_large_p16_256`](https://huggingface.co/zeromodels/siglip_large_p16_256) | | `siglip_large_p16_384` | [`zeromodels/siglip_large_p16_384`](https://huggingface.co/zeromodels/siglip_large_p16_384) | | `siglip_so400m_p14_224` | [`zeromodels/siglip_so400m_p14_224`](https://huggingface.co/zeromodels/siglip_so400m_p14_224) | | `siglip_so400m_p14_384` | [`zeromodels/siglip_so400m_p14_384`](https://huggingface.co/zeromodels/siglip_so400m_p14_384) | ## Tips - Set `KERAS_BACKEND` **before** importing Keras / zeromodels. - 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. - See [SigLIP docs](https://imvision12.github.io/ZeroModels/siglip/) and [Loading Weights](https://imvision12.github.io/ZeroModels/loading_weights/). - Community / upstream safetensors still work via the `hf:` prefix, e.g. `SigLIPZeroShotClassify.from_weights("hf:google/siglip-base-patch16-384")`. ## Special Thanks A huge thank you to the Google SigLIP authors for creating and releasing these models. License: Apache 2.0.