अपने रोबोट को आँखें देना: एक छोटा विज़न मॉडल
एक कैमरा और एक छोटा इमेज क्लासिफ़ायर आपके रोबोट को बता सकते हैं कि रास्ता किस तरफ मुड़ता है। छोटे सिंथेटिक (बनावटी) चित्रों पर एक मॉडल को ट्रेन करें और जानें कि असली दुनिया का डेटा क्यों ज़रूरी है।
60 सेकंड में
अपने रोबोट को आँखें देना: एक छोटा विज़न मॉडल
एक कैमरा और एक छोटा इमेज क्लासिफ़ायर आपके रोबोट को बता सकते हैं कि रास्ता किस तरफ मुड़ता है। छोटे सिंथेटिक (बनावटी) चित्रों पर एक मॉडल को ट्रेन करें और जानें कि असली दुनिया का…
कैमरा और मॉडल कहाँ रह सकते हैं
| सेटअप | यह कैसे काम करता है | ध्यान में रखें |
|---|---|---|
| फ़ोन कैमरे के रूप में | रोबोट पर लगा या ऊपर पकड़ा हुआ फ़ोन लैपटॉप पर तस्वीरें भेजता है; लैपटॉप मॉडल को चलाता है और रोबोट को कमांड भेजता है | शुरू करने के लिए सबसे आसान; एक भरोसेमंद लिंक (Wi-Fi, Bluetooth या केबल) की ज़रूरत होती है, और थोड़ी देरी जुड़ जाती है |
| कैमरे के साथ छोटा कंप्यूटर | कैमरा मॉड्यूल वाला एक Raspberry Pi (Pico नहीं) रोबोट पर ही एक छोटा मॉडल चलाता है | माइक्रोकंट्रोलर की तुलना में अधिक बिजली की खपत और महंगा; कहीं अधिक सक्षम |
| माइक्रोकंट्रोलर कैमरा बोर्ड | कुछ ESP32 बोर्ड एक छोटे कैमरे के साथ आते हैं; बहुत छोटे मॉडल सीधे बोर्ड पर चल सकते हैं | बहुत कम मेमोरी: तस्वीरें छोटी और मॉडल बहुत हल्के होने चाहिए |
आप इसे कैसे बनाते हैं
- 1
लेबल तय करें
उन्हें कम और स्पष्ट रखें: उदाहरण के लिए बाएँ, सीधा, दाएँ। - 2
तस्वीरें इकट्ठा करें
रोबोट के अपने कैमरे से, असली कमरे में, अलग-अलग रोशनी में, अलग-अलग पोज़ीशन पर। - 3
उन्हें लेबल करें
हर तस्वीर को सही ग्रुप में रखें। यहाँ की गई गलतियाँ मॉडल की गलतियाँ बन जाती हैं। - 4
ट्रेन और टेस्ट करें
ज्यादातर तस्वीरों पर ट्रेन करें; ऐसी तस्वीरों पर टेस्ट करें जो मॉडल ने कभी नहीं देखीं। - 5
छोटा करें और डिप्लॉय करें
तस्वीरों और मॉडल को अपने डिवाइस के हिसाब से काफ़ी छोटा बनाएं। - 6
सुरक्षा के लिए एक सुरक्षित बैकअप रखें
अगर मॉडल को पक्का न हो, तो धीमे हो जाएं या रुक जाएं। सुरक्षा की एक परत के रूप में डिस्टेंस सेंसर बनाए रखें।
पहले सिंथेटिक (बनावटी) तस्वीरें क्यों?
- एक ही कमरे से, दिन के एक ही समय की सभी तस्वीरें
- सिर्फ़ एकदम सही, बीच में केंद्रित (centred) उदाहरण
- टेस्ट तस्वीरें जो ट्रेनिंग तस्वीरों की ही कॉपियां हैं
- अलग-अलग कमरे, रोशनी, फ़र्श और दिन के अलग-अलग समय
- केंद्र से हटे हुए, धुंधले और आंशिक रूप से छिपे हुए उदाहरण भी
- एक अलग दिन इकट्ठा किया गया एक अलग टेस्ट सेट
और देखें और पढ़ें
लैब
एक छोटा क्लासिफ़ायर जो 8 × 8 कैमरे की तस्वीर से बताता है कि रास्ता बाईं ओर झुकता है, सीधा जाता है या दाईं ओर झुकता है, नई तस्वीरों पर कम से कम 85% एक्यूरेसी के साथ।
समस्या
यह आपके ब्राउज़र में चलता है। make_image फ़र्श की एक नकली 8 × 8 ग्रे कैमरे की तस्वीर बनाता है: हल्का फ़र्श, बाएँ, सीधे या दाएँ झुकती हुई गहरी टेप, साथ में नॉइज़ और रैंडम ब्राइटनेस।
- स्टार्टर चलाएं। यह कुछ उदाहरण तस्वीरें दिखाता है और बताता है कि अभी कोई मॉडल नहीं है।
X_trainऔरy_trainपर एक क्लासिफ़ायर ट्रेन करें और इसेmodelनाम के वेरिएबल में स्टोर करें। उदाहरण के लिए scikit-learn सेLogisticRegression(max_iter=1000)याKNeighborsClassifier()।X_trainकी हर रो (row) एक तस्वीर है जिसे 64 नंबरों में फ़्लैट किया गया है।X_testपर एक्यूरेसी प्रिंट करें। लक्ष्य: नई तस्वीरों पर कम से कम 0.85 (जांच अपनी अलग तस्वीरें बनाती है)।- गहरी (डार्क) टेस्ट तस्वीरें बनाएं (
make_imageकी एक कॉपी में ब्राइटनेस रेंज बदलें) और लिखें कि एक्यूरेसी का क्या होता है, और एक असली रोबोट पर आप इसके लिए क्या करेंगे।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1आपका क्लासिफ़ायर सिंथेटिक टेस्ट सेट पर 99% अंक लाता है। यह इस बात की गारंटी क्यों नहीं है कि यह आपके रोबोट के असली कैमरे पर भी काम करेगा?दिखाएं
टेस्ट तस्वीरें उसी कोड से आई थीं जिससे ट्रेनिंग तस्वीरें आई थीं, इसलिए वे एक ही "दुनिया" साझा करती हैं: एक ही जैसी टेप की बनावट, नॉइज़ और ब्राइटनेस रेंज। एक असली कैमरा परछाइयां, रिफ़्लेक्शन, ब्लर, लेंस डिस्टॉर्शन और एक अलग एंगल जोड़ता है। ईमानदार टेस्ट रोबोट की असली तस्वीरों पर होता है, जो ट्रेनिंग तस्वीरों से अलग दिन और अलग जगह पर ली गई हों।
Q2रोबोट को एक सेकंड में 10 बार फ़ैसला लेना है, और आपके बोर्ड में बहुत कम मेमोरी है। आप मॉडल और इमेजेस में क्या बदलाव करेंगे?दिखाएं
लैब की तरह ही, इमेजेस को बहुत छोटा और ग्रे रखें, और एक छोटा मॉडल चुनें: एक लीनियर क्लासिफायर या बहुत छोटा न्यूरल नेटवर्क। कम पिक्सल और कम मॉडल वेट्स का मतलब है कम मेमोरी और तेज़ी से फ़ैसले। फिर टेस्ट करें कि एक्यूरेसी अभी भी काफ़ी अच्छी है या नहीं। अगर नहीं है, तो मॉडल को किसी फ़ोन या लैपटॉप पर ले जाएँ और थोड़ी ज़्यादा देरी को स्वीकार करें, साथ ही रोबोट पर एक लोकल सेफ़्टी स्टॉप रखें।
अक्सर पूछे जाने वाले सवाल
क्या मैं बिना किसी पावरफुल कंप्यूटर के मॉडल ट्रेन कर सकता हूँ?
बहुत छोटी तस्वीरों और लॉजिस्टिक रिग्रेशन जैसे आसान मॉडल्स के लिए, हाँ, एक सामान्य लैपटॉप या यहाँ तक कि ब्राउज़र भी काफ़ी है। बड़े विज़न मॉडल्स को अधिक पावर की ज़रूरत होती है, और बहुत से लोग मुफ़्त ऑनलाइन नोटबुक का उपयोग करते हैं। आप जिस भी सर्विस का उपयोग करें, उसकी मौजूदा सीमाओं और शर्तों को देख लें।
मुझे कितनी तस्वीरों की ज़रूरत होगी?
यह इस बात पर निर्भर करता है कि क्लास एक-दूसरे से कितने अलग दिखते हैं और असली दुनिया कितनी विविध है। प्रति क्लास कुछ दर्जन तस्वीरों से शुरू करें, नई तस्वीरों पर ईमानदारी से टेस्ट करें, और उन मामलों की और तस्वीरें जोड़ें जहाँ मॉडल फेल होता है। एक जैसा डेटा जोड़ने की तुलना में अलग-अलग तरह का डेटा जोड़ना आमतौर पर ज़्यादा मददगार होता है।
इसके बजाय किसी बड़े विज़न-लैंग्वेज मॉडल का उपयोग क्यों न करें?
आप कर सकते हैं, उदाहरण के लिए लैपटॉप पर या किसी ऑनलाइन सर्विस के ज़रिए, लेकिन यह धीमा होता है, इसके लिए नेटवर्क या एक ताकतवर कंप्यूटर चाहिए, और इसमें खर्च भी ज़्यादा होता है। "बाएँ, सीधा या दाएँ" जैसे सरल और तुरंत निर्णय के लिए, एक छोटा क्लासिफ़ायर अक्सर बेहतर होता है। बड़े मॉडल खुले सवालों के लिए उपयोगी होते हैं, जैसे "टेबल पर क्या रखा है?"।
"मॉडल को पक्का न होना" का क्या मतलब है?
कई क्लासिफ़ायर हर लेबल के लिए एक संभावना (प्रोबेबिलिटी) देते हैं। यदि सबसे ऊपर वाले लेबल की संभावना कम है, या दो लेबल बहुत करीबी हैं, तो मॉडल असमंजस में होता है। एक रोबोट सिर्फ़ अंदाज़े पर काम करने के बजाय इसे "धीमे हो जाओ और दोबारा देखो" के रूप में ले सकता है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।