Comprende la biblioteca C++

La biblioteca LiteRT para microcontroladores de C++ forma parte del Repositorio de TensorFlow. Está diseñado para ser legible, fácil de modificar, probado, fácil de integrar y es compatible con LiteRT normal.

En el siguiente documento, se describe la estructura básica de la biblioteca C++ y proporciona información sobre cómo crear tu propio proyecto.

Estructura de archivos

El micro tiene una estructura relativamente simple. Sin embargo, dado que se encuentra en el extenso repositorio de TensorFlow, creamos secuencias de comandos y archivos de proyecto pregenerados que proporcionan los archivos fuente relevantes de forma aislada en varios entornos de desarrollo incorporados.

Archivos de claves

Los archivos más importantes para usar LiteRT para microcontroladores están ubicados en la raíz del proyecto, acompañados de pruebas:

[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.

Consulta Cómo comenzar a usar microcontroladores para obtener una de uso típico.

El sistema de compilación proporciona implementaciones específicas de la plataforma de ciertas archivos. Se encuentran en un directorio con el nombre de la plataforma, por ejemplo. cortex-m

Existen otros directorios, entre ellos:

  • kernel: que contiene implementaciones de operaciones y el código asociado.
  • tools: que contiene herramientas de compilación y su resultado.
  • examples: que contiene código de muestra.

Inicia un proyecto nuevo.

Recomendamos usar el ejemplo de Hello World como plantilla para proyectos nuevos. Tú puedes obtener una versión para la plataforma que elijas siguiendo el más abajo en esta sección.

Cómo usar la biblioteca de Arduino

Si usas Arduino, el ejemplo de Hello World se incluye en la Arduino_TensorFlowLite biblioteca Arduino, que puedes instalar manualmente en el IDE de Arduino y en Arduino Create.

Una vez que se haya agregado la biblioteca, ve a File -> Examples. Deberías ver un mensaje ejemplo cerca de la parte inferior de la lista llamada TensorFlowLite:hello_world. Seleccionar y haz clic en hello_world para cargar el ejemplo. A continuación, puedes guardar una copia del ejemplo y utilizarlo como base de tu propio proyecto.

Genera proyectos para otras plataformas

LiteRT para microcontroladores puede generar proyectos independientes. que contengan todos los archivos fuente necesarios, mediante un Makefile. El valor actual los entornos compatibles son Keil, Make y Mbed.

Para generar estos proyectos con Make, clona el archivo Repositorio de TensorFlow/tflite-micro y ejecuta el siguiente comando:

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

Esto tardará unos minutos, ya que debe descargar algunas cadenas de herramientas grandes para las dependencias. Una vez que haya finalizado, deberías ver algunas carpetas creadas dentro de una ruta como gen/linux_x86_64/prj/ (el la ruta de acceso exacta depende del sistema operativo del host). Estas carpetas contienen los elementos el proyecto generado y los archivos fuente.

Después de ejecutar el comando, podrás encontrar los proyectos de Hello World en gen/linux_x86_64/prj/hello_world Para Por ejemplo, hello_world/keil contendrá el proyecto Keil.

Ejecuta las pruebas

Para compilar la biblioteca y ejecutar todas sus pruebas de unidades, usa el siguiente comando:

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

Para ejecutar una prueba individual, usa el siguiente comando y reemplaza <test_name> con el nombre de la prueba:

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

Puedes encontrar los nombres de las pruebas en los archivos makefile del proyecto. Por ejemplo: examples/hello_world/Makefile.inc especifica los nombres de prueba para el mensaje Hello World.

Objetos binarios de compilación

A fin de compilar un objeto binario ejecutable para un proyecto determinado (como una aplicación de ejemplo), usa el siguiente comando y reemplaza <project_name> por el proyecto que desees. para compilar:

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

Por ejemplo, el siguiente comando compilará un objeto binario para Hello World aplicación:

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

De forma predeterminada, el proyecto se compilará para el sistema operativo host. Para especifica una arquitectura de destino diferente, usa TARGET= y TARGET_ARCH=. El En el siguiente ejemplo, se muestra cómo compilar el ejemplo de Hello World para un producto corteza-m0:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

Cuando se especifica un destino, cualquier archivo de origen específico del destino disponible en lugar del código original. Por ejemplo, el subdirectorio examples/hello_world/cortex_m_generic contiene implementaciones de SparkFun Edge. de los archivos constants.cc y output_handler.cc, que se usarán cuando la carpeta se especifica el cortex_m_generic objetivo.

Puedes encontrar los nombres de los proyectos en los archivos makefile del proyecto. Por ejemplo: examples/hello_world/Makefile.inc especifica los nombres binarios para el mensaje Hello World.

Kernels optimizados

Los kernels de referencia en la raíz de tensorflow/lite/micro/kernels son se implementan en C/C++ puro y no incluyen hardware específico de la plataforma optimizaciones.

Se proporcionan versiones optimizadas de kernels en los subdirectorios. Por ejemplo: kernels/cmsis-nn contiene varios kernels optimizados que usan la interfaz de Arm CMSIS-NN.

Para generar proyectos con kernels optimizados, usa el siguiente comando: y reemplaza <subdirectory_name> por el nombre del subdirectorio que contiene el optimizaciones:

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

Puedes agregar tus propias optimizaciones creando una subcarpeta nueva para ellas. Mié fomentará las solicitudes de extracción para nuevas implementaciones optimizadas.

Cómo generar la biblioteca de Arduino

Si necesitas generar una nueva compilación de la biblioteca, puedes ejecutar el siguiente secuencia de comandos del repositorio de TensorFlow:

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

La biblioteca resultante se puede encontrar en gen/arduino_x86_64/prj/tensorflow_lite.zip

Cómo realizar la portabilidad a dispositivos nuevos

Orientación sobre la portabilidad de LiteRT para microcontroladores a nuevas plataformas se pueden encontrar los dispositivos micro/docs/new_platform_support.md