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

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

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

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

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

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

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

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

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

Следующие инструкции были протестированы на 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 .

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

библиотека С++
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/примеры/label_image:label_image