- अवयव आवश्यक
- सर्किट आरेख
- खांसी का पता लगाने की मशीन के लिए डेटासेट बनाना
- मॉडल प्रशिक्षण और कोड Tweaking
COVID19 वास्तव में एक ऐतिहासिक महामारी है जो पूरी दुनिया को बहुत बुरी तरह से प्रभावित करती है और लोग इससे लड़ने के लिए बहुत सारे नए उपकरणों का निर्माण कर रहे हैं। हमने कॉन्टैक्टलेस तापमान स्क्रीनिंग के लिए एक स्वचालित सैनिटाइजेशन मशीन और थर्मल गन भी बनाया है। आज हम कोरोनावायरस से लड़ने में मदद करने के लिए एक और उपकरण का निर्माण करेंगे। यह एक खांसी का पता लगाने वाला सिस्टम है, जो शोर और खांसी की आवाज के बीच अंतर कर सकता है और कोरोना संदिग्ध को खोजने में मदद कर सकता है। यह उस के लिए मशीन सीखने की तकनीक का उपयोग करेगा।
इस ट्यूटोरियल में, हम Arduino 33 BLE Sense और Edge Impulse Studio का उपयोग करके एक कफ डिटेक्शन सिस्टम बनाने जा रहे हैं । यह सामान्य पृष्ठभूमि शोर और वास्तविक समय ऑडियो में खांसी के बीच अंतर कर सकता है। हमने खाँसी और पृष्ठभूमि शोर नमूनों के डेटासेट को प्रशिक्षित करने और एक उच्च अनुकूलित TInyML मॉडल बनाने के लिए एज इंपल्स स्टूडियो का उपयोग किया, जो वास्तविक समय में एक खाँसी ध्वनि का पता लगा सकता है।
अवयव आवश्यक
हार्डवेयर
- Arduino 33 BLE Sense
- एलईडी
- जम्पर तार
सॉफ्टवेयर
- एज इंपल्स स्टूडियो
- Arduino IDE
हमने Arduino 33 BLE Sense पर एक विस्तृत ट्यूटोरियल कवर किया है।
सर्किट आरेख
Arduino 33 BLE Sense का उपयोग करते हुए खांसी का पता लगाने के लिए सर्किट आरेख नीचे दिया गया है। Arduino 33 BLE के लिए फ्रिटिंग भाग उपलब्ध नहीं था, इसलिए मैंने Arduino नैनो का उपयोग किया क्योंकि दोनों में एक ही पिन-आउट है।
LED का पॉजिटिव लीड Arduino 33 BLE सेंस के डिजिटल पिन 4 से जुड़ा है और नेगेटिव लीड Arduino के GND पिन से जुड़ा है।
खांसी का पता लगाने की मशीन के लिए डेटासेट बनाना
जैसा कि पहले उल्लेख किया गया है, हम अपने खांसी का पता लगाने वाले मॉडल को प्रशिक्षित करने के लिए एज इंपल्स स्टूडियो का उपयोग कर रहे हैं। उसके लिए, हमें एक डेटासेट को इकट्ठा करना होगा जिसमें डेटा के नमूने हों, जिन्हें हम अपने Arduino पर पहचानने में सक्षम होना चाहते हैं। चूंकि लक्ष्य खांसी का पता लगाना है, इसलिए आपको शोर के लिए कुछ नमूनों और कुछ अन्य नमूनों को इकट्ठा करने की आवश्यकता होगी, इसलिए यह कफ और अन्य शोरों के बीच अंतर कर सकता है।
हम दो वर्गों "खाँसी" और "शोर" के साथ एक डाटासेट बनायेंगे। डेटासेट बनाने के लिए, एक एज इंपल्स खाता बनाएं, अपने खाते को सत्यापित करें और फिर एक नई परियोजना शुरू करें। आप अपने मोबाइल, अपने Arduino बोर्ड का उपयोग करके नमूने लोड कर सकते हैं या आप अपने किनारे के आवेग खाते में डेटासेट आयात कर सकते हैं। आपके मोबाइल फोन का उपयोग करके नमूनों को अपने खाते में लोड करने का सबसे आसान तरीका है। उसके लिए आपको अपने मोबाइल को एज इंपल्स से जोड़ना होगा।
अपने मोबाइल फ़ोन को कनेक्ट करने के लिए, ' डिवाइसेस ' पर क्लिक करें और फिर ' कनेक्ट अ न्यू डिवाइस' पर क्लिक करें ।
अब अगली विंडो में, your यूज़ योर मोबाइल फ़ोन’ पर क्लिक करें , और एक क्यूआर कोड दिखाई देगा। Google लेंस या अन्य QR कोड स्कैनर ऐप का उपयोग करके अपने मोबाइल फोन के साथ QR कोड को स्कैन करें।
यह आपके फोन को एज इंपल्स स्टूडियो से जोड़ेगा।
एज इंपल्स स्टूडियो से जुड़े अपने फोन के साथ, अब आप अपने नमूने लोड कर सकते हैं। नमूने लोड करने के लिए, ' डेटा अधिग्रहण' पर क्लिक करें । अब डेटा अधिग्रहण पृष्ठ पर, लेबल नाम दर्ज करें, एक सेंसर के रूप में माइक्रोफोन का चयन करें, और नमूना लंबाई दर्ज करें। 40 सेंक सैंपल लेने के लिए ' स्टार्ट सैंपलिंग' पर क्लिक करें । अपने आप को खांसी के लिए मजबूर करने के बजाय, आप विभिन्न लंबाई के ऑनलाइन खांसी के नमूनों का उपयोग कर सकते हैं। विभिन्न लंबाई के कुल 10 से 12 खांसी के नमूने रिकॉर्ड करें।
खांसी के नमूने अपलोड करने के बाद, अब लेबल को 'शोर' पर सेट करें और 10 से 12 शोर के नमूने एकत्र करें।
ये नमूने मॉड्यूल को प्रशिक्षित करने के लिए हैं, अगले चरणों में, हम टेस्ट डेटा एकत्र करेंगे। परीक्षण डेटा कम से कम 30% प्रशिक्षण डेटा होना चाहिए, इसलिए 'शोर' के 3 नमूने और 'खांसी' के 4 से 5 नमूने एकत्र करें।
अपना डेटा एकत्र करने के बजाय, आप हमारे इंपल्स को एज इंपल्स सीएलआई अपलोडर का उपयोग करके अपने एज इंपल्स खाते में आयात कर सकते हैं।
CLI अपलोडर को स्थापित करने के लिए, सबसे पहले, अपने लैपटॉप पर Node.js डाउनलोड और इंस्टॉल करें। उसके बाद कमांड प्रॉम्प्ट खोलें और नीचे कमांड दर्ज करें:
npm इंस्टाल -g एज-इम्पल्स-क्ली
अब डेटासेट (डाटसेट लिंक) डाउनलोड करें और अपने प्रोजेक्ट फोल्डर में फाइल निकालें। कमांड प्रॉम्प्ट खोलें और डेटासेट स्थान पर नेविगेट करें और नीचे कमांड चलाएं:
धार-आवेग-अपलोडर --clean edge-impulse-uploader - श्रेणीबद्ध प्रशिक्षण प्रशिक्षण / *। json edge-impulse-uploader - -श्रेणी प्रशिक्षण प्रशिक्षण / *। cbor बढ़त-आवेग-अपलोडर -श्रेणी परीक्षण परीक्षण / *। json धार-आवेग-अपलोडर - श्रेणी परीक्षण परीक्षण / *। cbor
मॉडल प्रशिक्षण और कोड Tweaking
जैसे ही डेटासेट तैयार होता है, अब हम डेटा के लिए एक आवेग पैदा करेंगे। इसके लिए ' क्रिएट इम्पल्स ' पेज पर जाएं।
अब ' Create impulse' पेज पर, ' Add a processing block' पर क्लिक करें । अगली विंडो में, ऑडियो (MFCC) ब्लॉक चुनें । उसके बाद ' Add a Learning block' पर क्लिक करें और Neural Network (Keras) ब्लॉक चुनें । इसके बाद ' सेव इम्पल्स’ पर क्लिक करें ।
अगले चरण में, MFCC पेज पर जाएं और फिर ' Generate Features' पर क्लिक करें । यह हमारी सभी ऑडियो विंडो के लिए MFCC ब्लॉक जेनरेट करेगा।
उसके बाद N एनएन क्लासिफायर’ पेज पर जाएं और and न्यूरल नेटवर्क सेटिंग्स’ के ऊपरी दाएं कोने पर तीन डॉट्स पर क्लिक करें और to स्विच टू केयर्स (विशेषज्ञ) मोड’चुनें ।
निम्नलिखित कोड के साथ मूल को बदलें और ' न्यूनतम आत्मविश्वास रेटिंग' को '0.70' में बदलें । इसके बाद click स्टार्ट ट्रेनिंग’ बटन पर क्लिक करें। यह आपके मॉडल का प्रशिक्षण शुरू कर देगा।
tensorflow.keras.models से tf के रूप में आयात टेंसरफ़्लो आयात करें। आयात MaxNorm # मॉडल वास्तुकला मॉडल = अनुक्रमिक () Model.add (InputLayer (input_shape = (X_train.shape), नाम, = 'x_input')) model.add (Reshape (int (X_train.shape / 13)), 13, 13) (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, सक्रियण = 'relu', padding = 'same', kernel_constraint (MaxNorm (3))) model.add (averagePooling2D () पूल_साइज़ = 2,पैडिंग = 'वही')) मॉडल। एड (फ्लैटन ()) मॉडल। एड (डेंस (कक्षाएं, सक्रियण = 'सॉफ्टमैक्स'), नाम = 'y_pred', kernel_constraint = MaxNorm (3)) #) यह सीखने की दर को नियंत्रित करता है = एडम (lr = 0.005, Beta_1 = 0.9, Beta_2 = 0.999) # ट्रेन ने न्यूरल नेटवर्क model.compile (हानि = 'श्रेणीबद्ध_क्रोसेंट्रोपी', ऑप्टिमाइज़र = ऑप्ट, मेट्रिक्स =) मॉडल.fit (X_train, Y_train, batch_size = 32, युग) = 9, सत्यापन_दाता = (एक्स_टेस्ट, वाई_टेस्ट), क्रिया = 2)क्रिया = 2)क्रिया = 2)
मॉडल को प्रशिक्षित करने के बाद, यह प्रशिक्षण प्रदर्शन दिखाएगा। मेरे लिए, सटीकता 96.5% थी और नुकसान 0.10 था जो आगे बढ़ना अच्छा है।
अब जब हमारी खांसी का पता लगाने वाला मॉडल तैयार हो गया है, हम इस मॉडल को अरुडिनो लाइब्रेरी के रूप में तैनात करेंगे। मॉडल को लाइब्रेरी के रूप में डाउनलोड करने से पहले, आप ' लाइव क्लासिफिकेशन ' पेज पर जाकर प्रदर्शन का परीक्षण कर सकते हैं ।
' परिनियोजन ' पृष्ठ पर जाएँ और ' Arduino Library' चुनें । अब नीचे स्क्रॉल करें और प्रक्रिया शुरू करने के लिए 'बिल्ड' पर क्लिक करें । यह आपकी परियोजना के लिए एक Arduino पुस्तकालय का निर्माण करेगा।
अब अपने Arduino IDE में लाइब्रेरी जोड़ें। इसके लिए Arduino IDE खोलें और फिर स्केच> लाइब्रेरी शामिल करें> Add.ZIP लाइब्रेरी पर क्लिक करें।
फिर, फ़ाइल> उदाहरण> अपने प्रोजेक्ट का नाम - एज इंपल्स> नैनो_बल33_सेंस_इम्रफोन पर जाकर एक उदाहरण लोड करें ।
हम कोड में कुछ बदलाव करेंगे, ताकि जब Arduino खांसी का पता लगाए तो हम एक चेतावनी ध्वनि बना सकें। उसके लिए, एक बजर Arduino के साथ हस्तक्षेप किया जाता है और जब भी यह खांसी का पता लगाता है, तो एलईडी तीन बार झपकी लेगा।
परिवर्तन शून्य लूप () कार्यों में किए जाते हैं जहां यह शोर और खांसी के मूल्यों को मुद्रित कर रहा है। मूल कोड में, यह लेबल और उनके मान दोनों को एक साथ प्रिंट कर रहा है।
for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f \ n", result.classification.label, result.classification.value); }
हम विभिन्न चर में शोर और खांसी दोनों मूल्यों को बचाने और शोर मूल्यों की तुलना करने जा रहे हैं। यदि शोर का मान 0.50 से नीचे चला जाता है अर्थात खांसी का मूल्य 0.50 से अधिक है और यह आवाज करेगा। लूप के मूल को बदलें () कोड इसके साथ:
for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification.value); फ्लोट डेटा = result.classification.value; if (डेटा <0.50) {Serial.print ("Cough Detected"); अलार्म(); }}
बदलाव करने के बाद, कोड को अपने Arduino में अपलोड करें। 115200 बॉड में सीरियल मॉनिटर खोलें।
तो यह है कि कैसे एक खांसी का पता लगाने की मशीन का निर्माण किया जा सकता है, यह किसी भी COVID19 संदिग्ध को खोजने के लिए एक बहुत प्रभावी तरीका नहीं है, लेकिन यह कुछ भीड़ वाले क्षेत्र में अच्छी तरह से काम कर सकता है।
पुस्तकालय और कोड के साथ एक पूर्ण कार्य वीडियो नीचे दिया गया है: