Bringen Sie Ihrem BME688 bei, wie man riecht

Ein vollständiger Leitfaden für die Schulung Ihres BME688-Sensors

Hallo, liebe Technikbegeisterte! Bosch hat die BME688, einem fantastischen neuen Sensor, der bis zu vier verschiedene Gerüche unterscheiden kann. In dieser Anleitung werden alle Details erklärt, wie Sie Ihrem BME688 beibringen, Gerüche zu unterscheiden. Machen Sie sich keine Sorgen, wenn Sie neu in KI oder Python sind. Diese Anleitung ist für Anfänger geeignet.

Also, lassen Sie uns gleich loslegen.

Voraussetzungen

Schritte

  1. Wählen Sie Ihre Anwendung
  2. Daten aufzeichnen
  3. Trainieren Sie den Algorithmus
  4. Gerüche erkennen

1. Wählen Sie Ihre Anwendung

Der erste Schritt besteht darin, Ihre Anwendung zu wählen. In diesem Leitfaden werde ich Fleisch und Käse als Beispiele verwenden. Aber es gibt eine endlose Reihe von Möglichkeiten. Sie können Obst von Gemüse oder Reinigungsmittel von Parfüm unterscheiden. Sie könnten auch versuchen, festzustellen, wann Lebensmittel verdorben sind.

Bei der Auswahl einer Anwendung sollten Sie einige Dinge beachten. Sie brauchen viele Exemplare für jede Klasse, die Sie unterscheiden wollen, um sicherzustellen, dass der Algorithmus robust wird. Für den Anfang sollten Sie etwas wählen, das billig und weithin verfügbar ist. Denken Sie auch daran, dass es ratsam ist, normale Luft als eine der Klassen zu verwenden, da sie fast immer vorhanden sein wird.

Um einen robusten Algorithmus zu erstellen, sollten Sie für jedes Exemplar mindestens eine halbe Stunde an Messdaten verwenden. Daher sind Proben, die einen konstanten Geruch erzeugen, eine gute Wahl. Achten Sie außerdem darauf, eine breite Palette von Proben zu verwenden. Wenn Sie z. B. nur Orangen, Zitronen und Limetten für Ihre Obstklasse verwenden, kann es sein, dass der Sensor eine Himbeere nicht als Obst klassifizieren kann, weil sie sich zu sehr von den Proben unterscheidet, die Sie zum Training verwendet haben. Je mehr verschiedene Exemplare verwendet werden, desto besser.

Sobald Sie Ihre Wahl getroffen haben, ist es an der Zeit, ein neues AI Studio Projekt zu erstellen. Öffnen Sie AI Studio und drücken Sie die Projekt erstellen ... Taste. Drücken Sie . BME-Karte konfigurieren wenn Sie Daten mit einer bestimmten Konfiguration aufzeichnen möchten.

2. Daten aufzeichnen

Dieser Prozess variiert, je nachdem, ob Sie die BME688 Breakout Board oder Bosch BME688 Gassensor-Entwicklungskit (weiteres Shuttle-Board). Die Pendelplatine ist einfacher zu benutzen und erfasst Daten achtmal schneller als die Breakout-Platine, aber sie ist viel teurer. In den folgenden Abschnitten werde ich beide Methoden im Detail erklären.

Anmerkung: Der BME688-Sensor benötigt eine gewisse Zeit, um sich an die Umgebung anzupassen und sich einzubrennen. Lassen Sie ihn mindestens 24 Stunden lang laufen, bevor Sie Ihre Trainingsdaten aufzeichnen.

Aufzeichnung von Daten mit dem BME688 Shuttle Board

BOSCH hat das Shuttle-Board mit acht BME688-Sensoren ausgestattet, so dass es in der gleichen Zeit achtmal so viele Daten liefert. Die gesamte Software ist bereits installiert, so dass das Board sofort einsatzbereit ist. Siehe dieses Video-Tutorial von Bosch um mehr über das Messverfahren zu erfahren.

Wenn Sie viele Exemplare in einer einzigen Sitzung aufnehmen, sollten Sie sich die Reihenfolge der Exemplare notieren, um Verwechslungen zu vermeiden. Sie können die Daten in AI Studio später immer noch zuschneiden, scheuen Sie sich also nicht, viele Daten zu erfassen.

Aufzeichnung von Daten mit dem BME688 Breakout Board

Wenn Sie die BME688 Breakout Board Ich empfehle Ihnen trotzdem, sich die Bosch-Anleitung weil es einige nützliche Informationen über den Trainingsprozess in AI Studio liefert. Um die Trainingsdaten aufzuzeichnen, sind jedoch einige zusätzliche Schritte erforderlich.

Wir bei pi3g eine Python-Bibliothek für die BME68X-Sensoren erstellt, die Sie mit Boschs BSEC 2.0. Es ist also hilfreich, wenn Sie etwas Python-Erfahrung haben, aber es ist nicht notwendig.

Anmerkung: Siehe die Installations- und Gebrauchsanweisungen direkt auf unserer GitHub.

Beginnen Sie mit dem Klonen unserer bme68x-python-library. Dies kann durch Ausführen des folgenden Befehls in einem Bash-Terminal erfolgen.

git clone https://github.com/pi3g/bme68x-python-library.git

Nun müssen Sie das Python-Modul bme68x erstellen und installieren. Das BSEC 2.0 ist eine proprietäre Software, daher müssen Sie die Version 2.0.6.1 direkt von Bosch herunterladen und der Lizenz zustimmen. Entpacken Sie sie in den Ordner bme68x-python-library und fahren Sie mit diesen Befehlen fort.

cd pfad/zu/bme68x-python-library
sudo python3 setup.py installieren

Jetzt können Sie die bmerawdata.py Skript mit den Standardeinstellungen.

cd tools/bmerawdata
python3 bmerawdata.py

Das Skript zeigt die aufgezeichneten Daten nach jeder Messung an. Beenden Sie das Skript und speichern Sie die Daten in einer AI Studio-kompatiblen Datei, indem Sie Strg+c.

3. Trainieren Sie den Algorithmus

Daten importieren

Unabhängig davon, ob Sie die BME688 Breakout Board oder die Bosch BME688 Gassensor-EntwicklungskitDer nächste Schritt besteht darin, die Daten in AI Studio zu importieren. Drücken Sie die Daten importieren Schaltfläche und wählen Sie Ihre .bmerawdata-Datei aus.

Dialogfeld "Daten importieren

Ihre Sitzung braucht einen aussagekräftigen Namen. Es bietet sich an, eine Aufzählung der Exemplare zu wählen.

Sie können ein Diagramm Ihrer Daten sehen, zum Beispiel für den Gasdatenkanal, wie unten gezeigt.

Gasdatenkanal

Wenn die Daten von der Pendelplatine stammen, können Sie zwischen den Daten der acht Sensoren umschalten. Jede der farbigen Linien steht für eine Stufe des Heizungsprofils, das zur Erfassung der Daten verwendet wurde.

Anmerkung: In den meisten Fällen sollten Sie nur den Gasdatenkanal für das Training verwenden.

Jetzt müssen wir unsere Proben beschriften. Wenn Sie die Daten mit dem Shuttle-Board aufgezeichnet und die Schaltflächen auf dem Board verwendet haben, um die Proben zu markieren, können Sie bereits eine Vorlage für jede einzelne Probe sehen. Sie können die Proben auch zuschneiden und neue erstellen (z. B. wenn Sie mehrere Proben mit unserem Breakout-Board aufgenommen haben).

Musteretiketten und Zeitstempel

Nachdem Sie die Bearbeitung der Sitzung abgeschlossen haben, drücken Sie die Daten importieren in der rechten unteren Ecke des Dialogs.

Nachdem Sie alle Ihre Proben importiert und beschriftet haben, ist es an der Zeit, den Algorithmus zu erstellen und zu trainieren.

Erstellen Sie den Algorithmus

Wählen Sie Meine Algorithmen am oberen Rand und klicken Sie auf + Neuer Algorithmus . Geben Sie Ihrem Algorithmus einen Namen, der seine Aufgabe beschreibt, in meinem Fall AirMeatCheese. Fügen Sie dann die Klassen hinzu. Ich habe meine Klassen NormalAir, Meat und Cheese genannt. Wählen Sie aus, welche Exemplare zu welcher Klasse gehören, und wählen Sie für jede Klasse eine Farbe.

Nennen Sie Ihren Algorithmus
Nennen Sie Ihren Algorithmus
Bearbeiten Sie Ihre Klassen
Bearbeiten Sie Ihre Klassen

Um Proben hinzuzufügen oder zu entfernen, können Sie auf eine der Klassen klicken. Hier ist ein Beispiel dafür, was die Fleisch Klasse sieht so aus.

Ansicht der Fleischklasse
Ansicht der Fleischklasse

Unterhalb der Klassen sehen Sie einige zusätzliche Daten über den Algorithmus.

Zusätzliche Daten zum Algorithmus
Zusätzliche Daten zum Algorithmus

Die Datenbilanz zeigt die Gesamtmessdauer für jede Klasse. Um die beste Leistung zu gewährleisten, sollte die Messdauer für jede Klasse gleich sein. Wenn die Messdauer einer der Klassen viel größer ist, kann es sein, dass der Algorithmus sich auf diese Klasse konzentriert. Beachten Sie auch die Schaltfläche mit dem Fragezeichen vor jeder Überschrift. Drücken Sie darauf, um genauere Informationen zu erhalten.

Anmerkung: Weitere Informationen finden Sie in der BME688 AI Studio Dokumentation.

Unter Datenkanäle können Sie auswählen, welche der vier Sensorausgänge Sie für Ihren Algorithmus verwenden möchten. Ich empfehle, nur den Gasdatenkanal zu verwenden, da die anderen Kanäle meist von der Umgebung und nicht von der Probe abhängen. Sobald Sie alles eingerichtet haben, ist es Zeit für das Training.

Ausbildung und Export

Trainieren Sie Ihren Algorithmus
Trainieren Sie Ihren Algorithmus

Hier können Sie die Trainingsmethode, die maximalen Runden und die Datenaufteilung auswählen. Wenn Sie neu im Bereich der neuronalen Netze sind, sollten Sie alles auf den Standardeinstellungen belassen. Dennoch werde ich versuchen, jede dieser Einstellungen kurz zu erklären.

Die einzige Trainingsmethode, die zum Zeitpunkt der Abfassung dieses Artikels zur Verfügung steht, ist die ADAM-Optimierung. Dabei handelt es sich um eine spezielle Methode zur Suche nach einem Minimum in der Fehlerfunktion (weniger Fehler bedeutet genauere Vorhersagen). Sie können verschiedene Stapelgrößen auswählen, um die Trainingsgeschwindigkeit und -stabilität zu verbessern.

Die Erhöhung der maximalen Trainingsrunden ist eine weitere Möglichkeit, die Leistung des Algorithmus zu verbessern. In jeder Runde (oft als Epoche bezeichnet) lässt AI Studio den gesamten Trainingsdatensatz durch das neuronale Netz laufen. Das bedeutet, dass eine höhere Anzahl maximaler Runden die Zeit erhöht, die für das Training des Algorithmus benötigt wird. In den meisten Fällen erkennt AI Studio, wenn ein Minimum erreicht ist und beendet das Training, bevor die maximalen Runden erreicht sind. Dadurch wird die Trainingszeit reduziert und eine Überanpassung vermieden.

Überanpassung bedeutet, dass sich das neuronale Netz zu sehr an die Trainingsdaten angepasst hat. Wenn der Algorithmus beim Training eine sehr hohe Genauigkeit erzielt, aber bei realen Tests schlecht abschneidet, sollten Sie die maximalen Trainingsrunden verringern.

Mit der Einstellung für die Datenaufteilung können Sie festlegen, wie viele Ihrer aufgezeichneten Daten für das Training und wie viele für die Tests verwendet werden sollen. Sie sollten vermeiden, mehr als ein Drittel der Daten zum Testen zu verwenden. Wie der Name schon sagt, wird der Algorithmus nur die Trainingsdaten zum Training verwenden. Nachdem das Training abgeschlossen ist, bewertet AI Studio den Algorithmus anhand der Testdaten, die er noch nie zuvor gesehen hat.

Presse Neuronales Netz trainieren um das Training zu starten. Sie sehen die geschätzte verbleibende Trainingszeit und ein Liniendiagramm für die Genauigkeit und den Verlust.

Fortschritte bei der Ausbildung
Fortschritte bei der Ausbildung

Mit jeder Epoche sollten sich die Genauigkeit und die Validierungsgenauigkeit verbessern, während der Verlust und der Validierungsverlust abnehmen sollten. Warten Sie, bis das Training beendet ist.

Wenn das Training abgeschlossen ist, überprüfen Sie die Konfusionsmatrix. Sie enthält wichtige Informationen über die Trainingsergebnisse. Die interessanteste Statistik ist die Genauigkeit, aber wenn Ihre Trainingsdaten ungleichmäßig verteilt sind, ist der F1-Score möglicherweise eine bessere Metrik.

Konfusionsmatrix und Trainingsergebnisse
Konfusionsmatrix und Trainingsergebnisse

Sie werden selten eine Genauigkeit von über 90% erreichen. Wenn die Genauigkeit über 80% liegt, sollten Sie den Algorithmus exportieren, um ihn zu testen. Wir erkennen Gerüche mit unserem PiCockpit Web-Schnittstelle. Stellen Sie sicher, dass Sie den Algorithmus für BSEC Version 2.0.6.1 exportieren, da PiCockpit unterstützt bisher nur diese Version.

Anmerkung: In den meisten Fällen wird das Training beendet sein, bevor die geschätzte Dauer erreicht ist.

4. Gerüche erkennen

Um Gerüche zu erkennen, installieren Sie einfach die PiCockpit Client und verbinden Sie ihn mit Ihrem Konto. Wenn Sie nicht über PiCockpit doch registrieren Sie sich einfach kostenlos und folgen Sie den dort gegebenen Anweisungen. Mit unserer Digital Nose App können Sie Ihren trainierten Algorithmus hochladen und über die Weboberfläche Live-Vorhersagen sehen. Sehen Sie sich die Digitale Nasenhilfe für eine vollständige Erklärung, wie man die App benutzt.

Eine weitere Möglichkeit, Gerüche zu erkennen, ist die Verwendung unseres BME68X Python-Erweiterung. Dies erfordert etwas Python-Programmierung, bietet aber mehr Kontrolle und ermöglicht es Ihnen, Ihre eigenen Anwendungen mit Ihrem Algorithmus zu erstellen. Siehe die README.mddie Dokumentation.md und die Beispiele um zu erfahren, wie man die Erweiterung installiert und verwendet.

So, das war's. Sie sollten jetzt in der Lage sein, Daten aufzuzeichnen, Ihren Algorithmus zu trainieren und Gerüche zu erkennen. Bitte lassen Sie mich wissen, ob Sie diese Anleitung nützlich fanden oder ob Sie Probleme hatten, dieser Anleitung zu folgen.

Kontaktieren Sie mich unter nathan@pi3g.com

8 Kommentare

  1. [...] Weiterführende Literatur [...]

  2. Veröffentlich von Siroj42 am März 30, 2022 um 8:14 am

    Bei mir funktioniert das Training des Algorithmus nicht. Stattdessen zeigt die Software den Fehler "Algorithmus konnte nicht trainiert werden. Es scheinen entweder Trainingsdaten oder Testdaten zu fehlen". Ich habe jedoch mit dem BME688 Breakout Board etwa eine Stunde Daten für jede meiner Klassen aufgezeichnet. Haben Sie eine Idee, was ich falsch machen könnte?

    • Veröffentlich von Nathan Busler am März 31, 2022 um 10:09 am

      Das klingt, als ob die .bmerawdata-Datei beschädigt sein könnte. Sie könnten versuchen, einen Blick auf die Datei zu werfen, um zu sehen, ob sie fehlerhafte Werte enthält. Sie liegt im json-Format vor

    • Veröffentlich von tomm am April 11, 2022 um 3:13 pm

      Haben Sie eine Lösung für dieses Problem gefunden?

  3. Veröffentlich von Thomas am April 10, 2022 um 4:51 pm

    Hallo Nathan
    Ich habe auch gerade versucht, Ihren Code und im immer die samme Fehler, wenn ein Algorithmus.
    " Es scheinen entweder Trainingsdaten oder Testdaten zu fehlen."

    Gibt es vielleicht ein Problem in Ihrem Code?

    • Veröffentlich von Nathan Busler am April 14, 2022 um 1:00 pm

      Hallo Thomas
      Ich konnte den Fehler bisher nicht reproduzieren.
      Welche Version von AI Studio verwenden Sie? Das Skript wurde mit AI Studio Version 1.6.0 getestet

      • Veröffentlich von Thomas am April 14, 2022 um 9:11 pm

        Hallo Nathan
        Ich habe die neueste Version (1.6.0) verwendet und Ihnen eine E-Mail darüber geschickt. Soll ich Ihnen die Beispieldateien schicken?
        Ich habe viele Tests durchgeführt, aber jedes Mal derselbe Fehler 🙁.

      • Veröffentlich von Thomas am April 17, 2022 um 6:28 pm

        ja ich benutze auch 1.6.0 bitte überprüfen Sie diese Dateien aus der Datenerfassung eine ist Abgase andere ist normale Luft https://we.tl/t-PwfkYXjnGP

Hinterlassen Sie einen Kommentar