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 các khung hình chữ nhật

Tác vụ MediaPipe Face Detector cho phép bạn phát hiện khuôn mặt trong hình ảnh hoặc video. Bạn có thể 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ột mô hình học máy (ML) hoạt động với hình ảnh đơn lẻ hoặc một luồng hình ảnh liên tục. Tác vụ này 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 đây: mắt trái, mắt phải, đầu mũi, miệng, hốc mắt trái và hốc 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 nhắm mục tiêu của bạn. Các hướng dẫn dành riêng cho từng nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản tác vụ này, bao gồm cả mô hình được đề xuất và ví dụ về mã với các lựa chọn cấu hình được đề xuất:

Chi tiết về việc cần làm

Phần này mô tả các chức năng, thông tin đầu vào, đầu ra và lựa 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, đổi kích thước, chuẩn hoá hình ảnh 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.
Giá trị đầu vào của việc cần làm Đầu ra của tác vụ
Trình nhận diệ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 nhận diện khuôn mặt đưa ra các kết quả sau:
  • Khung hình chữ nhật cho các khuôn mặt được phát hiện trong một khung hình ảnh.
  • Toạ độ cho 6 điểm đánh dấu trên khuôn mặt của mỗi khuôn mặt được phát hiện.

Các lựa chọn về cấu hình

Tác vụ này có các lựa 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ế độ dành 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ừ camera. Ở chế độ này, bạn phải gọi resultListener để thiết lập một trình nghe nhằm 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 để quá trình 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 ngưỡng triệt tiêu tối đa để coi là phát hiện khuôn mặt 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

Các 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 ở phạm vi ngắn và phạm vi dài. 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à yêu cầu về tài nguyên, đồng thời trong một số trường hợp, có thêm 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. 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 đơn giản tương tự như MobileNetV1/V2.

BlazeFace (tầm ngắn)

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

Tên mô hình Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace (tầm ngắn) 128 x 128 độ chính xác đơn 16 info Mới nhất

BlazeFace (toàn dải)

Một mô hình tương đối gọn nhẹ để phát hiện một hoặc nhiều khuôn mặt trong hình ảnh từ camera điện thoại thông minh hoặc webcam. 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 camera 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 tích chập CenterNet với một bộ mã hoá tuỳ chỉnh.

Tên mô hình Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace (đầy đủ) 128 x 128 độ chính xác đơn 16 info Mới nhất

BlazeFace Sparse (toàn dải)

Một phiên bản nhẹ hơn của mô hình BlazeFace thông thường có phạm vi đầy đủ, nhỏ hơn khoảng 60% về kích thước. Mô hình này được tối ưu hoá cho hình ảnh có dải màu đầy đủ, chẳng hạn như hình ảnh được chụp bằng camera 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 tích chập CenterNet với một bộ mã hoá tuỳ chỉnh.

Tên mô hình Hình dạng đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace Sparse (đầy đủ) 128 x 128 độ chính xác đơn 16 info Mới nhất

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

Sau đây là điểm chuẩn cho nhiệm vụ của toàn bộ pipeline 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ễ của GPU
BlazeFace (tầm ngắn) 2,94 mili giây 7,41 mili giây