विषयसूची:
- आपूर्ति
- चरण 1: सर्किट आरेख
- चरण 2: खांसी का पता लगाने वाली मशीन के लिए डेटासेट बनाना
- चरण 3: मोबाइल फोन से कनेक्ट करें
- चरण 4:
- चरण 5: मॉडल को प्रशिक्षित करना और कोड में बदलाव करना
- चरण 6:
- चरण 7: कोड
वीडियो: पॉकेट साइज कफ डिटेक्टर: 7 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
COVID19 वास्तव में पूरी दुनिया को बुरी तरह प्रभावित करने वाली एक ऐतिहासिक महामारी है और लोग इससे लड़ने के लिए बहुत से नए उपकरणों का निर्माण कर रहे हैं। हमने कॉन्टैक्टलेस टेम्परेचर स्क्रीनिंग के लिए ऑटोमैटिक सैनिटाइजेशन मशीन और थर्मल गन भी बनाई है। आज हम कोरोनावायरस से लड़ने में मदद के लिए एक और डिवाइस बनाएंगे। यह एक कफ डिटेक्शन सिस्टम है, जो शोर और खांसी की आवाज के बीच अंतर कर सकता है और कोरोना संदिग्ध को खोजने में मदद कर सकता है। इसके लिए वह मशीन लर्निंग तकनीक का इस्तेमाल करेगा।
इस ट्यूटोरियल में, हम Arduino 33 BLE Sense और Edge Impulse Studio का उपयोग करके एक कफ डिटेक्शन सिस्टम बनाने जा रहे हैं। यह वास्तविक समय के ऑडियो में सामान्य पृष्ठभूमि शोर और खाँसी के बीच अंतर कर सकता है। हमने खाँसी और पृष्ठभूमि शोर के नमूनों के डेटासेट को प्रशिक्षित करने के लिए एज इंपल्स स्टूडियो का उपयोग किया और एक अत्यधिक अनुकूलित TInyML मॉडल का निर्माण किया, जो वास्तविक समय में खांसी की ध्वनि का पता लगा सकता है।
आपूर्ति
हार्डवेयर
- अरुडिनो 33 बीएलई सेंस
- एलईडी जम्पर
- तारों
सॉफ्टवेयर
- एज इंपल्स स्टूडियो
- अरुडिनो आईडीई
चरण 1: सर्किट आरेख
Arduino 33 BLE Sense का उपयोग करके खांसी का पता लगाने के लिए सर्किट आरेख ऊपर दिया गया है। Arduino 33 BLE के लिए फ़्रिट्ज़िंग भाग उपलब्ध नहीं था, इसलिए मैंने Arduino Nano का उपयोग किया क्योंकि दोनों का पिन-आउट समान है।
LED की पॉजिटिव लीड Arduino 33 BLE सेंस के डिजिटल पिन 4 से जुड़ी है और नेगेटिव लीड Arduino के GND पिन से जुड़ी है।
चरण 2: खांसी का पता लगाने वाली मशीन के लिए डेटासेट बनाना
जैसा कि पहले उल्लेख किया गया है, हम अपने खांसी का पता लगाने वाले मॉडल को प्रशिक्षित करने के लिए एज इंपल्स स्टूडियो का उपयोग कर रहे हैं। उसके लिए, हमें एक डेटासेट एकत्र करना होगा जिसमें डेटा के नमूने हों जिन्हें हम अपने Arduino पर पहचानने में सक्षम होना चाहते हैं। चूंकि लक्ष्य खांसी का पता लगाना है, इसलिए आपको इसके कुछ नमूने और शोर के लिए कुछ अन्य नमूने एकत्र करने होंगे, ताकि यह खांसी और अन्य शोर के बीच अंतर कर सके। हम दो वर्गों "खांसी" और "शोर" के साथ एक डेटासेट बनाएंगे। डेटासेट बनाने के लिए, एक एज इंपल्स खाता बनाएं, अपना खाता सत्यापित करें और फिर एक नया प्रोजेक्ट शुरू करें। आप अपने मोबाइल, अपने Arduino बोर्ड का उपयोग करके नमूने लोड कर सकते हैं या आप अपने बढ़त आवेग खाते में एक डेटासेट आयात कर सकते हैं। अपने खाते में नमूने लोड करने का सबसे आसान तरीका अपने मोबाइल फोन का उपयोग करना है। उसके लिए आपको अपने मोबाइल को Edge Impulse से जोड़ना होगा। अपने मोबाइल फोन को कनेक्ट करने के लिए, 'डिवाइस' पर क्लिक करें और फिर 'कनेक्ट ए न्यू डिवाइस' पर क्लिक करें।
चरण 3: मोबाइल फोन से कनेक्ट करें
अब अगली विंडो में 'यूज योर मोबाइल फोन' पर क्लिक करें और एक क्यूआर कोड दिखाई देगा। Google लेंस या अन्य क्यूआर कोड स्कैनर ऐप का उपयोग करके अपने मोबाइल फोन से क्यूआर कोड को स्कैन करें।
यह आपके फोन को एज इंपल्स स्टूडियो से कनेक्ट कर देगा।
अपने फ़ोन को Edge Impulse Studio से कनेक्ट करके, अब आप अपने नमूने लोड कर सकते हैं। नमूने लोड करने के लिए, 'डेटा अधिग्रहण' पर क्लिक करें। अब डेटा प्राप्ति पृष्ठ पर, लेबल नाम दर्ज करें, माइक्रोफ़ोन को सेंसर के रूप में चुनें, और नमूना लंबाई दर्ज करें। ४० सेकंड के नमूने का नमूना लेना शुरू करने के लिए, 'नमूना शुरू करें' पर क्लिक करें। अपने आप को खांसी के लिए मजबूर करने के बजाय, आप अलग-अलग लंबाई के खांसी के ऑनलाइन नमूनों का उपयोग कर सकते हैं। विभिन्न लंबाई के खांसी के कुल 10 से 12 नमूने रिकॉर्ड करें।
चरण 4:
खांसी के नमूने अपलोड करने के बाद, अब लेबल को 'शोर' पर सेट करें और अन्य 10 से 12 शोर के नमूने एकत्र करें।
ये नमूने मॉड्यूल के प्रशिक्षण के लिए हैं, अगले चरणों में, हम परीक्षण डेटा एकत्र करेंगे। परीक्षण डेटा प्रशिक्षण डेटा का कम से कम 30% होना चाहिए, इसलिए 'शोर' के 3 नमूने और 'खांसी' के 4 से 5 नमूने एकत्र करें। अपना डेटा एकत्र करने के बजाय, आप एज का उपयोग करके हमारे डेटासेट को अपने एज इंपल्स खाते में आयात कर सकते हैं। इंपल्स सीएलआई अपलोडर। सीएलआई अपलोडर को स्थापित करने के लिए, सबसे पहले, अपने लैपटॉप पर Node.js डाउनलोड और इंस्टॉल करें। उसके बाद कमांड प्रॉम्प्ट खोलें और नीचे दी गई कमांड दर्ज करें:
npm इंस्टाल-जी एज-इंपल्स-क्ली
अब डेटासेट (डेटासेट लिंक) डाउनलोड करें और फ़ाइल को अपने प्रोजेक्ट फ़ोल्डर में निकालें। कमांड प्रॉम्प्ट खोलें और डेटासेट स्थान पर नेविगेट करें और नीचे दिए गए कमांड चलाएँ:
एज-इंपल्स-अपलोडर - क्लीनएज-इंपल्स-अपलोडर - कैटेगरी ट्रेनिंग ट्रेनिंग/*.जेसन
धार-आवेग-अपलोडर --श्रेणी प्रशिक्षण प्रशिक्षण/*.cbor
धार-आवेग-अपलोडर --श्रेणी परीक्षण परीक्षण/*.json धार-आवेग-अपलोडर --श्रेणी परीक्षण परीक्षण/*.cbor
चरण 5: मॉडल को प्रशिक्षित करना और कोड में बदलाव करना
जैसा कि डेटासेट तैयार है, अब हम डेटा के लिए एक आवेग पैदा करेंगे। इसके लिए 'क्रिएट इंपल्स' पेज पर जाएं।
अब 'क्रिएट इंपल्स' पेज पर 'ऐड ए प्रोसेसिंग ब्लॉक' पर क्लिक करें। अगली विंडो में, ऑडियो (MFCC) ब्लॉक चुनें। इसके बाद 'ऐड ए लर्निंग ब्लॉक' पर क्लिक करें और न्यूरल नेटवर्क (केरस) ब्लॉक चुनें। फिर 'सेव इंपल्स' पर क्लिक करें।
अगले चरण में, एमएफसीसी पेज पर जाएं और फिर 'जेनरेट फीचर्स' पर क्लिक करें। यह ऑडियो की हमारी सभी विंडो के लिए एमएफसीसी ब्लॉक उत्पन्न करेगा।
उसके बाद 'एनएन क्लासिफायर' पेज पर जाएं और 'न्यूरल नेटवर्क सेटिंग्स' के ऊपरी दाएं कोने पर तीन डॉट्स पर क्लिक करें और 'स्विच टू केरस (विशेषज्ञ) मोड' चुनें।
मूल को निम्नलिखित कोड से बदलें और 'न्यूनतम आत्मविश्वास रेटिंग' को '0.70' में बदलें। फिर 'प्रशिक्षण प्रारंभ करें' बटन पर क्लिक करें। यह आपके मॉडल को प्रशिक्षित करना शुरू कर देगा।
tensorflow.keras.models से tf के रूप में टेंसरफ़्लो आयात करें। मैक्सनॉर्म # मॉडल आर्किटेक्चर मॉडल = अनुक्रमिक () मॉडल। ऐड (इनपुटलेयर (इनपुट_शेप = (एक्स_ट्रेन। शेप [1],), नाम = 'एक्स_इनपुट')) मॉडल। एड (रिशेप ((इंट (एक्स_ट्रेन.शेप [1] /) 13), 13, 1), input_shape=(X_train.shape[1],))) model.add(Conv2D(10, kernel_size=5, Activate='relu', padding='same', kernel_constraint=MaxNorm(3)))) model.add(AveragePooling2D(pool_size=2, padding='same')) model.add(Conv2D(5, kernel_size=5, Activate='relu', padding='same', kernel_constraint=MaxNorm(3)))) मॉडल जोड़ें (3))) # यह सीखने की दर को नियंत्रित करता है ऑप्ट = एडम (एलआर = 0.005, बीटा_ 1=0.9, बीटा_2=0.999) # तंत्रिका नेटवर्क मॉडल को प्रशिक्षित करें। संकलन (हानि = 'श्रेणीबद्ध_क्रॉसेंट्रॉपी', अनुकूलक = ऑप्ट, मेट्रिक्स = ['सटीकता']) मॉडल। फिट (एक्स_ट्रेन, वाई_ट्रेन, बैच_साइज = 32, युग = 9, सत्यापन_डेटा = (एक्स_टेस्ट, वाई_टेस्ट), वर्बोज़ = 2)
चरण 6:
मॉडल को प्रशिक्षित करने के बाद, यह प्रशिक्षण प्रदर्शन दिखाएगा। मेरे लिए, सटीकता ९६.५% थी और नुकसान ०.१० था जो आगे बढ़ने के लिए अच्छा है।
अब जैसे ही हमारा खांसी का पता लगाने वाला मॉडल तैयार है, हम इस मॉडल को Arduino लाइब्रेरी के रूप में तैनात करेंगे। मॉडल को लाइब्रेरी के रूप में डाउनलोड करने से पहले, आप 'लाइव क्लासिफिकेशन' पेज पर जाकर प्रदर्शन का परीक्षण कर सकते हैं। 'परिनियोजन' पृष्ठ पर जाएँ और 'Arduino लाइब्रेरी' चुनें। अब नीचे स्क्रॉल करें और प्रक्रिया शुरू करने के लिए 'बिल्ड' पर क्लिक करें। यह आपके प्रोजेक्ट के लिए एक Arduino लाइब्रेरी बनाएगा।
अब अपने Arduino IDE में लाइब्रेरी जोड़ें। उसके लिए Arduino IDE खोलें और फिर स्केच> लाइब्रेरी शामिल करें> Add. ZIP लाइब्रेरी पर क्लिक करें। फिर, फ़ाइल> उदाहरण> आपके प्रोजेक्ट का नाम - एज इंपल्स> nano_ble33_sense_microphone पर जाकर एक उदाहरण लोड करें। हम कोड में कुछ बदलाव करेंगे ताकि जब Arduino खांसी का पता लगाए तो हम अलर्ट ध्वनि कर सकें। उसके लिए, Arduino के साथ एक बजर इंटरफेस किया जाता है और जब भी यह खांसी का पता लगाता है, LED तीन बार झपकाएगा। परिवर्तन शून्य लूप () कार्यों में किए जाते हैं जहां यह शोर और खांसी के मूल्यों को प्रिंट कर रहा है। मूल कोड में, यह दोनों लेबल और उनके मूल्यों को एक साथ प्रिंट कर रहा है। के लिए (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf("%s: %.5f\n", result.classification[ix].label, result.classification[ix].value); }हम शोर और खाँसी दोनों मूल्यों को अलग-अलग चरों में सहेजने जा रहे हैं और शोर मूल्यों की तुलना करेंगे। यदि शोर का मान 0.50 से नीचे चला जाता है तो इसका अर्थ है कि खांसी का मान 0.50 से अधिक है और यह ध्वनि करेगा। लूप के लिए मूल () कोड को इसके साथ बदलें: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix++) { Serial.print(result.classification[ix].value); फ्लोट डेटा = परिणाम। वर्गीकरण [ix]। मूल्य; अगर (डेटा <0.50) {सीरियल.प्रिंट ("खांसी का पता चला"); अलार्म(); } }परिवर्तन करने के बाद, कोड को अपने Arduino में अपलोड करें। सीरियल मॉनिटर को 115200 बॉड पर खोलें।
तो इस तरह से एक खांसी का पता लगाने वाली मशीन बनाई जा सकती है, यह किसी भी COVID19 संदिग्ध को खोजने का एक बहुत प्रभावी तरीका नहीं है, लेकिन यह भीड़-भाड़ वाले इलाके में अच्छी तरह से काम कर सकता है।
चरण 7: कोड
कृपया संलग्न फाइल देखिए, और अगर आपको यह पसंद आया हो तो मुझे नीचे दिए गए प्रतियोगिता में वोट करना न भूलें।
सिफारिश की:
DIY पॉकेट साइज डीसी वोल्टेज मीटर: 5 कदम
DIY पॉकेट साइज डीसी वोल्टेज मीटर: इस निर्देश में मैं आपको दिखाऊंगा कि सर्किट चेक के लिए पीजो बजर के साथ DIY पॉकेट साइज डीसी वोल्टेज मीटर कैसे बनाया जाता है। आपको केवल इलेक्ट्रॉनिक्स में बुनियादी ज्ञान और थोड़ा सा समय चाहिए। यदि आपका कोई प्रश्न या समस्या है तो आप
DIY पॉकेट साइज एंटी-थेफ्ट अलार्म!: 3 कदम
DIY पॉकेट साइज़ एंटी-थेफ्ट अलार्म !: क्या कोई आपका सामान चुटकी है और आप नहीं ढूंढ सकते कि यह कौन है?पता नहीं वह कौन है?तो यह निर्देश आपके लिए है कि आप उन्हें रंगेहाथ पकड़ें! इस निर्देशयोग्य में मैं आपको दिखाऊंगा कि कैसे एक पॉकेट के आकार का घुसपैठिए का अलार्म बनाया जाता है
पॉकेट साइज स्पीकर: ३ कदम
पॉकेट साइज स्पीकर: इसे कहीं भी ले जाएं! संगीत जो चलते-फिरते है! इस निर्देश में सभी को नमस्कार (जो कि मेरा पहला है) मैं आपको दिखाने जा रहा हूं कि मैंने इस पॉकेट साइज स्पीकर को कैसे बनाया
पॉकेट साइज सीओ (कार्बन मोनोऑक्साइड) डिटेक्टर: 5 कदम
पॉकेट साइज सीओ (कार्बन मोनोऑक्साइड) डिटेक्टर: जैसा कि नाम से पता चलता है कि यह एक पॉकेट साइज सीओ डिटेक्टर है जिसका इस्तेमाल हवा में कार्बन मोनोऑक्साइड का पता लगाने के लिए किया जाता है, हमारा लक्ष्य इस डिवाइस को पोर्टेबल बनाना था और जो पॉकेट साइज में फिट हो। औद्योगीकरण के कारण वायु प्रदूषण की समस्या
सबसे बढ़िया USB L.E.D. पॉकेट-साइज़ लाइट (पॉकेट-साइज़ एंट्री): 6 कदम
सबसे बढ़िया USB L.E.D. पॉकेट-साइज़ लाइट (पॉकेट-साइज़ एंट्री): इस इंस्ट्रक्शनल में, मैं आपको दिखाऊंगा कि USB पावर्ड L.E.D कैसे बनाया जाता है। प्रकाश जो एक एक्स-इट मिंट टिन के आकार में बदल सकता है, और आसानी से आपकी जेब में फिट हो सकता है। यदि आप इसे पसंद करते हैं, तो इसे + करना सुनिश्चित करें और प्रतियोगिता में मुझे वोट दें! सामग्री और