import torch
import clip
from PIL import Image

# 选择设备
device = "cuda" if torch.cuda.is_available() else "cpu"

# 加载模型
model, preprocess = clip.load("ViT-B/32", device=device)

# 读取图片
image = preprocess(Image.open("test.png")).unsqueeze(0).to(device)

# 文本
text = clip.tokenize(["a dog", "a cat", "a car"]).to(device)

with torch.no_grad():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)

    logits_per_image, logits_per_text = model(image, text)
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()

print("识别概率:", probs)

with torch.no_grad():
    image_features = model.encode_image(image)

print(image_features.shape)