| # 🖼️ Mô hình sinh mô tả cho hình ảnh | |
| ## 📝 Giới thiệu | |
| Mô hình BLIP (Bootstrapping Language–Image Pre‑training) sử dụng Vision Transformer (ViT) để tạo ra mô hình hiểu và mô tả hình ảnh một cách linh hoạt, bao gồm cả các tác vụ như image captioning, image–text retrieval và visual question answering. | |
| Phiên bản base được fine‑tune trên tập dữ liệu COCO cho nhiệm vụ generate caption, hỗ trợ cả hai chế độ: | |
| - Conditional: cung cấp prompt văn bản để điều hướng kết quả. | |
| - Unconditional: tự động mô tả theo ngữ cảnh hình ảnh. | |
| ## 📌 Tính năng | |
| Sinh caption chất lượng cao theo ngữ cảnh hoặc không cần prompt. | |
| Chỉ cần ViT + Q‑Former + Text decoder (BLIP 0. Similarly BLIP‑2 use LLM) — hiệu quả mà vẫn mạnh mẽ. | |
| Chạy trên CPU hoặc GPU, hỗ trợ chế độ half‑precision (FP16) để tối ưu tốc độ. | |
| ## 📥 Đầu vào | |
| Hình ảnh: RGB | |
| Kích thước đầu vào: bất kỳ, vì BlipProcessor sẽ tự resize và crop center về 224×224 | |
| Prompt (tuỳ chọn): ví dụ "a photo of" cho image-to-text có định hướng | |
| ## 📤 Đầu ra | |
| Caption ở dạng chuỗi văn bản (string), đã được decode qua tokenizer | |
| Có thể lấy logits của từng token nếu cần | |
| ## 🛠 Cài đặt | |
| ```bash | |
| pip install torch torchvision transformers pillow | |
| ``` | |
| ## 🧪 Ví dụ sử dụng | |
| ```python | |
| import requests | |
| from PIL import Image | |
| from transformers import BlipProcessor, BlipForConditionalGeneration | |
| processor = BlipProcessor.from_pretrained("zhaospei/Model_14") | |
| model = BlipForConditionalGeneration.from_pretrained("zhaospei/Model_14") | |
| url = "https://storage.googleapis.com/sfr-vision-language-research/BLIP/demo.jpg" | |
| raw_image = Image.open(requests.get(url, stream=True).raw).convert("RGB") | |
| # -- Conditional captioning -- | |
| inputs = processor(raw_image, "a photography of", return_tensors="pt") | |
| out = model.generate(**inputs) | |
| print(processor.decode(out[0], skip_special_tokens=True)) | |
| # → "a photography of a woman and her dog" | |
| # -- Unconditional captioning -- | |
| inputs = processor(raw_image, return_tensors="pt") | |
| out = model.generate(**inputs) | |
| print(processor.decode(out[0], skip_special_tokens=True)) | |
| # → "a woman sitting on the beach with her dog" | |
| ``` | |
| ## 📊 Hiệu năng & Ứng dụng | |
| Tăng ~2.8 điểm CIDEr cho task captioning so với các baseline trước đó. | |
| Mô hình cũng thể hiện khả năng zero-shot tốt trên video (inference có thể dùng chế độ freeze) . | |
| Ứng dụng thực tế gồm: trợ năng dành cho người khiếm thị, caption sản phẩm/E‑commerce, social media metadata, v.v. |