Image-text embeddings
CLIP ViT-L/14 DataComp.XL
Zero-shot scoring between an image and a list of text prompts.
About this model
OpenCLIP ViT-L/14 trained on DataComp-1B (13B samples seen, 90k batch). The vision and text encoders both produce 768-dim embeddings. The SDK ships them as two int8 ONNX graphs split from the joint upstream export.
Use the family for zero-shot classification, image search, or text-to-image retrieval. The family includes a helper that turns cosines into calibrated probabilities with the learned temperature of 100.
What you can build
- Score a photo against your own list of text prompts for zero-shot tagging.
- Build a similarity search over a million-image library.
- Find images in a library that match a free-text query.
- Group user-uploaded photos into clusters without labeled data.
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
156.6 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
154.5 ms
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
288.8 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/clip/clip_family.hpp"
imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("clip.image.model", "weights/vision_int8.onnx");
config.set("clip.text.model", "weights/text_int8.onnx");
config.set("clip.vocab", "weights/vocab.json");
config.set("clip.merges", "weights/merges.txt");
auto* clip = ai.getFamily("clip");
imaged::SDK::Image image;
image.load("photo.jpg");
auto imgEmb = std::get<imaged::SDK::EmbeddingResult>(
clip->run(imaged::SDK::Input{&image})).features;
auto txtR = clip->run(imaged::SDK::TextInput{"a photo of a cat"});
auto txtEmb = std::get<imaged::SDK::EmbeddingResult>(txtR).features;
float similarity = imaged::SDK::clipCosineSimilarity(imgEmb, txtEmb);