Inhaltsverzeichnis:

Hustendetektor im Taschenformat - Gunook
Hustendetektor im Taschenformat - Gunook

Video: Hustendetektor im Taschenformat - Gunook

Video: Hustendetektor im Taschenformat - Gunook
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, November
Anonim
Hustenmelder im Taschenformat
Hustenmelder im Taschenformat

COVID19 ist wirklich eine historische Pandemie, die die ganze Welt sehr stark betrifft, und die Menschen bauen viele neue Geräte, um dagegen anzukämpfen. Wir haben auch eine automatische Desinfektionsmaschine und eine Thermopistole für die berührungslose Temperaturprüfung gebaut. Heute werden wir ein weiteres Gerät bauen, um im Kampf gegen das Coronavirus zu helfen. Es handelt sich um ein Hustenerkennungssystem, das zwischen Geräuschen und Hustengeräuschen unterscheiden kann und helfen kann, Corona-Verdächtige zu finden. Dafür werden Techniken des maschinellen Lernens eingesetzt.

In diesem Tutorial bauen wir ein Hustenerkennungssystem mit Arduino 33 BLE Sense und Edge Impulse Studio. Es kann in Echtzeit-Audio zwischen normalen Hintergrundgeräuschen und Husten unterscheiden. Wir haben Edge Impulse Studio verwendet, um einen Datensatz mit Husten- und Hintergrundgeräusch-Samples zu trainieren und ein hochoptimiertes TInyML-Modell zu erstellen, das ein Hustengeräusch in Echtzeit erkennen kann.

Lieferungen

Hardware

  • Arduino 33 BLE Sense
  • LEDJumper
  • Drähte

Software

  • Edge Impulse Studio
  • Arduino-IDE

Schritt 1: Schaltplan

Schaltplan
Schaltplan
Schaltplan
Schaltplan

Schaltplan zur Hustenerkennung mit Arduino 33 BLE Sense ist oben angegeben. Fritzing-Teil für Arduino 33 BLE war nicht verfügbar, daher habe ich Arduino Nano verwendet, da beide die gleiche Pinbelegung haben.

Die positive Leitung der LED ist mit dem digitalen Pin 4 von Arduino 33 BLE Sense verbunden und die negative Leitung ist mit dem GND-Pin von Arduino verbunden.

Schritt 2: Erstellen des Datensatzes für das Hustenerkennungsgerät

Erstellen des Datensatzes für das Hustenerkennungsgerät
Erstellen des Datensatzes für das Hustenerkennungsgerät

Wie bereits erwähnt, verwenden wir Edge Impulse Studio, um unser Hustenerkennungsmodell zu trainieren. Dazu müssen wir einen Datensatz sammeln, der die Datenproben enthält, die wir auf unserem Arduino erkennen möchten. Da das Ziel darin besteht, den Husten zu erkennen, müssen Sie einige Proben davon und einige andere Proben für Geräusche sammeln, damit es zwischen Husten und anderen Geräuschen unterscheiden kann. Wir erstellen einen Datensatz mit zwei Klassen „Husten“und „Lärm“. Um einen Datensatz zu erstellen, erstellen Sie ein Edge Impulse-Konto, verifizieren Sie Ihr Konto und starten Sie dann ein neues Projekt. Sie können die Samples mit Ihrem Handy, Ihrem Arduino-Board laden oder einen Datensatz in Ihr Edge-Impuls-Konto importieren. Am einfachsten laden Sie die Samples mit Ihrem Mobiltelefon in Ihr Konto. Dazu müssen Sie Ihr Handy mit Edge Impulse verbinden. Um Ihr Mobiltelefon zu verbinden, klicken Sie auf „Geräte“und dann auf „Neues Gerät verbinden“.

Schritt 3: Mit Mobiltelefon verbinden

Mit Mobiltelefon verbinden
Mit Mobiltelefon verbinden

Klicken Sie nun im nächsten Fenster auf „Use your Mobile Phone“und ein QR-Code wird angezeigt. Scannen Sie den QR-Code mit Ihrem Mobiltelefon mit Google Lens oder einer anderen QR-Code-Scanner-App.

Dadurch wird Ihr Telefon mit Edge Impulse Studio verbunden.

Wenn Ihr Telefon mit Edge Impulse Studio verbunden ist, können Sie jetzt Ihre Samples laden. Um die Proben zu laden, klicken Sie auf „Datenerfassung“. Geben Sie nun auf der Seite Datenerfassung den Labelnamen ein, wählen Sie das Mikrofon als Sensor aus und geben Sie die Probenlänge ein. Klicken Sie auf „Sampling starten“, um mit dem Sampling einer 40-Sek.-Probe zu beginnen. Anstatt sich zum Husten zu zwingen, können Sie Online-Hustenproben unterschiedlicher Länge verwenden. Nehmen Sie insgesamt 10 bis 12 Hustenproben unterschiedlicher Länge auf.

Schritt 4:

Bild
Bild
Bild
Bild

Nachdem Sie die Hustenproben hochgeladen haben, setzen Sie nun das Label auf „Lärm“und sammeln weitere 10 bis 12 Geräuschproben.

Diese Beispiele sind für das Training des Moduls, in den nächsten Schritten werden wir die Testdaten sammeln. Die Testdaten sollten mindestens 30 % der Trainingsdaten ausmachen. Sammeln Sie also die 3 Stichproben "Lärm" und 4 bis 5 Stichproben "Husten". Anstatt Ihre Daten zu sammeln, können Sie unseren Datensatz mit dem Edge in Ihr Edge Impulse-Konto importieren Impulse CLI-Uploader. Um den CLI-Uploader zu installieren, laden Sie zunächst Node.js herunter und installieren Sie es auf Ihrem Laptop. Öffnen Sie danach die Eingabeaufforderung und geben Sie den folgenden Befehl ein:

npm install -g edge-impulse-cli

Laden Sie nun den Datensatz herunter (Dataset Link) und entpacken Sie die Datei in Ihren Projektordner. Öffnen Sie die Eingabeaufforderung, navigieren Sie zum Speicherort des Datasets und führen Sie die folgenden Befehle aus:

edge-impulse-uploader --cleanedge-impulse-uploader --kategorie training training/*.json

edge-impulse-uploader --kategorie training training/*.cbor

edge-impulse-uploader --category testing testing/*.json edge-impulse-uploader --category testing testing/*.cbor

Schritt 5: Trainieren des Modells und Optimieren des Codes

Da der Datensatz fertig ist, werden wir jetzt einen Impuls für Daten setzen. Gehen Sie dazu auf die Seite „Impuls erstellen“.

Klicken Sie nun auf der Seite „Impuls erstellen“auf „Verarbeitungsblock hinzufügen“. Wählen Sie im nächsten Fenster den Block Audio (MFCC). Klicken Sie anschließend auf „Lernblock hinzufügen“und wählen Sie den Block Neural Network (Keras) aus. Klicken Sie anschließend auf „Impuls speichern“.

Gehen Sie im nächsten Schritt auf die MFCC-Seite und klicken Sie dann auf „Funktionen generieren“. Es generiert MFCC-Blöcke für alle unsere Audiofenster.

Gehen Sie danach zur Seite „NN Classifier“und klicken Sie auf die drei Punkte in der oberen rechten Ecke der „Neural Network settings“und wählen Sie „Switch to Keras (Expert) mode“.

Ersetzen Sie das Original durch den folgenden Code und ändern Sie die „Mindestkonfidenzbewertung“in „0,70“. Klicken Sie anschließend auf die Schaltfläche „Training starten“. Es beginnt mit dem Training Ihres Modells.

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 Adams from import.constraintsker MaxNorm # model architecture 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, 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(Dense(classes, activation='softmax', name='y_pred', kernel_constraint=MaxNorm (3))) # dies steuert die Lernrate opt = Adam(lr=0,005, beta_ 1=0.9, beta_2=0.999) # trainiere das neuronale Netzwerk model.compile(loss='categorical_crossentropy', Optimizer=opt, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=32, epochs=9, validierungsdaten=(X_test, Y_test), ausführlich=2)

Schritt 6:

Nach dem Training des Modells zeigt es die Trainingsleistung an. Für mich war die Genauigkeit 96,5% und der Verlust 0,10, das ist gut, um fortzufahren.

Da unser Hustenerkennungsmodell nun fertig ist, werden wir dieses Modell als Arduino-Bibliothek bereitstellen. Bevor Sie das Modell als Bibliothek herunterladen, können Sie die Leistung auf der Seite „Live-Klassifizierung“testen. Gehen Sie zur Seite "Bereitstellung" und wählen Sie "Arduino-Bibliothek". Scrollen Sie nun nach unten und klicken Sie auf "Build", um den Vorgang zu starten. Dadurch wird eine Arduino-Bibliothek für Ihr Projekt erstellt.

Fügen Sie nun die Bibliothek in Ihrer Arduino IDE hinzu. Öffnen Sie dazu die Arduino IDE und klicken Sie dann auf Sketch > Include Library > Add. ZIP library. Laden Sie dann ein Beispiel, indem Sie auf Datei > Beispiele > Ihr Projektname - Edge Impulse > nano_ble33_sense_microphone gehen. Wir werden einige Änderungen am Code vornehmen, damit wir einen Warnton erzeugen können, wenn der Arduino Husten erkennt. Dafür ist ein Summer mit Arduino verbunden und jedes Mal, wenn Husten erkannt wird, blinkt die LED dreimal. Die Änderungen werden in den Funktionen void loop() vorgenommen, in denen die Geräusch- und Hustenwerte ausgegeben werden. Im Originalcode werden sowohl die Etiketten als auch ihre Werte zusammen gedruckt. for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf(" %s: %.5f\n", result.classification[ix].label, result.classification[ix].value); }Wir werden sowohl die Geräusch- als auch die Hustenwerte in verschiedenen Variablen speichern und die Geräuschwerte vergleichen. Wenn der Geräuschwert unter 0,50 sinkt, bedeutet dies, dass der Hustenwert über 0,50 liegt und das Geräusch erzeugt wird. Ersetzen Sie den ursprünglichen for loop()-Code durch diesen: for (size_t ix = 1; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { Serial.print(result.classification[ix].value); float Daten = result.classification[ix].value; Wenn (Daten < 0,50) {Serial.print ("Husten erkannt"); Alarm(); } } Nachdem Sie die Änderungen vorgenommen haben, laden Sie den Code in Ihr Arduino hoch. Öffnen Sie den seriellen Monitor mit 115200 Baud.

So kann also ein Hustenerkennungsgerät gebaut werden. Es ist keine sehr effektive Methode, um einen COVID19-Verdächtigen zu finden, aber es kann in einem überfüllten Bereich gut funktionieren.

Schritt 7: Code

Bitte finden Sie die angehängte Datei, Und wenn es dir gefallen hat, vergiss nicht, mich unten im Wettbewerb zu bewerten.

Empfohlen: