Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

Compila TensorFlow Lite con CMake

Esta página describe cómo construir y utilizar la biblioteca TensorFlow Lite con CMake herramienta.

Las siguientes instrucciones se han probado en Ubuntu 16.04.3 64-bit PC (AMD64), MacOS Catalina (x86_64), imagen de Windows 10 y TensorFlow devel acoplable tensorflow / tensorflow: devel .

Paso 1. Instale la herramienta CMake

Requiere CMake 3.16 o superior. En Ubuntu, simplemente puede ejecutar el siguiente comando.

sudo apt-get install cmake

O puede seguir la guía de instalación oficial cmake

Paso 2. Clonar el repositorio de TensorFlow

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

Paso 3. Cree el directorio de compilación de CMake

mkdir tflite_build
cd tflite_build

Paso 4. Ejecute la herramienta CMake con configuraciones

Versión de lanzamiento

Genera un binario de lanzamiento optimizado por defecto. Si desea construir para su estación de trabajo, simplemente ejecute el siguiente comando.

cmake ../tensorflow_src/tensorflow/lite

Compilación de depuración

Si usted necesita para producir una versión de depuración que tiene información de símbolos, es necesario proporcionar -DCMAKE_BUILD_TYPE=Debug opción.

cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug

Compilar con pruebas unitarias del kernel

Para poder ejecutar pruebas del kernel, debe proporcionar el indicador '-DTFLITE_KERNEL_TEST = on'. Los detalles específicos de la compilación cruzada de pruebas unitarias se pueden encontrar en la siguiente subsección.

cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on

Compilación cruzada

Puede utilizar CMake para crear binarios para arquitecturas de destino ARM64 o Android.

Para cruzar a compilar el TF Lite, es decir, debe proporcionar la ruta de acceso al SDK (por ejemplo ARM64 SDK o NDK en el caso de Android) con -DCMAKE_TOOLCHAIN_FILE bandera.

cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Detalles de la compilación cruzada de Android

Para Android compilación cruzada, es necesario instalar Android NDK y proporcionar la ruta NDK con -DCMAKE_TOOLCHAIN_FILE bandera mencionó anteriormente. También es necesario ABI conjunto blanco con -DANDROID_ABI bandera.

cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Características específicas de la compilación cruzada de pruebas de kernel (unidad)

La compilación cruzada de las pruebas unitarias requiere un compilador flatc para la arquitectura del host. Para este propósito, hay un CMakeLists ubicadas en tensorflow/lite/tools/cmake/native_tools/flatbuffers para construir el compilador flatc con CMake por adelantado en un directorio de construcción separada usando la cadena de herramientas de acogida.

mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .

También es posible instalar el flatc a una ubicación de instalación personalizada (por ejemplo en un directorio que contiene otras herramientas integradas de forma nativa en lugar del directorio de construcción CMake):

cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .

Para la TF-Lite propia cruz compilación, adicional parámetro -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> apuntando al directorio que contiene las necesidades binarios flatc nativas que se proporciona junto con los -DTFLITE_KERNEL_TEST=on bandera mencionados anteriormente.

cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/

Delegado de GPU OpenCL

Si el equipo de destino tiene soporte OpenCL, puede utilizar la GPU delegado que puede aprovechar su potencia de la GPU.

Para configurar la compatibilidad con delegados de GPU de OpenCL:

cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON

Paso 5. Compila TensorFlow Lite

En el directorio tflite_build,

cmake --build . -j

Paso 6. Cree la herramienta de referencia TensorFlow Lite y el ejemplo de imagen de etiqueta (opcional)

En el directorio tflite_build,

cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image

Opciones disponibles para compilar TensorFlow Lite

Aquí está la lista de opciones disponibles. Puede anular con -D<option_name>=[ON|OFF] . Por ejemplo, -DTFLITE_ENABLE_XNNPACK=OFF para desactivar XNNPACK que está activado por defecto.

Nombre de la opción Característica Androide Linux Mac OS Ventanas
TFLITE_ENABLE_RUY Habilitar la biblioteca de multiplicación de matrices RUY SOBRE APAGADO APAGADO APAGADO
TFLITE_ENABLE_NNAPI Habilitar delegado NNAPI SOBRE APAGADO N / A N / A
TFLITE_ENABLE_GPU Habilitar delegado de GPU APAGADO APAGADO N / A N / A
TFLITE_ENABLE_XNNPACK Habilitar delegado XNNPACK SOBRE SOBRE SOBRE SOBRE
TFLITE_ENABLE_MMAP Habilitar MMAP SOBRE SOBRE SOBRE N / A

Cree un proyecto de CMake que use TensorFlow Lite

Aquí está el CMakeLists.txt de TFLite ejemplo mínimo .

Es necesario tener add_subdirectory () para el directorio TensorFlow Lite y enlace tensorflow-lite con target_link_libraries ().

cmake_minimum_required(VERSION 3.16)
project(minimal C CXX)

set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
  "Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
  get_filename_component(TENSORFLOW_SOURCE_DIR
    "${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()

add_subdirectory(
  "${TENSORFLOW_SOURCE_DIR}/tensorflow/lite"
  "${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)

add_executable(minimal minimal.cc)
target_link_libraries(minimal tensorflow-lite)

Compilar la biblioteca C de TensorFlow Lite

Si usted quiere construir TensorFlow Lite biblioteca compartida de la API de C , seguimiento paso 1 al paso 3 en primer lugar. Después de eso, ejecute los siguientes comandos.

cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j

Este comando genera la siguiente biblioteca compartida en el directorio actual.

Plataforma Nombre de la biblioteca
Linux libtensorflowlite_c.so
Mac OS libtensorflowlite_c.dylib
Ventanas tensorflowlite_c.dll