תוכן עניינים:
- שלב 1: דברים המשמשים בפרויקט זה
- שלב 2: רעיון?
- שלב 3: תחילת העבודה?
- שלב 4: לשרוף את Raspbian לכרטיס ה- SD?
- שלב 5: איסוף מערך הנתונים? ️
- שלב 6: עיצוב NN והכשרת הדגם ⚒️⚙️
- שלב 7: בדיקת המודל ✅
- שלב 8: משחק נייר-רוק-מספריים
- שלב 9: שילוב של מנוע סרוו?
- שלב 10: עבודת הפרויקט?
- שלב 11: קוד - Repo Project
וִידֵאוֹ: נייר רוק מספריים AI: 11 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
האם פעם הרגשת משועמם לבד? בואו נשחק סלע, נייר ומספריים נגד מערכת אינטראקטיבית המונעת באינטליגנציה.
שלב 1: דברים המשמשים בפרויקט זה
רכיבי חומרה
- פטל פי 3 דגם B+ × 1
- מודול מצלמת Raspberry Pi V2 × 1
- מנוע מיקרו סרוו SG90 × 1
אפליקציות תוכנה
- Raspberry Pi Raspbian
- OpenCV
- TensorFlow
שלב 2: רעיון?
לאחר שעבדתי על פרויקטים שונים בתחומים שונים, תכננתי לעשות פרויקט מהנה, והחלטתי לעשות משחק נייר-מספריים:)
בפרויקט זה, נכין משחק אינטראקטיבי ונשחק מול המחשב אשר מופעל על ידי AI כדי לקבל החלטות. AI משתמשת במצלמה המחוברת ל- Raspberry Pi כדי לזהות מה מניע המשתמש ביד, לסווג אותו לסוג, נייר או מספריים בקטגוריה (תווית) הטובה ביותר. ברגע שהמחשב עושה את מהלךו, מנוע הצעדים המחובר ל- Raspberry Pi מצביע לכיוון המבוסס על המהלך שלו.
כללים שיש לקחת בחשבון למשחק זה:
- סלע מקהה את המספריים
- נייר מכסה את הסלע
- מספריים חותכים נייר
הזוכה יוחלט על בסיס שלושת התנאים לעיל. בואו לראות הדגמה מהירה של הפרויקט כאן.
שלב 3: תחילת העבודה?
פאי פטל
השתמשתי ב- Raspberry Pi 3 Model B+ בעל שיפורים נהדרים והוא חזק יותר מאשר ה- Raspberry Pi 3 Model B.
Raspberry Pi 3 B+ משולב עם מעבד 1.4-GHz 64 סיביות מרובע ליבות, LAN אלחוטי כפול פס, Bluetooth 4.2/BLE, אתרנט מהיר יותר ותמיכת Power-over-Ethernet (עם PoE HAT נפרד).
מפרט: Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64 סיביות SoC @ 1.4GHz, 1GB LPDDR2 SDRAM, 2.4GHz ו- 5GHz IEEE 802.11.b/g/n/ac אלחוטי LAN, Bluetooth 4.2, BLE, Gigabit Ethernet מעל USB 2.0 (תפוקה מקסימלית של 300 Mbps), כותרת GPIO המורחבת עם 40 פינים, יציאות HDMI4 USB 2.0 בגודל מלא, יציאת מצלמת CSI לחיבור מצלמת Raspberry Pi, יציאת תצוגת DSI לחיבור תצוגת מסך מגע של Raspberry Pi 4 פלט סטריאו וקומפוזיט יציאת וידאו, יציאת Micro SD לטעינת מערכת ההפעלה שלך ושמירת נתונים כניסת מתח 5V/2.5A DC, תמיכת Power-over-Ethernet (PoE) (דורשת PoE HAT נפרד).
מנוע סרוו
אנו משתמשים במנוע סרוו SG-90, מנוע בעל מומנט גבוה שיכול להתמודד עם עומס עד 2.5 ק"ג (1 ס"מ).
מצלמת USB
מצלמת USB כדי להפוך את המשחק לאינטראקטיבי בעיבוד התמונה
כמה כבלי מגשר משמשים לחיבור מנוע הצעדים ופטל פי.
שלב 4: לשרוף את Raspbian לכרטיס ה- SD?
Raspbian היא הפצת לינוקס המועדפת הפועלת ב- Raspberry Pi. במדריך זה נשתמש בגרסת Lite, אך ניתן להשתמש גם בגרסת שולחן העבודה (המגיעה עם סביבה גרפית).
- הורד את עטר והתקן אותו.
- חבר קורא כרטיסי SD עם כרטיס ה- SD בפנים.
- פתח את Etcher ובחר מהכונן הקשיח את קובץ ה- img או.zip של Raspberry Pi שברצונך לכתוב לכרטיס ה- SD.
- בחר את כרטיס ה- SD שאליו ברצונך לכתוב את התמונה שלך.
- בדוק את הבחירות שלך ולחץ על 'פלאש!' כדי להתחיל לכתוב נתונים לכרטיס ה- SD.
חבר את המכשיר לרשת שלך
- אפשר גישה ל- SSH על ידי הוספת קובץ ssh ריק, הממוקם שוב בבסיס נפח האתחול בכרטיס ה- SD שלך.
- הכנס את כרטיס ה- SD ל- Raspberry Pi. הוא יאתחל תוך בערך 20 שניות. כעת אמורה להיות לך גישת SSH ל- Raspberry Pi שלך. כברירת מחדל, שם המארח שלו יהיה raspberrypi.local. במחשב, פתח חלון מסוף והקלד את הדברים הבאים:
סיסמת ברירת המחדל היא פטל
כאן השתמשתי במסך נפרד כדי להתממשק עם ה- Raspberry Pi.
שלב 5: איסוף מערך הנתונים? ️
השלב הראשון בפרויקט זה הוא איסוף נתונים. המערכת חייבת לזהות את תנועת הידיים ולזהות את הפעולה ולבצע אותה בהתאם.
אנו מתקינים מספר ספריות ל- Raspberry Pi באמצעות התקנת pip
פקודה.
sudo apt-get update && sudo apt-get upgrades sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev pip להתקין opencv pip להתקין numpy pip להתקין scikit-ללמוד pip להתקין scikit-image pip להתקין h5py pip להתקין pip של Keras להתקין pip tensorflow להתקין pip werkzeug להתקין Keras- יישומים pip להתקין Keras- Preprocessing pip להתקין keras-squeezenet pip להתקין astor pip להתקין tensorboard pip להתקין tensorflow-אומדן pip להתקין mock pip להתקין grpcio pip להתקין absl-pypip להתקין gast pip להתקין joblib pip להתקין Markdown pip להתקין protobuf pip להתקין PyYAML pip להתקין שש
אם אתה נתקל בבעיות עם OpenCVpackage, אני ממליץ בחום להתקין חבילות אלה.
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-serial-dev sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install libqt4-test
התקנו את כל התלות הנדרשת לפרויקט זה. מערך הנתונים מתבצע על ידי אוספים וסידורי התמונות תחת התווית המתאימה.
כאן אנו יוצרים את תמונות מערכי הנתונים עבור התווית סלע, נייר ומספריים באמצעות קטע הקודם.
roi = frame [100: 500, 100: 500]
save_path = os.path.join (img_class_path, '{}.jpg'.format (count + 1)) cv2.imwrite (save_path, roi)
התמונה נלכדת עבור כל תווית (סלע, נייר, מספריים וללא).
שלב 6: עיצוב NN והכשרת הדגם ⚒️⚙️
הליבה של פרויקט זה היא מסווג תמונות המסווג אחת משלוש קטגוריות. כדי ליצור מסווג זה, אנו משתמשים ב- CNN שהוכשר מראש (רשת Convolutional) הנקרא SqueezeNet.
כאן אנו משתמשים ב- Keras ו- TensorFlow ליצירת מודל SqueezeNet שיכול לזהות את המחווה. התמונות שיצרנו בשלב הקודם משמשות לאימון המודל. המודל הוכשר באמצעות מערך הנתונים שנוצר עבור לא אחת מהתקופות (מחזורים) שהוזכרו.
המודל מוגדר עם היפר -פרמטרים כפי שמוצג להלן.
דגם = רציף ([SqueezeNet (input_shape = (227, 227, 3), include_top = False), נשירה (0.5), Convolution2D (NUM_CLASSES, (1, 1), padding = 'valid'), הפעלה ('relu'), GlobalAveragePooling2D (), הפעלה ('softmax')])
בזמן שהדגם מתאמן, אתה יכול למצוא את האובדן והדיוק של המודל עבור כל תקופה והדיוק גדל בנקודת זמן מסוימת לאחר כמה תקופות.
בערך לקח שעתיים לייצר את המודל ברמת הדיוק הגבוהה ביותר לאחר תקופת 10. אם אתה עומד בפני שגיאות בהקצאת זיכרון, בצע את השלבים הבאים (תודה לאדריאן)
כדי להגדיל את שטח ההחלפה שלך, פתח /etc /dphys-swapfile ולאחר מכן ערוך את המשתנה CONF_SWAPSIZE:
# CONF_SWAPSIZE = 100
CONF_SWAPSIZE = 1024
שים לב שאני מגדיל את ההחלפה מ -100 MB ל -1024 MB. משם הפעל מחדש את שירות ההחלפה:
$ sudo /etc/init.d/dphys-swapfile stop
התחל $ sudo /etc/init.d/dphys-swapfile
הערה:
הגדלת גודל ההחלפה היא דרך מצוינת לשרוף את כרטיס הזיכרון שלך, לכן הקפד לבטל את השינוי ולהפעיל מחדש את שירות ההחלפה כשתסיים. תוכל לקרוא עוד על גדלים גדולים המשחיתים כרטיסי זיכרון כאן.
שלב 7: בדיקת המודל ✅
לאחר יצירת המודל, הוא מייצר את קובץ הפלט "rock-paper-scissors-model.h5". קובץ זה משמש כמקור לבדיקת האם המערכת יכולה לזהות תנועות יד שונות ולצליח להבדיל בין הפעולות.
המודל נטען בתסריט הפיתון כדלקמן
model = load_model ("rock-paper-scissors-model.h5")
המצלמה קוראת את תמונת הבדיקה והופכת את דגם הצבע הנדרש ולאחר מכן משנה את גודל התמונה ל -227 x 227 פיקסלים (אותו גודל המשמש לייצור דגמים). ניתן להשתמש בתמונות ששימשו לאימון המודל לבדיקת המודל שנוצר.
img = cv2.imread (filepath)
img = cv2.cvtColor (img, cv2. COLOR_BGR2RGB) img = cv2.resize (img, (227, 227))
לאחר טעינת המודל והתמונה נרכשת על ידי המצלמה, המודל מנבא את התמונה שצולמה באמצעות מודל SqueezeNet נטען, ומבצע את החיזוי לתנועות המשתמש.
pred = model.predict (np.array ())
move_code = np.argmax (pred [0]) move_name = מיפוי (move_code) הדפסה ("צפוי: {}". פורמט (move_name))
הפעל את סקריפט test.py כדי לבדוק את המודל עם תמונות בדיקה שונות.
python3 test.py
כעת המודל מוכן לזהות ולהבין את תנועות הידיים.
שלב 8: משחק נייר-רוק-מספריים
המשחק משתמש בפונקציה של יצירת מספרים אקראיים כדי להחליט על מהלך המחשב. הוא פועל על פי הכללים הנ ל כדי לקבוע את הזוכה. המשחק מעוצב עם שני מצבים: מצב רגיל ומצב אינטליגנטי, כאשר מצב אינטליגנטי תוקף את תנועת המשתמש, כלומר המחשב מנצח את כל המהלכים נגד המשתמש.
cap = cv2. VideoCapture (0) # לצילום תמונה מהמצלמה
עכשיו בואו נעשה את המשחק במצב רגיל שבו המערכת/ פטל פי לוקחת את תמונת היד ומנתחת ומזהה את מחוות היד. לאחר מכן באמצעות מחולל מספרים אקראיים, מהלך המחשב מופעל. הזוכה נבחר על פי הכללים ולאחר מכן מוצג על המסך. הפעל את המשחק באמצעות הפקודה הבאה.
python3 play.py
שלב 9: שילוב של מנוע סרוו?
לבסוף, הוסף את מנוע סרוו לפרויקט זה. מנוע סרוו הוא סיכת GPIO 17 של ה- Raspberry Pi, בעלת הפונקציה PWM לשליטה בזווית הסיבוב.
מנוע סרוו המשמש בפרויקט זה הוא SG-90. זה יכול לבצע סיבובים עם כיוון השעון ונגד כיוון השעון עד 180 °
החיבורים ניתנים כדלקמן.
מנוע סרוו - פטל פטל
Vcc - +5V
GND - GND
אות - GPIO17
הספריות כגון RPi. GPIO וזמן משמשות בפרויקט זה.
ייבא RPi. GPIO כ- GPIO
זמן יבוא
לאחר מכן מוגדר סיכת GPIO ל- PWM באמצעות השורות הבאות
servoPIN = 17
GPIO.setmode (GPIO. BCM) GPIO.setup (servoPIN, GPIO. OUT)
GPIO Pin 17 מוגדר לשימוש כ- PWM בתדר של 50 הרץ. זווית מנוע הסרוו מושגת על ידי הגדרת מחזור העבודה (טון וטוף) של ה- PWM
חובה = זווית/18 + 2
GPIO.output (servoPIN, True) p. ChangeDutyCycle (חובה) time.sleep (1) GPIO.output (servoPIN, False) p. ChangeDutyCycle (0)
זה ייצור את זווית הצעד הרצויה עבור כל דופק, מה שייתן את זווית הסיבוב הרצויה.
עכשיו לקחתי את התרשים וחתכתי אותו לשלושה חלקים, לסלע, נייר ומספריים. מנוע סרוו קבוע למרכז התרשים. המצביע/דש מחובר לפיר של מנוע הסרוו. פיר זה מצביע על מהלך המחשב על פי ההיגיון המחושב בתסריט.
שלב 10: עבודת הפרויקט?
ועכשיו, הגיע זמן המשחק. בואו נראה את עבודת הפרויקט.
אם נתקלת בבעיות בבניית הפרויקט הזה, אל תהסס לשאול אותי. אנא הצע פרויקטים חדשים שאתה רוצה שאעשה בהמשך.
תן אגודל אם זה באמת עזר לך ותעקוב אחרי הערוץ שלי לפרויקטים מעניינים.:)
שתף את הסרטון הזה אם תרצה.
שמח שנרשמת:
תודה שקראתם!
שלב 11: קוד - Repo Project
הקוד מתווסף למאגר GitHub שניתן למצוא בחלק הקוד.
מספריים Rahul24-06/נייר רוק-https://github.com/Rahul24-06/Rock-Paper-Sxissors
מוּמלָץ:
משחק מספריים של נייר אבן: 6 שלבים
משחק מספריים של נייר אבן: זהו ההוראה הראשונה שלי. רציתי לכתוב אחד הרבה זמן אבל לא היה לי שום פרויקט בהישג יד שאני יכול לפרסם כאן. אז כשעלה לי הרעיון של הפרויקט הזה, החלטתי שזהו אחד. אז גלשתי באתר של tensorflow.js, זה אני
משחק מספריים מסלע סלע ארדואינו באמצעות כף יד באמצעות תצוגת LCD בגודל 20x4 עם I2C: 7 שלבים
משחק מספריים מסלע סלע ארדואינו באמצעות כף יד באמצעות תצוגת LCD בגודל 20x4 עם I2C: שלום לכולם או שאולי עלי לומר "שלום עולם!" יהיה תענוג גדול לשתף אתכם בפרויקט שהיווה את הכניסה שלי להרבה דברים של ארדואינו. זהו משחק מספריים ארדואינו נייר סלע באמצעות כף יד באמצעות תצוגת LCD I2C 20x4. אני
שלח נתונים מספריים מארדואינו אחד למשנהו: 16 שלבים
שלח נתונים מספריים מארדואינו למשנהו: מבוא מאת דייויד פאלמר, CDIO טק. באוניברסיטת אסטון. האם היית צריך לשלוח כמה מספרים בין ארדואינו אחד למשנהו? מדריך זה מראה כיצד. אתה יכול לבדוק בקלות שזה עובד פשוט על ידי הקלדת מחרוזת מספרים לשלוח ב- S
הפוך תופי רוק להקת רוק לתוך תופים אלקטרוניים לבדם מידי: 4 שלבים (עם תמונות)
להפוך את תופי הלהקה של רוק בוקס לתופים אלקטרוניים לבדם מידי: היה לי מזל שקיבלתי תוף אקס בוקס משומש, הוא בצורה קצת מחוספסת, וללא משוט, אבל שום דבר שאי אפשר לתקן. להפוך אותו לסט תופים חשמלי עצמאי. קוראים את הערך האנלוגי מחיישן הפאזו והופכים אותו למפקד MIDI
מספריים של נייר רוק: 10 שלבים
מספריים של נייר רוק: מטרה: לאחר סיום זה, תלמד כיצד להכין משחק פשוט של מסלע, נייר מספריים מאפס באמצעות Code.org. חומרים / דרישות הדרושים: הבנה בסיסית בתחביר Javascript, מחשב, חשבון Code.org