راهنمای تقسیم‌بندی تصویر تعاملی برای پایتون

وظیفه MediaPipe Interactive Image Segmenter مکانی را در یک تصویر می گیرد، مرزهای یک شی را در آن مکان تخمین می زند، و تقسیم بندی شی را به عنوان داده تصویر برمی گرداند. این دستورالعمل‌ها به شما نشان می‌دهند که چگونه از Segmenter تصویر تعاملی با زبان پایتون استفاده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

نمونه کد

کد مثال برای Segmenter تصویر تعاملی، اجرای کامل این کار را در پایتون برای مرجع شما فراهم می کند. این کد به شما کمک می کند تا این کار را آزمایش کنید و شروع به ساخت برنامه تقسیم بندی تصویر تعاملی خود کنید. می‌توانید کد نمونه Interactive Image Segmenter را فقط با استفاده از مرورگر وب خود مشاهده، اجرا و ویرایش کنید.

برپایی

این بخش مراحل کلیدی را برای راه‌اندازی محیط توسعه و پروژه‌های کد مخصوصاً برای استفاده از بخش‌بندی تصویر تعاملی توضیح می‌دهد. برای اطلاعات کلی در مورد تنظیم محیط توسعه خود برای استفاده از وظایف MediaPipe، از جمله الزامات نسخه پلت فرم، به راهنمای راه اندازی برای Python مراجعه کنید. می توانید کد منبع این مثال را در GitHub مرور کنید

بسته ها

وظیفه MediaPipe Interactive Image Segmenter به بسته mediapipe نیاز دارد. می توانید وابستگی های مورد نیاز را با دستور زیر نصب کنید:

$ python -m pip install mediapipe

واردات

برای دسترسی به توابع تکلیف Interactive Image Segmenter کلاس های زیر را وارد کنید:

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

مدل

وظیفه MediaPipe Interactive Image Segmenter به یک مدل آموزش دیده نیاز دارد که با این کار سازگار باشد. برای اطلاعات بیشتر در مورد مدل‌های آموزش‌دیده موجود برای بخش‌بندی تصویر تعاملی، بخش مدل‌های نمای کلی کار را ببینید.

مدل را انتخاب و دانلود کنید و سپس آن را در فهرست پروژه خود ذخیره کنید:

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

مسیر مدل را در پارامتر model_asset_path مانند شکل زیر مشخص کنید:

base_options = BaseOptions(model_asset_path=model_path)

کار را ایجاد کنید

وظیفه MediaPipe Interactive Image Segmenter از تابع 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)

برای مثال کدی که آماده‌سازی داده‌ها را برای بخش‌بندی تصویر تعاملی نشان می‌دهد، به مثال کد مراجعه کنید.

وظیفه را اجرا کنید

قطعه‌ساز تصویر تعاملی از segment برای استنتاج استفاده می‌کند. برای تقسیم بندی تصویر، این شامل پیش پردازش داده های ورودی، اجرای مدل تقسیم بندی و پس پردازش خروجی های مدل خام به ماسک های قطعه بندی شده است.

مثال کد زیر نحوه اجرای پردازش با مدل وظیفه را نشان می دهد.

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)

برای مثال کامل‌تر از اجرای استنتاج‌های Interactive Image Segmenter، به مثال کد مراجعه کنید.

کنترل و نمایش نتایج

نتایج خروجی برای تقسیم‌کننده تصویر تعاملی، فهرستی از داده‌های Image است و ممکن است شامل یک ماسک دسته‌بندی، ماسک‌های اطمینان یا هر دو باشد، بسته به آنچه که هنگام پیکربندی کار تنظیم می‌کنید. اگر output_category_mask را روی True تنظیم کنید، خروجی لیستی است که شامل یک ماسک تک بخش به عنوان یک تصویر uint8 است. مقدار پیکسل نشان می دهد که آیا بخشی از شی در ناحیه مورد نظر است یا خیر. شاخص طبقه بندی تشخیص داده شده تصویر ورودی اگر output_confidence_masks را روی True تنظیم کنید، خروجی فهرستی از کانال‌های حاوی مقادیر پیکسل در محدوده [0,1] است که نشان‌دهنده امتیاز اطمینان پیکسل متعلق به شی در ناحیه مورد نظر است.

بخش‌های زیر اطلاعات خروجی این کار را بیشتر توضیح می‌دهند:

ماسک دسته

تصاویر زیر تجسمی از خروجی کار را برای یک ماسک مقدار مقوله با ناحیه نقطه مورد علاقه نشان می دهد. هر پیکسل یک مقدار uint8 است که نشان می دهد آیا پیکسل بخشی از شی واقع در ناحیه مورد نظر است یا خیر. دایره سیاه و سفید روی تصویر دوم ناحیه مورد نظر انتخاب شده را نشان می دهد.

خروجی ماسک تصویر اصلی و دسته. تصویر منبع از مجموعه داده پاسکال VOC 2012 .

ماسک اعتماد به نفس

خروجی یک ماسک اطمینان حاوی مقادیر شناور بین [0, 1] برای هر کانال ورودی تصویر است. مقادیر بالاتر نشان دهنده اطمینان بیشتر است که پیکسل تصویر بخشی از شی واقع در ناحیه مورد نظر است.