Panduan gaya wajah untuk Android

Tugas MediaPipe Face Stylizer memungkinkan Anda menerapkan gaya wajah ke wajah dalam gambar. Anda dapat menggunakan tugas ini untuk membuat avatar virtual dengan berbagai gaya.

Contoh kode yang dijelaskan dalam petunjuk ini tersedia di GitHub. Untuk mengetahui informasi selengkapnya tentang kemampuan, model, dan opsi konfigurasi tugas ini, lihat Ringkasan.

Contoh kode

Kode contoh MediaPipe Tasks adalah implementasi dasar aplikasi Face Stylizer untuk Android. Contoh ini menerapkan gaya wajah ke gambar yang diberikan ke aplikasi.

Anda dapat menggunakan aplikasi sebagai titik awal untuk aplikasi Android Anda sendiri, atau merujuk ke aplikasi tersebut saat memodifikasi aplikasi yang sudah ada. Kode contoh Face Stylizer dihosting di GitHub.

Mendownload kode

Petunjuk berikut menunjukkan cara membuat salinan lokal dari kode contoh menggunakan alat command line git.

Untuk mendownload kode contoh:

  1. Clone repositori git menggunakan perintah berikut:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Secara opsional, konfigurasikan instance git untuk menggunakan checkout sparse, sehingga Anda hanya memiliki file untuk aplikasi contoh Stylizer Wajah:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Setelah membuat versi lokal dari kode contoh, Anda dapat mengimpor project ke Android Studio dan menjalankan aplikasi. Untuk mengetahui petunjuknya, lihat Panduan Penyiapan untuk Android.

Komponen utama

File berikut berisi kode penting untuk aplikasi contoh gaya wajah ini:

Penyiapan

Bagian ini menjelaskan langkah-langkah utama untuk menyiapkan lingkungan pengembangan dan project kode khusus untuk menggunakan Stylizer Wajah. Untuk informasi umum tentang menyiapkan lingkungan pengembangan Anda untuk menggunakan tugas MediaPipe, termasuk persyaratan versi platform, lihat Panduan penyiapan untuk Android.

Dependensi

Tugas Face Stylizer menggunakan library com.google.mediapipe:tasks-vision. Tambahkan dependensi ini ke file build.gradle aplikasi Android Anda:

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

Model

Tugas MediaPipe Face Stylizer memerlukan paket model terlatih yang kompatibel dengan tugas ini. Untuk mengetahui informasi selengkapnya tentang model terlatih yang tersedia untuk Stylizer Wajah, lihat bagian Model ringkasan tugas.

Pilih dan download model, serta simpan dalam direktori project Anda:

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

Tentukan jalur model dalam parameter ModelAssetPath.

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

Membuat tugas

Tugas MediaPipe Face Stylizer menggunakan fungsi createFromOptions() untuk menyiapkan tugas. Fungsi createFromOptions() menerima nilai untuk opsi konfigurasi. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat Opsi konfigurasi.

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)

Opsi konfigurasi

Tugas ini memiliki opsi konfigurasi berikut untuk aplikasi Android:

Nama Opsi Deskripsi Rentang Nilai Nilai Default
errorListener Menetapkan pemroses error opsional. N/A Not set

Menyiapkan data

Stylizer Wajah berfungsi dengan gambar diam. Tugas ini menangani pra-pemrosesan input data, termasuk pengubahan ukuran, rotasi, dan normalisasi nilai. Kode berikut menunjukkan cara menyerahkan data untuk diproses.

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()

Menjalankan tugas

Gunakan metode FaceStylizer.stylize() pada gambar input untuk menjalankan stylizer:

val result = FaceStylizer.stylize(mpImage)

Menangani dan menampilkan hasil

Stylizer Wajah menampilkan objek FaceStylizerResult yang berisi objek MPImage dengan gaya wajah yang paling terlihat dalam gambar input.

Berikut ini contoh data output dari tugas ini:

Output di atas dibuat dengan menerapkan model Sketsa warna ke gambar input berikut: