Hướng dẫn phát hiện khuôn mặt

Ba người có khuôn mặt được làm nổi bật bằng hộp giới hạn

Tác vụ Trình phát hiện khuôn mặt MediaPipe cho phép bạn phát hiện khuôn mặt trong hình ảnh hoặc video. Bạn có thể sử dụng tác vụ này để xác định vị trí khuôn mặt và các đặc điểm trên khuôn mặt trong một khung hình. Nhiệm vụ này sử dụng mô hình học máy (ML) hoạt động với hình ảnh đơn lẻ hoặc luồng hình ảnh liên tục. Tác vụ này sẽ xuất ra vị trí khuôn mặt, cùng với các điểm chính trên khuôn mặt sau: mắt trái, mắt phải, đầu mũi, miệng, điểm giữa mắt trái và điểm giữa mắt phải.

Hãy dùng thử!

Bắt đầu

Bắt đầu sử dụng tác vụ này bằng cách làm theo một trong các hướng dẫn triển khai sau đây cho nền tảng mục tiêu của bạn. Các hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản cho tác vụ này, bao gồm cả mô hình được đề xuất và ví dụ về mã với các tuỳ chọn cấu hình được đề xuất:

Thông tin chi tiết về việc cần làm

Phần này mô tả các tính năng, dữ liệu đầu vào, dữ liệu đầu ra và tuỳ chọn cấu hình của tác vụ này.

Tính năng

  • Xử lý hình ảnh đầu vào – Quá trình xử lý bao gồm xoay hình ảnh, đổi kích thước, chuẩn hoá và chuyển đổi không gian màu.
  • Ngưỡng điểm – Lọc kết quả dựa trên điểm dự đoán.
Dữ liệu đầu vào của việc cần làm Kết quả của tác vụ
Trình phát hiện khuôn mặt chấp nhận dữ liệu đầu vào thuộc một trong các loại dữ liệu sau:
  • Hình ảnh tĩnh
  • Khung hình video đã giải mã
  • Nguồn cấp dữ liệu video trực tiếp
Trình phát hiện khuôn mặt sẽ trả về các kết quả sau:
  • Hộp giới hạn cho các khuôn mặt được phát hiện trong khung hình ảnh.
  • Toạ độ của 6 điểm đặc trưng trên khuôn mặt cho mỗi khuôn mặt được phát hiện.

Tuỳ chọn cấu hình

Tác vụ này có các tuỳ chọn cấu hình sau:

Tên tuỳ chọn Mô tả Phạm vi giá trị Giá trị mặc định
running_mode Đặt chế độ chạy cho tác vụ. Có 3 chế độ:

HÌNH ẢNH: Chế độ cho dữ liệu đầu vào là một hình ảnh.

VIDEO: Chế độ cho các khung hình đã giải mã của video.

LIVE_STREAM: Chế độ phát trực tiếp dữ liệu đầu vào, chẳng hạn như từ máy ảnh. Ở chế độ này, bạn phải gọi resultListener để thiết lập trình nghe nhận kết quả một cách không đồng bộ.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
min_detection_confidence Điểm tin cậy tối thiểu để tính năng phát hiện khuôn mặt được coi là thành công. Float [0,1] 0.5
min_suppression_threshold Ngưỡng tối thiểu không phải là ngưỡng loại bỏ tối đa để tính năng phát hiện khuôn mặt được coi là bị trùng lặp. Float [0,1] 0.3
result_callback Đặt trình nghe kết quả để nhận kết quả phát hiện không đồng bộ khi Trình phát hiện khuôn mặt ở chế độ phát trực tiếp. Chỉ có thể sử dụng khi chế độ chạy được đặt thành LIVE_STREAM. N/A Not set

Mô hình

Mô hình phát hiện khuôn mặt có thể khác nhau tuỳ thuộc vào trường hợp sử dụng dự kiến, chẳng hạn như phát hiện ở cự ly ngắn và cự ly xa. Các mô hình cũng thường đánh đổi giữa hiệu suất, độ chính xác, độ phân giải và các yêu cầu về tài nguyên, đồng thời trong một số trường hợp, còn có các tính năng bổ sung.

Các mô hình được liệt kê trong phần này là các biến thể của BlazeFace, một trình phát hiện khuôn mặt nhẹ và chính xác được tối ưu hoá cho suy luận GPU trên thiết bị di động. Các mô hình BlazeFace phù hợp với các ứng dụng như ước tính điểm chính trên khuôn mặt 3D, phân loại biểu cảm và phân đoạn vùng khuôn mặt. BlazeFace sử dụng một mạng trích xuất tính năng nhẹ tương tự như MobileNetV1/V2.

BlazeFace (phạm vi ngắn)

Mô hình gọn nhẹ để phát hiện một hoặc nhiều khuôn mặt trong hình ảnh tự chụp bằng máy ảnh hoặc webcam trên điện thoại thông minh. Mô hình này được tối ưu hoá cho hình ảnh chụp bằng camera trước của điện thoại ở cự ly ngắn. Cấu trúc mô hình sử dụng kỹ thuật mạng convolutive của Trình phát hiện một lần chụp (SSD) với bộ mã hoá tuỳ chỉnh. Để biết thêm thông tin, hãy xem bài báo nghiên cứu về Single Shot MultiBox Detector (Trình phát hiện nhiều hộp một lần chụp).

Tên mẫu thiết bị Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace (phạm vi ngắn) 128 x 128 float 16 info Mới nhất

BlazeFace (toàn dải)

Một mô hình tương đối nhẹ để phát hiện một hoặc nhiều khuôn mặt trong hình ảnh từ máy ảnh hoặc webcam của điện thoại thông minh. Mô hình này được tối ưu hoá cho hình ảnh toàn dải, chẳng hạn như hình ảnh được chụp bằng máy ảnh mặt sau của điện thoại. Cấu trúc mô hình sử dụng một kỹ thuật tương tự như mạng convolutive CenterNet với bộ mã hoá tuỳ chỉnh.

Tên mẫu thiết bị Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace (toàn dải) 128 x 128 float 16 info Sắp có

BlazeFace Sparse (toàn dải)

Phiên bản nhẹ hơn của mô hình BlazeFace đầy đủ thông thường, kích thước nhỏ hơn khoảng 60%. Mô hình này được tối ưu hoá cho hình ảnh toàn dải, chẳng hạn như hình ảnh được chụp bằng máy ảnh mặt sau của điện thoại. Cấu trúc mô hình sử dụng một kỹ thuật tương tự như mạng convolutive CenterNet với bộ mã hoá tuỳ chỉnh.

Tên mẫu thiết bị Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace Sparse (toàn dải) 128 x 128 float 16 info Sắp có

Điểm chuẩn tác vụ

Dưới đây là điểm chuẩn tác vụ cho toàn bộ quy trình dựa trên các mô hình được huấn luyện trước ở trên. Kết quả về độ trễ là độ trễ trung bình trên Pixel 6 khi sử dụng CPU / GPU.

Tên mô hình Độ trễ CPU Độ trễ GPU
BlazeFace (phạm vi ngắn) 2,94 mili giây 7,41 mili giây