Naucz swojego BME688 jak pachnieć

Naucz swój BME688, jak wąchać obraz tytułowy

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

Kroki

  1. Wybierz swoją aplikację
  2. Dane ewidencyjne
  3. Wytrenuj algorytm
  4. 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.

Okno dialogowe Importuj dane

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.

Kanał danych gazu

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).

Etykiety wzorów i znaczniki czasu

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.

Nazwij swój algorytm
Nazwij swój algorytm
Edytuj swoje klasy
Edytuj swoje 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.

Widok na klasę mięsną
Widok na klasę mięsną

Poniżej klas możesz zobaczyć kilka dodatkowych danych na temat algorytmu.

Dodatkowe dane dotyczące algorytmu
Dodatkowe dane dotyczące 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

Wytrenuj swój algorytm
Wytrenuj swój algorytm

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.

Postępy w szkoleniu
Postępy w szkoleniu

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ą.

Macierz konfuzji i wyniki szkolenia
Macierz konfuzji i wyniki szkolenia

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]

Komentarzy: 9

  1. Siroj42 marzec 30, 2022 o 8:14 am

    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?

    • Nathan Busler marzec 31, 2022 o 10:09 am

      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

    • tomm kwiecień 11, 2022 o 3:13 pm

      Czy znalazłeś rozwiązanie tego problemu?

  2. Thomas kwiecień 10, 2022 o 4:51 pm

    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?

    • Nathan Busler kwiecień 14, 2022 o 1:00 pm

      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.

      • Thomas kwiecień 14, 2022 o 9:11 pm

        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 🙁

      • Thomas kwiecień 17, 2022 o 6:28 pm

        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

  3. [...] 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 [...].

Pozostaw komentarz