Naucz swojego BME688 jak pachnieć
Kompletny przewodnik jak trenować czujnik BME688
Cześć koledzy entuzjaści techniki! Bosch wypuścił na rynek BME688nowy, rewelacyjny czujnik, który potrafi rozróżnić do czterech różnych zapachów. Ten przewodnik wyjaśni wszystkie szczegóły uczenia twojego BME688 jak rozróżniać zapachy. Nie martw się, jeśli jesteś początkujący w AI lub Pythonie. Ten przewodnik jest odpowiedni dla początkujących.
Więc, przeskoczmy od razu do przodu.
Wymagania wstępne
- Raspberry Pi
- BME688 Breakout Board lub Zestaw do rozbudowy czujnika gazu Bosch BME688
- Okazy, które wytwarzają pożądane zapachy
- Hermetyczny pojemnik do przechowywania czujnika i próbki
- BSEC i AI Studio firmy Bosch
- PiCockpit
Kroki
- Wybierz swoją aplikację
- Dane ewidencyjne
- Wytrenuj algorytm
- Wykrywaj zapachy
1. Wybierz swoją aplikację
Pierwszym krokiem jest wybór zastosowania. W tym poradniku posłużę się przykładem mięsa i sera. Ale możliwości jest nieskończenie wiele. Możesz odróżnić owoce od warzyw lub środki czystości od perfum. Możesz również spróbować określić, kiedy jedzenie się zepsuło.
Istnieją pewne rzeczy, które należy rozważyć przy wyborze aplikacji. Potrzebujesz wielu okazów dla każdej klasy, którą chcesz rozróżnić, aby zapewnić, że algorytm stanie się solidny. Na początek powinieneś wybrać coś, co jest tanie i powszechnie dostępne. Należy również pamiętać, że wskazane jest użycie normalnego powietrza jako jednej z klas, ponieważ będzie ono prawie zawsze obecne.
Aby stworzyć solidny algorytm, powinieneś użyć co najmniej pół godziny danych pomiarowych dla każdego okazu. Dlatego dobrym wyborem są okazy, które emitują stały zapach. Upewnij się również, że używasz szerokiej gamy próbek. Jeśli na przykład używasz tylko pomarańczy, cytryn i limonek dla klasy owoców, czujnik może nie sklasyfikować maliny jako owocu, ponieważ jest ona zbyt różna od próbek użytych do treningu. Im więcej różnych okazów jest używanych, tym lepiej.
Po dokonaniu ostatecznego wyboru nadszedł czas na utworzenie nowego projektu AI Studio. Otwórz AI Studio i naciśnij przycisk Utwórz projekt ... Przycisk. Naciśnij Konfiguracja płyty BME jeśli chcesz rejestrować dane w określonej konfiguracji.
2. Rejestrowanie danych
Proces ten różni się w zależności od tego, czy używasz BME688 Breakout Board lub Zestaw do rozbudowy czujnika gazu Bosch BME688 (dalej shuttle board). Płytka wahadłowa jest łatwiejsza w użyciu i będzie przechwytywać dane osiem razy szybciej niż płytka typu breakout, ale jest dużo droższa. Obie metody wyjaśnię szczegółowo w kolejnych rozdziałach.
Uwaga: Czujnik BME688 potrzebuje trochę czasu, aby dostosować się do środowiska i wypalić się. Przed zapisaniem danych treningowych należy pozostawić go włączonego na co najmniej 24 godziny.
Zapis danych za pomocą BME688 Shuttle Board
BOSCH wyposażył shuttle board w osiem czujników BME688, dzięki czemu produkuje osiem razy więcej danych w tym samym czasie. Całe oprogramowanie jest już zainstalowane i jest gotowe do pracy po wyjęciu z pudełka. Obejrzyj ten film instruktażowy firmy Bosch aby dowiedzieć się o procesie pomiaru.
Jeśli rejestrujesz wiele okazów podczas jednej sesji, możesz zanotować kolejność ich występowania, aby uniknąć pomyłek. Zawsze możesz później wykadrować dane w AI Studio, więc nie bój się rejestrować dużej ilości danych.
Rejestrowanie danych za pomocą płyty BME688 Breakout Board
Jeśli używasz BME688 Breakout Board Nadal radzę ci obejrzeć Samouczek Bosch ponieważ dostarcza on przydatnych informacji o procesie szkolenia w AI Studio. Jednak aby zapisać dane treningowe, należy wykonać kilka dodatkowych kroków.
My w pi3g stworzył bibliotekę Pythona dla czujników BME68X, którą można uaktualnić za pomocą Boschs BSEC 2.0. Więc jest to pomocne, jeśli masz jakieś doświadczenie w pythonie, ale nie jest to konieczne.
Uwaga: Zobacz instrukcję instalacji i użytkowania bezpośrednio na naszej stronie GitHub.
Zacznij od sklonowania naszego bme68x-python-library. Można to zrobić poprzez wykonanie następującego polecenia w terminalu bash.
git clone https://github.com/pi3g/bme68x-python-library.git
Teraz musisz zbudować i zainstalować moduł pythona bme68x. Strona BSEC 2.0 jest oprogramowaniem prawnie zastrzeżonym, dlatego należy pobrać wersję 2.0.6.1 bezpośrednio ze strony firmy Bosch i wyrazić zgodę na warunki licencji. Rozpakuj ją do folderu bme68x-python-library i wykonaj poniższe polecenia.
cd path/to/bme68x-python-library
sudo python3 setup.py install
Teraz możesz uruchomić bmerawdata.py skrypt z ustawieniami domyślnymi.
cd tools/bmerawdata
python3 bmerawdata.py
Po każdym pomiarze skrypt wyświetli zarejestrowane dane. Zakończ skrypt i zapisz dane w pliku kompatybilnym z AI Studio, naciskając przycisk Ctrl+c.
3. Wytrenuj algorytm
Dane importowe
Niezależnie od tego, czy używasz BME688 Breakout Board lub Zestaw do rozbudowy czujnika gazu Bosch BME688Następnym krokiem jest zaimportowanie danych do AI Studio. Naciśnij przycisk Import danych Przycisk i wybierz swój plik .bmerawdata.
Twoja sesja musi mieć sensowną nazwę. Dobrze jest wybrać wyliczenie okazów.
Możesz zobaczyć wykres swoich danych dla przykładu kanału danych gazu, jak pokazano poniżej.
Jeśli dane pochodzą z płyty wahadłowej, można przełączać się pomiędzy danymi z ośmiu czujników. Każda z kolorowych linii reprezentuje jeden krok profilu grzałki, który został użyty do przechwycenia danych.
Uwaga: W większości przypadków do treningu należy używać tylko kanału danych gazowych.
Teraz musimy oznaczyć nasze okazy. Jeśli nagrywałeś dane za pomocą tablicy wahadłowej i używałeś przycisków do oznaczania okazów, będziesz mógł zobaczyć szablon dla każdego z nich. Możesz również przycinać okazy i tworzyć nowe (np. jeśli nagrałeś kilka okazów za pomocą naszej płytki).
Po zakończeniu edycji sesji naciśnij przycisk Import danych w prawym dolnym rogu okna dialogowego.
Po zaimportowaniu i oznaczeniu wszystkich okazów nadszedł czas na stworzenie i wytrenowanie algorytmu.
Utwórz algorytm
Wybierz Moje Algorytmy na górze i kliknij na + Nowy algorytm . Nadaj swojemu algorytmowi nazwę, która reprezentuje to, co ma robić, w moim przypadku AirMeatCheese. Następnie dodaj klasy. Ja nazwałem moje klasy NormalAir, Meat i Cheese. Wybierz, które okazy należą do której klasy i wybierz kolor dla każdej klasy.
Aby dodać lub usunąć okazy, należy kliknąć na jedną z klas. Poniżej znajduje się przykład tego, co Mięso klasa wygląda tak.
Poniżej klas możesz zobaczyć kilka dodatkowych danych na temat algorytmu.
Bilans danych pokazuje całkowity czas trwania pomiaru dla każdej klasy. Aby zapewnić najlepszą wydajność, czas trwania pomiaru dla każdej klasy powinien być równy. Jeśli czas pomiaru dla jednej z klas jest znacznie dłuższy, może wystąpić tendencyjność algorytmu w kierunku tej klasy. Zwróć również uwagę na przycisk ze znakiem zapytania znajdujący się przed każdym nagłówkiem. Naciśnij go, aby uzyskać bardziej szczegółowe informacje.
Uwaga: Sprawdź dokumentację BME688 AI Studio, aby uzyskać więcej informacji.
W zakładce kanały danych możesz wybrać, które z czterech wyjść czujnika chcesz wykorzystać w swoim algorytmie. Zalecam używanie tylko kanału danych gazowych, ponieważ pozostałe kanały zależą głównie od środowiska, a nie od próbki. Po skonfigurowaniu wszystkiego, nadszedł czas na trening.
Szkolenie i wywóz
Tutaj możesz wybrać metodę treningu, maksymalną liczbę rund i podział danych. Jeśli jesteś początkującym użytkownikiem sieci neuronowych, powinieneś pozostawić wszystko na ustawieniach domyślnych. Niemniej jednak, postaram się pokrótce wyjaśnić każde z tych ustawień.
Jedyną metodą treningową dostępną w czasie, gdy to piszę jest optymalizator ADAM. Jest to specyficzny sposób na znalezienie minimum w funkcji błędu (mniejszy błąd oznacza dokładniejsze przewidywania). Możesz wybrać różne wielkości partii, aby poprawić szybkość i stabilność szkolenia.
Zwiększenie maksymalnej liczby rund treningowych to kolejny sposób na poprawę wydajności algorytmu. Dla każdej rundy (często nazywanej epoką) AI Studio przepuszcza przez sieć neuronową cały zestaw danych treningowych. Oznacza to, że większa liczba maksymalnych rund zwiększy czas potrzebny do wytrenowania algorytmu. W większości przypadków AI Studio wykrywa, czy osiągnięte zostało minimum i kończy trening przed osiągnięciem maksimum. Skraca to czas treningu i pozwala uniknąć przepasowania.
Nadmierne dopasowanie oznacza, że sieć neuronowa zbytnio dostosowała się do danych treningowych. Jeśli algorytm uzyskuje bardzo wysoką dokładność podczas treningu, ale słabo radzi sobie w rzeczywistych testach, warto zmniejszyć maksymalną liczbę rund treningowych.
Ustawienie podziału danych pozwala wybrać, jaka część zarejestrowanych danych jest używana do szkolenia, a jaka do testowania. Należy unikać używania więcej niż jednej trzeciej danych do testowania. Jak sama nazwa wskazuje, algorytm będzie używał tylko danych treningowych do treningu. Po zakończeniu treningu AI Studio oceni algorytm, używając danych testowych, których nigdy wcześniej nie widział.
Naciśnij Trenuj sieć neuronową aby rozpocząć trening. Zobaczysz szacowany pozostały czas treningu oraz wykres liniowy dokładności i strat.
Z każdą epoką dokładność i dokładność walidacji powinny się poprawiać, a strata i strata walidacji powinny się zmniejszać. Poczekaj, aż trening się zakończy.
Po zakończeniu treningu należy sprawdzić macierz konfuzji. Zawiera ona ważne informacje o wynikach szkolenia. Najbardziej interesującą statystyką jest dokładność, ale jeśli dane treningowe są nierównomiernie rozłożone, wynik F1 może być lepszą metryką.
Rzadko osiągniesz dokładność powyżej 90%, więc jeśli dokładność jest powyżej 80% powinieneś wyeksportować algorytm, aby go przetestować. Będziemy wykrywać zapachy używając naszego PiCockpit interfejs WWW. Upewnij się, że algorytm został wyeksportowany do wersji BSEC 2.0.6.1, ponieważ PiCockpit jak na razie obsługuje tylko tę wersję.
Uwaga: W większości przypadków szkolenie zostanie zakończone przed upływem szacowanego czasu trwania.
4. Wykrywać zapachy
Aby wykryć zapachy wystarczy zainstalować PiCockpit i podłącz go do swojego konta. Jeśli nie masz PiCockpit Wystarczy zarejestrować się za darmo i postępować zgodnie z podanymi tam instrukcjami. Nasza aplikacja Digital Nose App pozwala na wgranie swojego wytrenowanego algorytmu i oglądanie prognoz na żywo poprzez interfejs internetowy. Sprawdź Cyfrowa pomoc do nosa aby uzyskać pełne wyjaśnienie, jak korzystać z aplikacji.
Innym sposobem na wykrycie zapachów jest użycie naszego BME68X Rozszerzenie Python. Wymaga to trochę kodowania w Pythonie, ale oferuje większą kontrolę i pozwala na tworzenie własnych aplikacji wykorzystujących Twój algorytm. Odnieś się do README.md. Documentation.md i przykłady aby dowiedzieć się, jak zainstalować i używać tego rozszerzenia.
Tak więc masz to już za sobą. Powinieneś teraz być w stanie nagrywać dane, trenować swój algorytm i wykrywać zapachy. Proszę daj mi znać, czy ten przewodnik był dla Ciebie przydatny lub czy napotkałeś jakieś problemy podczas jego wykonywania.
Skontaktuj się ze mną pod adresem [email protected]
W moim przypadku trenowanie algorytmu nie działa. Zamiast tego program wyświetla błąd "Algorytm nie może być trenowany. Wydaje się, że brakuje danych treningowych lub testowych.". Jednak dla każdej z klas udało mi się zebrać około jednej godziny danych przy użyciu płytki BME688 Breakout Board. Czy wiesz, co mogę robić źle?
Wygląda na to, że plik .bmerawdata może być uszkodzony. Możesz spróbować przejrzeć ten plik, aby sprawdzić, czy nie zawiera on jakichś nieprawidłowych wartości. Jest on w formacie json
Czy znalazłeś rozwiązanie tego problemu?
Cześć Nathan
Wypróbowałem również Twój kod i otrzymuję ten sam błąd podczas tworzenia algorytmu.
" Wygląda na to, że brakuje danych treningowych lub testowych".
Czy w Twoim kodzie jest może jakiś problem?
Cześć Tomasz
Nie udało mi się jeszcze odtworzyć tego błędu.
Jakiej wersji programu AI Studio używasz? Skrypt został przetestowany z programem AI Studio w wersji 1.6.0.
Cześć Nathan
Używam najnowszej wersji (1.6.0), wysłałem też do Ciebie maila w tej sprawie, czy chcesz, żebym wysłał Ci przykładowe pliki?
Próbowałem już wielu prób, ale za każdym razem pojawia się ten sam błąd 🙁
tak, używam wersji 1.6.0 proszę sprawdzić te pliki z kolekcji danych jeden to spaliny drugi to normalne powietrze https://we.tl/t-PwfkYXjnGP
[...] na przykład czujnik temperatury i wilgotności lub być może projekt jakości powietrza z DHT22 lub BME688, lub czujnik jasności ze światłem [...].
[...] Naucz swój BME688 jak pachnieć [...]