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).