Compila con TensorFlow Lite para placas ARM

En esta página, se describe cómo compilar las bibliotecas de TensorFlow Lite para computadoras basadas en ARM.

TensorFlow Lite admite dos sistemas de compilación, y las funciones compatibles de cada uno de ellos no son idénticas. Consulta la siguiente tabla para elegir un sistema de compilación adecuado.

Función Bazel CMake
Cadenas de herramientas predefinidas armhf, aarch64 armel, armhf, aarch64
Cadenas de herramientas personalizadas más difíciles de usar fácil de usar
Selecciona operaciones de TF compatible not supported
Delegado de GPU solo disponible para Android cualquier plataforma que admita OpenCL,
XNNPack compatible compatible
Python Wheel compatible compatible
API de C compatible admitido
API de C++ compatible con proyectos de Bazel compatible con proyectos de CMake

Compilación cruzada para ARM con CMake

Si tienes un proyecto de CMake o si quieres usar una cadena de herramientas personalizada, te recomendamos que lo hagas para la compilación cruzada. Hay una página separada sobre compilación cruzada de TensorFlow Lite con CMake disponible para esto.

Compilación cruzada para ARM con Bazel

Si tienes un proyecto de Bazel o si deseas usar operaciones de TF, es mejor que utilices el sistema de compilación de Bazel. Usarás las cadenas de herramientas integradas de ARM GCC 8.3 con Bazel para compilar una biblioteca compartida de ARM32/64.

Arquitectura de destino Configuración de Bazel Dispositivos compatibles
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 con 32 bits Raspberry Pi OS
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 con Ubuntu de 64 bits

Las siguientes instrucciones se probaron en una PC de 64 bits de Ubuntu 16.04.3 (AMD64) y en la imagen de Docker de desarrollo de TensorFlow tensorflow/tensorflow:devel.

Sigue estos pasos para realizar una compilación cruzada de TensorFlow Lite con Bazel:

Paso 1: Instala Bazel

Bazel es el sistema de compilación principal para TensorFlow. Instala la versión más reciente del sistema de compilación de Bazel.

Paso 2. Clona el repositorio de TensorFlow

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

Paso 3: Compila objetos binarios de ARM

Biblioteca C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Las bibliotecas compartidas se encuentran en bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Consulta la página API de TensorFlow Lite para C para obtener más detalles.

Biblioteca C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Las bibliotecas compartidas se encuentran en bazel-bin/tensorflow/lite/libtensorflowlite.so.

En la actualidad, no hay una manera directa de extraer todos los archivos de encabezados necesarios, por lo que debes incluir todos los archivos de encabezado en tensorflow/lite/ desde el repositorio de TensorFlow. Además, necesitarás archivos de encabezado de FlatBuffers y Abseil.

Etcétera

También puedes compilar otros destinos de Bazel con la cadena de herramientas. Estos son algunos objetivos útiles.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image