Tartalomjegyzék:
- Kellékek
- 1. lépés: Áramköri diagram
- 2. lépés: Adathalmaz létrehozása a köhögésérzékelő géphez
- 3. lépés: Csatlakozás mobiltelefonhoz
- 4. lépés:
- 5. lépés: A modell betanítása és a kód módosítása
- 6. lépés:
- 7. lépés: Kód
Videó: Zsebméretű köhögésérzékelő: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
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
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
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
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:
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:
DIY zsebméretű DC feszültségmérő: 5 lépés
DIY zsebméretű egyenáramú feszültségmérő: Ebben az oktatóanyagban megmutatom, hogyan lehet saját kezűleg elkészíteni piezo zümmerező DIY zsebméretű egyenáramú feszültségmérőt az áramkör ellenőrzéséhez. Csak elektronikai alapismeretekre és egy kis időre van szüksége. Ha bármilyen kérdése vagy problémája van, akkor
DIY zsebméretű lopásgátló!: 3 lépés
DIY zsebméretű lopásvédelem! ebben az utasításban megmutatom, hogyan készíthet zsebméretű betolakodó riasztást
Zsebméretű hangszóró: 3 lépés
Zsebméretű hangszóró: vigye magával bárhová is megy! Zene, ami úton van! Üdv mindenkinek ebben az oktatható (ez az első). Megmutatom, hogyan készítettem ezt a zsebméretű hangszórót
GranCare: Zsebméretű egészségügyi monitor!: 8 lépés (képekkel)
GranCare: Zsebméretű egészségügyi monitor !: Tehát hadd kezdjem, van egy nagymamám. Kicsit idős, de szuper fitt és egészséges. Nos, nemrég voltunk orvosnál havi ellenőrzésen, és az orvos azt tanácsolta neki, hogy minden nap legalább fél órát sétáljon, hogy egészségesek legyenek az ízületei. Szükségünk van
A legmenőbb USB L.E.D. Zsebméretű fény (zsebméretű bejegyzés): 6 lépés
A legmenőbb USB L.E.D. Zsebméretű fény (zsebméretű bejegyzés): Ebben az utasításban megmutatom, hogyan lehet USB-alapú L.E.D. fény, amely összecsukható X-it Mints ón méretűre, és könnyen elfér a zsebében. Ha tetszik, feltétlenül + -old és szavazz rám a versenyen! Az anyagok és