SPEC-CLIP-ViT-B-32 / README.md
wjpoom's picture
Update README.md
dcd8aff verified
---
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}
}
```