دليل كيفية تنسيق الوجوه على أجهزة Android

تتيح لك مهمة MediaPipe Face Stylizer تطبيق أنماط الوجه على الوجوه في إحدى الصور. يمكنك استخدام هذه المهمة لإنشاء صور رمزية افتراضية بأنماط مختلفة.

يتوفّر نموذج الرمز البرمجي الموضّح في هذه التعليمات على GitHub. للحصول على مزيد من المعلومات حول الإمكانيات والنماذج وخيارات الإعداد لهذه المهمة، يُرجى الاطّلاع على نظرة عامة.

مثال الرمز البرمجي

يُعد الرمز البرمجي لمهام MediaPipe بمثابة تنفيذ أساسي لتطبيق Face Stylizer لنظام التشغيل Android. يطبق هذا المثال أسلوب الوجه على الصور المتوفرة في التطبيق.

يمكنك استخدام التطبيق كنقطة بداية لتطبيق Android الخاص بك، أو الرجوع إليه عند تعديل تطبيق حالي. تتم استضافة الرمز النموذجي لأداة "نمط الوجه" على GitHub.

تنزيل الرمز

توضّح لك التعليمات التالية كيفية إنشاء نسخة محلية من رمز المثال باستخدام أداة سطر الأوامر git.

لتنزيل نموذج الرمز:

  1. استنسِخ مستودع git باستخدام الأمر التالي:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. يمكنك اختياريًا ضبط مثيل git لاستخدام طريقة الدفع المتفرقة، بحيث لا يكون لديك سوى الملفات الخاصة بتطبيق نموذج الوجه:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

بعد إنشاء نسخة محلية من الرمز النموذجي، يمكنك استيراد المشروع إلى "استوديو Android" وتشغيل التطبيق. للحصول على التعليمات، يمكنك مراجعة دليل الإعداد لنظام التشغيل Android.

المكونات الرئيسية

تحتوي الملفات التالية على الرمز الأساسي لتطبيق مثال أسلوب الوجه هذا:

  • FaceStylizationHelper.kt: يضبط معدِّل الوجه والتعامل مع النموذج وتفويض عملية الاختيار.
  • MainActivity.kt: يقدّم النتائج والمخرجات، ويعالج أي أخطاء.

ضبط إعدادات الجهاز

يصف هذا القسم الخطوات الأساسية لإعداد بيئة التطوير ومشاريع الرموز البرمجية لاستخدام "أداة تخطيط الوجه" تحديدًا. للحصول على معلومات عامة حول إعداد بيئة التطوير لاستخدام مهام MediaPipe، بما في ذلك متطلبات إصدار النظام الأساسي، يُرجى الاطّلاع على دليل الإعداد لنظام التشغيل Android.

التبعيات

تستخدم مهمة "أداة تمييز الوجه" مكتبة "com.google.mediapipe:tasks-vision". أضف هذه التبعية إلى ملف build.gradle في تطبيق Android الخاص بك:

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

الطراز

تتطلب مهمة MediaPipe Face Stylizer حزمة نماذج مدرَّبة متوافقة مع هذه المهمّة. للحصول على مزيد من المعلومات حول النماذج المدرَّبة المتاحة لاستخدام أداة تجميل الوجه، راجِع قسم "الطُرز" الذي يقدّم نظرة عامة على المهام.

حدد النموذج ونزّله وخزّنه في دليل المشروع:

<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 مع نمط لأبرز وجه في الصورة المدخلة.

ويوضح ما يلي مثالاً على بيانات المخرجات من هذه المهمة:

تم إنشاء الناتج أعلاه من خلال تطبيق نموذج الرسم البياني بالألوان على صورة الإدخال التالية: