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

Tác vụ Trình 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 hình ảnh. Bạn có thể sử dụng nhiệm vụ này để tạo hình đại diện ảo theo nhiều kiểu.

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

Ví dụ về mã

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

Bạn có thể sử 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 khảo ứng dụng này khi sửa đổi một ứng dụng hiện có. Mã ví dụ về Trình tạo kiểu khuôn mặt được lưu trữ trên GitHub.

Tải mã xuống

Hướng dẫn sau đây cho bạn biết 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ã mẫu 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 tính năng kiểm tra thư mục thưa, nhờ đó bạn chỉ có 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 và chạy ứng dụng. Để biết hướng dẫn, hãy xem Hướng dẫn thiết lập cho Android.

Các thành phần chính

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

  • FaceStylizationHelper.kt: khởi chạy trình tạo kiểu khuôn mặt và xử lý mô hình cũng như lựa chọn uỷ quyền.
  • MainActivity.kt: Cung cấp kết quả và đầ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à dự án mã dành riêng cho việc sử dụng Trình tạo kiểu mặt. Để biết thông tin chung về cách thiết lập môi trường phát triển cho việc sử dụng các tác vụ MediaPipe, bao gồm cả cá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 cho Android.

Phần phụ thuộc

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

Chọn và tải mô hình xuống, đồng thời lưu 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ụ MediaPipe Face Stylizer (Trình tạo kiểu khuôn mặt MediaPipe) 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 tuỳ chọn cấu hình, hãy xem phần Tuỳ 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 tuỳ chọn cấu hình sau đây cho ứng dụng Android:

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

val result = FaceStylizer.stylize(mpImage)

Xử lý và hiển thị kết quả

Trình tạo kiểu khuôn mặt trả về một đối tượng FaceStylizerResult, trong đó chứa một đối tượng MPImage được tạo kiểu cho khuôn mặt nổi bật nhất trong hình ảnh đầu vào.

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

Ảnh cận cảnh được tạo của một người phụ nữ được vẽ bằng bút chì và bút dạ.

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

Ảnh chụp người phụ nữ có hình ảnh được dùng để tạo kết quả trước đó