Créer TensorFlow Lite pour les cartes ARM

Cette page explique comment créer les bibliothèques TensorFlow Lite pour les ordinateurs ARM.

TensorFlow Lite est compatible avec deux systèmes de compilation, et les fonctionnalités prises en charge par chaque système de compilation ne sont pas identiques. Consultez le tableau suivant pour choisir un système de compilation approprié.

Sélection Bazel CMake
Chaînes d'outils prédéfinies armhf, aarch64 armel, armhf, aarch64
Chaînes d'outils personnalisées plus difficile à utiliser Simple d'utilisation
Sélectionner des opérations TF pris en charge non pris en charge
Délégué de GPU disponible uniquement pour Android toute plate-forme compatible avec OpenCL
XNNPack pris en charge pris en charge
Roue Python pris en charge pris en charge
API C pris en charge compatible
API C++ pour les projets Bazel compatible avec les projets CMake

Compilation croisée pour ARM avec CMake

Si vous disposez d'un projet CMake ou si vous souhaitez utiliser une chaîne d'outils personnalisée, il est préférable d'utiliser CMake pour la compilation croisée. Une page distincte Compilation croisée TensorFlow Lite avec CMake est disponible à cet effet.

Compilation croisée pour ARM avec Bazel

Si vous avez un projet Bazel ou si vous souhaitez utiliser des opérations TF, il est préférable d'utiliser le système de compilation Bazel. Vous allez utiliser les chaînes d'outils ARM GCC 8.3 intégrées à Bazel pour créer une bibliothèque partagée ARM32/64.

Architecture cible Configuration Bazel Appareils compatibles
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 avec OS Raspberry Pi 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 avec Ubuntu 64 bits

Les instructions suivantes ont été testées sur les PC Ubuntu 16.04.3 64 bits (AMD64) et TensorFlow devel docker image tensorflow/tensorflow:devel.

Pour effectuer une compilation croisée de TensorFlow Lite avec Bazel, procédez comme suit:

Étape 1. Installer Bazel

Bazel est le système de compilation principal de TensorFlow. Installez la dernière version du système de compilation Bazel.

Étape 2 : Cloner le dépôt TensorFlow

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

Étape 3. Binaire ARM de compilation

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

Vous trouverez une bibliothèque partagée dans : bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Pour en savoir plus, consultez la page API TensorFlow Lite C.

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

Vous trouverez une bibliothèque partagée dans : bazel-bin/tensorflow/lite/libtensorflowlite.so.

Il n'existe actuellement aucun moyen simple d'extraire tous les fichiers d'en-tête nécessaires. Vous devez donc inclure tous les fichiers d'en-tête dans tensorflow/lite/ du dépôt TensorFlow. Vous aurez également besoin des fichiers d'en-tête de FlatBuffers et d'Abseil.

Etc.

Vous pouvez également créer d'autres cibles Bazel à l'aide de la chaîne d'outils. Voici quelques objectifs utiles.

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