La biblioteca C++ de TensorFlow Lite para microcontroladores es parte del repositorio de TensorFlow . Está diseñado para ser legible, fácil de modificar, bien probado, fácil de integrar y compatible con TensorFlow Lite normal.
El siguiente documento describe la estructura básica de la biblioteca C++ y proporciona información sobre cómo crear su propio proyecto.
Estructura de archivos
El micro
raíz tiene una estructura relativamente simple. Sin embargo, dado que se encuentra dentro del extenso repositorio de TensorFlow, hemos creado scripts y archivos de proyecto pregenerados que proporcionan los archivos fuente relevantes de forma aislada dentro de varios entornos de desarrollo integrados.
Archivos clave
Los archivos más importantes para usar el intérprete de TensorFlow Lite para microcontroladores se encuentran 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.
-
micro_error_reporter.h
genera información de depuración. -
micro_interpreter.h
contiene código para manejar y ejecutar modelos.
Consulte Introducción a los microcontroladores para obtener un tutorial sobre el uso típico.
El sistema de compilación proporciona implementaciones específicas de plataforma de ciertos archivos. Estos se encuentran en un directorio con el nombre de la plataforma, por ejemplo cortex-m
.
Existen varios otros directorios, incluidos:
-
kernel
, que contiene implementaciones de operaciones y el código asociado. -
tools
, que contiene herramientas de compilación y su salida. -
examples
, que contiene código de muestra.
Iniciar un nuevo proyecto
Recomendamos utilizar el ejemplo Hello World como plantilla para nuevos proyectos. Puede obtener una versión para la plataforma que elija siguiendo las instrucciones de esta sección.
Utilice la biblioteca Arduino
Si está utilizando Arduino, el ejemplo Hello World está incluido en la biblioteca Arduino_TensorFlowLite
, que puede instalar manualmente en Arduino IDE y Arduino Create .
Una vez que se haya agregado la biblioteca, vaya a File -> Examples
. Deberías ver un ejemplo cerca del final de la lista llamado TensorFlowLite:hello_world
. Selecciónelo y haga clic en hello_world
para cargar el ejemplo. Luego puede guardar una copia del ejemplo y utilizarla como base para su propio proyecto.
Generar proyectos para otras plataformas
TensorFlow Lite para microcontroladores puede generar proyectos independientes que contienen todos los archivos fuente necesarios, utilizando un Makefile
. Los entornos compatibles actualmente son Keil, Make y Mbed.
Para generar estos proyectos con Make, clona el repositorio TensorFlow/tflite-micro y ejecuta el siguiente comando:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Esto llevará unos minutos, ya que hay que descargar algunas cadenas de herramientas grandes para las dependencias. Una vez que haya terminado, debería ver algunas carpetas creadas dentro de una ruta como gen/linux_x86_64/prj/
(la ruta exacta depende de su sistema operativo host). Estas carpetas contienen el proyecto generado y los archivos fuente.
Después de ejecutar el comando, podrá encontrar los proyectos de Hello World en gen/linux_x86_64/prj/hello_world
. Por ejemplo, hello_world/keil
contendrá el proyecto Keil.
ejecutar las pruebas
Para construir la biblioteca y ejecutar todas sus pruebas unitarias, use el siguiente comando:
make -f tensorflow/lite/micro/tools/make/Makefile test
Para ejecutar una prueba individual, use el siguiente comando, reemplazando <test_name>
con el nombre de la prueba:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Puede encontrar los nombres de las pruebas en los Makefiles del proyecto. Por ejemplo, examples/hello_world/Makefile.inc
especifica los nombres de las pruebas para el ejemplo Hello World .
Construir binarios
Para crear un binario ejecutable para un proyecto determinado (como una aplicación de ejemplo), utilice el siguiente comando, reemplazando <project_name>
con el proyecto que desea crear:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Por ejemplo, el siguiente comando creará un binario para la aplicación Hello World :
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
De forma predeterminada, el proyecto se compilará para el sistema operativo host. Para especificar una arquitectura de destino diferente, utilice TARGET=
y TARGET_ARCH=
. El siguiente ejemplo muestra cómo construir el ejemplo Hello World para un cortex-m0 genérico:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Cuando se especifica un destino, se utilizarán todos los archivos fuente específicos del destino disponibles en lugar del código original. Por ejemplo, el subdirectorio examples/hello_world/cortex_m_generic
contiene implementaciones SparkFun Edge de los archivos constants.cc
y output_handler.cc
, que se utilizarán cuando se especifique el objetivo cortex_m_generic
.
Puede encontrar los nombres de los proyectos en los Makefiles del proyecto. Por ejemplo, examples/hello_world/Makefile.inc
especifica los nombres binarios para el ejemplo Hello World .
Núcleos optimizados
Los núcleos de referencia en la raíz de tensorflow/lite/micro/kernels
se implementan en C/C++ puro y no incluyen optimizaciones de hardware específicas de la plataforma.
Las versiones optimizadas de los kernels se proporcionan en subdirectorios. Por ejemplo, kernels/cmsis-nn
contiene varios kernels optimizados que utilizan la biblioteca CMSIS-NN de Arm.
Para generar proyectos usando kernels optimizados, use el siguiente comando, reemplazando <subdirectory_name>
con el nombre del subdirectorio que contiene las optimizaciones:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Puede agregar sus propias optimizaciones creando una nueva subcarpeta para ellas. Alentamos las solicitudes de extracción para nuevas implementaciones optimizadas.
Generar la biblioteca Arduino
Si necesita generar una nueva compilación de la biblioteca, puede ejecutar el siguiente script desde el 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
.
Puerto a nuevos dispositivos
Puede encontrar orientación sobre cómo migrar TensorFlow Lite para microcontroladores a nuevas plataformas y dispositivos en micro/docs/new_platform_support.md
.