دليل تقسيم الصور التفاعلي في بايثون

تأخذ مهمة أداة تقسيم الصور التفاعلية MediaPipe موقعًا في صورة، وتقدر حدود كائن في هذا الموقع، ويؤدي إلى إرجاع تجزئة الكائن كصورة البيانات. توضح لك هذه التعليمات كيفية استخدام أداة تقسيم الصور التفاعلية مع لغة بايثون . لمزيد من المعلومات حول الإمكانات والنماذج والإعدادات الخيارات لهذه المهمة، راجع نظرة عامة.

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

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

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

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

الطرود

تتطلّب مهمة أداة تقسيم الصور التفاعلية MediaPipe حزمة mediapipe. يمكنك تثبيت التبعيات المطلوبة باستخدام الأمر التالي:

$ python -m pip install mediapipe

عمليات الاستيراد

قم باستيراد الفئات التالية للوصول إلى وظائف أداة تقسيم الصور التفاعلية:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

الطراز

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

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

model_path = '/absolute/path/to/model.tflite'

حدِّد مسار النموذج ضمن معلَمة model_asset_path، كما هو موضَّح. أدناه:

base_options = BaseOptions(model_asset_path=model_path)

إنشاء المهمة

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

BaseOptions = mp.tasks.BaseOptions
InteractiveSegmenter = mp.tasks.vision.InteractiveSegmenter
InteractiveSegmenterOptions = mp.tasks.vision.InteractiveSegmenterOptions
VisionRunningMode = mp.tasks.vision.RunningMode

# Create a image segmenter instance with the image mode:
options = InteractiveSegmenterOptions(
    base_options=BaseOptions(model_asset_path='/path/to/model.task'),
    running_mode=VisionRunningMode.IMAGE,
    output_type=InteractiveSegmenterOptions.OutputType.CATEGORY_MASK)
with InteractiveSegmenter.create_from_options(options) as segmenter:
# segmenter is initialized and ready to use

خيارات الإعداد

تشتمل هذه المهمة على خيارات الإعداد التالية لتطبيقات بايثون:

اسم الخيار الوصف نطاق القيمة القيمة الافتراضية
output_category_mask في حال ضبط القيمة على True، سيشمل الناتج قناع تصنيف إلى شرائح. كصورة uint8، حيث تشير كل قيمة بكسل إلى ما إذا كانت وحدة البكسل جزءًا من الكائن الموجود في المنطقة محل الاهتمام. {True, False} False
output_confidence_masks في حال ضبط القيمة على True، سيشمل الناتج قناع تصنيف إلى شرائح. كصورة قيمة عائمة، حيث تمثل كل قيمة عائمة الثقة أن البكسل هو جزء من الكائن الموجود في المنطقة محط الاهتمام. {True, False} True
display_names_locale لتعيين لغة التسميات لاستخدامها في الأسماء المعروضة المقدمة في بيانات التعريف لنموذج المهمة، إن وجد. القيمة التلقائية هي en لمدة الإنجليزية. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص. باستخدام TensorFlow Lite Metadata Writer API رمز اللغة en

تجهيز البيانات

قم بإعداد الإدخال كملف صورة أو صفيفة numpy، ثم تحويله إلى كائن mediapipe.Image.

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)
RegionOfInterest = vision.InteractiveSegmenterRegionOfInterest
# Perform image segmentation on the provided single image.
# The image segmenter must be created with the image mode.
roi = RegionOfInterest(format=RegionOfInterest.Format.KEYPOINT,
                          keypoint=NormalizedKeypoint(x, y))
segmented_masks = segmenter.segment(mp_image, roi)

للحصول على مثال أكثر اكتمالاً لتشغيل استنتاجات أداة تقسيم الصور التفاعلية، راجع مثال الرمز البرمجي.

التعامل مع العملاء وعرض النتائج

نتائج المخرجات لأداة تقسيم الصور التفاعلية هي قائمة تضم بيانات Image، وقد تضمين قناع الفئة أو أقنعة الثقة أو كليهما بناءً على ما تم ضبطه عند ضبط المهمة. في حال ضبط من output_category_mask إلى True، يكون الناتج قائمة تحتوي على قيمة واحدة قناع مقسَّم كصورة uint8. تشير قيمة البكسل إلى ما إذا كان جزءًا من الكائن في المنطقة محط الاهتمام. فهرس الفئة المحددة للصورة المدخلة. في حال حذف عندما ضبطت output_confidence_masks على True، ستحصل على قائمة بالقنوات تحتوي على قيم بكسل ضمن النطاق [0,1] الذي يمثل الثقة درجة وحدة البكسل التي تنتمي إلى العنصر في المنطقة محط الاهتمام.

توضح الأقسام التالية بيانات الإخراج من هذه المهمة بشكل أكبر:

قناع الفئة

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

إخراج قناع الصورة الأصلي والفئة: صورة المصدر من Pascal VOC 2012 مجموعة البيانات

قناع الثقة

يحتوي ناتج قناع الثقة على قيم عائمة بين [0, 1] لـ كل قناة إدخال صورة. تشير القيم الأعلى إلى زيادة ثقة بكسل الصورة هو جزء من الكائن الموجود في المنطقة محل الاهتمام.