זיהוי פנים הופך פופולרי יותר ויותר ורובנו כבר משתמשים בו מבלי שאנו מבינים זאת. בין אם זו הצעה פשוטה לתג פייסבוק או מסנן Snapchat או מעקב אבטחה מתקדם בשדה התעופה, זיהוי פנים כבר פעל בה. סין החלה להשתמש בזיהוי פנים בבתי ספר כדי לעקוב אחר הנוכחות והתנהגויות התלמידים. חנויות קמעונאיות החלו להשתמש בזיהוי פנים כדי לקטלג את לקוחותיהם ולבודד אנשים עם היסטוריה של הונאה. עם הרבה יותר שינויים בעיצומם, אין ספק שטכנולוגיה זו תיראה בכל מקום בעתיד הקרוב.
במדריך זה נלמד כיצד נוכל לבנות מערכת זיהוי פנים משלנו באמצעות ספריית OpenCV ב- Raspberry Pi. היתרון בהתקנת מערכת זו על Raspberry Pi נייד הוא שאתה יכול להתקין אותה בכל מקום כדי לעבוד בה כמערכת מעקב. כמו כל מערכות זיהוי הפנים, ההדרכה תכלול שני סקריפטים של פיתון, האחד הוא תוכנית מאמן אשר תנתח קבוצת תמונות של אדם מסוים ותיצור מערך נתונים (קובץ YML). התוכנית השנייה היא תוכנית ה- Recognizerשמזהה פנים ואז משתמש בקובץ YML זה כדי לזהות את הפנים ולהזכיר את שם האדם. שתי התוכניות שנדון כאן מיועדות ל- Raspberry Pi (Linux), אך יעבדו גם על מחשבי Windows עם שינויים קלים מאוד. יש לנו כבר סדרת מדריכים למתחילים להתחיל בעבודה עם OpenCV, אתה יכול לבדוק את כל המדריכים של OpenCV כאן.
דרישות קדם
כפי שנאמר קודם אנו נשתמש בספריית OpenCV כדי לזהות ולזהות פנים. אז וודא שאתה מתקין את ספריית OpenCV ב- Pi לפני שתמשיך בהדרכה זו. הפעל גם את ה- Pi שלך עם מתאם 2A וחבר אותו לצג תצוגה באמצעות כבל HDMI מכיוון שלא נוכל להשיג את פלט הווידאו דרך SSH.
כמו כן, אני לא מתכוון להסביר כיצד בדיוק OpenCV עובד, אם אתה מעוניין ללמוד עיבוד תמונה, עיין ביסודות OpenCV ובהדרכות עיבוד תמונה מתקדמות. אתה יכול גם ללמוד על קווי מתאר, זיהוי כתמים וכו 'במדריך זה לפילוח תמונות.
כיצד עובד זיהוי פנים עם OpenCV
לפני שנתחיל, חשוב להבין שזיהוי פנים וזיהוי פנים הם שני דברים שונים. בשנת Face Detection רק הפנים של אדם מזוהה התוכנה אין לי מושג מי זה האדם. בשנת Face Recognition התוכנה לא רק לזהות את הפנים אלא גם יכירו את האדם. כעת, צריך להיות ברור שעלינו לבצע זיהוי פנים לפני ביצוע זיהוי פנים. לא ניתן יהיה להסביר כיצד בדיוק OpenCV מזהה פנים או כל אובייקט אחר לצורך העניין. לכן, אם אתה סקרן לדעת שאתה יכול לעקוב אחר המדריך הזה לגילוי אובייקטים.
עדכון וידאו ממצלמת רשת הוא לא יותר מאשר רצף ארוך של תמונות סטילס שמתעדכנים בזה אחר זה. וכל אחת מהתמונות הללו היא רק אוסף של פיקסלים עם ערכים שונים המורכבים במיקומם בהתאמה. אז איך יכולה תוכנית לזהות פנים מפיקסלים אלו ולהכיר עוד יותר את האדם שנמצא בה? יש הרבה אלגוריתמים שמאחוריו והניסיון להסביר אותם הוא מעבר לתחום של מאמר זה, אך מכיוון שאנו משתמשים בספריית OpenCV, פשוט מאוד לבצע זיהוי פנים מבלי להעמיק במושגים.
זיהוי פנים באמצעות מסווגי אשד ב- OpenCV
רק אם אנו מסוגלים לזהות פנים נוכל לזהות אותו או לזכור אותו. כדי לזהות אובייקט כמו פנים OpenCV משתמש במשהו שנקרא Classifiers. מסווגים אלה הם סט נתונים מאומן מראש (קובץ XML) אשר ניתן להשתמש בהם כדי לזהות אובייקט מסוים במקרה שלנו פנים. תוכל ללמוד עוד על מסווגי זיהוי פנים כאן. מלבד זיהוי פנים, מסווגים יכולים לזהות חפצים אחרים כמו אף, עיניים, לוחית רישוי לרכב, חיוך וכו '. ניתן להוריד את רשימת מסווגי התיקים מקובץ ה- ZIP שלמטה
מסווגים לזיהוי אובייקטים בפייתון
לחלופין, OpenCV גם מאפשר לך ליצור מסווג משלך, שניתן להשתמש בו כדי לזהות כל אובייקט אחר בתמונה על ידי אימון המסווג שלך. במדריך זה נשתמש במסווג בשם "haarcascade_frontalface_default.xml" אשר יאתר את הפנים מהמצב הקדמי. אנחנו עוד נראה