🖼️ Mô hình CLIP ViT‑Base/32
📝 Mô tả
Mô hình CLIP (Contrastive Language–Image Pre‑Training) kết hợp một Vision Transformer (ViT‑B/32) để mã hóa hình ảnh và một Transformer ngôn ngữ để mã hóa văn bản. Mô hình được huấn luyện bằng cách học tương quan giữa hàng trăm triệu cặp (hình ảnh, mô tả), cho phép phân loại hình ảnh mà không cần huấn luyện lại (zero-shot) như mô phỏng chuyển đổi ngôn ngữ sang hình ảnh.
📌 Các tính năng nổi bật
Zero-shot image classification: có thể so sánh hình ảnh với các mô tả bằng văn bản để xác định liên quan. Embedding đa phương thức: xuất vector embedding cho ảnh và văn bản trong cùng không gian chiều 512. Hỗ trợ nhiều ngôn ngữ (chủ yếu tiếng Anh) và nhiều nhiệm vụ vision-language.
📥 Đầu vào
Hình ảnh: formato RGB
Kích thước gốc: sẽ tự resize để ngắn nhất cạnh bằng 224 pixels, sau đó crop trung tâm vuông 224×224
Văn bản: dạng chuỗi tiếng Anh, chiều dài tối đa là 77 token, tương ứng định dạng <|startoftext|> ... <|endoftext|>, kèm padding.
📤 Đầu ra
logits_per_image ( hình ảnh → text ) và logits_per_text: ma trận tương đồng cosine đã scale giữa ảnh và từng chuỗi văn bản.
Dùng softmax để chuyển thành xác suất. Ví dụ:
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
🛠 Cài đặt
pip install torch torchvision transformers pillow
🧪 Ví dụ sử dụng
🔤 Zero-shot Classification
from transformers import CLIPProcessor, CLIPModel
from PIL import Image
import torch
model = CLIPModel.from_pretrained("zhaospei/Model_10")
processor = CLIPProcessor.from_pretrained("zhaospei/Model_10")
image = Image.open("image.jpg")
texts = ["a photo of a cat", "a photo of a dog"]
inputs = processor(text=texts, images=image, return_tensors="pt", padding=True)
with torch.no_grad():
outputs = model(**inputs)
probs = outputs.logits_per_image.softmax(dim=1)
print({texts[i]: float(probs[0, i]) for i in range(len(texts))})
🎧 Lấy embedding song phương (image/text)
with torch.no_grad():
image_embeds = model.get_image_features(pixel_values=inputs.pixel_values)
text_embeds = model.get_text_features(input_ids=inputs.input_ids)
📊 Hiệu năng & Hạn chế
Được so sánh với ResNet‑50 về khả năng zero-shot, đạt hiệu năng tương đương trên ImageNet mà không dùng dữ liệu gắn nhãn. CLIP không chuyên sâu cho các tác vụ nhận diện nhỏ hoặc đếm đối tượng—khả năng nhận diện tốt ở mức trung bình.Model thể hiện khả năng phát hiện bias—ví dụ, khác biệt hiệu suất theo chủng tộc hoặc giới tính.
- Downloads last month
- 2