O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Compreenda a biblioteca C ++

O TensorFlow Lite para a biblioteca microcontroladores C ++ faz parte do repositório TensorFlow . Ele foi projetado para ser legível, fácil de modificar, bem testado, fácil de integrar e compatível com o TensorFlow Lite regular.

O documento a seguir descreve a estrutura básica da biblioteca C ++ e fornece informações sobre como criar seu próprio projeto.

Estrutura de arquivo

O micro diretório raiz tem uma estrutura relativamente simples. No entanto, como ele está localizado dentro do extenso repositório do TensorFlow, criamos scripts e arquivos de projeto pré-gerados que fornecem os arquivos de origem relevantes de forma isolada em vários ambientes de desenvolvimento incorporados.

Arquivos principais

Os arquivos mais importantes para usar o interpretador TensorFlow Lite para Microcontroladores estão localizados na raiz do projeto, acompanhados de testes:

  • all_ops_resolver.h ou micro_mutable_op_resolver.h pode ser usado para fornecer as operações utilizadas pelo interpretador para executar o modelo. Desde all_ops_resolver.h puxa em cada operação disponível, ele usa muita memória. Em aplicações de produção, você deve usar micro_mutable_op_resolver.h para puxar apenas as operações suas necessidades modelo.
  • micro_error_reporter.h saídas informações de depuração.
  • micro_interpreter.h contém código de manusear e modelos executados.

Veja Comece com microcontroladores para um passo a passo de uso típico.

O sistema de construção fornece implementações específicas da plataforma de certos arquivos. Estes estão localizados em um diretório com o nome da plataforma, por exemplo sparkfun_edge .

Existem vários outros diretórios, incluindo:

  • kernel , que contém implementações de operação e o código associado.
  • tools , que contém ferramentas de compilação e sua produção.
  • examples , que contém o código da amostra.

Comece um novo projeto

Recomendamos usar o exemplo Olá mundo como um modelo para novos projetos. Você pode obter uma versão dele para a plataforma de sua escolha, seguindo as instruções nesta seção.

Use a biblioteca Arduino

Se você estiver usando Arduino, o exemplo Olá Mundo está incluído no Arduino_TensorFlowLite biblioteca Arduino, que você pode baixar a partir do Arduino IDE e em Arduino Criar .

Uma vez que a biblioteca foi adicionado, ir para File -> Examples . Você deve ver um exemplo perto do fim da lista com o nome TensorFlowLite:hello_world . Selecione-o e clique hello_world para carregar o exemplo. Você pode então salvar uma cópia do exemplo e usá-la como base para seu próprio projeto.

Gerar projetos para outras plataformas

TensorFlow Lite para microcontroladores é capaz de gerar projetos independentes que contêm todos os arquivos de origem necessários, usando um Makefile . Os ambientes com suporte atualmente são Keil, Make e Mbed.

Para gerar esses projetos com o make, clonar o repositório TensorFlow e execute o seguinte comando:

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

Isso levará alguns minutos, pois é necessário fazer o download de alguns conjuntos de ferramentas grandes para as dependências. Uma vez que terminou, você deve ver algumas pastas criadas dentro de um caminho como tensorflow/lite/micro/tools/make/gen/linux_x86_64/prj/ (o caminho exato depende do seu sistema operacional hospedeiro). Essas pastas contêm o projeto gerado e os arquivos de origem.

Depois de executar o comando, você será capaz de encontrar os projetos Olá Mundo em tensorflow/lite/micro/tools/make/gen/linux_x86_64/prj/hello_world . Por exemplo, hello_world/keil conterá o projeto Keil.

Execute os testes

Para construir a biblioteca e executar todos os seus testes de unidade, use o seguinte comando:

make -f tensorflow/lite/micro/tools/make/Makefile test

Para executar um teste individual, use o seguinte comando, substituindo <test_name> com o nome do teste:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

Você pode encontrar os nomes dos testes nos Makefiles do projeto. Por exemplo, examples/hello_world/Makefile.inc especifica os nomes de teste para o exemplo Olá Mundo.

Compilar binários

Para construir um binário executável para um determinado projecto (como um exemplo de aplicação), use o seguinte comando, substituindo <project_name> com o projeto que você deseja construir:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

Por exemplo, o seguinte comando vai construir um binário para a aplicação Olá Mundo:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

Por padrão, o projeto será compilado para o sistema operacional host. Para especificar uma arquitetura alvo diferente, use TARGET= . O exemplo a seguir mostra como construir o exemplo Olá Mundo para o SparkFun Borda:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge hello_world_bin

Quando um destino é especificado, quaisquer arquivos de origem específicos do destino disponíveis serão usados ​​no lugar do código original. Por exemplo, o subdirectório examples/hello_world/sparkfun_edge contém implementações SparkFun borda dos arquivos constants.cc e output_handler.cc , que irá ser utilizado quando o alvo sparkfun_edge é especificado.

Você pode encontrar os nomes dos projetos nos Makefiles do projeto. Por exemplo, examples/hello_world/Makefile.inc especifica os nomes binários para o exemplo Olá Mundo.

Kernels otimizados

Os grãos de referência na raiz de tensorflow/lite/micro/kernels são implementadas em puro C / C ++, e não incluem as optimizações hardware específico da plataforma.

Versões otimizadas de kernels são fornecidas em subdiretórios. Por exemplo, kernels/cmsis-nn contém vários kernels otimizados que fazer uso de biblioteca CMSIS-NN do braço.

Para gerar projetos usando kernels otimizados, use o seguinte comando, substituindo <subdirectory_name> com o nome do subdiretório contendo as otimizações:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

Você pode adicionar suas próprias otimizações criando uma nova subpasta para elas. Encorajamos solicitações pull para novas implementações otimizadas.

Gere a biblioteca Arduino

Uma construção noturna da biblioteca do Arduino está disponível por meio do gerenciador de biblioteca do IDE do Arduino.

Se você precisar gerar uma nova versão da biblioteca, execute o seguinte script no repositório do TensorFlow:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

A biblioteca resultante pode ser encontrado em tensorflow/lite/micro/tools/make/gen/arduino_x86_64/prj/tensorflow_lite.zip .

Portar para novos dispositivos

Orientação sobre portar TensorFlow Lite para microcontroladores para novas plataformas e dispositivos podem ser encontrados em micro/README.md .