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.
micro_error_reporter.h
genera información de depuración.micro_interpreter.h
contiene código para manejar y ejecutar modelos.
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