זיהוי וזיהוי פנים עם דגם MTCNN ו- VGGFace2 בקרס

בלוג

זיהוי וזיהוי פנים עם דגם MTCNN ו- VGGFace2 בקרס

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



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

תנאים מוקדמים

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



matplotlib

כדי להשתמש בכל יישום של אלגוריתם CNN, עליך להתקין | _+_ |. הורד והתקן את הגירסה העדכנית ביותר באמצעות הפקודה שלהלן:

pip

האלגוריתם בו נשתמש לזיהוי פנים הוא MTCNN (רשתות עצביות מורכבות מרובות משימות), המבוססות על העיתון זיהוי ויישור פנים משותפים באמצעות רשתות התכנסות מרובות משימות (ג'אנג ואח ', 2016). יישום אלגוריתם MTCNN עבור TensorFlow ב- Python3.4 זמין כחבילה . הפעל את הפקודה הבאה להתקנת החבילה באמצעות | _+_ |:



pip3 install matplotlib

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

המרת פייתון לג'אווה
keras

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

כעת, לאחר שהתקנת בהצלחה את התנאים המוקדמים, בואו נקפוץ ישר אל המדריך!

שלב 1: זיהוי פנים באמצעות דגם ה- MTCNN

היעדים בשלב זה הם כדלקמן:

  • לאחזר תמונות המתארחות חיצונית לשרת מקומי
  • לקרוא תמונות דרך | _+_ | 's | _+_ | פוּנקצִיָה
  • לזהות ולחקור פנים באמצעות אלגוריתם MTCNN
  • לחלץ פנים מתמונה.

1.1 אחסן תמונות חיצוניות

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

כדי לאחסן את התמונות באופן זמני באופן מקומי לצורך הניתוח שלנו, נשלוף כל אחת מכתובת האתר שלו ונכתוב אותן לקובץ מקומי. בואו נגדיר פונקציה | _+_ | למטרה זו:

pip3 install keras

כעת תוכל פשוט לקרוא לפונקציה עם כתובת ה- URL והקובץ המקומי שבו תרצה לאחסן את התמונה:

pip

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

pip3 install mtcnn

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

להגיב navbar דוגמה navbar
pip3 install keras_vggface

2.2 השווה פנים מרובות בשתי תמונות

הבה נשתמש בדגם היטב בחלק זה של ההדרכה. נשווה את הפנים בשתי תמונות של תחילת אחת עשרה של מועדון הכדורגל של צ'לסי ב- משחק הליגה האירופית מול סלביה פראג בעונת 2018–19 ו משחק הסופר קאפ של אופ'א מול ליברפול בעונת 2019–20. בעוד שרבים מהשחקנים מופיעים בשתי חוליות יום המשחקים, נראה אם ​​האלגוריתם מסוגל לזהות את כל השחקנים הנפוצים.

ראשית, בואו לאחזר את המשאבים מכתובות האתרים, לזהות את הפנים בכל תמונה ולהדגיש אותם:

store_image ('https://cdn.vox-cdn.com/thumbor/Ua2BXGAhneJHLQmLvj-ZzILK-Xs=/0x0:4872x3160/1820x1213/filters:focal (1877x860: 2655x1638): פורמט (webp)/cdn.vox- com/uploads/chorus_image/image/63613936/1143553317.jpg '>! [השוואת פנים] (https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2019/10/1572502261comparison-838x1024.jpg'> [ SBNation] (https://weaintgotnohistory.sbnation.com/) 

לפני שנמשיך הלאה, להלן אחת עשרה המתחילות משני המשחקים:

יש לנו שמונה שחקנים המשותפים לשני XIs המתאימים ובאופן אידיאלי צריך להתאים את האלגוריתם.

בואו נחשב תחילה ציונים:

slavia_faces = extract_face_from_image ('chelsea_1.jpg'>

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

תמונות Google לוקחות תשומות משתמש להתאמת פנים

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

שיתוף מסך של דיסקורד ושיחת וידאו

סיכום

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

#למידה מעמיקה #למידת מכונה #זיהוי פנים #מדעי נתונים