Créer TensorFlow Lite pour les cartes ARM

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

TensorFlow Lite prend en charge deux systèmes de build et les fonctionnalités prises en charge de chaque système de build ne sont pas identiques. Consultez le tableau suivant pour choisir un système de construction approprié.

Fonctionnalité Bazel CMake
Chaînes d'outils prédéfinies armhf, aarch64 armel, armhf, aarch64
Chaînes d'outils personnalisées plus difficile à utiliser facile à utiliser
Sélectionnez les opérations TF prise en charge non supporté
Délégué GPU uniquement disponible pour Android toute plate-forme prenant en charge OpenCL
XNNPack prise en charge prise en charge
Roue Python prise en charge prise en charge
API C prise en charge prise en charge
API C++ soutenu pour les projets Bazel pris en charge pour les projets CMake

Compilation croisée pour ARM avec CMake

Si vous avez un projet CMake ou si vous souhaitez utiliser une chaîne d'outils personnalisée, vous feriez mieux d'utiliser CMake pour la compilation croisée. Il existe une page distincte de compilation croisée TensorFlow Lite avec CMake disponible pour cela.

Compilation croisée pour ARM avec Bazel

Si vous avez un projet Bazel ou si vous souhaitez utiliser des opérations TF, vous feriez mieux d'utiliser le système de construction Bazel. Vous utiliserez les chaînes d' outils intégrées ARM GCC 8.3 avec 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 système d'exploitation Raspberry Pi 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Corail, RPI4 avec Ubuntu 64 bits

Les instructions suivantes ont été testées sur Ubuntu 16.04.3 64 bits PC (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 build principal pour TensorFlow. Installez la dernière version du système de construction Bazel .

Étape 2. Cloner le référentiel TensorFlow

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

Étape 3. Construire le binaire ARM

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

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

Consultez la page de l' API TensorFlow Lite C pour plus de détails.

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

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

Actuellement, il n'existe 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/ à partir du référentiel TensorFlow. De plus, vous aurez besoin des fichiers d'en-tête de FlatBuffers et Abseil.

Etc

Vous pouvez également créer d'autres cibles Bazel avec la chaîne d'outils. Voici quelques cibles utiles.

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