Phát hiện hướng nhìn khuôn mặt bằng InsightFace

Giới thiệu InsightFace

InsightFace là một dự án mã nguồn mở mạnh mẽ dành cho các tác vụ liên quan đến nhận diện khuôn mặt (Face Recognition), phát hiện khuôn mặt (Face Detection) và căn chỉnh khuôn mặt (Face Alignment). Dự án này được phát triển dựa trên các mô hình học sâu tối ưu, đặc biệt là ArcFace – một trong những phương pháp tiên tiến nhất trong nhận diện khuôn mặt.

Lý do chọn InsightFace:

  • Được đánh giá cao bởi người dùng trên GitHub (hiện là 24k star)
  • Độ chính xác cao
  • Hỗ trợ phát hiện và căn chỉnh khuôn mặt mạnh mẽ
  • Khả năng mở rộng và dễ triển khai

Giới thiệu Pose trong InsightFace

Trong InsightFace, thuộc tính .pose được sử dụng để xác định góc xoay của đầu trong không gian 3D. Nó giúp chúng ta biết hướng đầu của một người theo ba trục Yaw, Pitch, Roll.

Sau khi nhận diện khuôn mặt bằng InsightFace, mỗi đối tượng face (đại diện cho một khuôn mặt được phát hiện) có thuộc tính .pose, chứa một danh sách gồm ba giá trị số thực:

  • Yaw: Xoay đầu trái/phải (quay ngang). Nếu giá trị dương thì đầu đang xoay sang phải, ngược lại thì xoay sang trái.
  • Pitch: Ngẩng đầu lên/xuống (quay dọc). Nếu giá trị dương thì đầu đang ngẩng lên, ngược lại thì cúi xuống.
  • Roll: Nghiêng đầu trái/phải (lật ngang). Nếu giá trị dương thì đầu đang nghiêng sang trái, ngược lại thì nghiêng sang phải.

Cách lấy pose trong InsightFace

Demo dùng webcam để phát hiện hướng nhìn

Mô tả thuật toán

  1. Nhận diện khuôn mặt: Dùng InsightFace để tìm khuôn mặt trong khung hình.
  2. Truy xuất dữ liệu hướng nhìn: Trích xuất giá trị yaw, pitch, roll.
  3. Phân loại hướng nhìn: So sánh các giá trị với ngưỡng tính trước.
  4. Hiển thị thông tin: Vẽ hộp khuôn mặt, hiển thị dữ liệu góc nghiêng và kết quả dự đoán.

Chuẩn bị

Sử dụng Python 3.6 trở lên trên Windows 10 hoặc Ubuntu 18.04 (OS khác chưa test).
Trước khi chạy demo, hãy đảm bảo đã cài đặt các thư viện cần thiết:

Code demo

Phân loại hướng nhìn dựa trên góc yaw, pitch, roll.

Dùng webcam để phát hiện khuôn mặt và xác định hướng nhìn

Ứng dụng

  • Giao tiếp giữa người và máy: Xác định người dùng đang nhìn vào đâu.
  • Máy chụp hình thông minh: Tự động chụp khi người nhìn thẳng vào camera.
  • Hệ thống an ninh: Giám sát hành vi của người trong khu vực quan trọng.

Leave a Reply