جدول المحتويات:
- الخطوة 1: الأشياء المستخدمة في هذا المشروع
- الخطوة الثانية: فكرة؟
- الخطوة الثالثة: البدء؟
- الخطوة 4: حرق Raspbian على بطاقة SD؟
- الخطوة 5: جمع مجموعة البيانات؟ ️
- الخطوة 6: تصميم NN وتدريب النموذج ⚒️⚙️
- الخطوة 7: اختبار النموذج ✅
- الخطوة 8: لعبة Rock-Paper-Scissors
- الخطوة 9: تكامل محرك سيرفو؟
- الخطوة العاشرة: عمل المشروع؟
- الخطوة 11: الكود - مشروع ريبو
فيديو: Rock Paper Scissor AI: 11 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
هل شعرت بالملل بالوحدة من قبل؟ لنلعب موسيقى الروك والورق والمقص ضد نظام تفاعلي مدعوم بالذكاء.
الخطوة 1: الأشياء المستخدمة في هذا المشروع
مكونات الأجهزة
- Raspberry Pi 3 موديل B + × 1
- وحدة كاميرا Raspberry Pi V2 × 1
- محرك سيرفو صغير SG90 × 1
تطبيقات البرمجيات
- Raspberry Pi Raspbian
- OpenCV
- TensorFlow
الخطوة الثانية: فكرة؟
بعد العمل في مشاريع مختلفة في مجالات مختلفة ، خططت لعمل مشروع ممتع ، وقررت أن أصنع لعبة Rock-paper-scissors:)
في هذا المشروع ، سنصنع لعبة تفاعلية ونلعب ضد الكمبيوتر الذي يعمل بالذكاء الاصطناعي لاتخاذ القرارات. يستخدم الذكاء الاصطناعي الكاميرا المتصلة بـ Raspberry Pi للتعرف على ما يحرك المستخدم بيده ، ويصنفه في أفضل فئة (ملصق) صخرة أو ورق أو مقص. بمجرد أن يتحرك الكمبيوتر ، يشير محرك السائر المتصل بـ Raspberry Pi إلى الاتجاه بناءً على حركته.
القواعد التي يجب مراعاتها لهذه اللعبة:
- صخرة تبتعد عن المقص
- ورق يغطي الصخرة
- مقص قص الورق
سيتم تحديد الفائز بناءً على الشروط الثلاثة المذكورة أعلاه. دعونا نرى عرضًا توضيحيًا سريعًا للمشروع هنا.
الخطوة الثالثة: البدء؟
فطيرة التوت
لقد استخدمت Raspberry Pi 3 Model B + الذي يحتوي على تحسينات رائعة وهو أقوى من طراز Raspberry Pi 3 السابق B.
تم دمج Raspberry Pi 3 B + مع معالج رباعي النواة بسرعة 1.4 جيجاهرتز و 64 بت وشبكة LAN لاسلكية مزدوجة النطاق وتقنية Bluetooth 4.2 / BLE وإيثرنت أسرع ودعم Power-over-Ethernet (مع PoE HAT منفصل).
المواصفات: Broadcom BCM2837B0، Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz، 1GB LPDDR2 SDRAM، 2.4 جيجا هرتز و 5 جيجا هرتز IEEE 802.11.b / g / n / ac شبكة LAN لاسلكية ، Bluetooth 4.2 ، BLE ، جيجابت إيثرنت عبر USB 2.0 (أقصى إنتاجية 300 ميجابت في الثانية) ، رأس GPIO الممتد 40 سنًا ، منافذ HDMI4 USB 2.0 بالحجم الكامل ، منفذ كاميرا CSI لتوصيل كاميرا Raspberry Pi ، منفذ عرض DSI لتوصيل شاشة لمس Raspberry Pi خرج استريو رباعي الأقطاب ومركب منفذ فيديو ، منفذ Micro SD لتحميل نظام التشغيل الخاص بك وتخزين البيانات 5V / 2.5A مدخلات طاقة تيار مستمر ، دعم Power-over-Ethernet (PoE) (يتطلب PoE HAT منفصل).
أجهزة السيارات
نستخدم محرك سيرفو SG-90 ، محرك ذو عزم دوران عالٍ يمكنه تحمل حمولة تصل إلى 2.5 كجم (1 سم).
كاميرا USB
كاميرا USB لجعل اللعبة تفاعلية مع معالجة الصور
تُستخدم بعض كبلات العبور لتوصيل محرك السائر و Raspberry Pi.
الخطوة 4: حرق Raspbian على بطاقة SD؟
Raspbian هو توزيع Linux المفضل الذي يعمل على Raspberry Pi. في هذا الدليل ، سنستخدم الإصدار Lite ، ولكن يمكن أيضًا استخدام إصدار سطح المكتب (الذي يأتي مع بيئة رسومية).
- قم بتنزيل Etcher وتثبيته.
- قم بتوصيل قارئ بطاقة SD ببطاقة SD بالداخل.
- افتح Etcher وحدد من محرك الأقراص الثابتة ملف Raspberry Pi.img أو.zip الذي ترغب في كتابته على بطاقة SD.
- حدد بطاقة SD التي ترغب في كتابة صورتك إليها.
- راجع اختياراتك وانقر فوق "فلاش!" لبدء كتابة البيانات على بطاقة SD.
قم بتوصيل الجهاز بشبكتك
- قم بتمكين الوصول إلى SSH عن طريق إضافة ملف ssh فارغ ، يتم وضعه مرة أخرى في جذر وحدة تخزين التمهيد على بطاقة SD الخاصة بك.
- أدخل بطاقة SD في Raspberry Pi. سيتم تشغيله في غضون 20 ثانية تقريبًا. يجب أن يكون لديك الآن وصول SSH إلى Raspberry Pi الخاص بك. افتراضيًا ، سيكون اسم مضيفه هو raspberrypi.local. على جهاز الكمبيوتر الخاص بك ، افتح نافذة طرفية واكتب ما يلي:
كلمة المرور الافتراضية هي التوت
لقد استخدمت هنا شاشة منفصلة للتفاعل مع Raspberry Pi.
الخطوة 5: جمع مجموعة البيانات؟ ️
الخطوة الأولى في هذا المشروع هي جمع البيانات. يجب على النظام تحديد إيماءة اليد والتعرف على الإجراء وجعله يتحرك وفقًا لذلك.
نقوم بتثبيت العديد من المكتبات على Raspberry Pi باستخدام تثبيت النقطة
أمر.
sudo apt-get update && sudo apt-get Upgesudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev pip install opencv pip install numpy pip install scikit-learn pip install scikit-image pip install h5py pip install Keras pip تثبيت أنبوب tensorflow تثبيت أنابيب Werkzeug تثبيت Keras-Applications تثبيت الأنابيب Keras-Preprocessing pip install keras-squeezenet pip install astor pip install tensorboard pip install tensorflow-estimated pip install mock pip install grpcio pip install absl-pypip install gast pip install joblib pip install Markdown تثبيت نقطة تثبيت 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 = إطار [100: 500 ، 100: 500]
save_path = os.path.join (img_class_path، '{}.jpg'.format (count + 1)) cv2.imwrite (save_path، roi)
يتم التقاط الصورة لكل ملصق (حجر ، ورق ، مقص ولا شيء).
الخطوة 6: تصميم NN وتدريب النموذج ⚒️⚙️
جوهر هذا المشروع هو مصنف الصور الذي يصنف واحدة من ثلاث فئات. لصنع هذا المصنف ، نستخدم شبكة CNN (الشبكة التلافيفية) المدربة مسبقًا والتي تسمى 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 فترات. إذا واجهت أي أخطاء في تخصيص الذاكرة ، فقم بالخطوات التالية (بفضل Adrian)
لزيادة مساحة التبادل ، افتح / etc / dphys-swapfile ثم عدّل المتغير CONF_SWAPSIZE:
# CONF_SWAPSIZE = 100
CONF_SWAPSIZE = 1024
لاحظ أنني أقوم بزيادة حجم السواب من 100 ميجابايت إلى 1024 ميجابايت ، ومن هناك ، أعد تشغيل خدمة المبادلة:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
ملحوظة:
تعد زيادة حجم المبادلة طريقة رائعة لحرق بطاقة الذاكرة الخاصة بك ، لذا تأكد من التراجع عن هذا التغيير وإعادة تشغيل خدمة التبديل عند الانتهاء. يمكنك قراءة المزيد عن الأحجام الكبيرة التي تفسد بطاقات الذاكرة هنا.
الخطوة 7: اختبار النموذج ✅
بمجرد إنشاء النموذج ، فإنه ينتج ملف الإخراج "rock-paper-scissors-model.h5". يستخدم هذا الملف كمصدر لاختبار ما إذا كان النظام يمكنه تحديد إيماءات اليد المختلفة والقدرة على التمييز بين الإجراءات.
يتم تحميل النموذج في نص Python كما يلي
model = load_model ("rock-paper-scissors-model.h5")
تقرأ الكاميرا صورة الاختبار وتحول نموذج اللون المطلوب ، ثم تقوم بتغيير حجم الصورة إلى 227 × 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 = mapper (move_code) print ("Predicted: {}". format (move_name))
قم بتشغيل البرنامج النصي test.py لاختبار النموذج باستخدام صور اختبار متنوعة.
python3 test.py
أصبح النموذج الآن جاهزًا لاكتشاف إيماءات اليد وفهمها.
الخطوة 8: لعبة Rock-Paper-Scissors
تستخدم اللعبة وظيفة إنشاء أرقام عشوائية لتحديد حركة الكمبيوتر. يتبع القواعد المذكورة أعلاه لتحديد الفائز. تم تصميم اللعبة بوضعين: الوضع العادي والوضع الذكي ، حيث يقوم الوضع الذكي بالهجوم المضاد لحركة المستخدم ، أي أن الكمبيوتر يفوز بجميع الحركات ضد المستخدم.
cap = cv2. VideoCapture (0) # لالتقاط صورة من الكاميرا
الآن لنجعل اللعبة في الوضع العادي حيث يأخذ النظام / Raspberry Pi صورة اليد ويحلل ويحدد إيماءة اليد. ثم باستخدام مولد الأرقام العشوائية ، يتم تشغيل حركة الكمبيوتر. يتم اختيار الفائز بناءً على القواعد ثم يتم عرضه على الشاشة. ابدأ اللعبة باستخدام الأمر التالي.
python3 play.py
الخطوة 9: تكامل محرك سيرفو؟
أخيرًا ، أضف محرك سيرفو إلى هذا المشروع. محرك سيرفو هو GPIO pin 17 من Raspberry Pi ، والذي يحتوي على وظيفة PWM للتحكم في زاوية الدوران.
المحرك المؤازر المستخدم في هذا المشروع هو SG-90. يمكن أن تقوم بالدوران في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة حتى 180 درجة
يتم تقديم الاتصالات على النحو التالي.
محرك سيرفو - Raspberry Pi
Vcc - + 5 فولت
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 هرتز. يتم تحقيق زاوية المحرك المؤازر عن طريق ضبط دورة العمل (Ton & Toff) لـ PWM
الواجب = الزاوية / 18 + 2
إخراج GPIO (servoPIN ، صحيح) ص وقت دورة العمل (واجب). النوم (1) GPIO.output (servoPIN ، خطأ) p. ChangeDutyCycle (0)
سيؤدي ذلك إلى إنتاج زاوية الخطوة المرغوبة لكل نبضة ، والتي ستعطي زاوية الدوران المطلوبة.
الآن التقطت الرسم البياني وقمت بتقطيعه إلى ثلاثة أقسام ، للحجر والورق والمقص. تم تثبيت محرك سيرفو في وسط المخطط. المؤشر / الغطاء متصل بعمود محرك سيرفو. يشير هذا العمود إلى تحرك الكمبيوتر وفقًا للمنطق المحسوب في البرنامج النصي.
الخطوة العاشرة: عمل المشروع؟
والآن حان وقت اللعب. دعونا نرى عمل المشروع.
إذا واجهت أي مشاكل في بناء هذا المشروع ، فلا تتردد في سؤالي. يرجى اقتراح مشاريع جديدة تريد مني القيام بها بعد ذلك.
أعط إبهامًا إذا كان قد ساعدك حقًا وتابع قناتي لمشاريع مثيرة للاهتمام.:)
شارك هذا الفيديو إذا أردت.
يسعدنا اشتراكك:
شكرا للقراءة!
الخطوة 11: الكود - مشروع ريبو
تمت إضافة الكود إلى مستودع GitHub والذي يمكن العثور عليه في قسم الكود.
Rahul24-06 / Rock-Paper-Scissors -
موصى به:
اصنع محول Rock Band Ekit الخاص بك (بدون محول قديم) ، غير مدمر!: 10 خطوات
اصنع مهايئ Rock Band Ekit الخاص بك (بدون محول قديم) ، غير مدمر!: بعد سماع مضيف بودكاست مشهور يذكر قلقه بشأن موت محول USB السلكي القديم ، بحثت عن حل DIY لتوصيل eKit أفضل / مخصص إلى RB . بفضل السيد DONINATOR على Youtube الذي صنع مقطع فيديو يشرح بالتفصيل صورته المماثلة
اختيار محرك خطوة ومحرك لمشروع شاشة الظل الآلي في Arduino: 12 خطوة (بالصور)
اختيار Step Motor و Driver لمشروع شاشة الظل الآلي من Arduino: في هذا Instructable ، سأنتقل إلى الخطوات التي اتخذتها لتحديد Step Motor و Driver لمشروع نموذج شاشة الظل الآلي. شاشات الظل هي طرازات Coolaroo ذات الكرنك اليدوية الشائعة وغير المكلفة ، وأردت استبدال
ماسح سيكلوب ثلاثي الأبعاد My Way خطوة بخطوة: 16 خطوة (بالصور)
Ciclop 3D Scanner My Way خطوة بخطوة: مرحبًا بالجميع ، سأدرك ماسح Ciclop ثلاثي الأبعاد الشهير ، كل الخطوات الموضحة جيدًا في المشروع الأصلي غير موجودة ، لقد قمت ببعض الإصلاح لتبسيط العملية ، أولاً أقوم بطباعة القاعدة ، وأعيد ضبط ثنائي الفينيل متعدد الكلور ، لكن استمر
واجهة خطوة MIDI (نسخة باللغة الإسبانية): 12 خطوة
MIDI Step Interface (versión En Español): Versión en inglés aquí.En este التعليمي te mostraremos cómo hacer una plataforma التفاعلية de luz y sonido، que puede ser usada para jugar el famoso “Simon Says” al igual que como un controlador MIDI. أمبوس أساليب الأوبرا تخدع الفطائر
واجهة خطوة MIDI: 12 خطوة (بالصور)
MIDI Step Interface: النسخة الإسبانية هنا. في هذا الدليل سوف نوضح لك كيفية إنشاء واجهة ضوئية وصوتية يمكن استخدامها للعب & quot؛ Simon Says & quot؛ وكواجهة MIDI. سيتم لعب كلا الوضعين بقدمك. خلفية المشروع ولد بسبب