Ensine o seu BME688 a cheirar

Um guia completo sobre como treinar o seu sensor BME688

Olá colegas entusiastas da tecnologia! A Bosch lançou o BME688um novo sensor fantástico que pode distinguir até quatro cheiros diferentes. Este guia irá explicar todos os detalhes do ensino do seu BME688 como distinguir odores. Não se preocupe se você é novo na IA ou Python. Este guia é adequado para iniciantes.

Então, vamos saltar à frente.

Pré-requisitos

Passos

  1. Escolha a sua aplicação
  2. Registar dados
  3. Treinar o algoritmo
  4. Detectar cheiros

1. Escolha a sua aplicação

O primeiro passo é escolher a sua candidatura. Para este guia vou usar carne e queijo como exemplos. Mas há um leque infinito de possibilidades. Você pode distinguir frutas de vegetais ou agentes de limpeza de perfume. Você também pode tentar determinar quando a comida se estragou.

Há certas coisas que você deve considerar ao escolher uma aplicação. Você precisa de muitos espécimes para cada classe que deseja distinguir, para garantir que o algoritmo se torne robusto. Para começar, você deve escolher algo que seja barato e amplamente disponível. Tenha também em mente que é aconselhável usar ar normal como uma das classes, uma vez que ele estará quase sempre presente.

Para criar um algoritmo robusto você deve usar pelo menos meia hora de dados de medição para cada espécime. Portanto, espécimes que produzem um cheiro constante são uma boa escolha. Certifique-se também de utilizar uma ampla gama de amostras. Se, por exemplo, você usar apenas laranjas, limões e limas para sua classe de frutas, o sensor pode não classificar uma framboesa como fruta, porque ela é muito diferente dos espécimes que você usou para o treinamento. Quanto mais espécimes diferentes forem utilizados, melhor.

Uma vez concluída a sua escolha, é altura de criar um novo projecto AI Studio. Abra o AI Studio e pressione o botão Criar Projeto ... Botão. Pressione Configurar a placa BME se você quiser registrar dados com uma configuração específica.

2. Registar dados

Este processo varia, dependendo se você usa o BME688 Quadro de Discussão ou Kit de desenvolvimento do sensor de gás Bosch BME688 (mais uma placa de vaivém). A placa de transporte é mais fácil de usar e irá capturar dados oito vezes mais rápido do que a placa de separação, mas é muito mais cara. Vou explicar os dois métodos em detalhe nas secções seguintes.

Nota: O sensor BME688 precisa de algum tempo para se ajustar ao ambiente e entrar em combustão. Certifique-se de deixá-lo funcionando por pelo menos 24 horas antes de gravar seus dados de treinamento.

Registar dados com a placa do vaivém BME688

A BOSCH equipou a placa do vaivém com oito sensores BME688, por isso produz oito vezes mais dados no mesmo espaço de tempo. Todo o software já está instalado, e está pronto para sair da caixa. Veja este tutorial em vídeo da Bosch para aprender sobre o processo de medição.

Se você estiver registrando muitos espécimes em uma única sessão, você pode querer anotar a seqüência de espécimes para evitar confusão. Você sempre pode recortar os dados no AI Studio mais tarde, então não tenha medo de capturar muitos dados.

Registar dados com o Quadro de Discussão BME688

Se você estiver usando o BME688 Quadro de Discussão Eu ainda aconselho-o a observar o Tutorial da Bosch porque fornece algumas informações úteis sobre o processo de treinamento no AI Studio. Mas para registrar os dados do treinamento são necessários alguns passos adicionais.

Nós na pi3g criou uma biblioteca de pitões para os sensores BME68X, que você pode atualizar com Boschs BSEC 2.0. Portanto, é útil se você tiver alguma experiência com pitões, mas não é necessário.

Nota: Veja as instruções de instalação e utilização directamente no nosso GitHub.

Comece por clonar o nosso bme68x-python-library. Isto pode ser feito através da execução do seguinte comando num terminal bash.

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

Agora você precisa construir e instalar o módulo bme68x python. O BSEC 2.0 é software proprietário, pelo que necessita de fazer o download da versão 2.0.6.1 directamente da Bosch e concordar com a sua licença. Descomprima-o para a pasta bme68x-python-library e prossiga com estes comandos.

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

Agora você pode executar o bmerawdata.py com as configurações padrão.

cd ferramentas/bmerawdata
python3 bmerawdata.py

O script irá exibir os dados gravados após cada medição. Termine o script e salve os dados em um arquivo compatível com o AI Studio, pressionando Ctrl+c.

3. Treinar o algoritmo

Importar dados

Independentemente de você estar usando o BME688 Quadro de Discussão ou o Kit de desenvolvimento do sensor de gás Bosch BME688o próximo passo é importar os dados para o AI Studio. Pressione o botão Dados de Importação Clique no botão e seleccione o seu ficheiro .bmerawdata.

Diálogo de dados de importação

A sua sessão precisa de um nome significativo. É adequado para escolher uma enumeração dos espécimes.

Você pode ver um gráfico dos seus dados, por exemplo, do canal de dados do gás, como mostrado abaixo.

Canal de dados de gás

Se os dados vierem da placa do vaivém, pode alternar entre os dados dos oito sensores. Cada uma das linhas coloridas representa um passo do perfil do aquecedor que foi usado para capturar os dados.

Nota: Na maioria dos casos, você só deve usar o canal de dados de gás para treinamento.

Agora precisamos de rotular os nossos espécimes. Se você gravou os dados com a placa de transporte e usou os botões de bordo para marcar os espécimes, você já poderá ver um modelo para cada um deles. Você também pode recortar os espécimes e criar novos (por exemplo, se você gravou vários espécimes usando nossa placa de quebra).

Etiquetas de espécimes e carimbos de tempo

Depois de terminar de editar a sessão, pressione o botão Dados de Importação no canto inferior direito do diálogo.

Uma vez importados e rotulados todos os seus espécimes, é hora de criar e treinar o algoritmo.

Criar o algoritmo

Selecione Meus Algoritmos no topo e clique em + Novo Algoritmo . Dê ao seu algoritmo um nome que represente o que ele deve fazer, no meu caso AirMeatCheese. Depois acrescente as aulas. Chamei às minhas aulas NormalAir, Meat and Cheese. Seleccione que espécimes pertencem a que classe e escolha uma cor para cada classe.

Dê um nome ao seu algoritmo
Dê um nome ao seu algoritmo
Edite as suas aulas
Edite as suas aulas

Para adicionar ou remover espécimes, você pode clicar em uma das classes. Aqui está um exemplo do que a Carne Parece que a classe.

Vista da classe Meat
Vista da classe Meat

Abaixo das classes você pode ver alguns dados adicionais sobre o algoritmo.

Dados adicionais do algoritmo
Dados adicionais do algoritmo

O balanço de dados mostra a duração total da medição para cada classe. Para garantir o melhor desempenho, a duração da medição de cada classe deve ser igual. Se a duração da medição de uma das classes for muito maior, você pode experimentar um viés do algoritmo em relação a essa classe. Observe também o botão de interrogação na frente de cada título. Prima-o para obter informações mais detalhadas.

Nota: Certifique-se de verificar a documentação do BME688 AI Studio para obter mais informações.

Em canais de dados você pode selecionar qual das quatro saídas de sensores você quer usar para o seu algoritmo. Eu recomendo usar apenas o canal de dados de gás, uma vez que os outros canais dependem principalmente do ambiente e não da amostra. Uma vez que você tenha configurado tudo, é hora de treinar.

Treinamento e exportação

Treine o seu algoritmo
Treine o seu algoritmo

Aqui você pode selecionar o método de treinamento, as rondas máximas e a divisão de dados. Se você é novo em redes neurais, você deve deixar tudo nas configurações padrão. No entanto, vou tentar explicar brevemente cada uma dessas configurações.

O único método de treinamento disponível no momento em que estou escrevendo este é o otimizador ADAM. Esta é uma forma específica de encontrar um mínimo na função de erro (menos erro significa previsões mais precisas). Você pode selecionar diferentes tamanhos de lotes para melhorar a velocidade e estabilidade do treinamento.

Aumentar ao máximo as rondas de treino é outra forma de melhorar o desempenho do algoritmo. Para cada ronda (muitas vezes referida como época) o AI Studio alimenta todo o conjunto de dados de treinamento através da rede neural. Isso significa que um número maior de rondas máximas aumentará o tempo que leva para treinar o algoritmo. A maior parte do tempo o AI Studio detectará se um mínimo é alcançado e terminará o treinamento antes que as rondas máximas sejam alcançadas. Isso reduz o tempo de treinamento e evita o excesso de equipamento.

O sobreajuste significa que a rede neural se ajustou demais aos dados de treinamento. Se o algoritmo tiver uma precisão muito alta no treinamento, mas tiver um desempenho ruim nos testes da vida real, talvez você queira diminuir as rondas máximas de treinamento.

A configuração de divisão de dados permite que você selecione quanto dos seus dados gravados é usado para treinamento e quanto é usado para testes. Você deve evitar usar mais de um terço dos dados para testes. Como o nome sugere, o algoritmo só utilizará os dados de treinamento para treinamento. Após a conclusão do treinamento, o AI Studio avaliará o algoritmo usando os dados de teste, o que nunca viu antes.

Imprensa Treinar a Rede Neural para começar o treino. Você verá o tempo restante estimado de treinamento e o gráfico de linhas da precisão e da perda.

Progresso da formação
Progresso da formação

A cada época a Precisão e Validação deverá melhorar, enquanto que a Perda e Validação deverá diminuir. Espere até que o treinamento esteja terminado.

Quando o treinamento estiver concluído, verifique a matriz de confusão. Ela contém informações importantes sobre os resultados do treinamento. A estatística mais interessante é a precisão, mas se os seus dados de treinamento forem distribuídos de forma desigual, a pontuação de F1 pode ser uma métrica melhor.

Matriz de confusões e resultados do treinamento
Matriz de confusões e resultados do treinamento

Raramente conseguirá uma precisão superior a 90%, pelo que se a precisão for superior a 80% deverá exportar o algoritmo para o testar. Iremos detectar cheiros usando o nosso PiCockpit interface web. Certifique-se de exportar o algoritmo para BSEC versão 2.0.6.1, uma vez que PiCockpit só suporta esta versão até agora.

Nota: Na maioria dos casos, o treinamento será concluído antes que a duração estimada seja atingida.

4. Detectar cheiros

Para detectar odores basta instalar o PiCockpit cliente e conecte-o à sua conta. Se você não tiver PiCockpit no entanto, basta registar-se gratuitamente e seguir as instruções dadas lá. Nosso Digital Nose App permite que você carregue seu algoritmo treinado e veja previsões ao vivo através da interface web. Confira o Ajuda do Nariz Digital para uma explicação completa sobre como usar o aplicativo.

Outra forma de detectar cheiros é usando o nosso BME68X Extensão Python. Isto requer alguma codificação python, mas oferece mais controle e permite que você crie suas próprias aplicações usando seu algoritmo. Consulte a seção LEIAME.mdo Documentação.md e o exemplos para aprender como instalar e utilizar a extensão.

Então, aí está. Agora você deve ser capaz de gravar dados, treinar o seu algoritmo e detectar cheiros. Por favor, avise-me se você achou este guia útil ou se você teve algum problema ao seguir este guia.

Contacte-me em nathan@pi3g.com

8 comentários

  1. Siroj42 em Março 30, 2022 às 8:14 am

    Para mim, o treino do algoritmo não funciona. Em vez disso, o software mostra o erro "Algoritmo não pode ser treinado". Ou os dados de treinamento ou os dados de teste parecem estar faltando". No entanto, eu capturei cerca de uma hora de dados para cada uma das minhas aulas usando o Quadro de Interrupção BME688. Você tem alguma idéia do que eu poderia estar fazendo de errado?

    • Nathan Busler em Março 31, 2022 às 10:09 am

      Isto parece que o arquivo .bmerawdata pode estar corrompido. Você poderia tentar dar uma olhada no arquivo, para ver se há algum valor ruim contido. Ele está no formato json

    • tomm em Abril 11, 2022 às 3:13 pm

      encontrou uma solução para isto?

  2. Thomas em Abril 10, 2022 às 4:51 pm

    Olá Nathan
    Também acabei de experimentar o vosso código e estou a receber o mesmo erro ao fazer um algoritmo.
    ” Parece faltarem dados de formação ou dados de teste".

    há algum problema no seu código maby?

    • Nathan Busler em Abril 14, 2022 às 1:00 pm

      Olá Thomas
      Ainda não consegui recriar o erro.
      Que versão do AI Studio dp você usa? O guião foi testado com AI Studio versão 1.6.0

      • Thomas em Abril 14, 2022 às 9:11 pm

        Olá Nathan
        Utilizei a versão mais recente (1.6.0) também lhe enviei um mail sobre o assunto, por isso quer que lhe envie os ficheiros de amostra ?
        Tentei muito testar mas o mesmo erro de cada vez 🙁

      • Thomas em Abril 17, 2022 às 6:28 pm

        sim im também utilizando 1.6.0 por favor verifique estes ficheiros a partir da recolha de dados um é fumos outro é ar normal https://we.tl/t-PwfkYXjnGP

Deixe um comentário