Segundo o site do Tensorflow:

“O TensorFlow Lite é um conjunto de ferramentas para ajudar os desenvolvedores a executar modelos do TensorFlow em dispositivos móveis, incorporados e de IoT. Ele ativa a inferência de machine learning no dispositivo com baixa latência e um tamanho do binário reduzido.”

Vamos criar uma rede neural para converter dados do sensor ultrassônico HC-SR04 em distância.

O objetivo aqui é de entender como gerar um conjunto de dados, treinar um modelo de deep learning para converte-lo para o dispositivo de IoT. Aqui iremos utilizar o NodeMCU com o ESP32, o qual aparece na imagem abaixo:

O primeiro passo será o de obter a biblioteca do Tensorflow para o nosso projeto. Aqui utilizaremos o framework do Arduino.

Vamos clonar o repositório do TensorFlow na nossa máquina como o comando:

git clone https://github.com/tensorflow/tensorflow.gitCode language: PHP (php)

Após baixar o repositório, via terminal, entre na pasta e gere um programa de exemplo. Isso será útil para extrair a biblioteca do TensorFlow para o NodeMCU:

sudo make -f tensorflow/lite/micro/tools/make/Makefile TARGET=esp generate_hello_world_esp_project

Isso irá gerar um projeto na pasta

tensorflow/lite/micro/tools/make/gen/esp_xtensa-esp32/prj/hello_world

Entre na pasta anterior e encontre a pasta chamada /esp-idf. Em seguida, copie a pasta tfmicro para um outro local, pois iremos utilizá-la em nossos projetos. No arquivo zip a seguir existe um arquivo chamado library.json, sendo que esse último deve ser salvo dentro da raiz da pasta tfmicro.

O conteúdo do arquivo é apresentado a seguir.

{
    "build": {
        "flags": "-Ithird_party/ruy -Ithird_party/gemmlowp -Ithird_party/flatbuffers/include -DNDEBUG -Ofast -Wno-unused-variable -Wno-strict-aliasing -Wno-return-type -Wno-strict-aliasing -Wno-return-type -Wno-strict-aliasing"
    }
}Code language: JSON / JSON with Comments (json)

Modifique a partir da linha 34 do arquivo base.h, que está na pasta tfmicro/flatbuffers modifique da seguinte forma:

De:

#if defined(ARDUINO) && !defined(ARDUINOSTL_M_H)
  #include <utility.h>
#else
  #include <utility>
#endifCode language: CSS (css)

Para:

#include <utility>Code language: HTML, XML (xml)

Vamos utilizar o Platformio dentro do VSCode para criar um novo projeto.

Crie um novo projeto seguindo as figuras a seguir:

Modifique o arquivo patformio.ini para o seguinte:

Na raiz do projeto adicione o arquivo custom.csv

# Name,   Type, SubType, Offset,   Size, Flags
nvs,      data, nvs,     0x9000,   20K,
otadata,  data, ota,     0xe000,   8K,
firm,	  app,	ota_0, 	 , 3400K,
eeprom,   data, 0x99,    , 4K,
spiffs,   data, spiffs,  , 444K,Code language: PHP (php)

Salve a pasta tfmicro na pasta lib do projeto que acabamos de criar.

Compile o projeto e verifique se não existe nenhum erro.

Com isso temos os elementos básicos para criar um projeto usando o TensoFlow Lite para o ESP32.

No próximo post iremos criar um projeto para coletar dados do sensor HC-SR04 para treinar um modelo de deep learning capaz de determinar distâncias, embora existam bibliotecas para esse sensor, será interessante utilizar uma abordagem diferente para a determinação de distâncias. Poderíamos, por exemplo, integrar o sensor de umidade e temperatura para fornecer dados de entrada para obter a distância em condições ambientais distintas.

,


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Search

About

Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown prmontserrat took a galley of type and scrambled it to make a type specimen book.

Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown prmontserrat took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.

Gallery