Tartalomjegyzék:

Zsebméretű köhögésérzékelő: 7 lépés
Zsebméretű köhögésérzékelő: 7 lépés

Videó: Zsebméretű köhögésérzékelő: 7 lépés

Videó: Zsebméretű köhögésérzékelő: 7 lépés
Videó: Zsebméretű, ám nagyot szól a JBL GO 3 Bluetooth hangszóró 2024, November
Anonim
Zsebméretű köhögésérzékelő
Zsebméretű köhögésérzékelő

A COVID19 valóban történelmi világjárvány, amely nagyon rosszul érinti az egész világot, és az emberek sok új eszközt építenek a küzdelemhez. Emellett építettünk egy automatikus fertőtlenítő gépet és egy termálpisztolyt az érintésmentes hőmérséklet -szűréshez. A mai napon újabb eszközt fogunk építeni a koronavírus elleni küzdelemhez. Ez egy köhögésérzékelő rendszer, amely megkülönbözteti a zajt és a köhögési hangot, és segít megtalálni a korona gyanúsítottját. Ehhez gépi tanulási technikákat fog használni.

Ebben az oktatóanyagban köhögésérzékelő rendszert építünk fel az Arduino 33 BLE Sense és az Edge Impulse Studio segítségével. Meg tudja különböztetni a normál háttérzajt és a köhögést valós idejű hangban. Az Edge Impulse Studio segítségével köhögési és háttérzajmintákból álló adatkészletet tanítottunk, és egy nagyon optimalizált TInyML modellt készítettünk, amely valós időben képes felismerni a köhögés hangját.

Kellékek

Hardver

  • Arduino 33 BLE Sense
  • LEDJumper
  • Vezetékek

Szoftver

  • Edge Impulse Stúdió
  • Arduino IDE

1. lépés: Áramköri diagram

Kördiagramm
Kördiagramm
Kördiagramm
Kördiagramm

A köhögési diagram az Arduino 33 BLE Sense segítségével történő köhögés észlelésére. Az Arduino 33 BLE frizuráló része nem volt elérhető, ezért az Arduino Nano-t használtam, mivel mindkettő ugyanazzal a tűvel rendelkezik.

A LED pozitív vezetéke az Arduino 33 BLE sense 4. digitális tüskéjéhez, a negatív vezeték pedig az Arduino GND csapjához van csatlakoztatva.

2. lépés: Adathalmaz létrehozása a köhögésérzékelő géphez

Köhögésérzékelő gép adatkészletének létrehozása
Köhögésérzékelő gép adatkészletének létrehozása

Amint azt korábban említettük, az Edge Impulse Studiót használjuk a köhögés észlelési modellünk betanítására. Ehhez össze kell gyűjtenünk egy adathalmazt, amely tartalmazza azokat az adatmintákat, amelyeket szeretnénk felismerni az Arduino -n. Mivel a cél a köhögés észlelése, össze kell gyűjtenie néhány mintát és néhány más mintát a zaj érdekében, hogy meg tudja különböztetni a köhögést és más zajokat. Létrehozunk egy adathalmazt, amely két „köhögés” és „zaj” osztályt tartalmaz. Adatkészlet létrehozásához hozzon létre egy Edge Impulse -fiókot, ellenőrizze fiókját, majd indítson el egy új projektet. A mintákat betöltheti mobiljával, Arduino táblájával, vagy importálhat egy adatkészletet az élimpulzus -fiókjába. A legegyszerűbben úgy töltheti be a mintákat a fiókjába, hogy mobiltelefonját használja. Ehhez csatlakoztatnia kell mobilját az Edge Impulse -hoz. A mobiltelefon csatlakoztatásához kattintson az „Eszközök”, majd az „Új eszköz csatlakoztatása” lehetőségre.

3. lépés: Csatlakozás mobiltelefonhoz

Csatlakozás mobiltelefonhoz
Csatlakozás mobiltelefonhoz

A következő ablakban kattintson a „Mobiltelefon használata” gombra, és megjelenik egy QR -kód. Olvassa be a QR -kódot mobiltelefonjával a Google Lens vagy más QR -kód -olvasó alkalmazás segítségével.

Ezzel összekapcsolja telefonját az Edge Impulse stúdióval.

Ha telefonja csatlakozik az Edge Impulse Studio -hoz, most betöltheti a mintákat. A minták betöltéséhez kattintson az „Adatgyűjtés” gombra. Most az Adatgyűjtés oldalon írja be a címke nevét, válassza ki a mikrofont érzékelőként, és adja meg a minta hosszát. Kattintson a „Mintavétel indítása” gombra a 40 másodperces mintavétel megkezdéséhez. Ahelyett, hogy köhögésre kényszerítené magát, használhat különböző hosszúságú online köhögésmintákat. Vegyen fel összesen 10-12 különböző hosszúságú köhögési mintát.

4. lépés:

Kép
Kép
Kép
Kép

A köhögésminták feltöltése után állítsa a címkét „zajra”, és gyűjtsön további 10–12 zajmintát.

Ezek a minták a modul betanítására szolgálnak, a következő lépésekben összegyűjtjük a tesztadatokat. A tesztadatoknak legalább az edzésadatok 30% -át kell képezniük, ezért gyűjtsük össze a 3 mintát a zajból és 4-5 mintát a köhögésből. Az adatok gyűjtése helyett importálhatjuk az adatkészletünket az Edge Impulse fiókjába Impulzus CLI feltöltő. A CLI Uploader telepítéséhez először töltse le és telepítse a Node.js -t a laptopjára. Ezt követően nyissa meg a parancssort, és írja be az alábbi parancsot:

npm install -g edge-impulse-cli

Most töltse le az adatkészletet (Dataset Link), és bontsa ki a fájlt a projekt mappájában. Nyissa meg a parancssort, keresse meg az adathalmaz helyét, és futtassa az alábbi parancsokat:

él-impulzus-feltöltő-tisztító-impulzus-feltöltő-kategória képzés/*. json

él-impulzus-feltöltő-kategória képzés/*. cbor

él-impulzus-feltöltő-kategória tesztelési tesztelése/*. json él-impulzus-feltöltő-kategória tesztelési tesztelése/*. cbor

5. lépés: A modell betanítása és a kód módosítása

Mivel az adatkészlet készen áll, most impulzust hozunk létre az adatokhoz. Ehhez lépjen az „Impulzus létrehozása” oldalra.

Most az „Impulzus létrehozása” oldalon kattintson a „Feldolgozási blokk hozzáadása” gombra. A következő ablakban válassza ki az Audio (MFCC) blokkot. Ezután kattintson a „Tanulási blokk hozzáadása” gombra, és válassza ki a Neural Network (Keras) blokkot. Ezután kattintson az „Impulzus mentése” gombra.

A következő lépésben lépjen az MFCC oldalra, majd kattintson a „Szolgáltatások létrehozása” gombra. MFCC blokkokat generál az összes hangablakunkhoz.

Ezután lépjen az „NN osztályozó” oldalra, és kattintson a „Neural Network settings” jobb felső sarkában található három pontra, és válassza a „Switch to Keras (expert) mode” lehetőséget.

Cserélje le az eredetit a következő kóddal, és módosítsa a „Minimális megbízhatósági besorolást” „0,70” értékre. Ezután kattintson az „Edzés indítása” gombra. Ez megkezdi a modell képzését.

tensorflow importálása tffrom tensorflow.keras.models import Sequential innen: tensorflow.keras.layers MaxNorm # modell architektúra 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, aktiválás = 'relu', padding = 'ugyanaz', kernel_constraint = MaxNorm (3)))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, aktiválás = 'relu', padding = 'ugyanaz', kernel_constraint = MaxNorm (3)]) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Sűrű (osztályok, aktiválás = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm) (3))) # ez szabályozza a tanulási arány opt = Adam (lr = 0,005, béta_ 1 = 0,9, béta_2 = 0,999) # a neurális hálózat modelljének képzése.compile (loss = 'kategoric_crossentropy', optimizer = opt, metrics = ['pontosság']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), részletes = 2)

6. lépés:

A modell betanítása után megmutatja az edzés teljesítményét. Számomra a pontosság 96,5% és a veszteség 0,10 volt, így jó folytatni.

Most, hogy a köhögés észlelési modellünk készen áll, ezt a modellt Arduino könyvtárként telepítjük. Mielőtt letöltené a modellt könyvtárként, tesztelheti a teljesítményt az „Élő osztályozás” oldalon. Lépjen a „Telepítés” oldalra, és válassza az „Arduino Library” lehetőséget. Most görgessen lefelé, és kattintson a "Build" gombra a folyamat elindításához. Ez egy Arduino könyvtárat épít a projekthez.

Most adja hozzá a könyvtárat az Arduino IDE -hez. Ehhez nyissa meg az Arduino IDE -t, majd kattintson a Vázlat> Könyvtár bevonása> Add. ZIP könyvtár elemre. Ezután töltsön be egy példát a Fájl> Példák> A projekt neve - Edge Impulse> nano_ble33_sense_microphone menüpontban. Néhány változtatást végzünk a kódon, hogy figyelmeztető hangot adjunk ki, amikor az Arduino köhögést észlel. Ehhez egy hangjelző kapcsolódik az Arduino -hoz, és amikor köhögést észlel, a LED háromszor felvillan. A változtatások a void loop () függvényekben történnek, ahol a zaj- és köhögési értékeket nyomtatja. Az eredeti kódban a címkéket és értékeiket együtt nyomtatja. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", eredmény.osztályozás [ix].címke, eredmény.osztályozás [ix].érték); } A zaj- és köhögési értékeket különböző változókba mentjük, és összehasonlítjuk a zajértékeket. Ha a zaj értéke 0,50 alá csökken, az azt jelenti, hogy a köhögési érték több mint 0,50, és a hangot adja ki. Cserélje le a ciklus () eredeti kódját ezzel: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (adatok <0,50) {Serial.print ("Köhögés észlelve"); riasztás(); }} A módosítások elvégzése után töltse fel a kódot Arduino készülékébe. Nyissa meg a soros monitort 115200 baudon.

Tehát így lehet felépíteni a köhögésjelző gépet, ez nem túl hatékony módszer a COVID19 -gyanúsítottak megtalálására, de jól működik néhány zsúfolt területen.

7. lépés: Kód

Kérlek keresd meg a csatolt fájlt, És ha tetszett, ne felejtse el szavazni rám az alábbi versenyen.

Ajánlott: