Hệ thống phân loại rác thông minh kết hợp nhận diện người dùng qua khuôn mặt, phục vụ giám sát môi trường, tích điểm , và quản lý dữ liệu qua API. Hệ thống sử dụng các mô hình AI (YOLO, InsightFace) triển khai trên Triton Inference Server, giao tiếp qua FastAPI, hỗ trợ Docker, dễ dàng mở rộng cho các ứng dụng thực tế tại trường học và cộng đồng.
- 🚮 Phân loại rác (nhựa, giấy, kim loại, ...), nhận diện qua ảnh/video/thực tế
- 🧑💼 Nhận diện khuôn mặt: xác định, đăng ký, quản lý người dùng
- 🆔 Tự động tạo user khi phát hiện khuôn mặt mới
- 🗂️ Lưu log: loại rác, thời gian, user, điểm tích lũy
- ⚡ API chuẩn REST với FastAPI
- 🖥️ Triển khai mô hình ONNX qua NVIDIA Triton Inference Server
- 🐳 Hỗ trợ Docker, cloud-native (có thể mở rộng Kubernetes, Helm)
- 🏆 Tích điểm, bảng xếp hạng cho người dùng
Garbage_system/
├── README.md
├── system/
│ ├── Face_id/ # Nhận diện khuôn mặt, quản lý user
│ ├── Garbage/ # Phân loại rác, mô hình, API
│ ├── information/ # Quản lý thông tin, cập nhật dữ liệu
│ ├── server/ # Script, cấu hình Triton, Docker
│ ├── requirements.txt # Thư viện Python cần thiết
│ └── ...
└── ...
- Python >= 3.8
- CUDA (nếu dùng GPU)
- Docker (nếu dùng Triton)
- Các thư viện: ultralytics, fastapi, uvicorn, tritonclient[all], opencv-python, torch, insightface, sqlalchemy, pymysql, pandas, ...
pip install -r system/requirements.txtdocker run --gpus=all --rm -p8000:8000 -p8001:8001 -p8002:8002 \
-v /path/to/model:/models nvcr.io/nvidia/tritonserver:23.10-py3 \
tritonserver --model-repository=/modelscd system/Face_id/app
python setup_db.py => mysql
docker run --rm -p8000:8000 -p8001:8001 -p8002:8002 `
-v D:/Sourcecode/private_project/Garbage_system/system/Face_id/model:/models `
nvcr.io/nvidia/tritonserver:23.10-py3 `
tritonserver --model-repository=/models
cd/app
uvicorn app:app --host 0.0.0.0 --port 8080 --reloadcd system/Garbage/app
uvicorn appapi:app --host 0.0.0.0 --port 8000 --reloadMở trình duyệt và truy cập Swagger UI
Nếu chạy trên máy của bạn, hãy mở trình duyệt và truy cập:
FaceID:
http://localhost:8080/docs
Garbage:
http://localhost:8000/docs
Swagger UI sẽ hiện ra, bạn có thể test trực tiếp các API (upload ảnh, gửi request, xem response, ...).
3. Ngoài ra, có thể truy cập Redoc UI (giao diện khác):
http://localhost:8080/redoc
http://localhost:8000/redoc
---
- 📷 Camera ghi nhận hành động bỏ rác
- 🚮 Nhận diện, phân loại rác
- 🧑 Nhận diện khuôn mặt → xác định user
- 🏅 Nếu user đã có: cập nhật log, cộng điểm
- 🆕 Nếu user mới: tạo user, lưu embedding
- 🗃️ Ghi nhận: loại rác, thời gian, user_id, điểm
POST /detect/: Nhận ảnh, trả về ảnh có bounding box, tên loại rác, độ tin cậyGET /status/: Kiểm tra trạng thái model
POST /user: Đăng ký user mới (gắn với face_id)POST /entry: Ghi nhận hành động bỏ rác, cộng điểmGET /leaderboard: Lấy top user tích điểmGET /users: Lấy danh sách userGET /user/{face_id}: Lấy thông tin user theo face_id
- Dashboard realtime (Streamlit/Grafana)
- Check-in QR code, mobile app
- Voice feedback, camera trigger
- Gamification, phần thưởng
- Hỗ trợ Kubernetes, Helm
Copyright (c) 2025 Nguyen Thanh Hoa
Bạn được phép sử dụng, sao chép, chỉnh sửa, chia sẻ, thương mại hóa dự án này với điều kiện:
- Ghi rõ nguồn tác giả: Nguyen Thanh Hoa
- Không được kiện cáo, phản bác hay gây ảnh hưởng tiêu cực đến tác giả
- Mọi thay đổi phải nêu rõ và giữ lại phần ghi công gốc
Dự án được cung cấp "nguyên trạng", không có bất kỳ bảo đảm nào. Tác giả không chịu trách nhiệm cho mọi rủi ro phát sinh từ việc sử dụng.