תוכן עניינים:
- שלב 1: דרישות
- שלב 2: אימון נתונים
- שלב 3: יישום תחזיות המצלמה של פי
- שלב 4: רובוט ארדואינו
- שלב 5: בדיקה
- שלב 6: כל הקבצים הנוספים
וִידֵאוֹ: Raspberry Pi 4 רובוט זיהוי תמרורים: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
ההנחיה מבוססת על פרויקט האוניברסיטה שלי. המטרה הייתה ליצור מערכת שבה רשת עצבית מנתחת תמונה ולאחר מכן על סמך ההכרה תגיד לרובוט ארדואינו לנוע דרך רוס.
למשל אם מזוהה סימן פנייה ימינה אז הרובוט יפנה ימינה, אם יזוהה שלט פנייה שמאלה הרובוט יפנה שמאלה, אם לא יזוהה אז הרובוט ימשיך קדימה. מערך הנתונים שישמש הוא זיהוי תמרורים רשמי של INI (2019) (Institut Fur Neuroinformatik), מערך הנתונים הזה כולל 43 שיעורים אולם יש צורך בשניים בלבד; תיקיות 00033 ו- 00034 במערך הנתונים הם סימני הפנייה שמאלה וימינה.
שלב 1: דרישות
הדרישות לפרויקט זה הן:
רובוט ארדואינו. (בעצם אונו ארדואינו, נהג מנועים ומנועים) (אין צורך אם אינך משתמש ברובוט)
פאי פטל 4.
מצלמת פי.
נדרשת תוכנה:
פייתון 3.
OpenCV 4.
זרימת מתח.
arduino IDE (אין צורך אם אינך משתמש ברובוט)
רוז (אין צורך אם אינך משתמש ברובוט)
לא משנה מה תהיה הפייתון האהוב עליך (על פאי הפטל, אני משתמש בתוני).
כדי להגדיר את OpenCV ו- Tensorflow, פעל לפי ההנחיות של אדריאן. קישור:
אני ממליץ להסתכל על כמה שיותר הדרכות שלו, הן ממש מעניינות והן שימושיות למתחילים וגם לאנשי ביניים.
שלב 2: אימון נתונים
סקריפט הרכבת מיועד לגישה למערך הנתונים שמאגד כ -50,000 תמונות מ -43 כיתות. התסריט כתוב בפייתון, תוך שימוש במגוון ספריות: os - זה לצורך קישור סקריפט הפייתון לספרייה הנכונה שבה נמצא מערך הנתונים. Matplotlib - זה להצגת הנתונים ממודל האימון. Tensorflow ו- keras - אלה הספריות המשמשות ליצירת מודל הרשת העצבית המלאכותית, הן משמשות לעיצוב המודל. Numpy - ספרייה זו מיועדת להפיכת תמונות למערך שאפשר להעביר אותן דרך המודל כדי לאחזר תחזית.
התסריט המצורף הוא קוד הפיתון ליצירת מודל ממערך הנתונים. זה מורכב מ 2D קונפולוציה עם כניסת (5, 5) והפעלה של relu ואז איחוד, ברגע שזה נעשה הקלט עובר סיבולת נוספת עם כניסת (3, 3) עם אותה הפעלה ואיגום. זה קורה בפעם האחרונה לפני שהוחלף ואז הצפיפות מוחלת על כמות השיעורים שיש, במקרה זה 43.
השלב הבא היה חיבור המודל. זהו החלק שמגדיר את האופטימיזציה, sgd היה המתאים ביותר מכיוון שזה היה דומה לאופטימיזציה המשמשת במשימה 1. Sgd מייצג ירידה בשיפוע סטוכסטי. גם בתוך המהדר צריך להגדיר את ההפסד, בחירת הפסד דלי_קטגוריה_קרוסנטרופית היא ההתאמה הטובה ביותר מכיוון שהקטגוריות הן מספרים שלמים והמודל יפיק חיזוי לכל מחלקה כצף בין 0 ל -1. 1 הוא דיוק של 100%.
לאחר השלמת המהדר, יש להחיל גנרטור כדי שהמודל יתחיל לעבד את תשומות התמונה. הגנרטור מורכב ממספר חלקים: training_set - זהו הקישור למערך הנתונים המשמש לאימון, steps_per_epoch - זהו מספר השלבים לתקופה הנדרשים, עידנים - אלו הם מספר הפעמים שהתוכנית תחזור באמצעות מערך נתונים מלא, validation_data - זהו הקישור למערך הנתונים המשמש לאימות, validation_steps - מספר השלבים המשמשים לאימות, האימות קורה בסוף כל תקופה.
באופן כללי, מחיקה מלאה של כל מערך הנתונים צריכה להיות מלאה לכל תקופה. מכאן למשל שמערך נתונים של 1024 תמונות ידרוש: גודל אצווה = 32, צעדים לתקופה = 32, תקופות = 1. כל שלב כולל את כל גודל האצווה, כך שבגודל אצווה של 32 השלבים יהיו 32. מצד שני יד, עדיף שיהיה גודל אצווה גדול יותר ממספר השיעורים, זאת מכיוון שאם גודל האצווה קטן יותר, אז אין כל שלב יכול לכלול תמונה מכל כיתה.
לאחר שהמודל סיים את האימון, באמצעות matplotlib התוכנית תכין גרף של התפוקות, זה מראה את ההיסטוריה של האימון מתחילתו ועד סופו. הגרף מורכב מדיוק, דיוק אימות, אובדן ואובדן אימות, זה מתחלק לעידן כדי להראות כיצד התקדמה האימון. השלב האחרון הוא שמירת המודל כקובץ.h5 שאפשר לגשת אליו מאוחר יותר לתהליך החיזוי. שמירת המודל פירושה שבכל פעם שתוכנית החיזוי מופעלת אין צורך להריץ שוב את תוכנית האימונים. תוכנית האימונים יכולה להימשך עד 10 דקות לכל תקופה בעידן פטל.
מצורף סקריפט ההדרכה:
שלב 3: יישום תחזיות המצלמה של פי
התוכנית הבאה היא חיזוי ותסריט המוציא לאור.
השלב הראשון הוא טעינת המודל באמצעות model.load (). השלב השני הוא לחזור על המסגרות ממצלמת ה- pi באמצעות opencv ולאחר מכן לשנות את גודל המסגרת לאותו גודל כמו גדלי הקלט המשמשים בשלב האימון, 32 x 32 פיקסלים. ברגע שזה נעשה, מסגרת הגודל החדשה משתנה באמצעות המודל באמצעות model.predict () שיוצא מטריצה, כל אלמנט של המטריצה הוא צף מ -0 ל -1, מדד האלמנטים זהה למחלקה שהיא מייצגת, ומכאן האלמנט הראשון הוא מחלקה אחת והמספר הוא חיזוי הוודאות של התמונה הנובעת ממעמד זה. לְמָשָׁל.
הערה: אם אינך משתמש בצד הרובוט. פשוט הסר את השורות:
"יבוא ורוד"
מדבר def (כיוון):
הודעה = מחרוזת ()
pub = rospy. Publisher ('רובוט', מחרוזת, queue_size = 10)
rospy.init_node ('מדבר', אנונימי = נכון)
הודעה = כיוון
rospy.loginfo (הודעה)
pub.publish (הודעה)"
"מדבר (כיוון)"
מצורף סקריפט המצלמה של Pi.
שלב 4: רובוט ארדואינו
השלב האחרון הוא סקריפט תוכנית הרובוט.
זה כתוב ב- C ++ והוא קובץ.ino עבור ה- arduino uno. התוכנית דורשת את ספריית ros שניתן למצוא במנהל הספריות בתוך האידי. ברגע שזה מיובא ישנם קבצי דוגמה, בחרתי להרחיב את קובץ ה- blink flash כיוון שזה יעשה מטרה דומה למה שאני צריך. התוכנית ממשיכה לולאה עד לניתוק הכוח, ראשית היא מקשיבה לרובוט הנושא, כאשר היא תופסת פקודה מאותו נושא תהיה לה הצהרת if כדי לראות מה הפקודה אומרת. אם הפקודה נשארת אז התסריט מריץ את שיטת הפנייה שמאלה, אם הפקודה צודקת אז היא תפעיל את שיטת הפנייה ימינה ואחר כך היא תריץ את שיטת קדימה. שלוש השיטות דומות מאוד זו לזו, הן אומרות שהסיכות הדיגיטליות הן LOW (קרקע) או 100 (PWM) בשביל זה, כך שהרובוט לא יהיה מהיר מדי על ידי כך שהוא אומר לנהג המנוע לתת רק קצת מתח החוצה. סדר היציאות הללו הוא מה שגורם לרובוט לפנות שמאלה וימינה או ללכת קדימה, זאת בשל כיוון המתח העובר למנועים.
מצורף סקריפט.ino עבור arduino.
שלב 5: בדיקה
התמונות מצורפות כך שהפרויקט מתחילתו ועד סופו. התמונה הראשונה מציגה את ההכשרה בתהליך. לאחר השלמת ההדפסה המוצגת מהדגם שיוצג. התמונה השלישית מציגה חיזוי מתסריט האימון. זהו השלב האחרון של כתב האימון. אם אתה מסתכל בתיקייה שבה נמצא סקריפט האימון, נוצר גרף ומודל. הגרף אמור להיראות כמו תמונה 4 כאן, זה מראה את ההיסטוריה של האימון מתחילתו ועד סופו.
התמונה הסופית היא תוך כדי הפעלת סקריפט מצלמת pi, זהו שידור חי מתוך מצלמת pi. מבוצעת חיזוי על כל מסגרת והתחזית מודפסת במסוף. המסגרת מראה מה המצלמה רואה.
מצורף דוח האוניברסיטה שלי לפרויקט זה. אנא קראו לפרטים נוספים על הפרויקט.
שלב 6: כל הקבצים הנוספים
חלקם בדקו קבצים שיצרתי בדרך.
מוּמלָץ:
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: 3 שלבים
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: במדריך זה אנו הולכים לבצע זיהוי פנים ב- Raspberry Pi 4 עם Shunya O/S באמצעות ספריית Shunyaface. Shunyaface היא ספריית זיהוי/זיהוי פנים. הפרויקט שואף להשיג את מהירות הזיהוי והזיהוי המהירה ביותר עם
רובוט איזון / רובוט 3 גלגלים / רובוט STEM: 8 שלבים
רובוט איזון / רובוט 3 גלגלים / רובוט STEM: בנינו רובוט איזון משולב ושלושה גלגלים לשימוש חינוכי בבתי ספר ובתוכניות חינוכיות לאחר הלימודים. הרובוט מבוסס על Arduino Uno, מגן מותאם אישית (כל פרטי הבנייה מסופקים), חבילת סוללות לי יון (כל מבנה
[רובוט ארדואינו] כיצד ליצור רובוט לכידת תנועה - רובוט אגודל - מנוע סרוו - קוד מקור: 26 שלבים (עם תמונות)
[רובוט ארדואינו] כיצד ליצור רובוט לכידת תנועה | רובוט אגודל | מנוע סרוו | קוד מקור: רובוט אגודל. השתמש בפוטנציומטר של מנוע סרוו MG90S. זה מאוד כיף וקל! הקוד פשוט מאוד. זה בסביבות 30 קווים בלבד. זה נראה כמו לכידת תנועה. אנא השאר כל שאלה או משוב! [הוראה] קוד מקור https: //github.c
זיהוי פנים+זיהוי: 8 שלבים (עם תמונות)
זיהוי פנים+זיהוי: זוהי דוגמה פשוטה לריצת זיהוי פנים וזיהוי באמצעות OpenCV ממצלמה. הערה: הכנתי את הפרויקט הזה לתחרות חיישנים והשתמשתי במצלמה כחיישן לאיתור מעקב והכרה. אז, המטרה שלנו בפגישה זו, 1. התקן את אנקונדה
VRBOT (רובוט זיהוי קולי): 10 שלבים (עם תמונות)
VRBOT (רובוט זיהוי קולי): במדריך זה נכין רובוט (יותר כמו מכונית RC) הנשלט על ידי קול כלומר זיהוי קולי. לפני שאתחיל לתת לך פרטים נוספים עליך לדעת שזוהי זיהוי קולי ולא זיהוי דיבור כלומר