एक मिनी रोबोट बनाएंमध्यमपाठ 2716 मिनट का पाठ

अपने रोबोट को आँखें देना: एक छोटा विज़न मॉडल

एक कैमरा और एक छोटा इमेज क्लासिफ़ायर आपके रोबोट को बता सकते हैं कि रास्ता किस तरफ मुड़ता है। छोटे सिंथेटिक (बनावटी) चित्रों पर एक मॉडल को ट्रेन करें और जानें कि असली दुनिया का डेटा क्यों ज़रूरी है।

पाठ वीडियो में

60 सेकंड में

अपने रोबोट को आँखें देना: एक छोटा विज़न मॉडल

एक कैमरा और एक छोटा इमेज क्लासिफ़ायर आपके रोबोट को बता सकते हैं कि रास्ता किस तरफ मुड़ता है। छोटे सिंथेटिक (बनावटी) चित्रों पर एक मॉडल को ट्रेन करें और जानें कि असली दुनिया का…

1/6
आसान शब्दों में
एक बच्चा कई बिल्लियों को देखकर सीखता है कि बिल्ली कैसी दिखती है: बड़ी, छोटी, काली, सफ़ेद, सोती हुई, कूदती हुई। कुछ समय बाद, वह बच्चा ऐसी बिल्ली को भी पहचान सकता है जिसे उसने पहले कभी नहीं देखा। एक छोटा विज़न मॉडल भी इसी तरह सीखता है: हम इसे सही उत्तर के साथ कई छोटी तस्वीरें दिखाते हैं, और यह पैटर्न सीख लेता है।
IR सेंसर रोबोट को सिर्फ़ उनके नीचे के कुछ मिलीमीटर फ़र्श के बारे में बताते हैं। एक कैमरा बहुत कुछ देख सकता है: आगे का रास्ता, कोई साइन बोर्ड, गेंद, या कोई व्यक्ति। लेकिन एक कैमरा हज़ारों नंबर (पिक्सेल) देता है, कोई सीधा "हाँ" या "ना" नहीं। एक इमेज क्लासिफ़ायर ऐसा मॉडल होता है जो उन पिक्सेल को एक लेबल में बदल देता है, जैसे "रास्ता बाईं ओर मुड़ता है", "सीधा" या "दाईं ओर मुड़ता है"।

कैमरा और मॉडल कहाँ रह सकते हैं

सेटअपयह कैसे काम करता हैध्यान में रखें
फ़ोन कैमरे के रूप मेंरोबोट पर लगा या ऊपर पकड़ा हुआ फ़ोन लैपटॉप पर तस्वीरें भेजता है; लैपटॉप मॉडल को चलाता है और रोबोट को कमांड भेजता हैशुरू करने के लिए सबसे आसान; एक भरोसेमंद लिंक (Wi-Fi, Bluetooth या केबल) की ज़रूरत होती है, और थोड़ी देरी जुड़ जाती है
कैमरे के साथ छोटा कंप्यूटरकैमरा मॉड्यूल वाला एक Raspberry Pi (Pico नहीं) रोबोट पर ही एक छोटा मॉडल चलाता हैमाइक्रोकंट्रोलर की तुलना में अधिक बिजली की खपत और महंगा; कहीं अधिक सक्षम
माइक्रोकंट्रोलर कैमरा बोर्डकुछ ESP32 बोर्ड एक छोटे कैमरे के साथ आते हैं; बहुत छोटे मॉडल सीधे बोर्ड पर चल सकते हैंबहुत कम मेमोरी: तस्वीरें छोटी और मॉडल बहुत हल्के होने चाहिए
किसी छोटे डिवाइस पर मॉडल चलाने को अक्सर TinyML कहा जाता है। इसका तरीका यह है कि हर चीज़ को छोटा रखा जाए: कम रिज़ॉल्यूशन वाली तस्वीरें (कभी-कभी हर तरफ सिर्फ़ कुछ दर्जन पिक्सेल, अक्सर ग्रे में), और एक छोटा मॉडल। आपका बोर्ड किन टूल्स और मॉडल साइज़ को सपोर्ट करता है, इसके लिए उसका मौजूदा डॉक्यूमेंटेशन देखें।

आप इसे कैसे बनाते हैं

  1. 1

    लेबल तय करें

    उन्हें कम और स्पष्ट रखें: उदाहरण के लिए बाएँ, सीधा, दाएँ।
  2. 2

    तस्वीरें इकट्ठा करें

    रोबोट के अपने कैमरे से, असली कमरे में, अलग-अलग रोशनी में, अलग-अलग पोज़ीशन पर।
  3. 3

    उन्हें लेबल करें

    हर तस्वीर को सही ग्रुप में रखें। यहाँ की गई गलतियाँ मॉडल की गलतियाँ बन जाती हैं।
  4. 4

    ट्रेन और टेस्ट करें

    ज्यादातर तस्वीरों पर ट्रेन करें; ऐसी तस्वीरों पर टेस्ट करें जो मॉडल ने कभी नहीं देखीं।
  5. 5

    छोटा करें और डिप्लॉय करें

    तस्वीरों और मॉडल को अपने डिवाइस के हिसाब से काफ़ी छोटा बनाएं।
  6. 6

    सुरक्षा के लिए एक सुरक्षित बैकअप रखें

    अगर मॉडल को पक्का न हो, तो धीमे हो जाएं या रुक जाएं। सुरक्षा की एक परत के रूप में डिस्टेंस सेंसर बनाए रखें।

पहले सिंथेटिक (बनावटी) तस्वीरें क्यों?

लैब में हम कोड के ज़रिए 8 × 8 पिक्सेल की नकली तस्वीरें बनाते हैं: एक हल्के रंग का फ़र्श जिस पर एक गहरी पट्टी बाईं ओर झुकती है, सीधी रहती है या दाईं ओर झुकती है, साथ ही थोड़ा रैंडम नॉइज़ और ब्राइटनेस। यह बहुत तेज़ है और कॉन्सेप्ट समझाता है। लेकिन सिर्फ़ नकली तस्वीरों पर ट्रेन किया गया मॉडल असली कैमरे की तस्वीरों पर आमतौर पर खराब प्रदर्शन करता है, क्योंकि असली तस्वीरों में परछाइयां, रिफ़्लेक्शन, मोशन ब्लर और एक अलग कैमरा होता है। यह वही सिम-टू-रियल गैप है जो आपने सिम्युलेटर में देखा था।
डेटा जो असली दुनिया में फेल हो जाता है
  • एक ही कमरे से, दिन के एक ही समय की सभी तस्वीरें
  • सिर्फ़ एकदम सही, बीच में केंद्रित (centred) उदाहरण
  • टेस्ट तस्वीरें जो ट्रेनिंग तस्वीरों की ही कॉपियां हैं
डेटा जो बेहतर टिकता है
  • अलग-अलग कमरे, रोशनी, फ़र्श और दिन के अलग-अलग समय
  • केंद्र से हटे हुए, धुंधले और आंशिक रूप से छिपे हुए उदाहरण भी
  • एक अलग दिन इकट्ठा किया गया एक अलग टेस्ट सेट
सावधान रहें
कैमरे और प्राइवेसी। रोबोट का कैमरा ऐसे लोगों को रिकॉर्ड कर सकता है जिन्होंने इसकी सहमति नहीं दी थी। इसे फ़र्श या ट्रैक की तरफ रखें, तस्वीरें अपने डिवाइस पर ही रखें, बिना अनुमति के दूसरों की (खासकर बच्चों की) तस्वीरें शेयर न करें, और जिसकी ज़रूरत न हो उसे डिलीट कर दें।
यह करें
रोबोट को किसी से टकराने से रोकने के लिए सिर्फ़ विज़न मॉडल पर कभी भरोसा न करें। मॉडल गलतियाँ करते हैं, खासकर नई रोशनी में। अल्ट्रासोनिक "बहुत पास आने पर रुकें" नियम को एक अलग सुरक्षा परत के रूप में रखें जिसे मॉडल बंद न कर सके।
यह आज़माएं। लैब में, आपका मॉडल काम करने लगे उसके बाद टेस्ट तस्वीरों को थोड़ा गहरा (कम ब्राइटनेस) करें। क्या एक्यूरेसी गिरती है? इसे ठीक करने के लिए आप कौन सा डेटा जोड़ेंगे?

और देखें और पढ़ें

लैब

एक छोटा क्लासिफ़ायर जो 8 × 8 कैमरे की तस्वीर से बताता है कि रास्ता बाईं ओर झुकता है, सीधा जाता है या दाईं ओर झुकता है, नई तस्वीरों पर कम से कम 85% एक्यूरेसी के साथ।

~30 min

समस्या

यह आपके ब्राउज़र में चलता है। make_image फ़र्श की एक नकली 8 × 8 ग्रे कैमरे की तस्वीर बनाता है: हल्का फ़र्श, बाएँ, सीधे या दाएँ झुकती हुई गहरी टेप, साथ में नॉइज़ और रैंडम ब्राइटनेस।

  1. स्टार्टर चलाएं। यह कुछ उदाहरण तस्वीरें दिखाता है और बताता है कि अभी कोई मॉडल नहीं है।
  2. X_train और y_train पर एक क्लासिफ़ायर ट्रेन करें और इसे model नाम के वेरिएबल में स्टोर करें। उदाहरण के लिए scikit-learn से LogisticRegression(max_iter=1000) या KNeighborsClassifier()। X_train की हर रो (row) एक तस्वीर है जिसे 64 नंबरों में फ़्लैट किया गया है।
  3. X_test पर एक्यूरेसी प्रिंट करें। लक्ष्य: नई तस्वीरों पर कम से कम 0.85 (जांच अपनी अलग तस्वीरें बनाती है)।
  4. गहरी (डार्क) टेस्ट तस्वीरें बनाएं (make_image की एक कॉपी में ब्राइटनेस रेंज बदलें) और लिखें कि एक्यूरेसी का क्या होता है, और एक असली रोबोट पर आप इसके लिए क्या करेंगे।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1आपका क्लासिफ़ायर सिंथेटिक टेस्ट सेट पर 99% अंक लाता है। यह इस बात की गारंटी क्यों नहीं है कि यह आपके रोबोट के असली कैमरे पर भी काम करेगा?दिखाएं

टेस्ट तस्वीरें उसी कोड से आई थीं जिससे ट्रेनिंग तस्वीरें आई थीं, इसलिए वे एक ही "दुनिया" साझा करती हैं: एक ही जैसी टेप की बनावट, नॉइज़ और ब्राइटनेस रेंज। एक असली कैमरा परछाइयां, रिफ़्लेक्शन, ब्लर, लेंस डिस्टॉर्शन और एक अलग एंगल जोड़ता है। ईमानदार टेस्ट रोबोट की असली तस्वीरों पर होता है, जो ट्रेनिंग तस्वीरों से अलग दिन और अलग जगह पर ली गई हों।

Q2रोबोट को एक सेकंड में 10 बार फ़ैसला लेना है, और आपके बोर्ड में बहुत कम मेमोरी है। आप मॉडल और इमेजेस में क्या बदलाव करेंगे?दिखाएं

लैब की तरह ही, इमेजेस को बहुत छोटा और ग्रे रखें, और एक छोटा मॉडल चुनें: एक लीनियर क्लासिफायर या बहुत छोटा न्यूरल नेटवर्क। कम पिक्सल और कम मॉडल वेट्स का मतलब है कम मेमोरी और तेज़ी से फ़ैसले। फिर टेस्ट करें कि एक्यूरेसी अभी भी काफ़ी अच्छी है या नहीं। अगर नहीं है, तो मॉडल को किसी फ़ोन या लैपटॉप पर ले जाएँ और थोड़ी ज़्यादा देरी को स्वीकार करें, साथ ही रोबोट पर एक लोकल सेफ़्टी स्टॉप रखें।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या मैं बिना किसी पावरफुल कंप्यूटर के मॉडल ट्रेन कर सकता हूँ?

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

मुझे कितनी तस्वीरों की ज़रूरत होगी?

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

इसके बजाय किसी बड़े विज़न-लैंग्वेज मॉडल का उपयोग क्यों न करें?

आप कर सकते हैं, उदाहरण के लिए लैपटॉप पर या किसी ऑनलाइन सर्विस के ज़रिए, लेकिन यह धीमा होता है, इसके लिए नेटवर्क या एक ताकतवर कंप्यूटर चाहिए, और इसमें खर्च भी ज़्यादा होता है। "बाएँ, सीधा या दाएँ" जैसे सरल और तुरंत निर्णय के लिए, एक छोटा क्लासिफ़ायर अक्सर बेहतर होता है। बड़े मॉडल खुले सवालों के लिए उपयोगी होते हैं, जैसे "टेबल पर क्या रखा है?"।

"मॉडल को पक्का न होना" का क्या मतलब है?

कई क्लासिफ़ायर हर लेबल के लिए एक संभावना (प्रोबेबिलिटी) देते हैं। यदि सबसे ऊपर वाले लेबल की संभावना कम है, या दो लेबल बहुत करीबी हैं, तो मॉडल असमंजस में होता है। एक रोबोट सिर्फ़ अंदाज़े पर काम करने के बजाय इसे "धीमे हो जाओ और दोबारा देखो" के रूप में ले सकता है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें