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

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

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

רוצים לנסות?

שנתחיל?

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

פרטי המשימה

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

תכונות

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

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

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

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

IMAGE: המצב לקלט של תמונה אחת.

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

LIVE_STREAM: המצב לשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר listener לקבלת תוצאות באופן אסינכרוני.
{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 (טווח קצר)

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

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

‫BlazeFace (full-range)

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

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

BlazeFace Sparse (full-range)

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

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

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

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

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