Indholdsfortegnelse:

Pocket Sized Host Detector: 7 trin
Pocket Sized Host Detector: 7 trin

Video: Pocket Sized Host Detector: 7 trin

Video: Pocket Sized Host Detector: 7 trin
Video: How to Check your mirrors at airbnb 2024, November
Anonim
Lommestørrelse hostedetektor
Lommestørrelse hostedetektor

COVID19 er virkelig en historisk pandemi, der påvirker hele verden meget dårligt, og folk bygger mange nye enheder til at kæmpe med det. Vi har også bygget en automatisk saneringsmaskine og termisk pistol til kontaktløs temperaturskærmning. I dag bygger vi endnu en enhed til at hjælpe med at bekæmpe Coronavirus. Det er et hostedetektionssystem, som kan skelne mellem støj og hostelyd og kan hjælpe med at finde Corona mistænkt. Det vil bruge maskinlæringsteknikker til det.

I denne vejledning skal vi bygge et hostedetektionssystem ved hjælp af Arduino 33 BLE Sense og Edge Impulse Studio. Det kan skelne mellem normal baggrundsstøj og hoste i lyd i realtid. Vi brugte Edge Impulse Studio til at træne et datasæt af hoste- og baggrundsstøjprøver og bygge en stærkt optimeret TInyML-model, der kan registrere en hostelyd i realtid.

Forbrugsvarer

Hardware

  • Arduino 33 BLE Sense
  • LED -jumper
  • Ledninger

Software

  • Edge Impulse Studio
  • Arduino IDE

Trin 1: Kredsløbsdiagram

Kredsløbsdiagram
Kredsløbsdiagram
Kredsløbsdiagram
Kredsløbsdiagram

Kredsløbsdiagram til hostedetektion ved hjælp af Arduino 33 BLE Sense er angivet ovenfor. Fritzing-del til Arduino 33 BLE var ikke tilgængelig, så jeg brugte Arduino Nano, da begge har den samme pin-out.

Den positive ledning af LED er forbundet til digital pin 4 i Arduino 33 BLE sense, og negativ ledning er forbundet til GND -pin på Arduino.

Trin 2: Oprettelse af datasættet til hostedetektionsmaskine

Oprettelse af datasættet til hostedetektionsmaskine
Oprettelse af datasættet til hostedetektionsmaskine

Som tidligere nævnt bruger vi Edge Impulse Studio til at træne vores hostedetekteringsmodel. Til det skal vi indsamle et datasæt, der har prøver af data, som vi gerne vil kunne genkende på vores Arduino. Da målet er at opdage hosten, skal du indsamle nogle prøver af det og nogle andre prøver for støj, så det kan skelne mellem hoste og andre lyde. Vi opretter et datasæt med to klasser "hoste" og "støj". For at oprette et datasæt skal du oprette en Edge Impulse -konto, bekræfte din konto og derefter starte et nyt projekt. Du kan indlæse prøverne ved hjælp af din mobil, dit Arduino -kort, eller du kan importere et datasæt til din edge impulskonto. Den nemmeste måde at indlæse prøverne på din konto er ved at bruge din mobiltelefon. Til det skal du forbinde din mobil med Edge Impulse. For at forbinde din mobiltelefon skal du klikke på 'Enheder' og derefter klikke på 'Tilslut en ny enhed'.

Trin 3: Opret forbindelse til mobiltelefon

Opret forbindelse til mobiltelefon
Opret forbindelse til mobiltelefon

Nu i det næste vindue skal du klikke på 'Brug din mobiltelefon', og en QR -kode vises. Scan QR -koden med din mobiltelefon ved hjælp af Google Lens eller en anden QR -kodescanner -app.

Dette forbinder din telefon med Edge Impulse studio.

Med din telefon forbundet med Edge Impulse Studio, kan du nu indlæse dine prøver. For at indlæse prøverne skal du klikke på 'Dataopsamling'. Nu på siden Dataopsamling skal du indtaste etiketnavnet, vælge mikrofonen som en sensor og indtaste prøvelængden. Klik på 'Start sampling' for at starte prøvetagning af en prøve på 40 sekunder. I stedet for at tvinge dig selv til at hoste, kan du bruge online hosteprøver af forskellige længder. Optag i alt 10 til 12 hosteprøver af forskellige længder.

Trin 4:

Billede
Billede
Billede
Billede

Efter upload af hosteprøverne skal du nu indstille etiketten til 'støj' og indsamle yderligere 10 til 12 støjprøver.

Disse prøver er til uddannelse af modulet, i de næste trin indsamler vi testdata. Testdata skal være mindst 30% af træningsdataene, så indsaml de 3 prøver af 'støj' og 4 til 5 prøver af 'hoste'. I stedet for at indsamle dine data kan du importere vores datasæt til din Edge Impulse -konto ved hjælp af Edge Impulse CLI Uploader. For at installere CLI Uploader skal du først downloade og installere Node.js på din bærbare computer. Derefter åbnes kommandoprompten og indtaster nedenstående kommando:

npm installer -g edge-impulse-cli

Download nu datasættet (Dataset Link) og udpak filen i din projektmappe. Åbn kommandoprompten, og naviger til datasættets placering, og kør nedenstående kommandoer:

edge-impulse-uploader --cleanedge-impulse-uploader-kategori træningstræning/*. json

edge-impulse-uploader --kategori træningstræning/*. cbor

edge-impulse-uploader-test af kategoritestning/*. json edge-impulse-uploader-test af kategori//. cbor

Trin 5: Træning af modellen og justering af koden

Da datasættet er klar, vil vi nu oprette en impuls til data. For at gå til siden 'Opret impuls'.

Nu på siden 'Opret impuls' skal du klikke på 'Tilføj en behandlingsblok'. I det næste vindue skal du vælge blokken Lyd (MFCC). Klik derefter på 'Tilføj en læringsblok', og vælg Neural Network (Keras) -blokken. Klik derefter på ‘Gem impuls’.

I det næste trin skal du gå til MFCC -siden og derefter klikke på 'Generer funktioner'. Det vil generere MFCC -blokke til alle vores vinduer med lyd.

Derefter skal du gå til siden 'NN Classifier' og klikke på de tre prikker i øverste højre hjørne af 'Neural Network -indstillinger' og vælge 'Skift til Keras (ekspert) -tilstand'.

Udskift originalen med følgende kode, og ændr 'Minimum konfidensvurdering' til '0,70'. Klik derefter på knappen 'Start træning'. Det vil begynde at træne din model.

import tensorflow som tfrom tensorflow.keras.models import Sequential fra tensorflow.keras.layers importerer Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D fra tensorflow.keras.optimizers importerer Adam fra tensorflow.keras.straas. MaxNorm # model arkitektur model = Sekventiel () model.add (InputLayer (input_shape = (X_train.shape [1],), navn = 'x_input')) model.add (Omform ((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 (Tæt (klasser, aktivering = 'softmax', navn = 'y_pred', kernel_constraint = MaxNorm (3))) # dette styrer læringshastigheden opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # træne det neurale netværks model.compile (loss = 'categorical_crossentropy', optimizer = opt, metrics = ['precision']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), verbose = 2)

Trin 6:

Efter træning af modellen viser den træningsydelsen. For mig var nøjagtigheden 96,5% og tabet var 0,10, det er godt at fortsætte.

Nu da vores hostedetekteringsmodel er klar, vil vi implementere denne model som Arduino -bibliotek. Inden du downloader modellen som et bibliotek, kan du teste ydelsen ved at gå til siden 'Live Classification'. Gå til siden 'Implementering', og vælg 'Arduino Library'. Rul nu ned og klik på 'Byg' for at starte processen. Dette vil bygge et Arduino -bibliotek til dit projekt.

Tilføj nu biblioteket i din Arduino IDE. For at åbne Arduino IDE, og klik derefter på Skitse> Inkluder bibliotek> Tilføj. ZIP -bibliotek. Indlæs derefter et eksempel ved at gå til Filer> Eksempler> Dit projektnavn - Edge Impulse> nano_ble33_sense_microphone. Vi foretager nogle ændringer i koden, så vi kan få en advarselslyd, når Arduino opdager hoste. Til det har en summer en forbindelse til Arduino, og når den registrerer hoste, blinker LED tre gange. Ændringerne foretages i void loop () -funktioner, hvor det udskriver støj- og hostværdierne. I den originale kode udskriver det både etiketterne og deres værdier sammen. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Vi vil gemme både støj- og hosteværdierne i forskellige variabler og sammenligne støjværdierne. Hvis støjværdien går under 0,50, betyder det, at hosteværdien er mere end 0,50, og det vil lave lyden. Udskift originalen for loop () -kode med denne: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = resultat.klassificering [ix].værdi; hvis (Data <0,50) {Serial.print ("Host fundet"); alarm (); }} Når du har foretaget ændringerne, skal du uploade koden til din Arduino. Åbn den serielle skærm på 115200 baud.

Så sådan kan en hostedetektionsmaskine bygges, det er ikke en særlig effektiv metode til at finde en mistanke om COVID19, men den kan fungere godt i et overfyldt område.

Trin 7: Kode

Find den vedhæftede fil, tak, Og hvis du kunne lide det, så glem ikke at stemme mig i konkurrencen herunder.

Anbefalede: