Get in touch
or send us a question?
CONTACT

Face Detection API với MLKit

Với API nhận diện khuôn mặt của ML Kit, bạn có thể phát hiện khuôn mặt trong hình ảnh, xác định các đặc điểm chính của khuôn mặt và lấy các đường nét của khuôn mặt được phát hiện. Lưu ý rằng API phát hiện khuôn mặt không bao gồm nhận dạng người với người.

Với API này bạn có thể lấy được các thông tin cần thiết để thực hiện các tác vụ như chỉnh sửa ảnh chân dung, tạo ảnh đại diện từ ảnh người dùng hay tạo các ứng dụng như chat video hay game phản hồi biểu cảm người dùng.

Các tính năng chính:

  • Nhận dạng và định vị các điểm trên khuôn mặt
  • Lấy các đường viền trên khuôn mặt
  • Nhận biết nét mặt: khuôn mặt đang cười hay đang nhắm mắt
  • Theo dõi khuôn mặt trên các video frames.
  • Xử lý khung hình video thời gian thực.

Chúng ta cùng đi tìm hiểu chi tiết API này và các khái niệm cơ bản trong việc nhận diện khuôn mặt.

Face Detection Concepts

Khi một khuôn mặt được phát hiện trong một khung hình, API này cũng sẽ cung cấp cho ta các thông tin liên quan như vị trí, kích thước, hướng khuôn mặt cũng như các thông tin về vị trí mắt, mũi, và các đường viền trên khuôn mặt.

Một số thuật ngữ và khái niệm được sử dụng liên quan đến tính năng nhận diện khuôn mặt của MLKit dưới đây sẽ giúp bạn sử dụng để giải quyết các vấn đề trong ứng dụng của mình.

Face orientation

Thuật ngữ mô tả góc hướng của khuôn mặt đối với máy ảnh.

MLKit sẽ trả về thông tin góc Euler X, Euler Y và Euler Z của khuôn mặt được phát hiện, từ đó ta có thể biết được hướng của khuôn mặt đối với máy ảnh:

  • Euler X: Khuôn mặt với góc Euler X dương là hướng lên trên.
  • Euler Y: Khuôn mặt với góc Euler Y dương là hướng sang phải camera, hoặc sang trái nếu Euler Y âm.
  • Euler Z: Khuôn mặt với góc Euler Z dương là quay theo chiều kim đồng hồ

Landmarks – Các điểm mốc

Một điểm mốc là một tâm điểm cần quan tâm trong khuôn mặt như: tâm mắt trái, tâm mũi, tâm mắt phải.

MlKit có thể phát hiện khuôn mặt mà không cần tìm các điểm mốc này vì vậy nếu cần các thông tin này chúng ta cần bật tính năng detect landmarks lên (bị tắt theo mặc định).

Bảng tóm tắt dưới đây mô tả các điểm mốc có thể phát hiện được theo góc Euler Y của khuôn mặt liên quan:

Euler Y angleDetectable landmarks
< -36 degreesleft eye, left mouth, left ear, nose base, left cheek
-36 degrees to -12 degreesleft mouth, nose base, bottom mouth, right eye, left eye, left cheek, left ear tip
-12 degrees to 12 degreesright eye, left eye, nose base, left cheek, right cheek, left mouth, right mouth, bottom mouth
12 degrees to 36 degreesright mouth, nose base, bottom mouth, left eye, right eye, right cheek, right ear tip
> 36 degreesright eye, right mouth, right ear, nose base, right cheek

Mỗi điểm mốc được cung cấp bao gồm vị trí liên quan của nó trong khung ảnh.

Contours – Viền

Contours là tập hợp các điểm trên khuôn mặt thể hiện hình dạng khuôn mặt hoặc các đặc điểm về mắt mũi miệng trên khuôn mặt. Hình ảnh dưới đây minh họa các điểm viền thể hiện trên khuôn mặt:

Khi bạn có được tất cả các điểm trên khuôn mặt cùng một lúc, bạn sẽ có được một mảng gồm 133 điểm, bản đồ này sẽ tạo ra các đường nét như được hiển thị bên dưới:

Classification

Xác định xem một đặc điểm khuôn mặt nào đó có hiện diện hay không. Ví dụ, một khuôn mặt có thể được phân loại bằng cách mắt của nó đang mở hay nhắm lại, hoặc khuôn mặt có đang cười hay không.

MLKit trả về một giá trị xác suất cho đặc điểm khuôn mặt hiện tại (smilingProbability; leftEyeOpenProbability; rightEyeOpenProbability): ví dụ smilingProbability 0,7 trở lên khẳng định khả năng một khuôn mặt đang mỉm cười.

Cả hai đặc điểm trên đều dựa trên landmark detection

Chú ý: phân loại “mắt mở” và “mỉm cười” chỉ hoạt động đối với khuôn mặt chính diện, tức là khuôn mặt có góc Euler Y nhỏ (từ -18 đến 18 độ).

Minimum Face Size

Kích thước khuôn mặt tối thiểu là kích thước khuôn mặt mong muốn, được biểu thị bằng tỷ lệ giữa chiều rộng của đầu với chiều rộng của hình ảnh. Ví dụ: giá trị 0,1 có nghĩa là khuôn mặt nhỏ nhất cần tìm kiếm bằng khoảng 10% chiều rộng của hình ảnh.

Kích thước khuôn mặt tối thiểu là sự cân bằng giữa hiệu suất so với độ chính xác: đặt kích thước tối thiểu nhỏ hơn cho phép máy dò tìm các khuôn mặt nhỏ hơn nhưng quá trình phát hiện sẽ lâu hơn; đặt nó lớn hơn có thể loại trừ các khuôn mặt nhỏ hơn nhưng sẽ chạy nhanh hơn.

Kích thước khuôn mặt tối thiểu không phải là giới hạn cứng; máy dò có thể tìm thấy các khuôn mặt nhỏ hơn một chút so với quy định.