Բովանդակություն:
- Պարագաներ
- Քայլ 1: Շղթայի դիագրամ
- Քայլ 2. Հազի հայտնաբերման մեքենայի տվյալների հավաքածուի ստեղծում
- Քայլ 3: Միացեք բջջային հեռախոսին
- Քայլ 4:
- Քայլ 5. Մոդելի ուսուցում և ծածկագրի շտկում
- Քայլ 6:
- Քայլ 7: Կոդ
Video: Գրպանային չափի հազի դետեկտոր `7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
COVID19- ն իսկապես պատմական համաճարակ է, որը շատ վատ է անդրադառնում ամբողջ աշխարհի վրա, և մարդիկ շատ նոր սարքեր են կառուցում դրա դեմ պայքարելու համար: Մենք նաև կառուցել ենք ախտահանման ավտոմատ մեքենա և ջերմային ատրճանակ `առանց կոնտակտային ջերմաստիճանի ցուցադրման: Այսօր մենք կկառուցենք ևս մեկ սարք, որը կօգնի պայքարել կորոնավիրուսի դեմ: Դա հազի հայտնաբերման համակարգ է, որը կարող է տարբերակել աղմուկը և հազի ձայնը և կարող է օգնել հայտնաբերել կորոնավիրուսի կասկածյալին: Դրա համար այն կօգտագործի մեքենայական ուսուցման տեխնիկա:
Այս ձեռնարկում մենք պատրաստվում ենք կառուցել Հազի հայտնաբերման համակարգ ՝ օգտագործելով Arduino 33 BLE Sense և Edge Impulse Studio- ն: Այն կարող է տարբերակել սովորական ֆոնային աղմուկը և հազը իրական ժամանակի ձայնի մեջ: Մենք Edge Impulse Studio- ի միջոցով վարժեցանք հազի և ֆոնային աղմուկի նմուշների հավաքածու և կառուցեցինք բարձր օպտիմիզացված TInyML մոդել, որը կարող է իրական ժամանակում հայտնաբերել Հազի ձայն:
Պարագաներ
Սարքավորումներ
- Arduino 33 BLE Sense
- LEDJumper
- Լարերը
Ծրագրային ապահովում
- Edge Impulse Studio
- Arduino IDE
Քայլ 1: Շղթայի դիագրամ
Arduino 33 BLE Sense- ի միջոցով հազի հայտնաբերման սխեմայի սխեման տրված է վերևում: Arduino 33 BLE- ի սառեցնող մասը հասանելի չէր, այնպես որ ես օգտագործեցի Arduino Nano- ն, քանի որ երկուսն էլ ունեն նույն քորոցը:
LED- ի դրական կապը միացված է Arduino 33 BLE զգայարանի 4 թվային կապին, իսկ բացասական կապը `Arduino- ի GND կապին:
Քայլ 2. Հազի հայտնաբերման մեքենայի տվյալների հավաքածուի ստեղծում
Ինչպես արդեն նշվեց, մենք օգտագործում ենք Edge Impulse Studio- ն ՝ հազի հայտնաբերման մեր մոդելը մարզելու համար: Դրա համար մենք պետք է հավաքենք մի հավաքածու, որը պարունակում է տվյալների նմուշներ, որոնք մենք կցանկանայինք ճանաչել մեր Arduino- ում: Քանի որ նպատակը հազի հայտնաբերումն է, ապա ձեզ հարկավոր է հավաքել այդ և որոշ այլ նմուշներ աղմուկի համար, որպեսզի այն կարողանա տարբերակել հազի և այլ աղմուկների միջև: Մենք կստեղծենք տվյալների հավաքածու երկու դասի «հազ» և «աղմուկ»: Տվյալներ ստեղծելու համար ստեղծեք Edge Impulse հաշիվ, հաստատեք ձեր հաշիվը և ապա սկսեք նոր նախագիծ: Դուք կարող եք բեռնել նմուշները ՝ օգտագործելով ձեր բջջային հեռախոսը, ձեր Arduino տախտակը կամ կարող եք տվյալների հավաքածու ներմուծել ձեր ծայրահեղ իմպուլսային հաշվի մեջ: Ձեր հաշվին նմուշներ բեռնելու ամենահեշտ ձևը բջջային հեռախոսի օգտագործումն է: Դրա համար դուք պետք է ձեր բջջային հեռախոսը միացնեք Edge Impulse- ի հետ: Ձեր բջջային հեռախոսը միացնելու համար կտտացրեք «Սարքեր», այնուհետև կտտացրեք «Միացրեք նոր սարք»:
Քայլ 3: Միացեք բջջային հեռախոսին
Այժմ հաջորդ պատուհանում կտտացրեք «Օգտագործեք ձեր բջջային հեռախոսը» և կհայտնվի QR կոդ: Ձեր բջջային հեռախոսի միջոցով սկանավորեք QR կոդը ՝ օգտագործելով Google Lens կամ QR կոդերի սկաների այլ ծրագիր:
Սա ձեր հեռախոսը կկապի Edge Impulse ստուդիայի հետ:
Edge Impulse Studio- ի հետ կապված ձեր հեռախոսով այժմ կարող եք բեռնել ձեր նմուշները: Նմուշները բեռնելու համար կտտացրեք «Տվյալների ձեռքբերում»: Այժմ Տվյալների ձեռքբերման էջում մուտքագրեք պիտակի անունը, ընտրեք խոսափողը որպես սենսոր և մուտքագրեք նմուշի երկարությունը: Կտտացրեք «Սկսել նմուշառում» ՝ 40 վրկ նմուշառում սկսելու համար: Հազալ ստիպելու փոխարեն կարող եք օգտագործել տարբեր երկարությունների հազի առցանց նմուշներ: Ընդհանուր առմամբ գրանցեք տարբեր երկարությունների 10 -ից 12 հազի նմուշներ:
Քայլ 4:
Հազի նմուշները բեռնելուց հետո դրեք պիտակը «աղմուկ» և հավաքեք ևս 10 -ից 12 աղմուկի նմուշ:
Այս նմուշները մոդուլը պատրաստելու համար են, հաջորդ քայլերում մենք կհավաքենք թեստի տվյալները: Փորձարկման տվյալները պետք է կազմեն ուսուցման տվյալների առնվազն 30% -ը, այնպես որ հավաքեք «աղմուկի» 3 և «հազի» 4 -ից 5 նմուշ: Ձեր տվյալները հավաքելու փոխարեն, դուք կարող եք մեր տվյալների հավաքածուն ներմուծել ձեր Edge Impulse հաշվի միջոցով ՝ օգտագործելով Edge Իմպուլսային CLI վերբեռնիչ: CLI Uploader- ը տեղադրելու համար նախ ներբեռնեք և տեղադրեք Node.js ձեր համակարգչի վրա: Դրանից հետո բացեք հրամանի տողը և մուտքագրեք ստորև բերված հրամանը.
npm տեղադրել -g edge-impulse-cli
Այժմ ներբեռնեք տվյալների հավաքածուն (Dataset Link) և հանեք ֆայլը ձեր ծրագրի թղթապանակում: Բացեք հրամանի տողը և անցեք տվյալների բազայի գտնվելու վայրը և գործարկեք ստորև բերված հրամանները.
edge-impulse-uploader --cleanedge-impulse-uploader-կատեգորիայի ուսուցում/*. json
edge-impulse-uploader-կատեգորիայի ուսուցման ուսուցում/*. cbor
edge-impulse-uploader-կատեգորիայի թեստավորման փորձարկում/*. json edge-impulse-uploader-կատեգորիայի փորձարկում//
Քայլ 5. Մոդելի ուսուցում և ծածկագրի շտկում
Երբ տվյալների հավաքածուն պատրաստ է, այժմ մենք տվյալների իմպուլս կստեղծենք: Դրա համար անցեք «Ստեղծել իմպուլս» էջ:
Այժմ «Ստեղծեք իմպուլս» էջում կտտացրեք «Ավելացնել մշակման բլոկ»: Հաջորդ պատուհանում ընտրեք «Աուդիո» (MFCC) բլոկը: Դրանից հետո կտտացրեք «Ավելացնել ուսուցման բլոկ» և ընտրեք նյարդային ցանց (Keras) բլոկը: Այնուհետև կտտացրեք «Պահպանել իմպուլսը»:
Հաջորդ քայլում գնացեք MFCC էջ և այնուհետև կտտացրեք «Ստեղծել հնարավորություններ»: Այն կստեղծի MFCC բլոկներ մեր բոլոր ձայնային պատուհանների համար:
Դրանից հետո գնացեք «NN դասակարգիչ» էջ և կտտացրեք «Նյարդային ցանցի կարգավորումներ» վերին աջ անկյունում գտնվող երեք կետերին և ընտրեք «Անցնել Keras (փորձագետ) ռեժիմ»:
Բնօրինակը փոխարինեք հետևյալ ծածկագրով և փոխեք «Նվազագույն վստահության վարկանիշը» ՝ «0.70»: Այնուհետև կտտացրեք «Սկսել մարզումը» կոճակին: Այն կսկսի պատրաստել ձեր մոդելը:
ներմուծել tensorflow որպես tffrom tensorflow.keras.models ներմուծում հաջորդական tensorflow.keras.layers- ից ներմուծել Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D from tensorflow.keras.optimizers. MaxNorm # model architecture model = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1],), name = 'x_input')) model.add (Reshape ((int (X_train.shape [1] /) 13), 13, 1), input_shape = (X_train.shape [1],))) 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 (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (խիտ (դասեր, ակտիվացում = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # սա վերահսկում է ուսուցման մակարդակը opt = Adam (lr = 0.005, բետա_ 1 = 0.9, բետա_2 = 0.999) # վարժեցնել նյարդային ցանցի մոդելը. Կույտ (կորուստ = 'կատեգորիկ_կոսենտրոպիա', օպտիմալացնող = ընտրություն, չափումներ = ['ճշգրտություն]) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), verbose = 2)
Քայլ 6:
Մոդելը վերապատրաստելուց հետո այն ցույց կտա ուսուցման կատարումը: Ինձ համար ճշգրտությունը 96.5% էր, իսկ կորուստը `0.10, ինչը լավ է շարունակել:
Այժմ, երբ հազի հայտնաբերման մեր մոդելը պատրաստ է, մենք այս մոդելը կտեղադրենք որպես Arduino գրադարան: Նախքան մոդելը որպես գրադարան ներբեռնելը, կարող եք ստուգել կատարումը ՝ անցնելով «Կենդանի դասակարգում» էջին: Գնացեք «Տեղակայման» էջ և ընտրեք «Arduino Library»: Այժմ ոլորեք ներքև և կտտացրեք «Կառուցել» ՝ գործընթացն սկսելու համար: Սա կկառուցի Arduino գրադարան ձեր նախագծի համար:
Այժմ ավելացրեք գրադարանը ձեր Arduino IDE- ում: Դրա համար բացեք Arduino IDE- ն, այնուհետև կտտացրեք Էսքիզ> Ներառել գրադարան> Ավելացնել: ZIP գրադարան: Այնուհետև բեռնեք օրինակ ՝ անցնելով Ֆայլ> Օրինակներ> Ձեր նախագծի անունը - Edge Impulse> nano_ble33_sense_microphone: Մենք որոշ փոփոխություններ կկատարենք ծածկագրում, որպեսզի կարողանանք ահազանգ հնչեցնել, երբ Arduino- ն հազ հայտնաբերի: Դրա համար ազդանշանը միացված է Arduino- ի հետ, և երբ այն հայտնաբերում է հազը, LED- ը կթարթվի երեք անգամ: Փոփոխությունները կատարվում են void loop () գործառույթներում, որտեղ այն տպում է աղմուկի և հազի արժեքները: Սկզբնական ծածկագրում այն տպում է թե՛ պիտակները և թե՛ դրանց արժեքները միասին: for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].bebel, result.classification [ix]. արժեք); } Մենք պատրաստվում ենք խնայել ինչպես աղմուկի, այնպես էլ հազի արժեքները տարբեր փոփոխականներում և համեմատել աղմուկի արժեքները: Եթե աղմուկի արժեքը իջնում է 0.50 -ից, դա նշանակում է, որ հազի արժեքը 0.50 -ից բարձր է, և այն ձայն կհանի: Loop () կոդի բնօրինակը փոխարինեք հետևյալով ՝ for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Տվյալներ <0.50) {Serial.print («Հազը հայտնաբերված է»); ահազանգ (); }} Փոփոխություններ կատարելուց հետո վերբեռնեք կոդը ձեր Arduino- ում: Բացեք սերիական մոնիտորը 115200 baud- ում:
Այսպիսով, այսպես կարելի է ստեղծել հազի հայտնաբերման մեքենա, դա այնքան էլ արդյունավետ մեթոդ չէ COVID19- ի ցանկացած կասկածյալ գտնելու համար, բայց այն կարող է լավ աշխատել որոշ մարդաշատ վայրերում:
Քայլ 7: Կոդ
Խնդրում ենք գտնել կից ֆայլը, Եվ եթե ձեզ դուր եկավ, մի մոռացեք ինձ քվեարկել ստորև ներկայացված մրցույթում:
Խորհուրդ ենք տալիս:
Գրպանի չափի CO (ածխածնի երկօքսիդ) դետեկտոր ՝ 5 քայլ
Գրպանի չափի CO (ածխածնի երկօքսիդ) դետեկտոր. Ինչպես անունն է ասում, սա գրպանի չափի CO դետեկտոր է, որն օգտագործվում է օդում ածխածնի երկօքսիդի հայտնաբերման համար: Մեր նպատակն էր այս սարքը դյուրակիր դարձնել և որը տեղավորվում է գրպանի չափի մեջ: Այժմ մի օր մենք կանգնած ենք օդի աղտոտման խնդիրը արդյունաբերականացման հետևանքով
Գրպանային ֆազերից մինչև գրպանային լազեր ՝ 6 քայլ
Pocket Phaser- ից Pocket Laser: Այս նախագծում մենք փոխակերպելու ենք մի փոքր խաղալիք Star Trek Phaser, որը գտել եմ Barnes & Ազնվական է լազերային ցուցիչի համար: Ես ունեմ այս ֆազերներից երկուսը, և մեկը մարտկոցը սպառեց լույսի ներքո, ուստի որոշեցի այն վերածել վերալիցքավորվող լազերային
Անջրանցիկ գրպանային չափի մարտկոցի պահեստավորում `4 քայլ
Անջրանցիկ գրպանային չափի մարտկոցի պահեստավորում. Մարտկոցներ օգտագործող սարքերը, կարծես, ամեն անգամ շրջվելիս թարմ բջիջների կարիք ունեն: Պարզ լուծում, գրպանում լրացուցիչ մարտկոցներ պահեք կամ հատուկ նախագծված կրիչ: fortunatelyավոք, այս երկու մեթոդների հետ կապված խնդիրներ կան: .Եթե դու տանում ես բա
Ամենաթեժ USB L.E.D. Գրպանի չափի լույս (գրպանի չափի մուտք) `6 քայլ
Ամենաթեժ USB L.E.D. Գրպանի չափի լույս (գրպանի չափի մուտք). Այս հրահանգում ես ձեզ ցույց կտամ, թե ինչպես պատրաստել USB- ով աշխատող L.E.D. լույս, որը կարող է ծալվել X-it Mints անագի չափի մեջ և հեշտությամբ կարող է տեղավորվել գրպանում: Եթե ձեզ դուր է գալիս, անպայման + այն դրեք և քվեարկեք ինձ համար մրցույթում: Նյութերը և
USB Thumb Drive Zippo Lighter Case Mod (գրպանային չափի մրցույթ. Քվեարկիր ինձ համար): 7 քայլ
USB Thumb Drive Zippo Lighter Case Mod (գրպանային չափի մրցույթ. Քվեարկիր ինձ համար): Հոգնե՞լ եք այդ ձանձրալի արտաքին բութ USB կրիչից: Համեմեք այն Zippo Lighter Mod- ով: