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 par 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
APIC++ pris en charge 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 TensorFlow Lite de compilation croisée distincte 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 ARM GCC 8.3 intégrées avec Bazel pour créer une bibliothèque partagée ARM32/64.

Architecture cible Configuration du Bazel Appareils compatibles
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 avec système d'exploitation Raspberry Pi 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 avec Ubuntu 64 bits

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

Pour compiler TensorFlow Lite avec Bazel, suivez les étapes :

Étape 1. Installez Bazel

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

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

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

Étape 3. Créer 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