quan030106/ZSC-w-SAM-ContrastiveLoss
0
AI Zero-Shot Object Counting (ZSC) with SAM & Contrastive Loss
Ứng dụng đếm số lượng vật thể bất kỳ bằng cách khoanh vùng các vật thể mẫu (1-3 exemplars). Hệ thống sử dụng Segment Anything Model (SAM) để tách nền tự động, trích xuất mẫu vật thể tinh khiết (Pure Exemplar), sau đó đưa qua mạng Masked Autoencoder (MAE) với cơ chế Cross-Attention để đếm và trực quan hóa bản đồ phân bố (density map).
🚀 Hướng dẫn chạy thử nghiệm tại Local:
- Đảm bảo bạn đã cài đặt đủ các thư viện trong
requirements.txt:
pip install -r requirements.txt- Chuẩn bị file trọng số mô hình:
- Trọng số mô hình SAM: Đặt file
sam_vit_b_01ec64.pthvào cùng thư mục. - Trọng số mô hình đếm: Đặt file
checkpoint__finetuning_minMAE.pthhoặcbest_model.pthvào cùng thư mục. - Chạy ứng dụng:
python app.py🌐 Hướng dẫn Deploy lên Hugging Face Space:
- Truy cập Hugging Face và tạo một Space mới.
- Chọn SDK là Gradio và cấu hình phần cứng phù hợp.
- Clone Space của bạn về máy, sao chép toàn bộ các file trong thư mục
Deploy ZSCnày vào Space repository của bạn. - Do file trọng số mô hình rất nặng (>100MB), hãy chắc chắn rằng bạn đã kích hoạt Git LFS trước khi push:
git lfs install
git lfs track "*.pth"
git add .gitattributes- Commit và Push toàn bộ code cùng các file trọng số
.pthlên Space. Hugging Face sẽ tự động build và chạy app của bạn!
⚡ Hướng dẫn Deploy lên Vercel:
Vercel là nền tảng chuyên biệt cho ứng dụng Frontend tĩnh (React, Next.js, HTML/JS) và Serverless Functions. Vì các mô hình PyTorch & SAM rất nặng (~1GB) và cần bộ nhớ RAM/GPU lớn để xử lý deep learning liên tục, việc chạy trực tiếp mô hình trên Serverless của Vercel không được khuyến khích (bị giới hạn 50MB code size và 10-50s timeout).
Giải pháp đề xuất khi muốn dùng Vercel:
- Backend: Đóng gói mã nguồn Python này thành một API sử dụng FastAPI/Flask và deploy lên Hugging Face Space (dưới dạng API) hoặc các nền tảng Container như Render/Railway/AWS.
- Frontend: Xây dựng giao diện web React/Next.js tuyệt đẹp trên Vercel và call API đến backend để xử lý kết quả đếm.
