Hướng dẫn cách điệu khuôn mặt dành cho Android

Nhiệm vụ Tạo kiểu khuôn mặt MediaPipe cho phép bạn áp dụng kiểu khuôn mặt cho các khuôn mặt trong một hình ảnh. Bạn có thể dùng nhiệm vụ này để tạo hình đại diện ảo theo nhiều phong cách.

Mã mẫu được mô tả trong các hướng dẫn này có trên GitHub. Để biết thêm thông tin về tính năng, kiểu máy và các lựa chọn cấu hình của nhiệm vụ này, xem phần Tổng quan.

Ví dụ về mã

Mã ví dụ MediaPipe Tasks là cách triển khai cơ bản của Công cụ cách điệu khuôn mặt dành cho Android. Ví dụ này áp dụng cách điệu khuôn mặt cho hình ảnh được cung cấp cho .

Bạn có thể sử dụng ứng dụng này làm điểm khởi đầu cho ứng dụng Android của riêng mình hoặc tham chiếu đến ứng dụng đó khi sửa đổi ứng dụng hiện có. Mã ví dụ về Công cụ tạo kiểu khuôn mặt được lưu trữ trên GitHub.

Tải mã xuống

Các hướng dẫn sau đây chỉ cho bạn cách tạo bản sao trên máy của ví dụ bằng công cụ dòng lệnh git.

Cách tải mã ví dụ xuống:

  1. Sao chép kho lưu trữ git bằng lệnh sau:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Bạn có thể định cấu hình thực thể git để sử dụng quy trình thanh toán thưa thớt, vì vậy, bạn có chỉ các tệp cho ứng dụng mẫu Face Stylizer:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Sau khi tạo phiên bản cục bộ của mã ví dụ, bạn có thể nhập dự án vào Android Studio rồi chạy ứng dụng. Để biết hướng dẫn, hãy xem Hướng dẫn thiết lập cho Android.

Thành phần chính

Các tệp sau đây chứa mã quan trọng cho ví dụ về cách tạo kiểu khuôn mặt này ứng dụng:

  • FaceStylizationHelper.kt: Khởi chạy cách tạo kiểu khuôn mặt, đồng thời xử lý mô hình và lựa chọn uỷ quyền.
  • MainActivity.kt: Cung cấp kết quả và kết quả đầu ra, đồng thời xử lý mọi lỗi.

Thiết lập

Phần này mô tả các bước chính để thiết lập môi trường phát triển và lập trình các dự án cụ thể để sử dụng Công cụ tạo kiểu khuôn mặt. Để biết thông tin chung về thiết lập môi trường phát triển để sử dụng các tác vụ MediaPipe, bao gồm yêu cầu về phiên bản nền tảng, hãy xem Hướng dẫn thiết lập cho Android.

Phần phụ thuộc

Tác vụ Tạo kiểu khuôn mặt sử dụng thư viện com.google.mediapipe:tasks-vision. Thêm phần phụ thuộc này vào tệp build.gradle của ứng dụng Android:

dependencies {
    implementation 'com.google.mediapipe:tasks-vision:latest.release'
}

Mẫu

Nhiệm vụ Tạo kiểu khuôn mặt MediaPipe cần có một gói mô hình đã qua huấn luyện và tương thích với nhiệm vụ này. Để biết thêm thông tin về các mô hình đã qua đào tạo dành cho công cụ Tạo kiểu khuôn mặt, hãy xem phần Mô hình để xem tổng quan về nhiệm vụ.

Chọn và tải mô hình xuống rồi lưu trữ mô hình đó trong thư mục dự án:

<dev-project-root>/src/main/assets

Chỉ định đường dẫn của mô hình trong tham số ModelAssetPath.

val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)

Tạo việc cần làm

Tác vụ Tạo kiểu khuôn mặt MediaPipe sử dụng hàm createFromOptions() để thiết lập công việc. Hàm createFromOptions() chấp nhận các giá trị cho cấu hình . Để biết thêm thông tin về các chế độ cấu hình, hãy xem phần Cấu hình .

val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(modelName)
val baseOptions = baseOptionBuilder.build()

val optionsBuilder =
    FaceStylizer.FaceStylizerOptions.builder()
        .setBaseOptions(baseOptionsBuilder.build())

val options = optionsBuilder.build()

FaceStylizer =
    FaceStylizer.createFromOptions(context, options)

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

Nhiệm vụ này có các lựa chọn cấu hình sau đây cho ứng dụng Android:

Tên lựa chọn Mô tả Khoảng giá trị Giá trị mặc định
errorListener Đặt một trình nghe lỗi (không bắt buộc). N/A Not set

Chuẩn bị dữ liệu

Công cụ cách điệu khuôn mặt hoạt động với ảnh tĩnh. Tác vụ này sẽ xử lý việc nhập dữ liệu xử lý trước, bao gồm đổi kích thước, xoay và chuẩn hoá giá trị. Chiến lược phát hành đĩa đơn đoạn mã sau đây minh hoạ cách chuyển giao dữ liệu để xử lý.

import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.framework.image.MPImage

// Convert the input Bitmap object to an MPImage object to run inference
val mpImage = BitmapImageBuilder(image).build()

Chạy tác vụ

Sử dụng phương thức FaceStylizer.stylize() trên hình ảnh đầu vào để chạy trình cách điệu:

val result = FaceStylizer.stylize(mpImage)

Xử lý và hiện kết quả

Công cụ tạo kiểu khuôn mặt trả về một đối tượng FaceStylizerResult, trong đó có Đối tượng MPImage có kiểu khuôn mặt nổi bật nhất trong giá trị nhập hình ảnh.

Sau đây là ví dụ về dữ liệu đầu ra của tác vụ này:

Bạn có thể tạo kết quả ở trên bằng cách áp dụng Bảng màu vào hình ảnh đầu vào sau: