--- license: apache-2.0 model-index: - name: SPEC-CLIP-ViT-B-32 results: - task: type: image-text-matching dataset: name: SPEC type: compositional-reasoning metrics: - name: Absolute Size I2T type: Image to Text Matching value: 68.9 - name: Absolute Size T2I type: Image to Text Matching value: 60.7 - name: Relative Size I2T type: Image to Text Matching value: 40.3 - name: Relative Size T2I type: Image to Text Matching value: 44.1 - name: Absolute Position I2T type: Image to Text Matching value: 30.6 - name: Absolute Position T2I type: Image to Text Matching value: 34.2 - name: Relative Position I2T type: Image to Text Matching value: 46.6 - name: Relative Position T2I type: Image to Text Matching value: 46.9 - name: Existence I2T type: Image to Text Matching value: 83.4 - name: Existence T2I type: Image to Text Matching value: 53.1 - name: Count I2T type: Image to Text Matching value: 55.6 - name: Count T2I type: Image to Text Matching value: 57.8 source: name: SPEC paper url: https://arxiv.org/pdf/2312.00081 --- # SPEC-CLIP-ViT-B-32 ### Model Sources [**Code**](https://github.com/wjpoom/SPEC) | [**Paper**](https://huggingface.co/papers/2312.00081) | [**arXiv**](https://arxiv.org/abs/2312.00081) ### Model Usage * download checkpoint ```shell huggingface-cli download wjpoom/SPEC-CLIP-ViT-B-32 --local-dir checkpoints/SPEC-CLIP-ViT-B-32 ``` * load model ```python # pip install open_clip_torch import torch from PIL import Image import open_clip model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='checkpoints/SPEC-CLIP-ViT-B-32', load_weights_only=False) model.eval() # model in train mode by default, impacts some models with BatchNorm or stochastic depth active tokenizer = open_clip.get_tokenizer('ViT-B-32') image = preprocess(Image.open("docs/CLIP.png")).unsqueeze(0) text = tokenizer(["a diagram", "a dog", "a cat"]) with torch.no_grad(), torch.autocast("cuda"): image_features = model.encode_image(image) text_features = model.encode_text(text) image_features /= image_features.norm(dim=-1, keepdim=True) text_features /= text_features.norm(dim=-1, keepdim=True) text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1) print("Label probs:", text_probs) # prints: [[1., 0., 0.]] ``` ## Contact Feel free to contact us if you have any questions or suggestions - Email (Wujian Peng): wjpeng24@m.fudan.edu.cn ## Citation ``` bibtex @inproceedings{peng2024synthesize, title={Synthesize diagnose and optimize: Towards fine-grained vision-language understanding}, author={Peng, Wujian and Xie, Sicheng and You, Zuyao and Lan, Shiyi and Wu, Zuxuan}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, pages={13279--13288}, year={2024} } ```