תוכן עניינים:

זיהוי פנים וזיהוי - מזהה פנים Arduino באמצעות OpenCV Python ו- Arduino .: 6 שלבים
זיהוי פנים וזיהוי - מזהה פנים Arduino באמצעות OpenCV Python ו- Arduino .: 6 שלבים

וִידֵאוֹ: זיהוי פנים וזיהוי - מזהה פנים Arduino באמצעות OpenCV Python ו- Arduino .: 6 שלבים

וִידֵאוֹ: זיהוי פנים וזיהוי - מזהה פנים Arduino באמצעות OpenCV Python ו- Arduino .: 6 שלבים
וִידֵאוֹ: CS50 2014 - Week 9 2024, סֶפּטֶמבֶּר
Anonim
Image
Image

זיהוי פנים AKA זיהוי פנים הוא אחת התכונות החשובות ביותר בטלפונים ניידים בימינו.

אז הייתה לי שאלה "האם אפשר לקבל מזהה פנים לפרויקט הארדואינו" והתשובה היא כן …

המסע שלי התחיל כך:

שלב 1: גישה למצלמת אינטרנט

שלב 2: זיהוי פנים.

שלב 3: איסוף נתונים

שלב 4: אימון

שלב 5: זיהוי פנים

שלב 6: תכנות Arduino

אני אסביר את כל השלבים שלהלן. אני מקווה שזה יעזור לך.

שלב 1: גישה למצלמת אינטרנט

גישה למצלמת אינטרנט
גישה למצלמת אינטרנט

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

יתכן שאתה חושב מהו OpenCV, לא?

OpenCV (ספריית חזון המחשבים של קוד פתוח) היא ספריית תוכנת ראיית מחשב וקוד פתוח ולמידת מכונה. OpenCV נבנתה כדי לספק תשתית משותפת ליישומי ראיית מחשבים ולהאיץ את השימוש בתפיסת מכונה במוצרים מסחריים.

אם Opencv מותקן במחשב שלך, אתה מוכן ללכת. אם לא אז בצע את השלב הזה.

פתח את שורת הפקודה והקלד "pip install opencv".

אזהרה: ייתכן שתקבל שגיאה מכיוון ש''פיפ 'אינו מזוהה כפקודה פנימית או חיצונית'. שעבורו עליך להוסיף את הנתיב של התקנת ה- pip שלך למשתנה מערכת PATH שלך. עברו על הפוסט הזה אולי זה יעזור לכם.

stackoverflow.com/questions/23708898/pip-i…

לאחר התקנת OpenCV אנחנו מוכנים ללכת … כדי לבדוק אם הוא מותקן כראוי פתח את מתורגמן ה- Python שלך וייבא את הספרייה. ראה את התמונה למעלה שאמורה להיות הפלט שלך.

הורד את קובץ הפייתון "AccessTo_webcam.py" והפעל אותו. סיפקתי שם את כל ההערות הדרושות.

הנה, עכשיו יש לך גישה למצלמת הרשת. כל הכבוד. בואו נמשיך לשלב 2.

שלב 2: זיהוי פנים

זיהוי פנים
זיהוי פנים

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

OpenCV מספקת שיטת אימון או מודלים שהוכשרו מראש בשם מסווג Cascade. הדגמים שהוכשרו מראש נמצאים בתיקיית הנתונים בהתקנת OpenCV. אני מספק את הקובץ הזה פשוט הורד אותו והנח אותו בתיקיית הפרויקט שלך. התיקייה שבה מאוחסן הקובץ "AccessTo_webcam.py". אם לא יצרת אחד אז עשה זאת.

הורד את "haarcascade_frontalface_default" והנח אותו בתיקיית הפרויקט הראשי.

הורד את "Face_identification.py" והנח אותו בתיקיית הפרויקט הראשית. כל ההסבר מובא בו.

עכשיו אתה יכול לזהות את הפנים בזרם וידאו. אז בואו נמשיך לשלב 3.

שלב 3: איסוף נתונים

איסוף נתונים
איסוף נתונים

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

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

בתיקייה "image_data" יצרתי שתי תיקיות נוספות בשם "HRK" ו- "Yahiya". כפי שמוצג בתמונה למעלה.

עכשיו קדימה צור תיקיות משלך ושם אותן.

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

זהו זה עכשיו נעבור לשלב 4.

שלב 4: אימון

בקצרה, נעבור על כל התיקיות והתמונות הקיימות בתיקייה "image_data" וניצור מילון שיכיל את מזהה התווית ואת השם המתאים. במקביל נטען את התמונה לזיהוי הפנים בכל תמונה ותמונה שאנו מכנים אותה "אזור העניין" וניצור קובץ ".yml" המכיל את המידע הזה.

בהנחה שיש לך נתונים שנאספו עבור אדם X ו- Y.

אנו מתייגים את אדם X כ- 1 אשר יהיה מזהה התווית שלו ושמו יהיה X עצמו. אנו מעמיסים את התמונה כדי למצוא את פניו כלומר אזור העניין ומוסיפים את הנתונים לרשימה.

שלבים דומים יבוצעו עבור אדם Y. ולבסוף, ניצור קובץ ".yml".

הורד את הקובץ "face_trainer.py" והנח אותו בתיקיית הפרויקט הראשי. כל ההסבר הדרוש מסופק בקובץ עצמו.

בעת הפעלת תוכנית זו היא תעבור על כל התמונות ותיצור שני קבצים בשם "labels.pickle" ו- "trainner.yml". עכשיו הכשרת מודל משלך. אז בואו נמשיך לשלב 5.

שלב 5: זיהוי פנים

זיהוי פנים
זיהוי פנים

אם עברת את כל השלבים כראוי אז ייתכן שיצרת נתונים מאומנים משלך. כעת נשתמש בנתונים אלה לזיהוי פנים.

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

הורד את "face_recognise.py" והפעל אותו. כל המידע הדרוש מסופק בו. עכשיו ייתכן שהפנים שלך הוכרו. אם הדיוק אינו טוב, נסה לעדכן את הנתונים. אם כולכם מוכנים ללכת אז בואו נמשיך לשלב 6/

שלב 6: תכנות Arduino

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

אם עברתם על הסרטון אז תנו לי להסביר לכם מה עשיתי. כאשר הפנים שלי מזוהות אז מזהה התווית המסופק הוא 2. ברגע שמזהה התווית הוא 2 אני אשלח '1' כנתונים הסדרתיים לאדואינו שלי. מה שיפעיל את מעגל הצ'ייסר LED שלי. אם מזהה התווית שונה מ -2 אז אני אשלח '0' כנתונים הטוריים, שיכבו את מעגל הרודף LED שלי.

הורד את הקובץ "ard_chaser.ino". זוהי תוכנת רודף LED פשוטה המשתמשת בתקשורת טורית.

הורדה דומה "face_recogniser1.py" שתקים את התקשורת הטורית בין ארדואינו לתוכנית הפייתון.

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

תודה.

מוּמלָץ: