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

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ể dùng tác vụ này để xác định vị trí của 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 các hình ảnh đơn lẻ hoặc một luồng hình ảnh liên tục. Nhiệm vụ 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, tổn thương mắt trái và tổn thương mắt phải.

Hãy dùng thử!

Bắt đầu

Hãy bắt đầu sử dụng tác vụ này bằng cách làm theo một trong những hướng dẫn triển khai sau 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 của tác vụ này, bao gồm cả mô hình được đề xuất và mã ví dụ với các lựa 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, đầ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 – Xử lý bao gồm việc 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 số – 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ả đầu ra của nhiệm vụ
Trình phát hiện khuôn mặt chấp nhận dữ liệu đầu vào của một trong các loại dữ liệu sau:
  • Hình ảnh tĩnh
  • Khung video đã được giải mã
  • Trang video trực tiếp
Trình phát hiện khuôn mặt cho ra các kết quả sau:
  • Giới hạn hộp cho các khuôn mặt được phát hiện trong một khung ảnh.
  • Toạ độ của 6 điểm mốc khuôn mặt cho mỗi khuôn mặt được phát hiện.

Lựa chọn về cấu hình

Tác vụ này có các chế độ cấu hình sau:

Tên lựa chọn Nội dung mô tả Khoảng giá trị Giá trị mặc định
running_mode Đặt chế độ chạy cho tác vụ. Có 3 chế độ:

IMAGE: Chế độ nhập một hình ảnh.

VIDEO: Chế độ 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 quay. Ở chế độ này, bạn phải gọi resultsListener để thiết lập trình nghe nhằm nhận kết quả không đồng bộ.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
min_detection_confidence Điểm số tin cậy tối thiểu để phát hiện khuôn mặt được xem là thành công. Float [0,1] 0.5
min_suppression_threshold Ngưỡng tối thiểu không áp dụng biện pháp tối đa để phát hiện khuôn mặt được coi là trùng lặp. Float [0,1] 0.3
result_callback Thiết lập trình nghe kết quả để nhận kết quả phát hiện một cách không đồng bộ khi Trình phát hiện khuôn mặt đang ở 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ỳ theo 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à tầm xa. Các mô hình cũng thường phải đá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. Trong một số trường hợp, có cả các tính năng bổ sung.

Các mô hình được liệt kê trong phần này là 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á để dự đoá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 khoá khuôn mặt 3D, phân loại biểu thức và phân đoạn khu vực khuôn mặt. BlazeFace sử dụng một mạng trích xuất tính năng gọn nhẹ tương tự như MobileNetV1/V2.

BlazeFace (phạm vi ngắn)

Một mô hình gọn nhẹ giúp phát hiện một hoặc nhiều khuôn mặt trong hình ảnh tự chụp chân dung qua máy ảnh trên đ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ừ máy ảnh mặt trước của điện thoại ở phạm vi ngắn. Cấu trúc mô hình này sử dụng kỹ thuật mạng chập chập một phát (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ề Trình phát hiện đa hộp phát đơn.

Tên mẫu thiết bị Hình dạng dữ liệu đầ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 số thực 16 thông tin Mới nhất

BlazeFace (toàn màn hình)

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 trên đ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 phạm vi, chẳng hạn như những hình ảnh chụp bằng máy ảnh mặt sau trên đ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ẫu thiết bị Hình dạng dữ liệu đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
BlazeFace (toàn màn hình) 128 x 128 số thực 16 info Sắp có

BlazeFace Sparse (toàn dải)

Phiên bản nhẹ hơn của mô hình BlazeFace toàn dải thông thường, có 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ư ảnh chụp bằng máy ảnh mặt sau trên đ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ẫu thiết bị Hình dạng dữ liệu đầ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 số thực 16 info Sắp có

Điểm chuẩn nhiệm vụ

Dưới đây là các đ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ễ của CPU Độ trễ của GPU
BlazeFace (phạm vi ngắn) 2,94 mili giây 7,41 mili giây