File size: 3,347 Bytes
fb3cc07 | 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | ---
license: apache-2.0
library_name: onnx
base_model: google/siglip2-base-patch16-224
tags:
- clip
- siglip2
- semantic-search
- camstack
---
# SigLIP2 B/16-224: CamStack build
Google SigLIP2 base (patch 16, 224×224) image and text encoders, re-packaged for
the CamStack inference pool and embedding encoder. 768-dimensional embeddings.
Selectable on the `clip-embedding` step as `siglip2-b16-224` (image) with the
text encoder `siglip2-b16-224-text`.
| Tower | Format | File | Precision |
| --- | --- | --- | --- |
| vision | ONNX | `onnx/camstack-siglip2-b16-224-vision.onnx` | fp32 (reference; not in the catalog) |
| vision | OpenVINO IR | `openvino/camstack-siglip2-b16-224-vision.{xml,bin}` | fp16 |
| vision | CoreML | `coreml/camstack-siglip2-b16-224-vision.mlpackage` | fp16 |
| text | ONNX | `onnx/camstack-siglip2-b16-224-text.onnx` | fp16 weights, fp32 I/O |
| text | OpenVINO IR | `openvino/camstack-siglip2-b16-224-text.{xml,bin}` | fp16 |
| text | CoreML | `coreml/camstack-siglip2-b16-224-text.mlpackage` | fp16, `input_ids` int32 [1,64] |
| tokenizer | HF `tokenizers` | `onnx/camstack-siglip2-b16-224-tokenizer.json` | — |
## Source
- Model: `google/siglip2-base-patch16-224`,
<https://huggingface.co/google/siglip2-base-patch16-224>, revision
`75de2d55ec2d0b4efc50b3e9ad70dba96a7b2fa2`. Licence: Apache-2.0 (model card
`license: apache-2.0`).
- Code: <https://github.com/google-research/big_vision> (Apache-2.0).
- Paper: Tschannen et al., "SigLIP 2: Multilingual Vision-Language Encoders with
Improved Semantic Understanding, Localization, and Dense Features", 2025,
<https://arxiv.org/abs/2502.14786>.
- Training data: WebLI (Google internal, never released).
## Modifications
These files are a modified version of the upstream model (Apache-2.0 §4(b)):
1. **Vision input contract.** The vision graph takes RGB float in [0,1]
(NCHW, N×3×224×224) and applies SigLIP's `(x - 0.5) / 0.5` = `2x - 1`
inside the graph, ahead of the patch embedding. The output is the single
pooled `embedding` [N,768], not L2-normalised.
2. **Text slice.** The text graph takes `input_ids` int64 [1,L] and slices it to
the model's 64 positions (`input_ids[:, :64]`) before the embedding lookup, so
a caller that pads to CLIP's 77 tokens gets the same embedding for any query
under 64 tokens.
3. **Lower-casing tokenizer.** `camstack-siglip2-b16-224-tokenizer.json` is the upstream `tokenizer.json` with a
`Lowercase` normalizer prepended: the model was trained on lower-cased text
and the upstream processor does not lower-case.
4. **Format conversion and precision.** OpenVINO IR and CoreML at fp16; the text
ONNX weights converted to fp16 (inputs and outputs stay int64/fp32).
Built and verified by `scripts/build-siglip2-model.py` in the CamStack
repository (https://github.com/camstack/server): cross-format cosine against the
fp32 reference, tokenizer ids equal to the reference processor, and the
image-text embedding space checked on reference images.
## Licence
Apache License, Version 2.0 — <https://www.apache.org/licenses/LICENSE-2.0>;
full text in [`LICENSES/Apache-2.0.txt`](../../LICENSES/Apache-2.0.txt). The
upstream model is © Google LLC. CamStack's changes are listed above. Every
model's attribution is in [`THIRD_PARTY_MODELS.md`](../../THIRD_PARTY_MODELS.md).
|