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