Сборка TensorFlow Lite для плат ARM

На этой странице описано, как создать библиотеки TensorFlow Lite для компьютеров на базе ARM.

TensorFlow Lite поддерживает две системы сборки, и поддерживаемые функции каждой системы сборки не идентичны. Проверьте следующую таблицу, чтобы выбрать подходящую систему сборки.

Особенность Базель CMake
Предопределенные наборы инструментов армф, aarch64 армель, армф, aarch64
Пользовательские наборы инструментов труднее использовать легко использовать
Выберите операторов TF поддерживается не поддерживается
Делегат графического процессора доступно только для Android любая платформа, поддерживающая OpenCL
XNNPack поддерживается поддерживается
Колесо Питона поддерживается поддерживается
C API поддерживается поддерживается
С++ API поддерживается для проектов Bazel поддерживается для проектов CMake

Кросс-компиляция для ARM с помощью CMake

Если у вас есть проект CMake или вы хотите использовать собственную цепочку инструментов, вам лучше использовать CMake для кросс-компиляции. Для этого доступна отдельная страница кросс-компиляции TensorFlow Lite с CMake .

Кросс-компиляция для ARM с помощью Bazel

Если у вас есть проект Bazel или вы хотите использовать TF ops, вам лучше использовать систему сборки Bazel. Вы будете использовать интегрированные цепочки инструментов ARM GCC 8.3 с Bazel для создания общей библиотеки ARM32/64.

Целевая архитектура Базельская конфигурация Совместимые устройства
армвф (ARM32) --config=elinux_armhf RPI3, RPI4 с 32-битной ОС Raspberry Pi
ААрч64 (ARM64) --config=elinux_aarch64 Коралл, RPI4 с 64-разрядной версией Ubuntu

Следующие инструкции были протестированы на 64-разрядном ПК Ubuntu 16.04.3 (AMD64) и образе докера TensorFlow devel tensorflow/tensorflow:devel .

Чтобы выполнить кросс-компиляцию TensorFlow Lite с Bazel, выполните следующие действия:

Шаг 1. Установите Базель

Bazel — это основная система сборки TensorFlow. Установите последнюю версию системы сборки Bazel .

Шаг 2. Клонируйте репозиторий TensorFlow.

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

Шаг 3. Сборка двоичного файла ARM

библиотека C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Вы можете найти общую библиотеку: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so .

Подробности см. на странице API TensorFlow Lite C.

библиотека С++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Вы можете найти общую библиотеку: bazel-bin/tensorflow/lite/libtensorflowlite.so .

В настоящее время не существует простого способа извлечь все необходимые файлы заголовков, поэтому вам необходимо включить все файлы заголовков в tensorflow/lite/ из репозитория TensorFlow. Кроме того, вам понадобятся файлы заголовков из FlatBuffers и Abseil.

И т. д

Вы также можете создавать другие цели Bazel с помощью этой цепочки инструментов. Вот несколько полезных целей.

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