Hệ thống nhận diện khuôn mặt thời gian thực sử dụng:
- YOLO (OpenVINO INT8) để phát hiện khuôn mặt nhanh và chính xác.
- Facenet (TFLite INT8) để trích xuất embedding (128D) và tìm kiếm trong FAISS.
Phù hợp demo, điểm danh, kiểm soát ra vào, có thể chạy trên máy cấu hình vừa phải.
- Nhận diện realtime từ webcam (Streamlit Web + streamlit-webrtc).
- Đăng ký gương mặt mới (chụp nhiều hướng, lưu embedding).
- Cập nhật (xoá embeddings cũ của ID và đăng ký lại).
- Xoá theo ID khỏi DB và thư mục ảnh.
- Khởi tạo/Thêm DB từ thư mục
images/{id}_{name}/....
- Python >= 3.10
pip install -r requirements.txtconda install -c conda-forge libstdcxx-ngCài lib cho openCV
sudo apt update && sudo apt install -y \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev libxvidcore-dev libx264-dev \
libgtk-3-dev libcanberra-gtk3-module \
libtbb2 libtbb-dev \
libdc1394-22-dev libopenexr-dev \
libatlas-base-dev gfortran \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
Lưu ý: Trên Windows, nếu gặp lỗi camera với trình duyệt, dùng Chrome mới nhất và cho phép quyền camera.
streamlit run app.py- Tab "Nhận diện": cấp quyền camera, đưa mặt vào khung để xem kết quả.
- Tab "Đăng ký": nhập Tên và ID, quá trình sẽ mở vòng lặp chụp như CLI (nhấn P để chụp theo hướng, Q để thoát). Ảnh và embeddings sẽ được lưu.
- Tab "Xoá": nhập ID để xoá.
- Tab "Cập nhật": nhập ID và Tên mới, hệ thống sẽ xoá embeddings cũ và đăng ký lại.
- Tab "Khởi tạo DB": chọn thư mục ảnh gốc (mặc định
./images), chọn "Khởi tạo lại" nếu muốn xoá DB cũ rồi xây lại.
- Nhận diện realtime (OpenCV):
python main.py- Đăng ký gương mặt:
python register_face.py --name "Alice" --id 11- Xoá theo ID:
python delete_face.py --id 11- Tạo/Thêm DB từ thư mục ảnh (
--reinit 1để xoá DB cũ và tạo mới;0để thêm):
python create_vt_db.py --reinit 1images/
11_Alice/
mid.jpg
left.jpg
right.jpg
up.jpg
down.jpg
up_left.jpg
up_right.jpg
down_left.jpg
down_right.jpg