माइक्रोकंट्रोलर और Arduino के लिए TensorFlow Lite के साथ एआई मैजिक वॉन्ड

1. परिचय

आपको क्या बनाना होगा

इस कोडलैब में, हम Arduino Nano 33 BLE पर डीप लर्निंग मॉडल चलाने के लिए, TensorFlow Lite For Microcontrollers का इस्तेमाल करना सीखेंगे. माइक्रोकंट्रोलर, एक डिजिटल "जादुई की छड़ी" में बदल गया है उपयोगकर्ता की ओर से, हाथ हिलाने और अलग-अलग तरह के मंत्रों के मंत्रों का इस्तेमाल करने की सुविधा मिलती है. जब उपयोगकर्ता छड़ी को हिलाता है, तो यह जटिल, बहु-आयामी सेंसर डेटा, जो मानव के लिए मुश्किल होता है, को मॉडल में इनपुट के रूप में पास किया जाता है. इससे एक सरल क्लासिफ़िकेशन आउटपुट होता है, जो हमें कई गतिविधियों में से एक होने पर सूचना देता है.

9208eb1207211349.gif

माइक्रोकंट्रोलर पर मशीन लर्निंग

मशीन लर्निंग का इस्तेमाल करके ऐसे काम के टूल बनाए जा सकते हैं जिनसे उपयोगकर्ता ज़िंदगी आसान होती है, जैसे Google Assistant. हालांकि, अक्सर इन अनुभवों को प्रोसेस करने के लिए बहुत सारे कंप्यूटेशन या संसाधनों की ज़रूरत होती है. इनमें ज़्यादा बेहतर क्लाउड सर्वर या डेस्कटॉप शामिल हो सकते हैं. हालांकि, अब माइक्रोकंट्रोलर जैसे छोटे और कम क्षमता वाले हार्डवेयर पर मशीन लर्निंग का अनुमान चलाया जा सकता है.

माइक्रोकंट्रोलर बहुत आम हैं, सस्ते हैं, इनके लिए बहुत कम ऊर्जा की ज़रूरत होती है, और ये बहुत भरोसेमंद होते हैं. वे सभी प्रकार के घरेलू उपकरणों का हिस्सा हैं: उपकरण, कार और खिलौनों के बारे में सोचें. बल्कि, माइक्रोकंट्रोलर से चलने वाले करीब 30 अरब डिवाइस हर साल तैयार किए जाते हैं.

1914a419dfacf0b5.jpeg

हम मशीन लर्निंग को छोटे-छोटे माइक्रोकंट्रोलर पर उपलब्ध कराकर, उन अरबों डिवाइसों को बेहतर तरीके से इस्तेमाल करने की क्षमता बढ़ा सकते हैं जिनका इस्तेमाल हम अपनी ज़िंदगी में करते हैं. इसके लिए, हम महंगे हार्डवेयर या भरोसेमंद इंटरनेट कनेक्शन की ज़रूरत नहीं पड़ती. ऐसे स्मार्ट उपकरणों की कल्पना करें जो आपकी रोज़मर्रा की ज़िंदगी के हिसाब से खुद को बदल सकें. साथ ही, इंडस्ट्रियल सेंसर के साथ जो समस्याओं और सामान्य इस्तेमाल के बीच का फ़र्क़ समझ सकते हैं. साथ ही, ऐसे जादुई खिलौने भी सोचिए जो बच्चों को मज़ेदार और दिलचस्प तरीके से सीखने में मदद कर सकते हैं.

माइक्रोकंट्रोलर के लिए TensorFlow Lite (सॉफ़्टवेयर)

864114d0c2b4c919.png

TensorFlow, Google का एक ओपन सोर्स मशीन लर्निंग फ़्रेमवर्क है. यह ट्रेनिंग और रनिंग मॉडल के लिए इस्तेमाल किया जाता है. TensorFlow Lite एक सॉफ़्टवेयर फ़्रेमवर्क है, जो TensorFlow का ऑप्टिमाइज़ किया गया वर्शन है. इसे मोबाइल फ़ोन जैसे छोटे और कम पावर वाले डिवाइसों पर tensorflow मॉडल चलाने के लिए बनाया गया है.

TensorFlow Lite For Microsoftcontrollers एक सॉफ़्टवेयर फ़्रेमवर्क है. यह TensorFlow का ऑप्टिमाइज़ किया गया वर्शन है. इसे माइक्रोकंट्रोलर जैसे छोटे हार्डवेयर पर टेंसरफ़्लो मॉडल चलाने के लिए बनाया गया है. यह एम्बेड किए गए इन एनवायरमेंट में ज़रूरी शर्तों को पूरा करता है.इसका मतलब है कि इसका बाइनरी साइज़ छोटा है, इसे ऑपरेटिंग सिस्टम के साथ काम करने, किसी स्टैंडर्ड C या C++ लाइब्रेरी या डाइनैमिक मेमोरी ऐलोकेशन वगैरह की ज़रूरत नहीं है.

Arduino Nano 33 BLE (हार्डवेयर)

bcd452d4d660efa9.jpeg

Arduino एक लोकप्रिय ओपन-सोर्स प्लैटफ़ॉर्म है. इसका इस्तेमाल इलेक्ट्रॉनिक प्रोजेक्ट बनाने के लिए किया जाता है. इसमें ये चीज़ें शामिल हैं:

  1. इस कोडलैब में इस्तेमाल किया जाने वाला, Arduino Nano 33 BLE जैसा एक फ़िज़िकल प्रोग्राम किया जा सकने वाला सर्किट बोर्ड, अक्सर माइक्रोकंट्रोलर होता है.
  2. Arduino IDE (इंटिग्रेटेड डेवलपमेंट एनवायरमेंट) एक सॉफ़्टवेयर है. इसका इस्तेमाल कंप्यूटर कोड लिखने और उसे फ़िज़िकल बोर्ड पर अपलोड करने के लिए किया जाता है.

Arduino Nano 33 BLE, माइक्रोकंट्रोलर पर आधारित प्लैटफ़ॉर्म है. यह सिंगल सर्किट बोर्ड पर मौजूद एक छोटा कंप्यूटर है. इसका प्रोसेसर, मेमोरी, और I/O हार्डवेयर अन्य डिवाइसों पर डिजिटल सिग्नल भेजने और पाने में मदद करता है. किसी कंप्यूटर से अलग, माइक्रोकंट्रोलर शक्तिशाली नहीं है और आम तौर पर कोई ऑपरेटिंग सिस्टम नहीं चलाता है. इसके बजाय, उनके प्रोसेसर छोटे होते हैं, लेकिन ज़्यादा मेमोरी नहीं होती. साथ ही, आपके लिखे गए प्रोग्राम सीधे हार्डवेयर पर चलते हैं. लेकिन क्योंकि उन्हें जितना संभव हो सके उतने आसान होने के लिए डिज़ाइन किया गया है, इसलिए माइक्रोकंट्रोलर बहुत कम ऊर्जा का उपयोग कर सकता है.

आपको क्या करना होगा

  • Arduino Nano 33 BLE माइक्रोकंट्रोलर को सेटअप करें और इसे डिजिटल "मैजिक वंड" में बदलें
  • Arduino IDE को सेटअप करें और ज़रूरी लाइब्रेरी इंस्टॉल करें
  • प्रोग्राम को डिवाइस पर डिप्लॉय करें
  • जादू की छड़ी हिलाकर, कई तरह के मंत्र सेट करें और अनुमान देखें

आपको इन चीज़ों की ज़रूरत होगी

2. Arduino माइक्रोकंट्रोलर सेट अप करें

अपना Arduino अनपैक करें

इसे बॉक्स से हटाएं और पैकिंग फ़ोम से बाहर निकालें. यह सुचालक है और अन्य मामलों में समस्याएं पैदा कर सकता है!

6ed84a651c871a58.jpeg

इसे अपने लैपटॉप में प्लग करें

  • माइक्रोयूएसबी केबल को चिप के सॉकेट में लगाएं.
  • केबल के दूसरे सिरे को अपने लैपटॉप पर यूएसबी सॉकेट में लगाएं.
  • Arduino (नीचे दी गई इमेज में सबसे ऊपर बाईं ओर) पर सबसे नीचे बाईं ओर मौजूद एलईडी लाइट जलनी चाहिए.

c6936696f9659104.jpeg

वर्कफ़्लो के बारे में जानकारी हासिल करना

99852afbed7e78b0.png

जैसा कि ऊपर दिए गए डायग्राम में दिखाया गया है, Arduino पर TFLite इंटरप्रेटर समय-समय पर मॉडल पर अनुमान लगाता है. यह मॉडल, प्रोसेस किए गए एक्सलरोमीटर डेटा का इस्तेमाल इनपुट के तौर पर करता है. साथ ही, यह सुझाव देता है कि हाथ के किस जेस्चर का सबसे ज़्यादा इस्तेमाल होगा. इसके बाद, वह आउटपुट प्रिंट होगा और सही एलईडी लाइट जलेगी.

3. Arduino IDE सेटअप करें

1. Arduino IDE डाउनलोड करें

Arduino माइक्रोकंट्रोलर पर प्रोग्राम को डिप्लॉय करने के लिए, हम Arduino IDE का इस्तेमाल करते हैं.

इसे डाउनलोड करने के बाद, उस ऐप्लिकेशन पर क्लिक करके Arduino IDE इंस्टॉल करें और खोलें जिसका आइकॉन ऐसा दिखता है: 75717f13527f36b9.png

शुरुआती लैंडिंग पेज इस तरह खुलेगा:

933c91e6e1997c61.png

2. बोर्ड मैनेजर को सेटअप करना

  1. Arduino मेन्यू से Tools -> Board: "Arduino .." —> Boards Manager को चुनें
  2. "Arduino Nano 33 BLE" खोजें और Arduino nRF528x Boards (Mbed OS) को इंस्टॉल करें. इससे यह पक्का होगा कि हमारा Arduino Nano 33 BLE माइक्रोकंट्रोलर, Arduino IDE के साथ काम करता है. 817c63346152eda9.png
  1. Arduino मेन्यू से Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE" को चुनें

9357691e1a1348eb.png

  1. आखिर में, पुष्टि करें कि आपका चुना गया बोर्ड "Arduino Nano 33 BLE" है पर क्लिक करें.

aa08706bb84fa9b2.png

3. पोर्ट को सेटअप करें

Arduino मेन्यू से Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) चुनें. आपको इससे मिलता-जुलता कुछ दिखेगा:

8c25990d0c6fb6f8.png

4. बोर्ड के कनेक्शन की जांच करें

Arduino मेन्यू से Tools -> Get Board Info चुनें. आपको इससे मिलता-जुलता कुछ दिखेगा:

ccd8f5305be6cf59.png

4. लाइब्रेरी इंस्टॉल करें

1. TensorFlow Arduino लाइब्रेरी

इस लाइब्रेरी में, माइक्रोकंट्रोलर के लिए TensorFlow Lite के सभी उदाहरण हैं, जिनमें इस कोडलैब के लिए ज़रूरी जादू की छड़ी का सोर्स कोड भी शामिल है.

  1. Arduino मेन्यू से Sketch -> Include Library -> Add .ZIP Library... को चुनें
  2. डाउनलोड की गई TensorFlow Arduino लाइब्रेरी .zip जोड़ें.

2. LSM9DS1 Arduino लाइब्रेरी

इस लाइब्रेरी की मदद से, Arduino Nano 33 BLE Sense पर, LSM9DS1 IMU के एक्सलरोमीटर, मैग्नेटोमीटर, और जाइरोस्कोप वैल्यू को पढ़ा जा सकता है.

  1. Arduino मेन्यू से Sketch -> Include -> Manage Libraries... को चुनें
  2. "Arduino_LSM9DS1" को खोजें और इंस्टॉल करें. ac2f78a737c5f233.png

5. उदाहरण लोड करें और बनाएं

1. उदाहरण लोड करें

Arduino मेन्यू से File -> Examples -> Arduino_TensorFlowLite -> magic_wand चुनें, ताकि सैंपल कोड लोड किया जा सके.

de349f2d3cb49b98.png

इससे मैजिक वैंड का सोर्स कोड लोड हो जाएगा.

cda8c35a597b0798.png

2. उदाहरण तैयार करें

स्केच विंडो में मौजूद Upload बटन पर क्लिक करें.

71cb1474d5e14669.png

कुछ मिनट के बाद आपको लाल रंग का टेक्स्ट दिखेगा, जिसका मतलब है कि फ़्लैशिंग पूरी हो गई है. वीडियो अपलोड करने के दौरान, दाईं ओर मौजूद एलईडी लाइट जलती है और फिर वीडियो के आखिर में बंद हो जाती है.

3df1d0858c6e40a4.png

6. डेमो

जादू की छड़ी, फ़िलहाल तीन जेस्चर की पहचान कर सकती है, जैसा कि यहां दिखाया गया है: 99a607da66af9fc8.png

  1. विंग: सबसे ऊपर बाएं कोने से शुरू करें और "W" अक्षर को ध्यान से ट्रेस करें दो सेकंड के लिए.
  2. रिंगटोन का इस्तेमाल करना: सीधा शुरू करें, छड़ी को एक सेकंड तक घड़ी की दिशा में गोल घुमाएं.
  3. स्लोप: छड़ी को ऊपर की ओर और एलईडी को अपनी ओर रखकर पकड़ें. छड़ी को बाईं ओर मौजूद इन्लाइन पर, नीचे की ओर ले जाएं. इसके बाद, छड़ी को एक सेकंड के लिए दाईं ओर हॉरिज़ॉन्टल तौर पर ले जाएं.

नीचे दी गई इमेज में दो जेस्चर दिखाए गए हैं. सबसे पहले, स्लोप और फिर विंग (इसका इस्तेमाल अपने डेमो के लिए रेफ़रंस के तौर पर करें).

9208eb1207211349.gif

डेमो चलाने के लिए, नीचे दिए गए निर्देशों का पालन करें:

  1. यूएसबी को प्लग-इन करके, Arduino मेन्यू से Tools -> Serial Monitor को चुनें. यह शुरुआत में बिना आउटपुट वाली एक खाली स्क्रीन खोलेगा.

38e8d53652eb28f2.png

  1. ऊपर दिए गए हर आकार को ध्यान से ट्रेस करने के लिए Arduino माइक्रोकंट्रोलर को मूव करें और देखें कि सीरियल मॉनिटर, जेस्चर की पहचान करता है या नहीं.

60b8a0017bcae419.png

  1. सीरियल मॉनिटर के आउटपुट से, हमने पाया कि जादू की छड़ी ने वाकई सभी आकारों का पता लगाया है! आप यह भी देखेंगे कि दाईं ओर मौजूद एलईडी लाइटें जल रही हैं.

7. अगले चरण

बधाई हो, आपने हाथ के जेस्चर (हाव-भाव) की पहचान करने वाली अपनी पहली "जादुई छड़ी" बना ली है का इस्तेमाल एक Arduino माइक्रोकंट्रोलर पर किया है!

हमें उम्मीद है कि माइक्रोकंट्रोलर्स के लिए TensorFlow Lite के डेवलपमेंट की यह जानकारी आपको पसंद आई होगी. माइक्रोकंट्रोलर पर डीप लर्निंग का आइडिया नया और रोमांचक है. हम आपको इसे आज़माने के लिए बढ़ावा देते हैं!

पहचान फ़ाइलें

647c3ef0dc103804.png

धन्यवाद और निर्माण का आनंद लें!