Crea TensorFlow Lite per schede ARM

Questa pagina descrive come creare le librerie TensorFlow Lite per i computer basati su ARM.

TensorFlow Lite supporta due sistemi di build e le funzionalità supportate da ogni sistema di build non sono identiche. Controlla la tabella seguente per scegliere un sistema di build appropriato.

Funzionalità Bazel CMake
Toolchain predefinite armhf, aarch64 armel, armhf, aarch64
Toolchain personalizzate più difficili da usare facile da usare
Seleziona operazioni TF supportata not_supported
Delegato GPU disponibile solo per Android su qualsiasi piattaforma che supporti OpenCL
XNNPack supportata supportata
Ruota Python supportata supportata
API C supportata supportato
API C++ supportata per i progetti Bazel supportata per progetti CMake

Cross-compilazione per ARM con CMake

Se hai un progetto CMake o se vuoi usare una toolchain personalizzata, è preferibile usare CMake per la compilazione incrociata. A questo scopo, è disponibile una pagina Cross Compilation TensorFlow Lite with CMake disponibile.

Cross-compilazione per ARM con Bazel

Se hai un progetto Bazel o se vuoi usare operazioni TF, ti consigliamo di usare il sistema di build Bazel. Utilizzerai le Toolchain ARM GCC 8.3 integrate con Bazel per creare una libreria condivisa ARM32/64.

Architettura di destinazione Configurazione Bazel Dispositivi compatibili
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 con sistema operativo Raspberry Pi a 32 bit
AArch64 (ARM64) --config=elinux_aarch64 Corallo, RPI4 con Ubuntu a 64 bit

Le seguenti istruzioni sono state testate su Ubuntu 16.04.3 a 64 bit (AMD64) e TensorFlow Developer Docker Image tensorflow/tensorflow:devel.

Per eseguire la compilazione incrociata di TensorFlow Lite con Bazel:

Passaggio 1. Installa Bazel

Bazel è il sistema di build principale di TensorFlow. Installa la versione più recente del sistema di build Bazel.

Passaggio 2. Clona il repository TensorFlow

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

Passaggio 3. Crea programma binario ARM

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

Puoi trovare una libreria condivisa in: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Per i dettagli, consulta la pagina API TensorFlow Lite C.

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

Puoi trovare una libreria condivisa in: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Attualmente, non esiste un modo semplice per estrarre tutti i file di intestazione necessari, quindi devi includere tutti i file di intestazione in tensorflow/lite/ dal repository TensorFlow. Inoltre, saranno necessari i file di intestazione di FlatBuffers e Abseil.

E così via

Puoi anche creare altri obiettivi Bazel con la toolchain. Ecco alcuni target utili.

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