Android için yüz biçimlendirme rehberi

MediaPipe Face Stylizer görevi, bir resimdeki yüzlere yüz stilizasyonları uygulamanıza olanak tanır. Çeşitli stillerde sanal avatarlar oluşturmak için bu görevi kullanabilirsiniz.

Bu talimatlarda açıklanan kod örneğini GitHub'da bulabilirsiniz. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel bakış bölümüne bakın.

Kod örneği

MediaPipe Tasks örnek kodu, Android için bir Yüz Stilizörü uygulamasının temel bir uygulamasıdır. Örnekte, uygulamaya sağlanan resimlere yüz stilizasyonu uygulanmaktadır.

Uygulamayı kendi Android uygulamanız için başlangıç noktası olarak kullanabilir veya mevcut bir uygulamayı değiştirirken referans olarak kullanabilirsiniz. Yüz Stilizörü örnek kodu GitHub'da barındırılır.

Kodu indirme

Aşağıdaki talimatlarda, git komut satırı aracını kullanarak örnek kodun yerel bir kopyasının nasıl oluşturulacağı gösterilmektedir.

Örnek kodu indirmek için:

  1. Aşağıdaki komutu kullanarak git deposunu klonlayın:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. İsteğe bağlı olarak, git örneğinizi seyrek kontrol kullanacak şekilde yapılandırın. Böylece yalnızca Face Stylizer örnek uygulamasının dosyalarına sahip olursunuz:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Örnek kodun yerel bir sürümünü oluşturduktan sonra projeyi Android Studio'ya aktarabilir ve uygulamayı çalıştırabilirsiniz. Talimatlar için Android için Kurulum Kılavuzu'na bakın.

Temel bileşenler

Aşağıdaki dosyalar, bu yüz stilizasyonu örnek uygulamasının önemli kodunu içerir:

Kurulum

Bu bölümde, geliştirme ortamınızı ve kod projelerinizi özellikle Face Stylizer'ı kullanacak şekilde ayarlamayla ilgili temel adımlar açıklanmaktadır. Platform sürümü gereksinimleri dahil olmak üzere, geliştirme ortamınızı MediaPipe görevlerini kullanmak için ayarlama hakkında genel bilgi için Android için kurulum kılavuzuna bakın.

Bağımlılıklar

Yüz Stilize Etme görevi com.google.mediapipe:tasks-vision kitaplığını kullanır. Bu bağımlılık, Android uygulamanızın build.gradle dosyasına eklenmelidir:

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

Model

MediaPipe Face Stylizer görevi, bu görevle uyumlu bir eğitimli model paketi gerektirir. Yüz Stilisti için kullanılabilen eğitilmiş modeller hakkında daha fazla bilgi edinmek istiyorsanız göreve genel bakıştaki Modeller bölümüne bakın.

Modeli seçip indirin ve proje dizininizde saklayın:

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

ModelAssetPath parametresinde modelin yolunu belirtin.

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

Görevi oluşturun

MediaPipe Face Stylizer görevi, görevi ayarlamak için createFromOptions() işlevini kullanır. createFromOptions() işlevi, yapılandırma seçenekleri için değerleri kabul eder. Yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırma seçenekleri başlıklı makaleyi inceleyin.

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)

Yapılandırma seçenekleri

Bu görevde, Android uygulamaları için aşağıdaki yapılandırma seçenekleri bulunur:

Seçenek Adı Açıklama Değer Aralığı Varsayılan değer
errorListener İsteğe bağlı bir hata işleyici ayarlar. N/A Not set

Verileri hazırlama

Yüz stilleştirici, hareketsiz resimlerle çalışır. Görev, yeniden boyutlandırma, döndürme ve değer normalleştirme dahil olmak üzere veri girişi ön işleme işlemlerini yönetir. Aşağıdaki kodda, verilerin işleme için nasıl aktarılacağı gösterilmektedir.

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

Görevi çalıştırma

Stilizörü çalıştırmak için giriş resminde FaceStylizer.stylize() yöntemini kullanın:

val result = FaceStylizer.stylize(mpImage)

Sonuçları işleme ve görüntüleme

Yüz Stilize Etme işlevi, giriş resmindeki en belirgin yüzün stilize edilmiş halini içeren bir MPImage nesnesini içeren bir FaceStylizerResult nesnesi döndürür.

Aşağıda, bu görevin çıkış verilerine örnek verilmiştir:

Kalem ve işaretleyiciyle çizilmiş bir eskiz stilinde bir kadının oluşturulmuş yakın çekimi.

Yukarıdaki çıkış, Renk taslağı modeli aşağıdaki giriş resmine uygulanarak oluşturulmuştur:

Önceki çıkışı oluşturmak için resmi kullanılan kadının fotoğrafı