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