מדריך הגדרה ל-Python

בדף הזה מוסבר איך להגדיר את סביבת הפיתוח כדי להשתמש ב-MediaPipe Tasks באפליקציות Python.

פלטפורמות וגרסאות נתמכות

כדי לפתח אפליקציות באמצעות MediaPipe Tasks, צריך את המשאבים הבאים בסביבת הפיתוח:

  • מערכת הפעלה:
    • מחשב: Windows, ‏ Mac, ‏ Linux
    • IoT: Raspberry OS 64-bit
  • ‫Python: גרסה 3.9 עד 3.12
  • PIP: גרסה 20.3 ואילך

הגדרת סביבת פיתוח

לפני שמריצים משימת MediaPipe באפליקציית Python, צריך להתקין את חבילת MediaPipe.

$ python -m pip install mediapipe

אחרי שמתקינים את החבילה, מייבאים אותה לפרויקט הפיתוח.

import mediapipe as mp

יחסי תלות של MediaPipe Tasks

‫MediaPipe Tasks מספק שלוש ספריות מוכנות מראש לראייה, לטקסט ולאודיו. בהתאם למשימת MediaPipe שבה נעשה שימוש באפליקציה, מייבאים את ספריית הראייה, הטקסט או האודיו לפרויקט הפיתוח.

משימות שקשורות לראייה

מודול הראייה של MediaPipe Tasks מכיל משימות שמטפלות בקלט של תמונות או סרטונים. כדי לייבא את ספריית הראייה של MediaPipe Tasks, מייבאים את התלות הבאה לפרויקט הפיתוח.

from mediapipe.tasks.python import vision

משימות בטקסט

מודול הטקסט של MediaPipe Tasks מכיל משימות שמטפלות בקלט של מחרוזות.כדי לייבא את ספריית הטקסט של MediaPipe Tasks, מייבאים את התלות הבאה לפרויקט הפיתוח.

from mediapipe.tasks.python import text

משימות שקשורות לאודיו

מודול האודיו של MediaPipe Tasks מכיל משימות שמטפלות בקלט של צלילים. כדי לייבא את ספריית האודיו של MediaPipe Tasks, מייבאים את התלות הבאה לפרויקט הפיתוח.

from mediapipe.tasks.python import audio

הגדרה של BaseOptions

האפשרויות הבסיסיות מאפשרות הגדרה כללית של ממשקי ה-API של MediaPipe Task.

שם האפשרות תיאור ערכים מותרים
model_asset_buffer התוכן של קובץ הנכס של המודל. הצגת תוכן המודל כמחרוזת בייטים
model_asset_path הנתיב של נכס המודל שייפתח ויועתק לזיכרון. נתיב הקובץ כמחרוזת

אריזת אפליקציות של Python Tasks באמצעות PyInstaller

כשיוצרים חבילה של אפליקציית Python Tasks באמצעות PyInstaller, קובצי מודלים כמו חבילות .task לא נכללים אוטומטית. אם האפליקציה שלכם משתמשת ב-BaseOptions(model_asset_path=...), צריך לכלול את קובץ המודל בחבילה של PyInstaller ולפתור את הנתיב שלו בזמן הריצה.

לדוגמה, אפשר להשתמש בפונקציית עזר שבודקת את ספריית sys._MEIPASS PyInstaller:

import os
import sys

def resource_path(relative_path: str) -> str:
    base_path = getattr(sys, "_MEIPASS", os.path.abspath("."))
    return os.path.join(base_path, relative_path)

לאחר מכן מעבירים את נתיב המודל שנפתר אל BaseOptions:

from mediapipe.tasks import python
from mediapipe.tasks.python import vision

model_path = resource_path("pose_landmarker.task")
base_options = python.BaseOptions(model_asset_path=model_path)
options = vision.PoseLandmarkerOptions(base_options=base_options)
pose_landmarker = vision.PoseLandmarker.create_from_options(options)

כשמבצעים build באמצעות PyInstaller, צריך לארוז את קובץ המודל ולאסוף קובצי חבילה של MediaPipe:

pyinstaller app.py \
  --add-data "pose_landmarker.task:." \
  --collect-all mediapipe \
  --hidden-import mediapipe.tasks.c

ב-macOS או ב-Linux, המפריד --add-data הוא :. ב-Windows, משתמשים ב-;. ובאפליקציות ל-macOS, מוסיפים --windowed כדי ליצור חבילת .app:

פתרון בעיות

כדי לקבל עזרה בשאלות טכניות שקשורות ל-MediaPipe, אפשר להיכנס לקבוצת הדיון או ל-Stack Overflow ולקבל תמיכה מהקהילה. כדי לדווח על באגים או לשלוח בקשות להוספת תכונות, אפשר לפתוח בקשה ב-GitHub.

לקבלת עזרה בהגדרת סביבת הפיתוח בשפת Python, אפשר לעיין במדריך למפתחים בשפת Python.