| # 🌈 Mô hình phân loại hình ảnh | |
| ## 📝 Mô tả | |
| Mô hình này là phiên bản fine-tuned của google/vit-base-patch16-224-in21k trên bộ dữ liệu CIFAR-10 (60.000 ảnh màu 32×32, 10 lớp). | |
| Trên tập đánh giá, mô hình đạt: | |
| Loss: 0.2564 | |
| Accuracy: 97.88 | |
| ## 📌 Ứng dụng | |
| Phân loại ảnh CIFAR-10 (10 lớp như: airplane, automobile, bird, cat, …) | |
| Dùng để transfer learning cho các tập dữ liệu nhỏ hơn | |
| Làm nền tảng cho các thử nghiệm về fine-tuning ViT trên dữ liệu màu sắc nhỏ | |
| ## 📥 Chuẩn bị đầu vào | |
| Ảnh màu RGB | |
| Thư viện sẽ xử lý bằng ViTImageProcessor: | |
| Resize hình về 224×224 | |
| Chuẩn hóa theo mean/std của ImageNet | |
| ## 📤 Đầu ra | |
| Logits tensor kích thước [batch_size, 10] | |
| Dùng argmax(-1) để nhận nhãn dự đoán | |
| ## 🛠 Cài đặt | |
| ```bash | |
| pip install torch torchvision transformers | |
| ``` | |
| ## 🧪 Ví dụ sử dụng | |
| ```python | |
| import torch | |
| from transformers import ViTForImageClassification, ViTImageProcessor | |
| from PIL import Image | |
| model_name = "zhaospei/Model_16" | |
| processor = ViTImageProcessor.from_pretrained(model_name) | |
| model = ViTForImageClassification.from_pretrained(model_name) | |
| img = Image.open("path/to/cifar10_image.png").convert("RGB") | |
| inputs = processor(img, return_tensors="pt") | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| pred = logits.argmax(-1).item() | |
| label = model.config.id2label[pred] | |
| print(f"Predicted label: {label} (Index: {pred})") | |
| ``` | |
| ## ⚙️ Thông số huấn luyện | |
| Thiết lập Giá trị | |
| Learning rate 5e-5 | |
| Batch size (train/eval) 32 / 32 | |
| Gradient accumulation 4 | |
| Total batch size 128 | |
| Optimizer Adam (β=(0.9,0.999), ε=1e-8) | |
| Scheduler Learning rate linearly giảm (warmup 0.1) | |
| Epochs 1 | |
| Seed 42 | |
| Framework Transformers 4.17.0, PyTorch 1.10.0+cu111 | |
| ## 📊 Hiệu quả | |
| Báo cáo accuracy đạt 97.88 % trên tập đánh giá CIFAR-10 | |
| Thích hợp để đánh giá khả năng áp dụng ViT ở dữ liệu nhỏ và cải tiến nhanh timemodels | |
| ## ✅ Lưu ý & Mở rộng | |
| Đây là mô hình để demo hoặc baseline, không phù hợp cho trường hợp cần độ chính xác cao hơn (có thể fine-tune thêm) | |
| Dễ dàng kết hợp với các kỹ thuật augment, thêm epochs, hoặc sử dụng data robustness khi cần | |
| Có thể dùng làm backbone để ép nhỏ, kiểm thử OOD, adversarial training, v.v. |