מדריך לזיהוי פנים

שלושה אנשים שהפנים שלהם מודגשים באמצעות תיבות מסגרת

המשימה 'זיהוי פנים' של MediaPipe מאפשרת לזהות פנים בתמונה או בסרטון. אפשר להשתמש במשימה הזו כדי לאתר פנים ותווי פנים בפריים. במשימה הזו נעשה שימוש במודל של למידת מכונה (ML) שעובד עם תמונות בודדות או עם מקור תמונות רציף. הפלט של המשימה כולל את מיקומי הפנים, יחד עם נקודות המפתח הבאות בפנים: העין השמאלית, העין הימנית, קצה האף, הפה, טריגון העין השמאלית וטריגון העין הימנית.

רוצים לנסות?

תחילת העבודה

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

פרטי המשימה

בקטע הזה מוסבר על היכולות, הקלט, הפלט והאפשרויות להגדרה של המשימה הזו.

תכונות

  • עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נורמליזציה והמרה של מרחב צבעים.
  • סף ניקוד – סינון התוצאות על סמך ציונים של תחזיות.
קלט של משימות פלט של משימות
הכלי לזיהוי פנים מקבל קלט מאחד מסוגי הנתונים הבאים:
  • תמונות סטילס
  • פריימים של וידאו שעבר פענוח
  • פיד וידאו בשידור חי
אלה התוצאות שהכלי לזיהוי פנים מניב:
  • תיבות גבול לפנים שזוהו במסגרת של תמונה.
  • קואורדינטות של 6 נקודות ציון בפנים לכל פנים שזוהה.

אפשרויות הגדרה

למשימה הזו יש את אפשרויות ההגדרה הבאות:

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
running_mode הגדרת מצב ההפעלה של המשימה. יש שלושה מצבים:

IMAGE: המצב להזנת תמונה אחת.

VIDEO: המצב של פריימים מפוענחים של סרטון.

LIVE_STREAM: המצב של סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר מאזין שיקבל את התוצאות באופן אסינכרוני.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
min_detection_confidence דירוג האמון המינימלי שדרוש כדי שזיהוי הפנים ייחשב כהצלחה. Float [0,1] 0.5
min_suppression_threshold הסף המינימלי ללא דיכוי מקסימלי, שעבורו זיהוי הפנים נחשב כחופף. Float [0,1] 0.3
result_callback מגדיר את מאזין התוצאות כך שיקבל את תוצאות הזיהוי באופן אסינכרוני כשגלאי הפנים נמצא במצב של שידור חי. אפשר להשתמש בה רק כשמצב ההפעלה מוגדר כ-LIVE_STREAM. N/A Not set

דגמים

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

המודלים שמפורטים בקטע הזה הם וריאנטים של BlazeFace, גלאי פנים קל ומדויק שעבר אופטימיזציה להסקה מ-GPU בנייד. המודלים של BlazeFace מתאימים לאפליקציות כמו הערכה של נקודות ציון תלת-ממדיות בפנים, סיווג הבעות פנים ופילוח של אזורי פנים. ב-BlazeFace נעשה שימוש ברשת קלה לחילוץ מאפיינים, בדומה ל-MobileNetV1/V2.

BlazeFace (טווח קצר)

מודל קל לזיהוי פנים יחידים או מרובים בתמונות שדומות לתמונות סלפי ממצלמת הסמארטפון או ממצלמת האינטרנט. המודל עבר אופטימיזציה לתמונות ממצלמה קדמית בטלפון, מטווח קצר. בארכיטקטורת המודל נעשה שימוש בשיטה של רשת convolutional (רשת קוונטית) מסוג Single Shot Detector‏ (SSD) עם מקודד מותאם אישית. מידע נוסף זמין במאמר המחקר בנושא Single Shot MultiBox Detector.

שם דגם צורת הקלט סוג הקידוד כרטיס מודל גרסאות
BlazeFace (טווח קצר) ‎128 x 128 float 16 info חדש

BlazeFace (טווח מלא)

מודל קל יחסית לזיהוי פנים יחיד או כמה פנים בתמונות ממצלמת הסמארטפון או ממצלמת האינטרנט. המודל עבר אופטימיזציה לתמונות עם טווח מלא, כמו תמונות שצולמו במצלמה האחורית של הטלפון. בארכיטקטורה של המודל נעשה שימוש בשיטה שדומה לרשת עיבוד נתונים (CNN) של CenterNet עם מקודד מותאם אישית.

שם דגם צורת הקלט סוג הקידוד כרטיס מודל גרסאות
BlazeFace (טווח מלא) ‎128 x 128 float 16 מידע בקרוב

BlazeFace Sparse (טווח מלא)

גרסה קלה יותר של מודל BlazeFace הרגיל לכל הטווח, בגודל קטן ב-60% בערך. המודל עבר אופטימיזציה לתמונות עם טווח מלא, כמו תמונות שצולמו במצלמה האחורית של הטלפון. ארכיטקטורת המודל מבוססת על טכניקה שדומה לרשת convolutional של CenterNet עם מקודד מותאם אישית.

שם דגם צורת הקלט סוג הקידוד כרטיס מודל גרסאות
BlazeFace Sparse (טווח מלא) ‎128 x 128 float 16 מידע בקרוב

נקודות השוואה של משימות

בהמשך מפורטות נקודות השוואה של המשימות לצינור עיבוד הנתונים כולו, על סמך המודלים המאומןים מראש שצוינו למעלה. תוצאת זמן האחזור היא זמן האחזור הממוצע ב-Pixel 6 באמצעות מעבד או יחידת עיבוד גרפי (GPU).

שם דגם זמן האחזור של המעבד (CPU) זמן אחזור של GPU
BlazeFace (טווח קצר) 2.94 אלפיות השנייה 7.41 אלפיות השנייה