INHOUDSOPGAWE:
- Voorrade
- Stap 1: Kringdiagram
- Stap 2: Skep die datastel vir die opsporing van masjiene vir hoes
- Stap 3: Koppel aan die selfoon
- Stap 4:
- Stap 5: Leer die model op en pas die kode aan
- Stap 6:
- Stap 7: Kode
Video: Hoesverklikker in sakformaat: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
COVID19 is regtig 'n historiese pandemie wat die hele wêreld baie erg raak en mense bou baie nuwe toestelle om daarmee te veg. Ons het ook 'n outomatiese ontsmettingsmasjien en 'n termiese geweer vir kontaklose temperatuurondersoeke gebou. Vandag gaan ons nog 'n toestel bou om die stryd teen Coronavirus te beveg. Dit is 'n hoesopsporingstelsel wat kan onderskei tussen geraas en hoesgeluid en kan help om 'n Corona -verdagte te vind. Daarvoor gebruik hulle masjienleertegnieke.
In hierdie tutoriaal gaan ons 'n hoesopsporingstelsel bou met behulp van Arduino 33 BLE Sense en Edge Impulse Studio. Dit kan onderskei tussen normale agtergrondgeraas en hoes in real-time klank. Ons het Edge Impulse Studio gebruik om 'n dataset met hoes- en agtergrondgeraasmonsters op te lei en 'n hoogs geoptimaliseerde TInyML-model te bou wat 'n hoesgeluid in real-time kan opspoor.
Voorrade
Hardeware
- Arduino 33 BLE Sense
- LED -trui
- Drade
Sagteware
- Edge Impulse Studio
- Arduino IDE
Stap 1: Kringdiagram
Kringdiagram vir hoesopsporing met behulp van Arduino 33 BLE Sense word hierbo gegee. Fritzing-deel vir Arduino 33 BLE was nie beskikbaar nie, so ek het Arduino Nano gebruik, want albei het dieselfde pin-out.
Die positiewe lood van LED is gekoppel aan digitale pen 4 van Arduino 33 BLE sin en negatiewe lood is gekoppel aan die GND -pen van Arduino.
Stap 2: Skep die datastel vir die opsporing van masjiene vir hoes
Soos vroeër genoem, gebruik ons Edge Impulse Studio om ons hoesopsporingsmodel op te lei. Hiervoor moet ons 'n datastel versamel met die monsters van data wat ons graag op ons Arduino wil herken. Aangesien die doel is om hoes op te spoor, moet u 'n paar monsters daarvan en 'n paar ander monsters opneem om geraas te maak, sodat dit kan onderskei tussen hoes en ander geluide. Ons sal 'n datastel skep met twee klasse "hoes" en "geraas". Om 'n datastel te skep, skep 'n Edge Impulse -rekening, verifieer u rekening en begin dan 'n nuwe projek. U kan die monsters laai met u selfoon, u Arduino -bord, of u kan 'n datastel in u edge impulse -rekening invoer. Die maklikste manier om die monsters in u rekening te laai, is deur u selfoon te gebruik. Hiervoor moet u u selfoon verbind met Edge Impulse. Om u selfoon aan te sluit, klik op 'Toestelle' en klik dan op 'Koppel 'n nuwe toestel'.
Stap 3: Koppel aan die selfoon
Klik in die volgende venster op 'Gebruik u selfoon' en 'n QR -kode verskyn. Skandeer die QR -kode met u selfoon met behulp van Google Lens of 'n ander QR -kode skandeerder -app.
Dit verbind u telefoon met die Edge Impulse -ateljee.
As u telefoon verbind is met Edge Impulse Studio, kan u u monsters nou laai. Om die monsters te laai, klik op 'Data -verkryging'. Tik nou op die Data -verkryging -bladsy die etiketnaam, kies die mikrofoon as sensor en voer die monsterlengte in. Klik op 'Begin monsterneming' om 'n monster van 40 sekondes te begin neem. In plaas daarvan om u te dwing om te hoes, kan u aanlyn hoesmonsters van verskillende lengtes gebruik. Teken 'n totaal van 10 tot 12 hoesmonsters van verskillende lengtes op.
Stap 4:
Nadat u die hoesmonsters opgelaai het, stel die etiket nou op 'geraas' en versamel nog 10 tot 12 geraasmonsters.
Hierdie voorbeelde is vir die opleiding van die module; in die volgende stappe versamel ons die toetsdata. Toetsdata moet ten minste 30% van die opleidingsdata wees, dus versamel die 3 monsters 'geraas' en 4 tot 5 monsters 'hoes'. In plaas daarvan om u data te versamel, kan u ons datastel met die Edge in u Edge Impulse -rekening invoer Impulse CLI -oplaaier. Laai en installeer eers Node.js op u skootrekenaar om die CLI Uploader te installeer. Open daarna die opdragprompt en voer die onderstaande opdrag in:
npm installeer -g edge-impulse-cli
Laai nou die datastel (Dataset Link) af en pak die lêer in u projekmap af. Maak die opdragprompt oop en navigeer na die ligging van die datastel en voer die onderstaande opdragte uit:
edge-impulse-uploader --cleanedge-impulse-uploader-kategorie opleiding opleiding/*. json
edge-impulse-uploader-kategorie opleiding/*. cbor
edge-impulse-uploader-toets toets vir kategorieë/*. json edge-impulse-uploader-toets vir kategorie toets/*. cbor
Stap 5: Leer die model op en pas die kode aan
Aangesien die datastel gereed is, skep ons nou 'n impuls vir data. Gaan daarvoor na die 'Skep impuls' -bladsy.
Klik nou op die 'Skep impuls' -bladsy op' Voeg 'n verwerkingsblok by '. Kies die Audio (MFCC) -blok in die volgende venster. Klik daarna op 'Voeg 'n leerblok by' en kies die blok Neurale netwerk (Keras). Klik dan op 'Save Impulse'.
Gaan in die volgende stap na die MFCC -bladsy en klik dan op 'Genereer funksies'. Dit genereer MFCC -blokke vir al ons vensters met klank.
Gaan daarna na die 'NN Classifier' -bladsy en klik op die drie kolletjies in die regter boonste hoek van die' Neurale netwerkinstellings 'en kies' Skakel oor na Keras (deskundige) modus '.
Vervang die oorspronklike met die volgende kode en verander die 'Minimum vertrouensgradering' na '0.70'. Klik dan op die 'Begin opleiding' -knoppie. Dit sal begin met die opleiding van u model.
import tensorflow as tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D from tensorflow.keras.optimizers import Adam from tensorflow.keras. MaxNorm # model argitektuur model = Opeenvolgende () model.add (InputLayer (input_shape = (X_train.shape [1],), naam = 'x_input')) model.add (Hervorm ((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 (Dig (klasse, aktivering = 'softmax', naam = 'y_pred', kernel_constraint = MaxNorm (3))) # dit beheer die leertempo opt = Adam (lr = 0.005, beta_ 1 = 0,9, beta_2 = 0,999) # oefen die neurale netwerk model op. Stel (loss = 'categorical_crossentropy', optimizer = opt, metrics = ['accuracy']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), uitgebreid = 2)
Stap 6:
Nadat u die model opgelei het, sal dit die opleidingsprestasie toon. Vir my was die akkuraatheid 96,5% en die verlies 0,10, dit is goed om voort te gaan.
Aangesien ons hoesopsporingsmodel gereed is, sal ons hierdie model as 'n Arduino -biblioteek implementeer. Voordat u die model as 'n biblioteek aflaai, kan u die prestasie toets deur na die 'Live Classification' -bladsy te gaan. Gaan na die 'Deployment' -bladsy en kies' Arduino Library '. Blaai nou af en klik op 'Bou' om die proses te begin. Dit bou 'n Arduino -biblioteek vir u projek.
Voeg nou die biblioteek by u Arduino IDE. Maak hiervoor die Arduino IDE oop en klik dan op Sketch> Include Library> Add. ZIP library. Laai dan 'n voorbeeld deur na Lêer> Voorbeelde> Jou projeknaam - Edge Impulse> nano_ble33_sense_microphone te gaan. Ons sal die kode verander, sodat ons 'n waarskuwing kan maak wanneer die Arduino hoes opspoor. Hiervoor word 'n gonser met Arduino verbind, en wanneer dit hoes opspoor, sal die LED drie keer knip. Die veranderinge word aangebring in die leemte () -funksies, waar dit die waardes vir geraas en hoes druk. In die oorspronklike kode druk die etikette en hul waardes saam. vir (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Ons gaan die geraas- en hoeswaardes in verskillende veranderlikes stoor en die geraaswaardes vergelyk. As die geraaswaarde onder 0,50 daal, beteken dit dat die hoeswaarde meer as 0,50 is en dit sal die geluid maak. Vervang die oorspronklike vir loop () -kode hiermee: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = resultaat.klassifikasie [ix].waarde; as (Data <0,50) {Serial.print ("Hoes opgespoor"); alarm (); }} Laai die kode na u Arduino op nadat u die veranderinge aangebring het. Maak die reeksmonitor oop op 115200 baud.
So kan 'n hoesopsporingsmasjien gebou word; dit is nie 'n baie effektiewe metode om 'n COVID19 -verdagte op te spoor nie, maar dit kan goed werk in 'n oorvol gebied.
Stap 7: Kode
Sien asseblief die aangehegde, En as u daarvan hou, vergeet dan nie om my in die onderstaande wedstryd te stem nie.
Aanbeveel:
Waterstof-/suurstofgenerator in sakformaat: 5 stappe
Waterstof-/suurstofgenerator in sakformaat: waterstof is baie lekker om mee te speel, maar die doeltreffendste kragopwekkers is groot. Ek wou iets maak wat klein is en waterstof kan produseer. Hierdie handleiding sal u wys hoe u 'n waterstof-/suurstofgenerator in 'n sakformaat kan maak. Ongelukkig is dit nie so nie
Waterpomp in sakformaat: 7 stappe
Waterpomp in sakformaat: In daaglikse situasies is beskikbare water dikwels besmet, ongesond of selfs giftig. Daarom is dit dikwels nodig om drinkbare water van laer vlakke na hoër vlakke te vervoer waar dit gebruik kan word. 'N Waterpomp is dikwels 'n lewensvatbare opsie
Minion Bot in sakformaat: 3 stappe
Pocket Sized Minion Bot: > Ek het hierdie verjaardag minion bot gemaak uit die rommel. Hierdie verjaardag Minion bot loop met 'n flitslig in sy oë deur te sing met 'n verjaarsdagliedjie, ek het dit vir my vriend se verjaardag gemaak. Julle sal ook hiervan hou
Kragtoevoer in sakformaat: 5 stappe (met foto's)
Kragtoevoer in sak: Hier is 'n geminiaturiseerde verstelbare kragbron, u kan die uitset van 1,2V tot 16,8V (GS) aanpas
Penny Etcher in sakformaat: 7 stappe
Penny Etcher in 'n groot sak: ek het gedink dit sal gaaf wees om 'n paar pennies in pennies te sny, wat dit met 'n mes of 'n beitel doen. Maar vir my is dit baie werk. Ek het dus 'n elektriese etser gemaak sodat ek op enige koper metaal kan trek. Dit is hoe u die sak in 'n sakformaat kan maak