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.
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:
- Android – Ví dụ về mã – Hướng dẫn
- Python – Ví dụ về mã – Hướng dẫn
- Web – Ví dụ về mã – Hướng dẫn
- iOS – Ví dụ về mã – Hướng dẫn
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:
|
Trình phát hiện khuôn mặt cho ra các kết quả sau:
|
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 |