המשימה 'פילוח תמונות אינטראקטיבי' של MediaPipe מקבלת מיקום בתמונה ומעריך את הגבולות של של אובייקט במיקום הזה, והחזרת הפילוח של האובייקט בתור תמונה . ההוראות האלה מראות איך להשתמש ב'פלח התמונות האינטראקטיבי' ב-Python בשפת היעד. מידע נוסף על היכולות, המודלים וההגדרות האישיות אפשרויות במשימה הזאת, ראו סקירה כללית.
קוד לדוגמה
הקוד לדוגמה של 'פלח תמונות אינטראקטיבי' מספק הטמעה מלאה של ב-Python, לעיונך. הקוד הזה עוזר לכם לבדוק את המשימה הזו ולקבל התחלתם ליצור אפליקציה אינטראקטיבית משלכם לפילוח תמונות. אפשר להציג, להפעיל ולערוך את פילוח התמונות האינטראקטיבי קוד לדוגמה באמצעות דפדפן האינטרנט בלבד.
הגדרה
בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטי קוד שמותאמים במיוחד לשימוש ב'פלח תמונות אינטראקטיבי'. למידע כללי על להגדיר את סביבת הפיתוח לשימוש במשימות של 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
אפשרויות תצורה
המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות Python:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
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 |
הכנת נתונים
מכינים את הקלט כקובץ תמונה או כמערך נומרי,
ואז ממירים אותו לאובייקט 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
ערך שמציין אם הפיקסל הוא חלק מהאובייקט שנמצא באזור
עניין. העיגול בשחור-לבן בתמונה השנייה מציין את הבחירה
תחום עניין (AOI).
פלט של התממה של התמונה והקטגוריה המקורית. תמונת המקור מ- פסקל VOC 2012 של הכיתובים.
מסכת ביטחון
הפלט של מסיכת סמך מכיל ערכים צפים בין [0, 1]
ל-
בכל ערוץ קלט של תמונה. ערכים גבוהים יותר מצביעים על ודאות גבוהה יותר
פיקסל התמונה הוא חלק מהאובייקט שנמצא באזור העניין.