Android के लिए चेहरे को बेहतर बनाने से जुड़ी गाइड

MediaPipe Face Stylizer टास्क की मदद से, किसी इमेज में मौजूद चेहरों को स्टाइल किया जा सकता है. इस टास्क का इस्तेमाल करके, अलग-अलग स्टाइल में वर्चुअल अवतार बनाए जा सकते हैं.

इन निर्देशों में बताया गया कोड सैंपल, GitHub पर उपलब्ध है. इस टास्क की सुविधाओं, मॉडल, और कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानने के लिए, खास जानकारी देखें.

कोड का उदाहरण

MediaPipe Tasks का उदाहरण कोड, Android के लिए Face Stylizer ऐप्लिकेशन को बुनियादी तौर पर लागू करने का तरीका है. इस उदाहरण में, ऐप्लिकेशन में दी गई इमेज पर चेहरे को स्टाइलिश बनाने की सुविधा लागू की गई है.

इस ऐप्लिकेशन का इस्तेमाल, अपने Android ऐप्लिकेशन के लिए शुरुआती बिंदु के तौर पर किया जा सकता है. इसके अलावा, किसी मौजूदा ऐप्लिकेशन में बदलाव करते समय, इसका इस्तेमाल किया जा सकता है. फ़ेस स्टाइलाइज़र के उदाहरण का कोड, GitHub पर होस्ट किया गया है.

कोड डाउनलोड करना

यहां दिए गए निर्देशों में, git कमांड-लाइन टूल का इस्तेमाल करके, उदाहरण के कोड की लोकल कॉपी बनाने का तरीका बताया गया है.

उदाहरण के तौर पर दिया गया कोड डाउनलोड करने के लिए:

  1. यहां दिए गए कमांड का इस्तेमाल करके, Git डेटा स्टोर करने की जगह को क्लोन करें:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. इसके अलावा, अपने git इंस्टेंस को स्पैर्स चेकआउट का इस्तेमाल करने के लिए कॉन्फ़िगर करें, ताकि आपके पास सिर्फ़ Face Stylizer के उदाहरण वाले ऐप्लिकेशन की फ़ाइलें हों:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

उदाहरण के कोड का लोकल वर्शन बनाने के बाद, प्रोजेक्ट को Android Studio में इंपोर्ट करके ऐप्लिकेशन चलाया जा सकता है. निर्देशों के लिए, Android के लिए सेटअप गाइड देखें.

मुख्य कॉम्पोनेंट

नीचे दी गई फ़ाइलों में, चेहरे को स्टाइल करने वाले इस ऐप्लिकेशन के उदाहरण के लिए ज़रूरी कोड मौजूद है:

  • FaceStylizationHelper.kt: यह फ़ेस स्टाइलाइज़र को शुरू करता है. साथ ही, मॉडल और प्रतिनिधि चुनने की प्रोसेस को मैनेज करता है.
  • MainActivity.kt: नतीजे और आउटपुट दिखाता है. साथ ही, किसी भी गड़बड़ी को मैनेज करता है.

सेटअप

इस सेक्शन में, डेवलपमेंट एनवायरमेंट और कोड प्रोजेक्ट सेट अप करने के मुख्य चरणों के बारे में बताया गया है. ऐसा खास तौर पर, फ़ेस स्टाइलाइज़र का इस्तेमाल करने के लिए किया जाता है. MediaPipe Tasks का इस्तेमाल करने के लिए, डेवलपमेंट एनवायरमेंट सेट अप करने के बारे में सामान्य जानकारी पाने के लिए, Android के लिए सेटअप गाइड देखें. इसमें प्लैटफ़ॉर्म के वर्शन से जुड़ी ज़रूरी शर्तें भी शामिल हैं.

डिपेंडेंसी

फ़ेस स्टाइलाइज़र टास्क, com.google.mediapipe:tasks-vision लाइब्रेरी का इस्तेमाल करता है. अपने Android ऐप्लिकेशन की build.gradle फ़ाइल में, यह डिपेंडेंसी जोड़ें:

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

मॉडल

MediaPipe के फ़ेस स्टाइलाइज़र टास्क के लिए, ट्रेन किए गए मॉडल का बंडल ज़रूरी है, जो इस टास्क के साथ काम करता हो. फ़ेस स्टाइलाइज़र के लिए उपलब्ध ट्रेन किए गए मॉडल के बारे में ज़्यादा जानने के लिए, टास्क की खास जानकारी वाला मॉडल सेक्शन देखें.

मॉडल चुनें और डाउनलोड करें. इसके बाद, उसे अपनी प्रोजेक्ट डायरेक्ट्री में सेव करें:

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

ModelAssetPath पैरामीटर में मॉडल का पाथ बताएं.

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

टास्क बनाना

MediaPipe Face Stylizer टास्क, टास्क सेट अप करने के लिए createFromOptions() फ़ंक्शन का इस्तेमाल करता है. createFromOptions() फ़ंक्शन, कॉन्फ़िगरेशन के विकल्पों के लिए वैल्यू स्वीकार करता है. कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन के विकल्प देखें.

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)

कॉन्फ़िगरेशन विकल्प

इस टास्क में, Android ऐप्लिकेशन के लिए कॉन्फ़िगरेशन के ये विकल्प हैं:

विकल्प का नाम ब्यौरा वैल्यू की रेंज डिफ़ॉल्ट मान
errorListener गड़बड़ी सुनने वाले को सेट करता है. हालांकि, ऐसा करना ज़रूरी नहीं है. N/A Not set

डेटा तैयार करना

फ़ेस स्टाइलाइज़र की सुविधा, स्टिल इमेज के साथ काम करती है. यह टास्क, डेटा इनपुट की प्रीप्रोसेसिंग को मैनेज करता है. इसमें, साइज़ बदलना, घुमाना, और वैल्यू को सामान्य करना शामिल है. यहां दिए गए कोड में, डेटा को प्रोसेस करने के लिए उसे हैंड ऑफ़ करने का तरीका बताया गया है.

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

टास्क चलाना

स्टाइलाइज़र को चलाने के लिए, इनपुट इमेज पर FaceStylizer.stylize() तरीके का इस्तेमाल करें:

val result = FaceStylizer.stylize(mpImage)

नतीजों को मैनेज और दिखाना

फ़ेस स्टाइलाइज़र, FaceStylizerResult ऑब्जेक्ट दिखाता है. इसमें MPImage ऑब्जेक्ट होता है, जिसमें इनपुट इमेज में सबसे प्रमुख चेहरे को स्टाइल किया गया होता है.

यहां इस टास्क के आउटपुट डेटा का उदाहरण दिया गया है:

पेंसिल और मार्कर से स्केच किए गए स्टाइल में, किसी महिला का जनरेट किया गया क्लोज़-अप.

ऊपर दिया गया आउटपुट, नीचे दी गई इनपुट इमेज पर कलर स्केच मॉडल लागू करके बनाया गया है:

उस महिला की फ़ोटो जिसकी इमेज का इस्तेमाल पिछले आउटपुट को जनरेट करने के लिए किया गया था