جدول المحتويات:

التعرف على الصور باستخدام لوحات K210 و Arduino IDE / Micropython: 6 خطوات (بالصور)
التعرف على الصور باستخدام لوحات K210 و Arduino IDE / Micropython: 6 خطوات (بالصور)

فيديو: التعرف على الصور باستخدام لوحات K210 و Arduino IDE / Micropython: 6 خطوات (بالصور)

فيديو: التعرف على الصور باستخدام لوحات K210 و Arduino IDE / Micropython: 6 خطوات (بالصور)
فيديو: Object Detection With Sipeed MaiX Boards(Kendryte K210) 2024, شهر نوفمبر
Anonim
Image
Image

لقد كتبت بالفعل مقالًا واحدًا حول كيفية تشغيل عروض 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 وتشغيل الاختبارات
قم بتثبيت AXeleRate وتشغيل الاختبارات

قم بتثبيت aXeleRate على جهازك المحلي باستخدام

نقطة تثبيت git +

لتنزيل أمثلة ، قم بتشغيل:

استنساخ بوابة

يمكنك إجراء اختبارات سريعة باستخدام Testing_training.py في مجلد aXeleRate. سيجري التدريب والاستدلال لكل نوع نموذج ، وحفظ وتحويل النماذج المدربة. نظرًا لأنه تدريب لمدة 5 فترات فقط ومجموعة البيانات صغيرة جدًا ، فلن تتمكن من الحصول على نماذج مفيدة ، ولكن هذا البرنامج النصي مخصص فقط للتحقق من عدم وجود أخطاء.

الخطوة 4: أعد تدريب النموذج ، وقم بتحويل نموذج Keras إلى.kmodel

أعد تدريب النموذج ، وقم بتحويل نموذج Keras إلى.kmodel
أعد تدريب النموذج ، وقم بتحويل نموذج 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 Bit
قم بتشغيل النموذج على Sipeed Maix Bit
قم بتشغيل النموذج على Sipeed Maix Bit
قم بتشغيل النموذج على Sipeed Maix Bit
قم بتشغيل النموذج على Sipeed Maix Bit
قم بتشغيل النموذج على 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 على الأنظمة المضمنة.

موصى به: