विषयसूची:

क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२: १६ चरण (चित्रों के साथ)
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२: १६ चरण (चित्रों के साथ)

वीडियो: क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२: १६ चरण (चित्रों के साथ)

वीडियो: क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२: १६ चरण (चित्रों के साथ)
वीडियो: विशाल की सुपरहिट तमिल एक्शन हिंदी डब्ड मूवी l The Return Of Abhimanyu (Irumbu Thirai) l सामंथा 2024, नवंबर
Anonim
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२
क्या वह हाथ है? (रास्पबेरी पाई कैमरा + न्यूरल नेटवर्क) भाग १/२

कुछ दिनों पहले जिम में मेरे दाहिने हाथ की कलाई में चोट लग गई थी। बाद में हर बार जब मैंने अपने कंप्यूटर माउस का उपयोग किया, तो कलाई के खड़ी कोण के कारण बहुत दर्द होता था।

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

यह लेख बताता है कि इससे क्या निकला।

शुरू करने से पहले मेरे पास एक अस्वीकरण है-

' इस लेख के अंत में, मैं किसी भी सतह को ट्रैकपैड में नहीं बदल सका, लेकिन मैंने बहुत कुछ नहीं सीखा और अपने शस्त्रागार में बड़े उपकरण जोड़े। मुझे उम्मीद है कि आपके साथ भी ऐसा होगा'

आएँ शुरू करें।

चरण 1: वीडियो

Image
Image

यहां सभी चरणों को कवर करने वाला एक छोटा ५ मिनट का वीडियो है। जरा देखो तो।

चरण 2: हार्डवेयर

हार्डवेयर
हार्डवेयर

मैं लगभग 45 सेमी की ऊंचाई पर रास्पबेरी पाई कैमरा के साथ एक रास्पबेरी पाई सेटअप करता हूं। यह हमें कैमरे के नीचे लगभग 25x25 सेमी का निगरानी क्षेत्र देता है।

रास्पबेरी पाई और रास्पबेरी पाई कैमरा आसानी से उपलब्ध हैं, बस इसे गूगल करें और आपको एक स्थानीय स्टोर खोजने में सक्षम होना चाहिए।

अपने हेडलेस पाई को ऊपर और चलाने के लिए इस लिंक या मेरी रास्पबेरी पाई प्लेलिस्ट में से एक पर एक नज़र डालें।

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

चरण 3: कोड का टुकड़ा

कोड का टुकड़ा
कोड का टुकड़ा
कोड का टुकड़ा
कोड का टुकड़ा

कोड का टुकड़ा जो हमें यह तय करने देता है कि रुचि के क्षेत्र में कोई हाथ है या नहीं, न्यूरल नेटवर्क नामक किसी चीज़ का उपयोग करता है। वे प्रोग्रामिंग की श्रेणी में आते हैं जहां हम निर्णय लेने के लिए नियमों को परिभाषित नहीं करते हैं, लेकिन हम तंत्रिका नेटवर्क को पर्याप्त डेटा दिखाते हैं कि यह अपने आप नियमों का पता लगाता है।

हमारे मामले में, कोडिंग के बजाय कि कौन सा हाथ दिखता है जैसे हम रास्पबेरी पाई से कैप्चर की गई तंत्रिका नेटवर्क छवियों को दिखाते हैं जिसमें हाथ होता है और जिसमें हाथ नहीं होता है। इस चरण को तंत्रिका नेटवर्क का प्रशिक्षण कहा जाता है और उपयोग की जाने वाली छवियों को प्रशिक्षण डेटासेट कहा जाता है।

चरण 4: चित्र प्राप्त करना

छवियां प्राप्त करना
छवियां प्राप्त करना

मैंने अपने रास्पबेरी पीआई में रिमोट लॉग-इन किया और निम्न आदेश का उपयोग करके छवियों का कब्जा कर लिया।

sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o फ्रेम% 04d.jpg

मैंने हाथ से 80 छवियां और 80 छवियां कैप्चर कीं जिनमें हाथ नहीं है। एक तंत्रिका नेटवर्क को ठीक से प्रशिक्षित करने के लिए 160 छवियां पर्याप्त नहीं हैं, लेकिन अवधारणा के प्रमाण के लिए पर्याप्त होनी चाहिए।

160 छवियों के अलावा, मैंने अपने नेटवर्क के प्रशिक्षण के बाद परीक्षण करने के लिए 20 और छवियों को कैप्चर किया।

डेटासेट तैयार होने के बाद मैंने तंत्रिका नेटवर्क के लिए कोड लिखना शुरू कर दिया।

चरण 5: प्रयुक्त उपकरण और भाषा

प्रयुक्त उपकरण और भाषा
प्रयुक्त उपकरण और भाषा
प्रयुक्त उपकरण और भाषा
प्रयुक्त उपकरण और भाषा

मैंने अपने तंत्रिका नेटवर्क को केरस नामक पायथन डीप लर्निंग लाइब्रेरी में लिखा है और कोड एनाकोंडा नेविगेटर से ज्यूपिटर नोटबुक पर लिखा गया है।

चरण 6: प्रशिक्षण के लिए डेटासेट तैयार करना

प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना
प्रशिक्षण के लिए डेटासेट तैयार करना

सबसे पहले (छवि # 1) मैंने इस परियोजना के लिए आवश्यक सभी पुस्तकालयों को शामिल किया, जिसमें जनहित याचिका, matplotlib, numpy, os और Keras शामिल हैं। पायथन नोटबुक के दूसरे सेल में (छवि # 2) मैं डेटासेट के पथ को परिभाषित करता हूं और नमूना गणना प्रिंट करता हूं। अब हमें सभी छवियों को एक सुपीरियर सरणी में लोड करने की आवश्यकता है, इसलिए तीसरे सेल (छवि # 2) में मैंने 82 (हाथ के नमूने की संख्या) +75 (गैर हाथ के नमूने की संख्या) यानी 157x100x100x3 की एक संख्यात्मक सरणी बनाई। 157 छवियों की कुल संख्या है जो मेरे पास है, 100x100 हमारी आकार की छवि आयाम है और 3 छवि में लाल, हरे और नीले रंग की परतों के लिए है।

चौथे और पांचवें सेल में, हम हाथ वाली छवियों को लोड करते हैं, उसके बाद उन छवियों को लोड करते हैं जिनमें सुन्न सरणी में हाथ नहीं होता है। छठे सेल में, हम प्रत्येक मान को 255 से विभाजित करते हैं इसलिए मान सीमा 0 से 1 तक सीमित करते हैं। (छवि # 3)

मुझे खेद है अगर संलग्न छवियां पर्याप्त अच्छी नहीं हैं। कोड देखने के लिए यहां GITHUB रिपॉजिटरी का लिंक दिया गया है। निर्देशिका पथ नामों को अपने पथ से बदलना न भूलें:)।

साथ चलना।

आगे हमें प्रत्येक छवि को लेबल करने की आवश्यकता है, इसलिए, हम लंबाई में 157 की एक आयामी संख्यात्मक सरणी बनाते हैं। पहली 82 प्रविष्टियाँ 1 पर सेट हैं और शेष 75 प्रविष्टियाँ 0 पर सेट हैं जो तंत्रिका नेटवर्क को बताती हैं कि पहले 82 चित्र एक वर्ग से हैं और शेष दूसरे से हैं। (छवि # 4)

अब एक न्यूरल नेटवर्क बनाते हैं।

चरण 7: तंत्रिका नेटवर्क

तंत्रिका नेटवर्क
तंत्रिका नेटवर्क
तंत्रिका नेटवर्क
तंत्रिका नेटवर्क

नौवीं सेल में, हम अपने तंत्रिका नेटवर्क को परिभाषित करते हैं। इसमें क्रमशः 8, 12 और 16 कनवल्शन फिल्टर के साथ मैक्सपूल लेयर्स के बाद कनवल्शन लेयर की तीन पुनरावृत्ति होती है। उसके बाद हमारे पास दो घने तंत्रिका जाल हैं। इस चरण के लिए दो चित्र संलग्न करना। पहला कोड का स्नैप है जो तंत्रिका नेटवर्क बनाता है और दूसरा आउटपुट आयाम और संचालन एनोटेट के साथ तंत्रिका नेटवर्क का चित्रमय प्रतिनिधित्व है।

चरण 8: तंत्रिका नेटवर्क का प्रशिक्षण

प्रशिक्षण तंत्रिका नेटवर्क
प्रशिक्षण तंत्रिका नेटवर्क

दसवें सेल में, हम न्यूरल नेटवर्क ऑप्टिमाइज़र को 'एडम' और लॉस फंक्शन को 'बाइनरी_क्रॉसेंट्रॉपी' में कॉन्फ़िगर करते हैं। नेटवर्क वेट को कैसे अपडेट किया जाता है, इसमें वे प्रमुख भूमिका निभाते हैं। अंत में जब हम ग्यारहवीं सेल चलाते हैं, तो तंत्रिका नेटवर्क प्रशिक्षित होना शुरू हो जाता है। जबकि नेटवर्क प्रशिक्षण हानि फ़ंक्शन को देख रहा है और सुनिश्चित करें कि यह घट रहा है।

चरण 9: तंत्रिका नेटवर्क का परीक्षण

तंत्रिका नेटवर्क का परीक्षण
तंत्रिका नेटवर्क का परीक्षण

एक बार तंत्रिका नेटवर्क को प्रशिक्षित करने के बाद, हमें परीक्षण डेटा सेट तैयार करने की आवश्यकता होती है। हम परीक्षण सेट बनाने के लिए परीक्षण डेटा पर तीसरे, चौथे, पांचवें और छठे सेल में प्रशिक्षण सेट तैयार करने के लिए की गई प्रक्रिया को दोहराते हैं। हम परीक्षण सेट के लिए लेबल भी तैयार करते हैं लेकिन इस बार हम इन डेटा सेट पर मॉडल चलाते हैं ताकि पूर्वानुमान प्राप्त किया जा सके और प्रशिक्षित न किया जा सके।

चरण 10: परिणाम और अगला भाग…।

परिणाम और अगला भाग…।
परिणाम और अगला भाग…।

मुझे 88% की परीक्षण सटीकता मिली, लेकिन इसे एक चुटकी नमक के साथ लें क्योंकि इस मॉडल को प्रशिक्षित करने और परीक्षण करने के लिए उपयोग किए जाने वाले डेटासेट बहुत बहुत छोटे हैं और इस मॉडल को ठीक से प्रशिक्षित करने के लिए अपर्याप्त हैं।

वैसे भी मुझे उम्मीद है कि आपको यह लेख अच्छा लगा होगा। इस अभ्यास के पीछे मेरा इरादा अभी पूरा नहीं हुआ है और दूसरे भाग के लिए देखें। मैं इसे जल्द से जल्द अपलोड कर दूंगा।

अगले भाग में, हम एक अन्य तंत्रिका नेटवर्क को प्रशिक्षित करेंगे जो हमें हाथ से पहचानी गई छवि में हाथ का स्थान बताएगा।

सभी प्रश्नों का स्वागत है।

यदि कोई मेरे छोटे डेटासेट का उपयोग करने में रुचि रखता है तो मुझे टिप्पणियों में बताएं। मैं इसे उपलब्ध कराऊंगा।

पढ़ने के लिए धन्यवाद। मैं आपसे जल्द ही दूसरे भाग के साथ मिलूंगा, तब तक आप एक तंत्रिका नेटवर्क क्यों नहीं बनाते और प्रशिक्षित करते हैं।

संपादित करें: - अगले चरण दूसरे भाग के लिए हैं।

चरण 11: वस्तु का पता लगाना

वस्तु का पता लगाना
वस्तु का पता लगाना

पिछले चरणों में हमने एक एनएन बनाया जो हमें बताता है कि परीक्षण छवि में हाथ है या नहीं। अच्छा आगे क्या? यदि एनएन छवि को हाथ से युक्त के रूप में वर्गीकृत करता है तो हम हाथ का स्थान जानना चाहेंगे। इसे कंप्यूटर विज़न लिटरेचर में ऑब्जेक्ट डिटेक्शन कहा जाता है। तो चलिए एनएन को प्रशिक्षित करते हैं जो बिल्कुल वैसा ही करता है।

चरण 12: वीडियो

Image
Image

शेष सभी चरणों को समझाते हुए 3 मिनट का वीडियो। जरा देखो तो।

चरण 13: लेबलिंग

लेबलिंग
लेबलिंग
लेबलिंग
लेबलिंग
लेबलिंग
लेबलिंग

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

csv फ़ाइल की संलग्न छवि में प्रत्येक छवि के लिए लेबल है। कृपया ध्यान दें कि निर्देशांक छवि आयाम के साथ सामान्यीकृत होते हैं अर्थात यदि ऊपरी X निर्देशांक 640 पिक्सेल की चौड़ाई वाली छवि में 320वें पिक्सेल पर है, तो हम इसे 0.5 के रूप में लेबल करेंगे।

चरण 14: लेबलिंग GUI

लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई
लेबलिंग जीयूआई

आप सोच रहे होंगे कि मैं सभी 82 छवियों को कैसे लेबल करने में कामयाब रहा, ठीक है मैंने अजगर में एक GUI लिखा जिसने मुझे इस कार्य में मदद की। एक बार छवि जीयूआई में लोड हो जाती है। मैंने ऊपरी निर्देशांक पर बायाँ-क्लिक किया और हाथ के चारों ओर संभावित बाउंडिंग बॉक्स के निचले निर्देशांक पर दायाँ क्लिक किया। फिर इन निर्देशांकों को एक फ़ाइल में लिखा जाता है, जिसके बाद मैं अगली छवि लोड करने के लिए अगला बटन क्लिक करता हूं। मैंने सभी 82 ट्रेन और 4 परीक्षण छवियों के लिए इस प्रक्रिया को दोहराया। एक बार लेबल तैयार हो जाने के बाद, यह प्रशिक्षण का समय था।

चरण 15: पुस्तकालयों की आवश्यकता

पुस्तकालयों की आवश्यकता
पुस्तकालयों की आवश्यकता
पुस्तकालयों की आवश्यकता
पुस्तकालयों की आवश्यकता
पुस्तकालयों की आवश्यकता
पुस्तकालयों की आवश्यकता

पहले हमें सभी आवश्यक पुस्तकालयों को लोड करने की आवश्यकता है। जो भी शामिल

  • छवि हेरफेर के लिए जनहित याचिका,
  • साजिश रचने के लिए matplotlib,
  • मैट्रिक्स ऑपरेशन के लिए numpy,
  • ऑपरेटिंग सिस्टम पर निर्भर कार्यक्षमता के लिए ओएस और
  • तंत्रिका नेटवर्क के लिए केरस।

चरण 16: शेष कोशिकाएं

शेष सेल
शेष सेल
शेष सेल
शेष सेल
शेष सेल
शेष सेल
शेष सेल
शेष सेल

2nd, 3rd, 4th और 5th सेल में हम छवियों को numpy array में लोड करते हैं और लेबल के रूप में कार्य करने के लिए csv फ़ाइल से चार आयामी सरणी बनाते हैं। सेल नंबर 6 में हम अपना न्यूरल नेटवर्क बनाते हैं। इसका आर्किटेक्चर वर्गीकरण के लिए उपयोग किए जाने वाले तंत्रिका नेटवर्क के समान है, आउटपुट परत आयाम को छोड़कर जो कि 4 है और 1 नहीं है। एक और अंतर हानि फ़ंक्शन से आता है जिसका उपयोग किया जाता है जो कि माध्य चुकता त्रुटि है। सेल नंबर 8 में हम अपने तंत्रिका नेटवर्क का प्रशिक्षण शुरू करते हैं एक बार प्रशिक्षित होने के बाद मैंने इस मॉडल को परीक्षण सेट पर चलाया ताकि बाउंडिंग बॉक्स के ओवरलेइंग निर्देशांक पर बाउंडिंग बॉक्स के लिए भविष्यवाणियां प्राप्त की जा सकें, वे बहुत सटीक लग रहे थे।

पढ़ने के लिए धन्यवाद।

सिफारिश की: