INHOUDSOPGAWE:

Hoesverklikker in sakformaat: 7 stappe
Hoesverklikker in sakformaat: 7 stappe

Video: Hoesverklikker in sakformaat: 7 stappe

Video: Hoesverklikker in sakformaat: 7 stappe
Video: 12 Coolest GADGETS FOR MEN That Are Worth Buying 2024, November
Anonim
Hoesverklikker in sakformaat
Hoesverklikker in sakformaat

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

Stroombaandiagram
Stroombaandiagram
Stroombaandiagram
Stroombaandiagram

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

Die skep van die datastel vir die opsporing van masjiene vir hoes
Die skep van 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

Koppel aan die selfoon
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:

Beeld
Beeld
Beeld
Beeld

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: