Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Schemat obwodu
- Krok 2: Tworzenie zestawu danych dla urządzenia do wykrywania kaszlu
- Krok 3: Połącz się z telefonem komórkowym
- Krok 4:
- Krok 5: Szkolenie modelu i poprawianie kodu
- Krok 6:
- Krok 7: Kod
Wideo: Kieszonkowy wykrywacz kaszlu: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
COVID19 to tak naprawdę historyczna pandemia, która bardzo mocno dotyka cały świat i ludzie budują wiele nowych urządzeń, aby z nią walczyć. Zbudowaliśmy również automatyczną maszynę do dezynfekcji i pistolet termiczny do bezdotykowego badania temperatury. Dziś zbudujemy jeszcze jedno urządzenie, które pomoże w walce z koronawirusem. Jest to system wykrywania kaszlu, który potrafi odróżnić hałas od kaszlu i może pomóc w znalezieniu podejrzanego o koronę. Wykorzysta do tego techniki uczenia maszynowego.
W tym samouczku zbudujemy system wykrywania kaszlu przy użyciu Arduino 33 BLE Sense i Edge Impulse Studio. Potrafi odróżnić normalny hałas w tle od kaszlu w dźwięku w czasie rzeczywistym. Wykorzystaliśmy Edge Impulse Studio do przeszkolenia zestawu danych próbek kaszlu i szumu tła oraz zbudowania wysoce zoptymalizowanego modelu TInyML, który może wykrywać dźwięk kaszlu w czasie rzeczywistym.
Kieszonkowe dzieci
Sprzęt komputerowy
- Arduino 33 BLE Sense
- LEDZworka
- Przewody
Oprogramowanie
- Edge Impuls Studio
- IDE Arduino
Krok 1: Schemat obwodu
Schemat obwodu do wykrywania kaszlu za pomocą Arduino 33 BLE Sense podano powyżej. Część Fritzing dla Arduino 33 BLE nie była dostępna, więc użyłem Arduino Nano, ponieważ oba mają takie same piny.
Dodatni przewód diody LED jest podłączony do cyfrowego styku 4 czujnika Arduino 33 BLE, a ujemny przewód jest podłączony do styku GND Arduino.
Krok 2: Tworzenie zestawu danych dla urządzenia do wykrywania kaszlu
Jak wspomniano wcześniej, używamy Edge Impulse Studio do trenowania naszego modelu wykrywania kaszlu. W tym celu musimy zebrać zestaw danych zawierający próbki danych, które chcielibyśmy rozpoznać na naszym Arduino. Ponieważ celem jest wykrycie kaszlu, musisz zebrać kilka próbek tego i kilka innych próbek hałasu, aby mógł odróżnić kaszel od innych dźwięków. Stworzymy zbiór danych z dwiema klasami „kaszel” i „hałas”. Aby utworzyć zestaw danych, utwórz konto Edge Impulse, zweryfikuj swoje konto, a następnie rozpocznij nowy projekt. Próbki można załadować za pomocą telefonu komórkowego, płytki Arduino lub zaimportować zestaw danych na konto Edge Impuls. Najłatwiejszym sposobem załadowania próbek na konto jest użycie telefonu komórkowego. W tym celu musisz połączyć swój telefon z Edge Impulse. Aby podłączyć telefon komórkowy, kliknij „Urządzenia”, a następnie „Podłącz nowe urządzenie”.
Krok 3: Połącz się z telefonem komórkowym
Teraz w następnym oknie kliknij „Użyj telefonu komórkowego”, a pojawi się kod QR. Zeskanuj kod QR telefonem komórkowym za pomocą Google Lens lub innej aplikacji do skanowania kodów QR.
To połączy Twój telefon ze studiem Edge Impulse.
Po połączeniu telefonu z Edge Impulse Studio możesz teraz załadować swoje próbki. Aby załadować próbki, kliknij „Akwizycja danych”. Teraz na stronie akwizycji danych wprowadź nazwę etykiety, wybierz mikrofon jako czujnik i wprowadź długość próbki. Kliknij „Rozpocznij próbkowanie”, aby rozpocząć próbkowanie 40-sekundowej próbki. Zamiast zmuszać się do kaszlu, możesz skorzystać z internetowych próbek kaszlu o różnej długości. Zapisz w sumie od 10 do 12 próbek kaszlu o różnej długości.
Krok 4:
Po przesłaniu próbek kaszlu ustaw teraz etykietę na „szum” i zbierz kolejne 10 do 12 próbek hałasu.
Te próbki służą do Treningu modułu, w kolejnych krokach zbierzemy dane testowe. Dane testowe powinny stanowić co najmniej 30% danych treningowych, więc zbierz 3 próbki „hałasu” i 4 do 5 próbek „kaszel”. Zamiast zbierać dane, możesz zaimportować nasz zestaw danych do swojego konta Edge Impulse za pomocą Edge Impulsowy program do przesyłania CLI. Aby zainstalować program CLI Uploader, najpierw pobierz i zainstaluj Node.js na swoim laptopie. Następnie otwórz wiersz polecenia i wprowadź poniższe polecenie:
npm install -g edge-impulse-cli
Teraz pobierz zestaw danych (łącze zestawu danych) i wyodrębnij plik w folderze projektu. Otwórz wiersz polecenia i przejdź do lokalizacji zestawu danych i uruchom poniższe polecenia:
edge-impulse-uploader --cleanedge-impulse-uploader --kategoria szkolenia szkolenia/*.json
edge-impulse-uploader --category training training/*.cbor
edge-impulse-uploader --category testing testing/*.json edge-impulse-uploader --category testing testing/*.cbor
Krok 5: Szkolenie modelu i poprawianie kodu
Ponieważ zbiór danych jest gotowy, teraz stworzymy impuls dla danych. W tym celu przejdź do strony „Utwórz impuls”.
Teraz na stronie „Utwórz impuls” kliknij „Dodaj blok przetwarzania”. W następnym oknie wybierz blok Audio (MFCC). Następnie kliknij „Dodaj blok nauki” i wybierz blok Sieć neuronowa (Keras). Następnie kliknij „Zapisz impuls”.
W następnym kroku przejdź do strony MFCC, a następnie kliknij „Generuj funkcje”. Wygeneruje bloki MFCC dla wszystkich naszych okien audio.
Następnie przejdź do strony „NN Classifier” i kliknij trzy kropki w prawym górnym rogu „Ustawienia sieci neuronowej” i wybierz „Przełącz na tryb Keras (ekspert)”.
Zastąp oryginał następującym kodem i zmień „Minimalny stopień ufności” na „0,70”. Następnie kliknij przycisk „Rozpocznij szkolenie”. Rozpocznie trenowanie twojego modelu.
import tensorflow jako tfz tensorflow.keras.models import Sequential z tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D z tensorflow.keras.optimizersconflow import Adams MaxNorm # model architektury 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, aktywacja='relu', padding='same', kernel_constraint=MaxNorm(3)))) model.add(AveragePooling2D(pool_size=2, padding='ta sama')) model.add(Conv2D(5, kernel_size=5, aktywacja='relu', padding='ta sama', kernel_constraint=MaxNorm(3))) model.add(AveragePooling2D(pool_size=2, padding='same')) model.add(Flatten()) model.add(Dense(klasy, aktywacja='softmax', name='y_pred', kernel_constraint=MaxNorm (3))) # kontroluje współczynnik uczenia opt = Adam(lr=0,005, beta_ 1=0.9, beta_2=0.999) # trenuj sieć neuronową model.compile(loss='categorical_crossentropy',Optimizer=opt, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=32, epochs=9, validation_data=(X_test, Y_test), pełny=2)
Krok 6:
Po wytrenowaniu modelu pokaże on wydajność uczenia. Dla mnie dokładność wynosiła 96,5%, a strata 0,10, więc dobrze jest kontynuować.
Teraz, gdy nasz model wykrywania kaszlu jest gotowy, wdrożymy ten model jako bibliotekę Arduino. Przed pobraniem modelu jako biblioteki możesz przetestować wydajność, przechodząc do strony „Klasyfikacja na żywo”. Przejdź do strony „Wdrożenie” i wybierz „Biblioteka Arduino”. Teraz przewiń w dół i kliknij „Buduj”, aby rozpocząć proces. To zbuduje bibliotekę Arduino dla twojego projektu.
Teraz dodaj bibliotekę w swoim Arduino IDE. W tym celu otwórz Arduino IDE, a następnie kliknij Szkic> Dołącz bibliotekę> Biblioteka Add. ZIP. Następnie załaduj przykład, przechodząc do Plik > Przykłady > Nazwa Twojego projektu - Edge Impulse > nano_ble33_sense_microphone. Wprowadzimy pewne zmiany w kodzie, aby móc wydać dźwięk ostrzegawczy, gdy Arduino wykryje kaszel. W tym celu brzęczyk jest połączony z Arduino i za każdym razem, gdy wykryje kaszel, dioda LED zamiga trzy razy. Zmiany są wprowadzane w funkcjach void loop(), w których wypisuje wartości hałasu i kaszlu. W oryginalnym kodzie drukuje razem zarówno etykiety, jak i ich wartości. for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf(" %s: %.5f\n", wynik.klasyfikacja[ix].etykieta, wynik.klasyfikacja[ix].wartość); } Zamierzamy zapisać wartości hałasu i kaszlu w różnych zmiennych i porównać wartości hałasu. Jeśli wartość hałasu spadnie poniżej 0,50, oznacza to, że wartość kaszlu jest większa niż 0,50 i wyda dźwięk. Zastąp oryginalny kod for loop() następującym: for (size_t ix = 1; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { Serial.print(result.classification[ix].value); float Dane = wynik.klasyfikacja[ix].wartość; if (Dane < 0.50){ Serial.print("Wykryto kaszel"); alarm(); } } Po wprowadzeniu zmian wgraj kod do swojego Arduino. Otwórz monitor szeregowy z prędkością 115200 bodów.
Tak więc można zbudować maszynę do wykrywania kaszlu, nie jest to bardzo skuteczna metoda na znalezienie podejrzanego o COVID19, ale może działać dobrze w zatłoczonym miejscu.
Krok 7: Kod
Proszę znaleźć załączony plik, A jeśli Ci się spodobało, nie zapomnij zagłosować na mnie w poniższym konkursie.
Zalecana:
Wykrywacz obecności łóżka Zigbee: 8 kroków
Zigbee Bed Presence Detector: Od jakiegoś czasu szukałem sposobu na wykrycie, kiedy jesteśmy w łóżku. To za wykorzystanie tych informacji w Homeassistant. Dzięki tym informacjom mogę wykonać automatykę do wyłączania światła w nocy lub na przykład aktywować system alarmowy w moim domu
Wykrywacz dymu: 13 kroków
Wykrywacz dymu: Cześć przyjaciele, zobaczmy dzisiaj o wykrywaczu dymu Wielu z was chodziło do centrów handlowych w centrach handlowych, głównie można zobaczyć to urządzenie o nazwie wykrywacz dymu, które wykryje dym, włączy zraszacz i zatrzyma pożar. Ale w tym projekcie jest to niewielka zmiana zamiast
Jak zrobić wykrywacz odległości społecznej: 15 kroków
Jak zrobić wykrywacz odległości społecznej: Gdy 2020 dobiega końca, pomyślałem, że fajnie byłoby pożegnać się z samouczkiem, który jest właśnie taki 2020. Daję ci, czujnik odległości społecznej. Dzięki temu urządzeniu będziesz w stanie zdystansować się do technologii i pozostawić za sobą zmartwienia. T
Bezprzewodowy wykrywacz prądu AC: 7 kroków (ze zdjęciami)
Bezprzewodowy wykrywacz prądu AC: Podczas tworzenia mojego poprzedniego Instructable (łatwego czujnika zbliżeniowego na podczerwień) odkryłem kilka rzeczy na temat używania 2 tranzystorów z rzędu w celu wzmocnienia bardzo słabego sygnału. W tym Instruktażu omówię tę zasadę, która jest również nazywana &quo
Wykrywacz dymu IOT: Zaktualizuj istniejący wykrywacz dymu za pomocą IOT: 6 kroków (ze zdjęciami)
IOT Smoke Detector: Update Existing Smoke Detector With IOT: List of contributor,Inventor:Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Kierownik: Dr Chia Kim Seng Wydział Inżynierii Mechatroniki i Robotyki, Wydział Inżynierii Elektrycznej i Elektronicznej, Universiti Tun Hussein Onn Malezja.Dystrybuuj