Lär din BME688 att lukta

Lär din BME688 hur man luktar Titelbild

En komplett guide om hur du tränar din BME688-sensor

Hej, kära teknikentusiaster! Bosch har släppt den nya BME688, en fantastisk ny sensor som kan urskilja upp till fyra olika dofter. Den här guiden förklarar alla detaljer för att lära din BME688 att skilja dofter åt. Oroa dig inte om du är ny inom AI eller Python. Den här guiden lämpar sig för nybörjare.

Så låt oss hoppa rakt fram.

Förutsättningar

Steg

  1. Välj ditt program
  2. Registrera uppgifter
  3. Träna algoritmen
  4. Upptäcka lukter

1. Välj ditt program

Det första steget är att välja program. I den här guiden kommer jag att använda kött och ost som exempel. Men det finns ett oändligt antal möjligheter. Du kan skilja frukt från grönsaker eller rengöringsmedel från parfym. Du kan också försöka avgöra när mat har blivit dålig.

Det finns vissa saker som du bör tänka på när du väljer en applikation. Du behöver många exemplar för varje klass som du vill särskilja för att algoritmen ska bli robust. Till att börja med bör du välja något som är billigt och allmänt tillgängligt. Tänk också på att det är lämpligt att använda normal luft som en av klasserna, eftersom den nästan alltid kommer att finnas.

För att skapa en robust algoritm bör du använda minst en halvtimmes mätdata för varje prov. Därför är provkroppar som avger en konstant doft ett bra val. Se också till att använda ett brett spektrum av exemplar. Om du till exempel bara använder apelsiner, citroner och limefrukter för din fruktklass kan det hända att sensorn misslyckas med att klassificera ett hallon som frukt, eftersom det skiljer sig för mycket från de exemplar som du använde för träningen. Ju fler olika exemplar som används, desto bättre.

När du har gjort ditt val är det dags att skapa ett nytt AI Studio-projekt. Öppna AI Studio och tryck på Skapa projekt ... Knapp. Tryck på Konfigurera BME-kortet om du vill registrera data med en specifik konfiguration.

2. Registrera uppgifter

Denna process varierar beroende på om du använder BME688 Breakout Board eller . Bosch BME688 Gas Sensor Developer Kit (utvecklingssats för gassensor) (ytterligare en skyttel ombord). Shuttlekortet är lättare att använda och registrerar data åtta gånger snabbare än breakoutkortet, men det är mycket dyrare. Jag kommer att förklara båda metoderna i detalj i de följande avsnitten.

Observera: BME688-sensorn behöver en viss tid för att anpassa sig till miljön och för att bli inarbetad. Se till att låta den vara igång i minst 24 timmar innan du registrerar dina träningsdata.

Registrera data med BME688 Shuttle Board

BOSCH utrustade skyttelkortet med åtta BME688-sensorer, vilket gör att det producerar åtta gånger så mycket data på samma tid. All programvara är redan installerad och den är redo att användas. Titta på denna videohandledning från Bosch om du vill veta mer om mätningsprocessen.

Om du registrerar många exemplar under en och samma session kanske du vill anteckna ordningen på exemplaren för att undvika förvirring. Du kan alltid beskära data i AI Studio senare, så var inte rädd för att registrera många data.

Registrera data med BME688 Breakout Board

Om du använder BME688 Breakout Board Jag rekommenderar ändå att du tittar på Bosch handledning eftersom den ger användbar information om träningsprocessen i AI Studio. Men för att registrera träningsdata krävs ytterligare några steg.

Vi på pi3g skapat ett pythonbibliotek för BME68X-sensorerna, som du kan uppgradera med Boschs BSEC 2.0. Det är alltså bra om du har viss erfarenhet av Python, men det är inte nödvändigt.

Observera: Se instruktionerna för installation och användning direkt på vår GitHub.

Börja med att klona vår bme68x-python-bibliotek. Detta kan göras genom att utföra följande kommando i en bash-terminal.

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

Nu måste du bygga och installera pythonmodulen bme68x. BSEC 2.0 är en proprietär programvara, så du måste ladda ner version 2.0.6.1 direkt från Bosch och godkänna deras licens. Packa upp den till mappen bme68x-python-library och fortsätt med dessa kommandon.

cd path/to/bme68x-python-library
sudo python3 setup.py install

Nu kan du köra bmerawdata.py skriptet med standardinställningarna.

cd tools/bmerawdata
python3 bmerawdata.py

Skriptet visar de registrerade uppgifterna efter varje mätning. Avsluta skriptet och spara data i en AI Studio-kompatibel fil genom att trycka på Ctrl+c.

3. Träna algoritmen

Importera uppgifter

Oavsett om du använder BME688 Breakout Board eller Bosch BME688 Gas Sensor Developer Kit (utvecklingssats för gassensor)Nästa steg är att importera data till AI Studio. Tryck på Importera data och välj din .bmerawdata-fil.

Dialogrutan Importera data

Din session behöver ett meningsfullt namn. Det är lämpligt att välja en uppräkning av exemplaren.

Du kan se en plott av dina data, t.ex. för gasdatakanalen, som visas nedan.

Gasdatakanal

Om data kommer från skyttelkortet kan du växla mellan data från de åtta sensorerna. Var och en av de färgade linjerna representerar ett steg i den uppvärmningsprofil som användes för att samla in data.

Observera: I de flesta fall bör du bara använda gasdatakanalen för träning.

Nu måste vi märka våra prover. Om du har registrerat data med skyttelbrädan och använt knapparna ombord för att märka proverna kan du redan se en mall för var och en av dem. Du kan också beskära proverna och skapa nya (till exempel om du har registrerat flera prover med hjälp av vår breakoutboard).

Prov etiketter och tidsstämplar

När du har redigerat sessionen färdigt trycker du på knappen Importera data i det nedre högra hörnet av dialogrutan.

När du har importerat och märkt alla dina prover är det dags att skapa och träna algoritmen.

Skapa algoritmen

Välj Mina algoritmer högst upp och klicka på + Ny algoritm . Ge din algoritm ett namn som representerar vad den ska göra, i mitt fall AirMeatCheese. Lägg sedan till klasserna. Jag kallade mina klasser NormalAir, Meat och Cheese. Välj vilka exemplar som hör till vilken klass och välj en färg för varje klass.

Namnge din algoritm
Namnge din algoritm
Redigera dina klasser
Redigera dina klasser

Om du vill lägga till eller ta bort exemplar kan du klicka på en av klasserna. Här är ett exempel på vad Kött klassen ser ut så här.

Utsikt över köttklassen
Utsikt över köttklassen

Under klasserna kan du se ytterligare uppgifter om algoritmen.

Ytterligare uppgifter om algoritmen
Ytterligare uppgifter om algoritmen

Databalansen visar den totala mätningstiden för varje klass. För att säkerställa bästa prestanda bör mätningstiden för varje klass vara lika lång. Om mätningstiden för en av klasserna är mycket längre, kan algoritmen bli mer inriktad på den klassen. Observera också frågetecknet framför varje rubrik. Tryck på den för att få mer detaljerad information.

Observera: Se till att läsa dokumentationen för BME688 AI Studio för mer information.

Under datakanaler kan du välja vilken av de fyra sensorutgångarna du vill använda för din algoritm. Jag rekommenderar att du endast använder datakanalen för gas, eftersom de andra kanalerna oftast beror på miljön och inte på provet. När du har ställt in allting är det dags för träning.

Utbildning och export

Träna din algoritm
Träna din algoritm

Här kan du välja träningsmetod, max antal rundor och uppdelning av data. Om du är nybörjare på neurala nätverk bör du lämna allting på standardinställningarna. Jag ska ändå försöka förklara var och en av dessa inställningar kortfattat.

Den enda träningsmetod som finns tillgänglig när jag skriver detta är ADAM-optimeraren. Detta är ett särskilt sätt att hitta ett minimum i felfunktionen (mindre fel innebär mer exakta förutsägelser). Du kan välja olika batchstorlekar för att förbättra träningshastigheten och stabiliteten.

Ett annat sätt att förbättra algoritmens prestanda är att öka det maximala antalet träningsrundor. För varje omgång (ofta kallad epok) matar AI Studio hela träningsdatamängden genom det neurala nätverket. Det innebär att ett högre antal maximala rundor ökar den tid det tar att träna algoritmen. För det mesta upptäcker AI Studio om ett minimum uppnås och avslutar träningen innan de maximala rundorna uppnås. Detta minskar träningstiden och undviker överanpassning.

Överanpassning innebär att det neurala nätverket har anpassat sig för mycket till träningsdata. Om algoritmen får mycket hög träningsnoggrannhet men presterar dåligt i verkliga tester kan du kanske minska de maximala träningsrundorna.

Med inställningen för uppdelning av data kan du välja hur mycket av dina registrerade data som används för träning och hur mycket som används för testning. Du bör undvika att använda mer än en tredjedel av data för testning. Som namnet antyder använder algoritmen endast träningsdata för träning. När träningen är avslutad kommer AI Studio att utvärdera algoritmen med hjälp av testdata, som den aldrig tidigare har sett.

Tryck på Träna neurala nät för att starta utbildningen. Du kommer att se den beräknade återstående träningstiden och ett linjediagram över noggrannhet och förlust.

Framsteg i utbildningen
Framsteg i utbildningen

Med varje epok bör noggrannheten och valideringsnoggrannheten förbättras, medan förlusten och valideringsförlusten bör minska. Vänta tills träningen är avslutad.

När träningen är klar kontrollerar du förvirringsmatrisen. Den innehåller viktig information om träningsresultaten. Den mest intressanta statistiken är noggrannheten, men om dina träningsdata är ojämnt fördelade kan F1-poängen vara ett bättre mått.

Förvirringsmatris och utbildningsresultat
Förvirringsmatris och utbildningsresultat

Du kommer sällan att uppnå en noggrannhet på över 90%, så om noggrannheten är över 80% bör du exportera algoritmen för att testa den. Vi kommer att upptäcka lukter med hjälp av vår PiCockpit webbgränssnitt. Se till att exportera algoritmen för BSEC version 2.0.6.1 eftersom PiCockpit stöder endast denna version än så länge.

Observera: I de flesta fall kommer utbildningen att avslutas innan den beräknade längden har uppnåtts.

4. Upptäcka lukter

För att upptäcka lukter installerar du helt enkelt PiCockpit klient och anslut den till ditt konto. Om du inte har PiCockpit men det är bara att registrera sig gratis och följa instruktionerna som ges där. Med vår Digital Nose-app kan du ladda upp din tränade algoritm och se liveprognoser via webbgränssnittet. Kolla in den Digital näshjälp för en fullständig förklaring om hur du använder appen.

Ett annat sätt att upptäcka lukter är att använda vår BME68X Python-förlängning. Detta kräver lite pythonkodning men ger mer kontroll och gör att du kan skapa egna program med din algoritm. Se README.md, den Dokumentation.md och exempel för att lära dig hur du installerar och använder tillägget.

Så där har du det. Du bör nu kunna registrera data, träna din algoritm och upptäcka lukter. Låt mig veta om du fann den här guiden användbar eller om du upplevde några problem när du följde den här guiden.

Kontakta mig på [email protected]

9 Kommentarer

  1. Siroj42 den mars 30, 2022 kl 8:14 f m

    För mig fungerar det inte att träna algoritmen. Istället visar programmet felet "Algoritm could not be trained. Det verkar saknas antingen träningsdata eller testdata.". Jag har dock fångat ungefär en timmes data för var och en av mina klasser med hjälp av BME688 Breakout Board. Har ni någon idé om vad jag kan göra fel?

    • Nathan Busler den mars 31, 2022 kl 10:09 f m

      Det låter som om filen .bmerawdata kan vara skadad. Du kan försöka ta en titt på filen för att se om den innehåller några felaktiga värden. Den är i json-format

    • tomm den april 11, 2022 kl 3:13 e m

      Hittade du en lösning för detta?

  2. Thomas den april 10, 2022 kl 4:51 e m

    Hej Nathan
    Jag har också just provat din kod och får samma fel när jag skapar en algoritm.
    " Det verkar saknas antingen träningsdata eller testdata."

    Är det något problem i din kod kanske?

    • Nathan Busler den april 14, 2022 kl 1:00 e m

      Hej Thomas
      Jag har inte kunnat återskapa felet ännu.
      Vilken version av AI Studio dp använder du? Skriptet testades med AI Studio version 1.6.0.

      • Thomas den april 14, 2022 kl 9:11 e m

        Hej Nathan
        Jag använde den senaste versionen (1.6.0) och jag skickade ett mail om det, så du vill att jag ska skicka dig provfilerna?
        Jag har provat många tester men samma fel varje gång 🙁.

      • Thomas den april 17, 2022 kl 6:28 e m

        Ja, jag använder också 1.6.0. Kontrollera dessa filer från datainsamlingen, den ena är rök och den andra är normal luft. https://we.tl/t-PwfkYXjnGP

  3. [...] på, såsom en temperatur- och luftfuktighetssensor eller kanske ett luftkvalitetsprojekt med en DHT22 eller BME688, eller en ljusstyrkesensor med en ljus [...].

Lämna en kommentar