- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- దగ్గును గుర్తించే యంత్రం కోసం డేటాసెట్ను సృష్టించడం
- మోడల్కు శిక్షణ ఇవ్వడం మరియు కోడ్ను ట్వీకింగ్ చేయడం
COVID19 నిజంగా ప్రపంచం మొత్తాన్ని చాలా ఘోరంగా ప్రభావితం చేసే చారిత్రాత్మక మహమ్మారి మరియు ప్రజలు దానితో పోరాడటానికి చాలా కొత్త పరికరాలను నిర్మిస్తున్నారు. కాంటాక్ట్లెస్ టెంపరేచర్ స్క్రీనింగ్ కోసం ఆటోమేటిక్ శానిటైజేషన్ మెషిన్ మరియు థర్మల్ గన్ని కూడా నిర్మించాము. ఈ రోజు మనం కరోనావైరస్ తో పోరాడటానికి మరో పరికరాన్ని నిర్మిస్తాము. ఇది దగ్గును గుర్తించే వ్యవస్థ, ఇది శబ్దం మరియు దగ్గు ధ్వని మధ్య తేడాను గుర్తించగలదు మరియు కరోనా అనుమానితుడిని కనుగొనడంలో సహాయపడుతుంది. దాని కోసం యంత్ర అభ్యాస పద్ధతులను ఉపయోగిస్తుంది.
ఈ ట్యుటోరియల్లో, మేము ఆర్డునో 33 బిఎల్ఇ సెన్స్ మరియు ఎడ్జ్ ఇంపల్స్ స్టూడియోని ఉపయోగించి దగ్గును గుర్తించే వ్యవస్థను నిర్మించబోతున్నాం . ఇది రియల్ టైమ్ ఆడియోలో సాధారణ నేపథ్య శబ్దం మరియు దగ్గు మధ్య తేడాను గుర్తించగలదు. దగ్గు మరియు నేపథ్య శబ్దం నమూనాల డేటాసెట్కు శిక్షణ ఇవ్వడానికి మరియు అత్యంత ఆప్టిమైజ్ చేసిన TInyML మోడల్ను రూపొందించడానికి మేము ఎడ్జ్ ఇంపల్స్ స్టూడియోని ఉపయోగించాము, ఇది నిజ సమయంలో దగ్గు ధ్వనిని గుర్తించగలదు.
భాగాలు అవసరం
హార్డ్వేర్
- Arduino 33 BLE సెన్స్
- LED
- జంపర్ వైర్లు
సాఫ్ట్వేర్
- ఎడ్జ్ ఇంపల్స్ స్టూడియో
- Arduino IDE
మేము ఆర్డునో 33 బిఎల్ఇ సెన్స్ పై వివరణాత్మక ట్యుటోరియల్ ని కవర్ చేసాము.
సర్క్యూట్ రేఖాచిత్రం
Arduino 33 BLE Sense ఉపయోగించి దగ్గును గుర్తించడానికి సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది. Arduino 33 BLE కొరకు ఫ్రిట్జింగ్ భాగం అందుబాటులో లేదు, కాబట్టి రెండూ ఒకే పిన్-అవుట్ కలిగి ఉన్నందున నేను Arduino నానోను ఉపయోగించాను.
LED యొక్క పాజిటివ్ సీసం Arduino 33 BLE సెన్స్ యొక్క డిజిటల్ పిన్ 4 తో అనుసంధానించబడి ఉంది మరియు నెగటివ్ సీసం Arduino యొక్క GND పిన్తో అనుసంధానించబడి ఉంది.
దగ్గును గుర్తించే యంత్రం కోసం డేటాసెట్ను సృష్టించడం
ముందే చెప్పినట్లుగా, మా దగ్గును గుర్తించే మోడల్కు శిక్షణ ఇవ్వడానికి మేము ఎడ్జ్ ఇంపల్స్ స్టూడియోని ఉపయోగిస్తున్నాము. దాని కోసం, మన ఆర్డునోలో గుర్తించగలిగే డేటా నమూనాలను కలిగి ఉన్న డేటాసెట్ను సేకరించాలి. దగ్గును గుర్తించడమే లక్ష్యం కాబట్టి, మీరు దాని యొక్క కొన్ని నమూనాలను మరియు శబ్దం కోసం మరికొన్ని నమూనాలను సేకరించాలి, కాబట్టి ఇది దగ్గు మరియు ఇతర శబ్దాల మధ్య తేడాను గుర్తించగలదు.
మేము “దగ్గు” మరియు “శబ్దం” అనే రెండు తరగతులతో డేటాసెట్ను సృష్టిస్తాము. డేటాసెట్ను సృష్టించడానికి, ఎడ్జ్ ఇంపల్స్ ఖాతాను సృష్టించండి, మీ ఖాతాను ధృవీకరించండి, ఆపై కొత్త ప్రాజెక్ట్ను ప్రారంభించండి. మీరు మీ మొబైల్, మీ ఆర్డునో బోర్డ్ ఉపయోగించి నమూనాలను లోడ్ చేయవచ్చు లేదా మీరు మీ అంచు ప్రేరణ ఖాతాలో డేటాసెట్ను దిగుమతి చేసుకోవచ్చు. మీ మొబైల్ ఫోన్ను ఉపయోగించడం ద్వారా మీ ఖాతాలోకి నమూనాలను లోడ్ చేయడానికి సులభమైన మార్గం. దాని కోసం, మీరు మీ మొబైల్ను ఎడ్జ్ ఇంపల్స్తో కనెక్ట్ చేయాలి.
మీ మొబైల్ ఫోన్ను కనెక్ట్ చేయడానికి, ' పరికరాలు ' పై క్లిక్ చేసి, ఆపై ' కొత్త పరికరాన్ని కనెక్ట్ చేయండి' పై క్లిక్ చేయండి.
ఇప్పుడు తదుపరి విండోలో, ' మీ మొబైల్ ఫోన్ను ఉపయోగించండి ' పై క్లిక్ చేయండి మరియు QR కోడ్ కనిపిస్తుంది. గూగుల్ లెన్స్ లేదా ఇతర క్యూఆర్ కోడ్ స్కానర్ అనువర్తనాన్ని ఉపయోగించి మీ మొబైల్ ఫోన్తో క్యూఆర్ కోడ్ను స్కాన్ చేయండి.
ఇది మీ ఫోన్ను ఎడ్జ్ ఇంపల్స్ స్టూడియోతో కనెక్ట్ చేస్తుంది.
మీ ఫోన్ ఎడ్జ్ ఇంపల్స్ స్టూడియోతో కనెక్ట్ కావడంతో, మీరు ఇప్పుడు మీ నమూనాలను లోడ్ చేయవచ్చు. నమూనాలను లోడ్ చేయడానికి, ' డేటా సముపార్జన' పై క్లిక్ చేయండి. ఇప్పుడు డేటా సముపార్జన పేజీలో, లేబుల్ పేరును నమోదు చేయండి, మైక్రోఫోన్ను సెన్సార్గా ఎంచుకోండి మరియు నమూనా పొడవును నమోదు చేయండి. 40 సెకన్ల నమూనాను ప్రారంభించడానికి ' ప్రారంభ నమూనా' పై క్లిక్ చేయండి. మిమ్మల్ని బలవంతంగా దగ్గుకు బదులుగా, మీరు వేర్వేరు పొడవుల ఆన్లైన్ దగ్గు నమూనాలను ఉపయోగించవచ్చు. వివిధ పొడవుల మొత్తం 10 నుండి 12 దగ్గు నమూనాలను రికార్డ్ చేయండి.
దగ్గు నమూనాలను అప్లోడ్ చేసిన తరువాత, ఇప్పుడు లేబుల్ను 'శబ్దం' గా సెట్ చేసి, మరో 10 నుండి 12 శబ్దం నమూనాలను సేకరించండి.
ఈ నమూనాలు మాడ్యూల్ శిక్షణ కోసం, తదుపరి దశలలో, మేము పరీక్ష డేటాను సేకరిస్తాము. పరీక్ష డేటా కనీసం 30% శిక్షణ డేటా ఉండాలి, కాబట్టి 'శబ్దం' యొక్క 3 నమూనాలను మరియు 'దగ్గు' యొక్క 4 నుండి 5 నమూనాలను సేకరించండి.
మీ డేటాను సేకరించడానికి బదులుగా, మీరు ఎడ్జ్ ఇంపల్స్ CLI అప్లోడర్ను ఉపయోగించి మా డేటాసెట్ను మీ ఎడ్జ్ ఇంపల్స్ ఖాతాలోకి దిగుమతి చేసుకోవచ్చు.
CLI అప్లోడర్ను ఇన్స్టాల్ చేయడానికి, మొదట, మీ ల్యాప్టాప్లో Node.js ని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయండి. ఆ తరువాత కమాండ్ ప్రాంప్ట్ తెరిచి, క్రింది ఆదేశాన్ని నమోదు చేయండి:
npm ఇన్స్టాల్ -g ఎడ్జ్-ఇంపల్స్-క్లి
ఇప్పుడు డేటాసెట్ (డేటాసెట్ లింక్) ను డౌన్లోడ్ చేసి, మీ ప్రాజెక్ట్ ఫోల్డర్లోని ఫైల్ను సేకరించండి. కమాండ్ ప్రాంప్ట్ తెరిచి డేటాసెట్ స్థానానికి నావిగేట్ చేయండి మరియు క్రింది ఆదేశాలను అమలు చేయండి:
అంచు-ప్రేరణ-అప్లోడర్ - స్పష్టమైన అంచు-ప్రేరణ-అప్లోడర్ - వర్గం శిక్షణ శిక్షణ / *. json అంచు-ప్రేరణ-అప్లోడర్ - వర్గం శిక్షణ శిక్షణ / *. cbor అంచు-ప్రేరణ-అప్లోడర్ - వర్గ పరీక్ష పరీక్ష / *. json అంచు-ప్రేరణ-అప్లోడర్ - వర్గం పరీక్ష పరీక్ష / *. cbor
మోడల్కు శిక్షణ ఇవ్వడం మరియు కోడ్ను ట్వీకింగ్ చేయడం
డేటాసెట్ సిద్ధంగా ఉన్నందున, ఇప్పుడు మేము డేటా కోసం ఒక ప్రేరణను సృష్టిస్తాము. దాని కోసం ' ప్రేరణను సృష్టించు ' పేజీకి వెళ్ళండి.
ఇప్పుడు ' ప్రేరణను సృష్టించు' పేజీలో, ' ప్రాసెసింగ్ బ్లాక్ను జోడించు ' పై క్లిక్ చేయండి. తదుపరి విండోలో, ఆడియో (MFCC) బ్లాక్ను ఎంచుకోండి. ఆ క్లిక్ తరువాత ' ఒక అభ్యాస బ్లాక్ జోడించండి' మరియు ఎంచుకోండి న్యూరల్ నెట్వర్క్ (Keras) బ్లాక్. అప్పుడు ' సేవ్ ఇంపల్స్' పై క్లిక్ చేయండి.
తదుపరి దశలో, MFCC పేజీకి వెళ్లి, ఆపై ' ఫీచర్స్ సృష్టించు ' పై క్లిక్ చేయండి. ఇది మా అన్ని ఆడియో విండోస్ కోసం MFCC బ్లాక్లను ఉత్పత్తి చేస్తుంది.
ఆ ప్రయాణంలో 'తర్వాత NN వర్గీకరణ' 'ఎగువ కుడి మూలలో మూడు చుక్కలు క్లిక్ పేజీ మరియు న్యూరల్ నెట్వర్క్ సెట్టింగ్లు' మరియు 'ఎంచుకోండి Keras (నిపుణుడు) మోడ్కు మారండి' .
కింది కోడ్తో అసలైనదాన్ని మార్చండి మరియు ' కనిష్ట విశ్వాస రేటింగ్' ను '0.70' గా మార్చండి. అప్పుడు ' స్టార్ట్ ట్రైనింగ్' బటన్ పై క్లిక్ చేయండి. ఇది మీ మోడల్కు శిక్షణ ఇవ్వడం ప్రారంభిస్తుంది.
tensorflow.keras. దిగుమతి మాక్స్నార్మ్ # మోడల్ ఆర్కిటెక్చర్ మోడల్ = సీక్వెన్షియల్ () మోడల్.అడ్ (ఇన్పుట్లేయర్ (ఇన్పుట్_షాప్ = (ఎక్స్_ట్రెయిన్.షాప్,), పేరు = 'ఎక్స్_ఇన్పుట్')) మోడల్ 1), input_shape = (X_train.shape,))) model.add (Conv2D (10, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3)) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3%)) model.add (AveragePooling2D (పూల్_సైజ్ = 2,padding = 'same')) model.add (Flatten ()) model.add (దట్టమైన (తరగతులు, క్రియాశీలత = 'సాఫ్ట్మాక్స్', పేరు = 'y_pred', kernel_constraint = MaxNorm (3%)) # ఇది అభ్యాస రేటు ఎంపికను నియంత్రిస్తుంది = ఆడమ్ (lr = 0.005, బీటా_1 = 0.9, బీటా_2 = 0.999) # న్యూరల్ నెట్వర్క్ మోడల్.కామ్ (నష్టం = 'వర్గీకరణ_క్రాసెంట్రోపీ', ఆప్టిమైజర్ = ఆప్ట్, మెట్రిక్స్ =) మోడల్కు శిక్షణ ఇవ్వండి. = 9, ధ్రువీకరణ_డేటా = (X_test, Y_test), verbose = 2)verbose = 2)verbose = 2)
మోడల్కు శిక్షణ ఇచ్చిన తరువాత, ఇది శిక్షణ పనితీరును చూపుతుంది. నాకు, ఖచ్చితత్వం 96.5% మరియు నష్టం 0.10, ఇది కొనసాగడం మంచిది.
ఇప్పుడు మా దగ్గును గుర్తించే మోడల్ సిద్ధంగా ఉన్నందున, మేము ఈ నమూనాను ఆర్డునో లైబ్రరీగా అమలు చేస్తాము. మోడల్ను లైబ్రరీగా డౌన్లోడ్ చేయడానికి ముందు, మీరు ' లైవ్ క్లాసిఫికేషన్ ' పేజీకి వెళ్లి పనితీరును పరీక్షించవచ్చు.
' డిప్లాయ్మెంట్ ' పేజీకి వెళ్లి ' ఆర్డునో లైబ్రరీ' ఎంచుకోండి . ఇప్పుడు క్రిందికి స్క్రోల్ చేసి, ప్రక్రియను ప్రారంభించడానికి 'బిల్డ్' పై క్లిక్ చేయండి. ఇది మీ ప్రాజెక్ట్ కోసం ఆర్డునో లైబ్రరీని నిర్మిస్తుంది.
ఇప్పుడు మీ Arduino IDE లో లైబ్రరీని జోడించండి. దాని కోసం Arduino IDE ని తెరిచి, ఆపై స్కెచ్> Includ Library> Add.ZIP లైబ్రరీపై క్లిక్ చేయండి .
అప్పుడు, ఫైల్> ఉదాహరణలు> మీ ప్రాజెక్ట్ పేరు - ఎడ్జ్ ఇంపల్స్> నానో_బుల్ 33_సెన్స్_మిక్రోఫోన్కు వెళ్లడం ద్వారా ఉదాహరణను లోడ్ చేయండి.
మేము కోడ్లో కొన్ని మార్పులు చేస్తాము, తద్వారా ఆర్డునో దగ్గును గుర్తించినప్పుడు మేము హెచ్చరిక శబ్దం చేయవచ్చు. దాని కోసం, ఒక బజర్ అర్డునోతో అనుసంధానించబడి ఉంటుంది మరియు దగ్గును గుర్తించినప్పుడల్లా, LED మూడుసార్లు రెప్పపాటు చేస్తుంది.
శబ్దం మరియు దగ్గు విలువలను ముద్రించే శూన్య లూప్ () ఫంక్షన్లలో మార్పులు చేయబడతాయి. అసలు కోడ్లో, ఇది లేబుల్లను మరియు వాటి విలువలను రెండింటినీ కలిపి ముద్రిస్తుంది.
(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 కన్నా ఎక్కువ మరియు అది ధ్వనిని చేస్తుంది. లూప్ () కోడ్ కోసం అసలైనదాన్ని దీనితో భర్తీ చేయండి:
(size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {సీరియల్.ప్రింట్ (result.classification.value); ఫ్లోట్ డేటా = result.classification.value; if (డేటా <0.50) {సీరియల్.ప్రింట్ ("దగ్గు కనుగొనబడింది"); అలారం(); }}
మార్పులు చేసిన తర్వాత, కోడ్ను మీ ఆర్డునోలో అప్లోడ్ చేయండి. 115200 బాడ్ వద్ద సీరియల్ మానిటర్ను తెరవండి.
కాబట్టి ఈ విధంగా దగ్గును గుర్తించే యంత్రాన్ని నిర్మించవచ్చు, ఏదైనా COVID19 నిందితుడిని కనుగొనడం చాలా ప్రభావవంతమైన పద్ధతి కాదు కాని ఇది రద్దీగా ఉండే ప్రదేశంలో చక్కగా పని చేస్తుంది.
లైబ్రరీ మరియు కోడ్తో పూర్తి పని వీడియో క్రింద ఇవ్వబడింది: