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

Nhiệm vụ MediaPipe Face Stylizer cho phép bạn áp dụng các kiểu cách điệu khuôn mặt cho các khuôn mặt trong 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 những hướng dẫn này hiện có trên GitHub. Để biết thêm thông tin về các tính năng, mô hình và lựa chọn cấu hình của nhiệm vụ này, hãy xem phần Tổng quan.

Ví dụ về mã

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

Bạn có thể dùng ứng dụng này làm điểm xuất phát cho ứng dụng Android của riêng mình hoặc tham chiếu đến ứng dụng này khi sửa đổi một ứng dụng hiện có. Mã ví dụ về Face Stylizer được lưu trữ trên GitHub.

Tải mã xuống

Hướng dẫn sau đây chỉ cho bạn cách tạo bản sao cục bộ của mã 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. (Không bắt buộc) Định cấu hình thực thể git để sử dụng quy trình thanh toán thưa thớt, nhờ đó bạn chỉ có các tệp cho ứng dụng mẫu về Kiểu mẫu khuôn mặt:
    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 và chạy ứng dụng. Để được hướng dẫn, hãy xem Hướng dẫn thiết lập dành cho Android.

Thành phần chính

Các tệp sau đây chứa mã quan trọng cho ứng dụng mẫu cách điệu khuôn mặt này:

  • FaceStylizationHelper.kt: Khởi động trình cách điệu khuôn mặt, xử lý việc lựa chọn mô hình và 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à các dự án mã dành riêng cho việc sử dụng Trình cách điệu khuôn mặt. Để biết thông tin chung về cách thiết lập môi trường phát triển nhằm sử dụng các tác vụ MediaPipe, bao gồm cả yêu cầu về phiên bản nền tảng, hãy xem Hướng dẫn thiết lập dành cho Android.

Phần phụ thuộc

Tác vụ của Trình 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

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

Chọn và tải mô hình xuống rồi lưu trữ trong thư mục dự án của bạ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ụ MediaPipe Face Stylizer sử dụng hàm createFromOptions() để thiết lập tác vụ đó. Hàm createFromOptions() chấp nhận các giá trị cho các tuỳ chọn cấu hình. Để biết thêm thông tin về các lựa chọn cấu hình, hãy xem phần Lựa chọ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

Tác 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 Nội dung mô tả Khoảng giá trị Giá trị mặc định
errorListener Thiết lập một trình nghe lỗi (không bắt buộc). N/A Not set

Chuẩn bị dữ liệu

Trình cách điệu khuôn mặt hoạt động với hình ảnh tĩnh. Tác vụ này xử lý tiền xử lý đầu vào dữ liệu, bao gồm đổi kích thước, xoay và chuẩn hoá giá trị. Đoạn mã sau đây minh hoạ cách chuyển giao dữ liệu cho việc 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 thị kết quả

Trình cách điệu khuôn mặt trả về đối tượng FaceStylizerResult, chứa đối tượng MPImage có cách điệu của khuôn mặt nổi bật nhất trong hình ảnh nhập.

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

Kết quả đầu ra ở trên được tạo bằng cách áp dụng mô hình Color sketch (Bản phác thảo màu) cho hình ảnh đầu vào sau: