تأخذ مهمة أداة تقسيم الصور التفاعلية MediaPipe موقعًا في صورة، وتقدر حدود كائنًا في هذا الموقع، وتُرجع تجزئة الكائن على أنه بيانات الصور. توضّح لك هذه التعليمات كيفية استخدام "أداة تقسيم الصور التفاعلية" مع تطبيقات Android يتوفر مثال الرمز الموضَّح في هذه التعليمات على GitHub. مزيد من المعلومات حول الإمكانات والنماذج وخيارات الضبط هذه المهمة، راجع نظرة عامة.
مثال على الرمز البرمجي
مثال رمز "مهام MediaPipe" هو تنفيذ بسيط لأداة تقسيم الصور التفاعلية تطبيق Android. يعمل هذا المثال مع الصور المحددة من معرض الجهاز.
يمكنك استخدام التطبيق كنقطة بداية لتطبيق Android الخاص بك، أو الرجوع إليه عند تعديل تطبيق حالي. تتم استضافة رمز نموذج أداة تقسيم الصور التفاعلية على GitHub.
تنزيل الرمز
توضّح لك التعليمات التالية كيفية إنشاء نسخة على الجهاز من هذا المثال. باستخدام أداة سطر الأوامر git.
لتنزيل نموذج الرمز:
- استنساخ مستودع git باستخدام الأمر التالي:
git clone https://github.com/google-ai-edge/mediapipe-samples
- يمكنك اختياريًا ضبط مثيل git لاستخدام عملية الدفع المتناثر
لذلك ليست لديك سوى ملفات تطبيق نموذج أداة تقسيم الصور التفاعلية:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/interactive_segmentation/android
بعد إنشاء نسخة محلية من نموذج الرمز، يمكنك استيراد المشروع. إلى استوديو Android وتشغيل التطبيق. للحصول على التعليمات، يُرجى الاطّلاع على دليل إعداد Android
المكوّنات الرئيسية
تحتوي الملفات التالية على الرمز المهم لهذه الصورة مثال على تطبيق التصنيف إلى قطاعات أو شرائح:
- InteractiveSegmentationHelper.kt - يقوم بتهيئة مهمة أداة تقسيم الصور التفاعلية ويتعامل مع النموذج والتفويض التحديد.
- OverlayView.kt - تتعامل مع نتائج التصنيف إلى قطاعات أو شرائح وتنسقها.
ضبط إعدادات الجهاز
يصف هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير في المشروعات البرمجية لاستخدام أداة تقسيم الصور التفاعلية. للحصول على معلومات عامة عن إعداد بيئة التطوير الخاصة بك لاستخدام مهام MediaPipe، بما في ذلك متطلبات إصدار نظام التشغيل، راجع دليل إعداد Android
التبعيات
تستخدم أداة تقسيم الصور التفاعلية مكتبة com.google.mediapipe:tasks-vision
. إضافة هذا
التبعية إلى ملف build.gradle
الخاص
مشروع تطوير تطبيق Android. قم باستيراد التبعيات المطلوبة باستخدام
التعليمة البرمجية التالية:
dependencies {
...
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
الطراز
تتطلب مهمة أداة تقسيم الصور التفاعلية MediaPipe نموذجًا مدرّبًا متوافقًا مع هذه المهمة. لمزيد من المعلومات عن النماذج المدرَّبة المتاحة في "أداة تقسيم الصور التفاعلية"، يُرجى الاطّلاع على نظرة عامة على المهمة قسم النماذج.
حدد النموذج ونزّله ثم خزّنه في دليل المشروع:
<dev-project-root>/src/main/assets
استخدام الطريقة BaseOptions.Builder.setModelAssetPath()
لتحديد المسار
الذي يستخدمه النموذج. يتم عرض هذه الطريقة في مثال الرمز في الخطوة التالية
.
في أداة تقسيم الصور التفاعلية
مثال الرمز،
يتم تحديد النموذج في InteractiveSegmenterHelper.kt
الفئة في الدالة setupInteractiveSegmenter()
.
إنشاء المهمة
يمكنك استخدام الدالة createFromOptions
لإنشاء المهمة. تشير رسالة الأشكال البيانية
تقبل الدالة createFromOptions
خيارات الإعداد بما في ذلك
وقناع أنواع الإخراج. لمزيد من المعلومات عن الإعدادات
اطلع على نظرة عامة على التهيئة.
InteractiveSegmenterOptions options = InteractiveSegmenterOptions.builder() .setBaseOptions( BaseOptions.builder().setModelAssetPath("model.tflite").build()) .setOutputCategoryMask(true) .setOutputConfidenceMasks(false) .setResultListener((result, inputImage) -> { // Process the segmentation result here. }) .setErrorListener(exception -> { // Process the segmentation errors here. }) .build(); interactivesegmenter = InteractiveSegmenter.createFromOptions(context, options);
للحصول على مثال أكثر تفصيلاً حول إعداد هذه المهمة، يمكنك الاطّلاع على
InteractiveSegmenterHelper
الفئة setupInteractiveSegmenter()
.
خيارات الإعداد
تتضمّن هذه المهمة خيارات الضبط التالية لتطبيقات Android:
اسم الخيار | الوصف | نطاق القيمة | القيمة الافتراضية |
---|---|---|---|
outputCategoryMask |
في حال ضبط القيمة على True ، سيشمل الناتج قناع تصنيف إلى شرائح.
كصورة uint8، حيث تشير كل قيمة بكسل إلى ما إذا كانت وحدة البكسل جزءًا من
الكائن الموجود في المنطقة محل الاهتمام. |
{True, False } |
False |
outputConfidenceMasks |
في حال ضبط القيمة على True ، سيشمل الناتج قناع تصنيف إلى شرائح.
كصورة قيمة عائمة، حيث تمثل كل قيمة عائمة الثقة
أن البكسل هو جزء من الكائن الموجود في المنطقة محط الاهتمام. |
{True, False } |
True |
displayNamesLocale |
لتعيين لغة التسميات لاستخدامها في الأسماء المعروضة المقدمة في
بيانات التعريف لنموذج المهمة، إن وجد. القيمة التلقائية هي en لمدة
الإنجليزية. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص.
باستخدام TensorFlow Lite Metadata Writer API
| رمز اللغة | en |
errorListener |
تضبط هذه السياسة أداة معالجة للأخطاء اختيارية. | لا ينطبق | لم يتم ضبط الوضع |
تجهيز البيانات
تعمل "أداة تقسيم الصور التفاعلية" مع الصور، وتعالج المهمة إدخال البيانات
المعالجة المسبقة، بما في ذلك تغيير الحجم والتدوير وتسوية القيم.
يجب تحويل صورة الإدخال إلى
com.google.mediapipe.framework.image.MPImage
قبل تمريره إلى
المهمة.
import com.google.mediapipe.framework.image.BitmapImageBuilder; import com.google.mediapipe.framework.image.MPImage; // Load an image on the user’s device as a Bitmap object using BitmapFactory. // Convert an Android’s Bitmap object to a MediaPipe’s Image object. MPImage mpImage = new BitmapImageBuilder(bitmap).build();
RegionOfInterest roi = RegionOfInterest.create( NormalizedKeypoint.create( normX * it.width, normY * it.height ) ); ImageSegmenterResult segmenterResult = interactivesegmenter.segment(image, roi);
في رمز نموذج أداة تقسيم الصور التفاعلية، يتم تحديد الدوال segment
في
InteractiveSegmenterHelper.kt
الملف.
التعامل مع العملاء وعرض النتائج
عند تشغيل الاستنتاج، تعرض مهمة أداة تقسيم الصور التفاعلية
الكائن ImageSegmenterResult
الذي يحتوي على نتائج
تصنيف المشروعات. قد يتضمن محتوى المخرج قناع فئة
أو قناع الثقة أو كليهما بناءً على ما قمت بتعيينه
ضبط المهمة.
توضح الأقسام التالية بيانات الإخراج من هذه المهمة بشكل أكبر:
قناع الفئة
تعرض الصور التالية تصورًا لمخرجات المهمة لفئة ما
قناع قيمة مع تحديد منطقة نقطة اهتمام. كل بكسل هو uint8
تشير إلى ما إذا كانت وحدة البكسل جزءًا من الكائن الموجود في منطقة
معين. تشير الدائرة البيضاء والأسود في الصورة الثانية إلى الصورة المحددة
محط الاهتمام.
إخراج قناع الصورة الأصلي والفئة: صورة المصدر من Pascal VOC 2012 مجموعة البيانات
قناع الثقة
يحتوي ناتج قناع الثقة على قيم عائمة بين [0, 1]
لـ
كل قناة إدخال صورة. تشير القيم الأعلى إلى زيادة ثقة
بكسل الصورة هو جزء من الكائن الموجود في المنطقة محل الاهتمام.