جدول المحتويات:
- الخطوة 1: CNN and Transfer Learning: Some Theory
- الخطوة 2: جهز بيئتك
- الخطوة 3: قم بتثبيت AXeleRate وتشغيل الاختبارات
- الخطوة 4: أعد تدريب النموذج ، وقم بتحويل نموذج Keras إلى.kmodel
- الخطوة 5: قم بتشغيل النموذج على Sipeed Maix Bit
- الخطوة 6: الاستنتاجات
فيديو: التعرف على الصور باستخدام لوحات K210 و Arduino IDE / Micropython: 6 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
لقد كتبت بالفعل مقالًا واحدًا حول كيفية تشغيل عروض OpenMV التوضيحية على Sipeed Maix Bit وقمت أيضًا بعمل مقطع فيديو لعرض توضيحي لاكتشاف الكائنات باستخدام هذه اللوحة. أحد الأسئلة العديدة التي طرحها الناس هو - كيف يمكنني التعرف على كائن لم يتم تدريب الشبكة العصبية عليه؟ بمعنى آخر ، كيفية إنشاء مصنف الصور الخاص بك وتشغيله باستخدام تسريع الأجهزة.
هذا سؤال مفهوم ، لأنه بالنسبة لمشروعك ربما لا تحتاج إلى التعرف على بعض الأشياء العامة ، مثل القطط والكلاب والطائرات. تريد التعرف على شيء محدد ، على سبيل المثال ، سلالة من الكلاب لهذا الباب الآلي للحيوانات الأليفة ، أو نوع نباتي للفرز ، أو أي تطبيقات أخرى يمكنك التفكير فيها!
حصلت عليك! سأعلمك في هذه المقالة كيفية إنشاء مصنف الصور المخصص الخاص بك مع نقل التعلم في Keras ، وتحويل النموذج المدرب إلى تنسيق.kmodel وتشغيله على لوحة Sipeed (يمكن أن تكون أي لوحة أو Bit / Dock أو Go) باستخدام Micropython أو اردوينو IDE. ولن يكون سوى خيالك هو الحد الأقصى للمهام التي يمكنك القيام بها بهذه المعرفة.
تحديث مايو 2020: عندما رأيت كيف أن مقالتي ومقاطع الفيديو الخاصة بي على التعرف على الصور باستخدام لوحات K210 لا تزال تحظى بشعبية كبيرة ومن بين أفضل النتائج على YouTube و Google ، قررت تحديث المقالة لتضمين معلومات حول aXeleRate ، إطار العمل المستند إلى Keras للذكاء الاصطناعي على أنا أطور الحافة.
يعتمد aXeleRate ، بشكل أساسي ، على مجموعة البرامج النصية التي استخدمتها لتدريب نماذج التعرف على الصور / اكتشاف الكائنات - مدمجة في إطار عمل واحد ومُحسَّن لسير العمل على Google Colab. إنه أكثر ملاءمة للاستخدام وأكثر تحديثًا.
بالنسبة للنسخة القديمة من المقال ، لا يزال بإمكانك رؤيتها على موقع steemit.com.
الخطوة 1: CNN and Transfer Learning: Some Theory
الشبكات العصبية التلافيفية أو CNN هي فئة من الشبكات العصبية العميقة ، وهي الأكثر شيوعًا في تحليل الصور المرئية. هناك الكثير من الأدبيات على الإنترنت حول هذا الموضوع وسأقدم بعض الروابط في الجزء الأخير من المقالة. باختصار ، يمكنك التفكير في CNN كسلسلة من المرشحات ، مطبقة على الصورة ، كل مرشح يبحث عن ميزة معينة في الصورة - في الطبقات التلافيفية السفلية ، تكون الميزات عادةً عبارة عن خطوط وأشكال بسيطة وفي الطبقات العليا الميزات يمكن أن تكون أكثر تحديدًا ، على سبيل المثال أجزاء من الجسم ، نسيج محدد ، أجزاء من الحيوانات أو النباتات ، إلخ. يمكن لوجود مجموعة معينة من الميزات أن يعطينا فكرة عما يمكن أن يكون عليه الكائن في الصورة. شعيرات ، عينان وأنف أسود؟ يجب أن تكون قطة! أوراق خضراء ، جذع شجرة؟ تبدو كشجرة!
آمل أن تكون قد حصلت على فكرة حول مبدأ عمل CNN الآن. عادةً ما تحتاج الشبكة العصبية العميقة إلى آلاف الصور وساعات من وقت التدريب (يعتمد على الأجهزة التي تستخدمها للتدريب) "لتطوير" عوامل تصفية مفيدة للتعرف على أنواع الكائنات التي تريدها. لكن هناك طريق مختصر.
نموذج تم تدريبه على التعرف على الكثير من الأشياء الشائعة المختلفة (القطط ، الكلاب ، الأجهزة المنزلية ، النقل ، إلخ) يحتوي بالفعل على الكثير من تلك المرشحات المفيدة "المطورة" ، لذلك لا نحتاج إليها لتعلم التعرف على الأشكال والأجزاء الأساسية من الأشياء مرة أخرى. يمكننا فقط إعادة تدريب الطبقات القليلة الأخيرة من الشبكة للتعرف على فئات معينة من الكائنات المهمة بالنسبة لنا. وهذا ما يسمى "نقل التعلم". أنت بحاجة إلى بيانات تدريب أقل بكثير ووقت حساب مع تعلم النقل ، نظرًا لأنك تقوم فقط بتدريب الطبقات القليلة الأخيرة من الشبكة ، والتي تتكون ربما من بضع مئات من الخلايا العصبية.
تبدو رائعة ، أليس كذلك؟ دعونا نرى كيفية تنفيذه.
الخطوة 2: جهز بيئتك
هناك طريقتان لاستخدام aXeleRate: التشغيل محليًا على جهاز Ubuntu أو في Google Colab. للتشغيل في Google Colab ، ألق نظرة على هذا المثال:
تصنيف الصور Colab Notebook
أصبح تدريب نموذجك محليًا وتصديره لاستخدامه مع تسريع الأجهزة أسهل بكثير الآن.
بيئة العمل الخاصة بي هي Ubuntu 16.04 ، 64 بت. يمكنك استخدام الجهاز الظاهري لتشغيل صورة Ubuntu لأننا لن نستخدم GPU للتدريب. مع بعض التعديلات ، يمكنك أيضًا تشغيل البرنامج النصي للتدريب على Windows ، ولكن لتحويل النموذج ، ستحتاج إلى استخدام نظام Linux. لذا ، فإن البيئة المفضلة لك لتنفيذ هذا البرنامج التعليمي هي Ubuntu 16.04 ، التي تعمل محليًا أو في جهاز افتراضي.
لنبدأ بتثبيت Miniconda ، وهو مدير بيئة Python. سننشئ بيئة معزولة ، لذلك لن نغير أي شيء عن طريق الخطأ في بيئة Python لنظامك.
قم بتنزيل المثبت هنا
بعد اكتمال التثبيت ، قم بإنشاء بيئة جديدة:
كوندا يخلق -n ml python = 3.7
دعونا ننشط البيئة الجديدة
كوندا تفعيل مل
ستظهر بادئة قبل bash shell مع اسم البيئة ، للإشارة إلى أنك تعمل الآن في تلك البيئة.
الخطوة 3: قم بتثبيت AXeleRate وتشغيل الاختبارات
قم بتثبيت aXeleRate على جهازك المحلي باستخدام
نقطة تثبيت git +
لتنزيل أمثلة ، قم بتشغيل:
استنساخ بوابة
يمكنك إجراء اختبارات سريعة باستخدام Testing_training.py في مجلد aXeleRate. سيجري التدريب والاستدلال لكل نوع نموذج ، وحفظ وتحويل النماذج المدربة. نظرًا لأنه تدريب لمدة 5 فترات فقط ومجموعة البيانات صغيرة جدًا ، فلن تتمكن من الحصول على نماذج مفيدة ، ولكن هذا البرنامج النصي مخصص فقط للتحقق من عدم وجود أخطاء.
الخطوة 4: أعد تدريب النموذج ، وقم بتحويل نموذج Keras إلى.kmodel
في مثال اللعبة هذا ، سنقوم بتدريب النموذج على التعرف على Santa Claus و Arduino Uno. من الواضح أنه يمكنك اختيار فئات أخرى. قم بتنزيل مجموعة البيانات من هنا. قم بإنشاء نسخة من ملف classifier.json في مجلد التكوين ، ثم قم بتغييره وفقًا لذلك ، على غرار ملف التكوين في لقطة الشاشة - تأكد من صحة مسار مجلدات التدريب والتحقق من الصحة!
قم بتشغيل الأمر التالي من مجلد aXeleRate:
python axelerate / train.py - c configs / santa_uno.json
سيبدأ التدريب. إذا لم تتحسن دقة التحقق (مقياس التحقق الخاص بنا) لمدة 20 حقبة ، فسيتوقف التدريب قبل الأوان. في كل مرة تتحسن دقة التحقق من الصحة ، يتم حفظ النموذج في مجلد المشروع. بعد انتهاء التدريب ، يقوم aXeleRate تلقائيًا بتحويل أفضل نموذج إلى تنسيقات محددة - يمكنك اختيار "tflite" أو "k210" أو "edgetpu" اعتبارًا من الآن.
الخطوة 5: قم بتشغيل النموذج على Sipeed Maix Bit
هناك طريقتان لتشغيل النموذج الموجود لديك الآن على أجهزة Sipeed Maix: برنامج micropython الثابت و Arduino IDE. يعد استخدام أجهزة Micropython أسهل في الاستخدام ، ولكنها تشغل جزءًا كبيرًا من الذاكرة المتاحة ، لذلك هناك مساحة أقل متبقية للنموذج. Arduino IDE هو في الأساس كود C ، وهو أكثر كفاءة وبصمة ذاكرة أصغر. يبلغ حجم نموذجي 1.9 ميجا بايت فقط ، لذا يعمل كلا الخيارين معه. يمكنك استخدام طرز بحجم 2.9 ميجا بايت مع Micropython ، لأي شيء أكبر تحتاج إلى التفكير في استخدام Arduino IDE.
قم بتنزيل OpenMV IDE من هنا مع الحد الأدنى من البرامج الثابتة micropython من هنا.
انسخ البرنامج الثابت باستخدام أداة kflash_gui. يمكنك أيضًا اختيار نسخ النموذج المدرَّب ليومض أيضًا ، كما هو موضح في لقطة الشاشة. أو انسخه إلى بطاقة SD (في هذه الحالة انسخ.kmodel إلى جذر بطاقة SD وأدخل بطاقة SD في Sipeed Maix Bit)
افتح OpenMV IDE واضغط على زر الاتصال. افتح البرنامج النصي santa_uno.py من مجلد example_scripts واضغط على زر البدء. يجب أن تشاهد بثًا مباشرًا من الكاميرا ، وإذا فتحت Serial Terminal ، فستحصل على أفضل نتيجة للتعرف على الصور بدرجة الثقة!
للاستخدام مع Arduino IDE ، تحتاج أولاً إلى اتباع الإجراء الخاص بإضافة لوحات Sipeed إلى Arduino IDE ، والتي تم توثيقها هنا. يجب أن يكون إصدار Arduino IDE الخاص بك 1.8.12 على الأقل. بعد إضافة اللوحات ، افتح رسم mobilenet_v1_transfer_learning.ino وقم بتحميله على Sipeed Maix Bit. قم بتغيير اسم النموذج الموجود على بطاقة SD إلى "طراز" (أو قم بعمل نسخة بهذا الاسم). يمكنك تغيير أسماء التسميات في names.cpp. سيعرض دفق الكاميرا الحية على شاشة Sipeed Maix مع أعلى نتيجة للتعرف على الصور.
الخطوة 6: الاستنتاجات
فيما يلي بعض المواد الإضافية لقراءتها حول موضوع شبكات CNN ونقل التعلم:
نقل التعلم باستخدام Mobilenet و Keras شرح رائع لتعلم النقل ، يستخدم هذا البرنامج التعليمي نسخة معدلة من الكود من تلك المقالة.
القطط والكلاب والشبكات العصبية التلافيفية يشرح الأساسيات وراء شبكات CNN ويصور بعض المرشحات. مع القطط!
تدريب وتحويل وتشغيل MobileNet على Sipeed MaixPy و MaixDuino! برنامج تعليمي من فريق Sipeed حول كيفية تدريب صفوف Mobilenet 1000 من البداية (بدون نقل التعلم). يمكنك تنزيل نموذجهم المدرّب مسبقًا وتجربته!
آمل أن تتمكن من استخدام المعرفة التي لديك الآن لبناء بعض المشاريع الرائعة مع رؤية الآلة! يمكنك شراء لوحات Sipeed من هنا ، فهي من بين أرخص الخيارات المتاحة لـ ML على الأنظمة المضمنة.
موصى به:
اكتشاف الأجسام باستخدام لوحات Sipeed MaiX (Kendryte K210): 6 خطوات
اكتشاف الكائن باستخدام لوحات Sipeed MaiX (Kendryte K210): استمرارًا لمقالتي السابقة حول التعرف على الصور باستخدام لوحات Sipeed MaiX ، قررت كتابة برنامج تعليمي آخر يركز على اكتشاف الكائنات. ظهرت مؤخرًا بعض الأجهزة المثيرة للاهتمام مع شريحة Kendryte K210 ، بما في ذلك S
نظام التعرف على الحريق القائم على معالجة الصور ونظام الإطفاء: 3 خطوات
نظام التعرف على الحرائق القائم على معالجة الصور ونظام الإطفاء: مرحبًا أيها الأصدقاء ، هذا نظام يعتمد على معالجة الصور للكشف عن الحرائق وإطفاء الحرائق باستخدام Arduino
التعرف على النجوم باستخدام رؤية الكمبيوتر (OpenCV): 11 خطوة (بالصور)
التعرف على النجوم باستخدام رؤية الكمبيوتر (OpenCV): سيصف لك هذا التوجيه كيفية إنشاء برنامج رؤية كمبيوتر للتعرف تلقائيًا على أنماط النجوم في صورة ما. تستخدم الطريقة مكتبة OpenCV (رؤية كمبيوتر مفتوحة المصدر) لإنشاء مجموعة من مجموعات HAAR المدربة التي يمكن
التعرف على الوجوه والتعرف عليها - Arduino Face ID باستخدام OpenCV Python و Arduino: 6 خطوات
التعرف على الوجه والتعرف عليه | Arduino Face ID باستخدام OpenCV Python و Arduino: التعرف على الوجه يعد AKA Face ID أحد أهم الميزات على الهواتف المحمولة في الوقت الحاضر. لذلك ، كان لدي سؤال & quot؛ هل يمكنني الحصول على معرف وجه لمشروع Arduino الخاص بي & quot؛ والجواب نعم … بدأت رحلتي على النحو التالي: الخطوة 1: الوصول إلينا
التعرف على الصور باستخدام TensorFlow على Raspberry Pi: 6 خطوات
التعرف على الصور باستخدام TensorFlow على Raspberry Pi: Google TensorFlow عبارة عن مكتبة برامج مفتوحة المصدر للحسابات الرقمية باستخدام الرسوم البيانية لتدفق البيانات. يتم استخدامه من قبل Google في مختلف مجالات التعلم الآلي وتقنيات التعلم العميق. تم تطوير TensorFlow في الأصل بواسطة Google Brai