Image-text embeddings
SigLIP2 base/patch16-224
Google SigLIP2 with sigmoid scoring for independent yes-or-no prompts.
About this model
SigLIP2 is Google's image-text encoder. The base/patch16 model at 224 resolution returns 768-dim embeddings from a ViT-B/16 backbone. The SDK ships int8 vision and text encoders split from onnx-community.
Unlike CLIP, SigLIP scores each prompt independently with a sigmoid. A top-1 probability of 7% can still be a decisive match if the runner-up sits near zero. Multiple prompts can both match.
What you can build
- Score whether each of many tags applies to a photo, independently.
- Tag images that have multiple true labels at once, like dog plus ball.
- Build search where matches are scored as yes or no, not ranked.
- Replace a CLIP scorer when you want per-prompt thresholds.
Variants & downloads
Choose the build for your appModel files are being prepared.
Explore the model’s examples, source links, and integration notes while download variants are added.
Example inference
Performance
Results depend on the device, runtime, and test conditions. Each measurement keeps its own context.
M1 Max, macOS 15, ONNX Runtime 1.17 (image encoder)
See original catalog hardware notes · CPU
49.7 ms
Warm inference
Reference result from the existing catalog; conversion variant and measurement date were not recorded.
M1 Max, macOS 15, ONNX Runtime 1.17 (image encoder)
See original catalog hardware notes · CoreML
1.90 s
Warm inference
Reference result from the existing catalog; conversion variant and measurement date were not recorded.
RTX 2060, Ubuntu 24.04, ONNX Runtime 1.24.3 (vision int8)
See original catalog hardware notes · CUDA
82.1 ms
Warm inference
Reference result from the existing catalog; conversion variant and measurement date were not recorded.
Integration examples
Vision SDK integration
cpp
#include "imaged/sdk.hpp"
#include "imaged/families/siglip/siglip_family.hpp"
imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("siglip2_image_embedder.model", "weights/vision_model_int8.onnx");
config.set("siglip2_text_embedder.model", "weights/text_model_int8.onnx");
config.set("siglip2_text_embedder.tokenizer", "weights/tokenizer.model");
auto* siglip = ai.getFamily("siglip");
imaged::SDK::Image image;
image.load("photo.jpg");
auto imgEmb = std::get<imaged::SDK::EmbeddingResult>(
siglip->run(imaged::SDK::Input{&image})).features;
auto txtR = siglip->run(imaged::SDK::TextInput{"a photo of a cat"});
auto txtEmb = std::get<imaged::SDK::EmbeddingResult>(txtR).features;
std::vector<std::vector<float>> texts = { txtEmb };
auto probs = imaged::SDK::siglipZeroShotProbabilities(imgEmb, texts);