| # 🖼️ Mô hình Phân loại Ảnh – ResNet‑18 (ImageNet-1K) | |
| ## 📝 Mô tả | |
| Mô hình ResNet‑18 là một kiến trúc CNN với 18 lớp, nổi bật với khả năng học sâu nhờ cơ chế residual connection. | |
| Đây là phiên bản được fine‑tuned trên bộ dữ liệu ImageNet-1K, từng giành chiến thắng cuộc thi ILSVRC và COCO 2015. | |
| ## 📌 Mục đích sử dụng | |
| Phân loại ảnh: dự đoán 1000 lớp ImageNet | |
| Transfer learning: làm backbone để fine-tune cho các bài toán cụ thể | |
| Nghiên cứu & sản phẩm: dễ triển khai với tài nguyên vừa phải (11.7 triệu tham số) | |
| ## 📥 Đầu vào | |
| Ảnh RGB. Được xử lý theo AutoImageProcessor: Resize và crop trung tâm về 224×224. | |
| Chuẩn hóa: sử dụng mean/std chuẩn ImageNet (trong feature_extractor) | |
| ## 📤 Đầu ra | |
| logits: Tensor có shape [batch_size, 1000] tương ứng xác suất phù hợp với 1000 lớp ImageNet | |
| Sử dụng .argmax(-1) để lấy nhãn duy nhất mỗi ảnh | |
| ## 🛠 Cài đặt | |
| ```bash | |
| pip install torch torchvision transformers | |
| ``` | |
| ## 🧪 Cách sử dụng | |
| Ví dụ phân loại ảnh đơn giản: | |
| ```python | |
| from transformers import AutoImageProcessor, AutoModelForImageClassification | |
| import torch | |
| from PIL import Image | |
| # 1. Tải processor và mô hình | |
| processor = AutoImageProcessor.from_pretrained("zhaospei/Model_12") | |
| model = AutoModelForImageClassification.from_pretrained("zhaospei/Model_12") | |
| # 2. Chuẩn bị ảnh | |
| img = Image.open("path/to/image.jpg").convert("RGB") | |
| # 3. Tiền xử lý | |
| inputs = processor(img, return_tensors="pt") | |
| # 4. Inference | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| logits = outputs.logits | |
| # 5. Kết quả | |
| idx = logits.argmax(-1).item() | |
| print("Predicted class:", model.config.id2label[idx]) | |
| ``` | |
| ## 📊 Thông số mô hình | |
| Params: ~11.7 triệu | |
| Kiến trúc: ResNet với 4 block residual | |
| Đầu vào default: [3, 224, 224] RGB | |
| Pretrained on: ImageNet‑1K |