Đánh giá việc sử dụng Facemesh cho bài toán tìm kiếm khuôn mặt

Bài viết này nhằm đánh giá hiệu quả của việc áp dụng Face Mesh trong bài toán tìm kiếm khuôn mặt. Các phương pháp so sánh sẽ tập trung vào tính chính xác và tính đồng nhất trong các điều kiện khác nhau. Ngoài ra, chúng tôi cũng khảo sát các thách thức đặt ra khi sử dụng Face Mesh trong thực tế, như nhiễu khuôn mặt trong một cảnh hoặc sự che khuất khuôn mặt một phần.

Cơ sở lý thuyết

Giới thiệu về Face Mesh

Face Mesh là một trong những giải pháp hàng đầu được cung cấp bởi thư viện MediaPipe, do Google phát triển. Đây là một công cụ mạnh mẽ trong việc định vị và phân tích khuôn mặt, cung cấp tới 468 điểm mốc 3D chi tiết trên khuôn mặt người từ dữ liệu hình ảnh hoặc video.

So sánh hai Face Mesh

Khoảng cách Hausdorff là một thước đo phổ biến để đánh giá độ tương đồng giữa hai tập hợp điểm trong không gian. Đối với Face Mesh, nó được sử dụng để so sánh hai tập hợp các điểm mốc trên khuôn mặt. Khoảng cách Hausdorff xác định mức độ khớp giữa hai tập hợp bằng cách tìm điểm xa nhất trong mỗi tập hợp so với tập hợp còn lại.

Khoảng cách Hausdorff lớn biểu thị hai tập điểm có sự khác biệt đáng kể, trong khi khoảng cách nhỏ biểu thị sự tương đồng cao.

Ưu và nhược điểm của phương pháp

Ưu điểm:

  • Đánh giá chính xác mức độ khác biệt giữa hai Face Mesh.
  • Không yêu cầu các điểm trong hai tập hợp phải được ánh xạ một cách rõ ràng.

Nhược điểm:

  • Đòi hỏi phải chuẩn hóa các Face Mesh trước để đảm bảo sự đồng nhất về vị trí và tỷ lệ.

So sánh hai khuôn mặt là so sánh Face Mesh của hai khuôn mặt đó

Việc so sánh hai khuôn mặt thực chất là so sánh hai Face Mesh (tập hợp các điểm mốc đặc trưng trên khuôn mặt). Để làm điều này, các kỹ thuật xử lý thường sử dụng thông tin về hình học và các phép đo giữa các điểm mốc để đánh giá sự tương đồng hoặc khác biệt.

Các bước thực hiện:

  1. Trích xuất Face Mesh của khuôn mặt.
  2. Chuẩn hóa các Face Mesh.
  3. Tính khoảng cách giữa hai Face Mesh.

Mô phỏng tìm kiếm khuôn mặt dựa trên Face Mesh

Mục tiêu

Với một khuôn mặt cho trước, trích xuất Face Mesh của khuôn mặt, duyệt qua folder chứa ảnh, trả về những ảnh có chứa khuôn mặt đó.

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)
pip install mediapipe

Giới thiệu bộ dữ liệu

Dữ liệu đầu vào là một folder chứa các hình ảnh, bao gồm:

  • Hình ảnh có chứa khuôn mặt cần tìm: Các ảnh này có thể chứa khuôn mặt của người cần tìm trong các góc độ, biểu cảm khác nhau hoặc có sự che khuất một phần khuôn mặt.
  • Hình ảnh không chứa khuôn mặt cần tìm: Bao gồm các ảnh chứa khuôn mặt của những người khác hoặc không chứa khuôn mặt nào.

Chuẩn hóa dữ liệu

a. Hàm align_face_mesh

Mục tiêu: Căn chỉnh các điểm mốc 3D của khuôn mặt về một gốc tọa độ chuẩn.

Cách hoạt động: Chuyển tất cả các điểm mốc về gốc tọa độ bằng cách dịch chuyển trung tâm (landmark mũi)

b. Hàm rotate_face_mesh

Mục tiêu: Căn chỉnh 3D Face Mesh theo các trục không gian để loại bỏ mọi xoay nghiêng.

Cách hoạt động:

  • Căn chỉnh trục mũi (Landmark 1 đến 4): Xoay khuôn mặt sao cho trục mũi vuông góc với trục Y.
  • Căn chỉnh trục mắt (Landmark 33 đến 263): Xoay khuôn mặt để trục ngang mắt vuông góc với trục X.
  • Căn chỉnh mặt phẳng Z: Xoay để toàn bộ khuôn mặt không bị nghiêng dọc theo trục Z

Thực hiện tìm kiếm

Trích xuất và chuẩn hóa Face Mesh của từng ảnh trong folder chứa data.

Tính khoảng cách Hausdorff với Face Mesh của khuôn mặt cần tìm.
Sắp xếp và trả về danh sách các file tương đồng cao nhất.

Đánh giá

Độ hiệu quả:

  • Nhanh và chính xác khi xử lý các khuôn mặt chụp chính diện.
  • Khả năng chuẩn hóa và so sánh giúp đảm bảo kết quả tìm kiếm đáng tin cậy.

Hạn chế:

  • Hiệu quả giảm khi xử lý khuôn mặt chụp góc nghiêng hoặc không chính diện.
  • Khó khăn với khuôn mặt bị che khuất một phần.

Leave a Reply