>

Пакеты Conan>

tensorflow-lite

tensorflow-lite

Облегчённое решение TensorFlow для выполнения инференса моделей машинного обучения на мобильных и встраиваемых устройствах. Библиотека обеспечивает низкую задержку, малый размер бинарного файла и поддержку аппаратного ускорения. Она оптимизирована для работы на устройствах с ограниченными ресурсами.

Особенности

  • малый размер: от 200 КБ до 300 КБ в зависимости от набора операторов;
  • поддержка квантованных моделей (8-бит и 16-бит) для повышения производительности и уменьшения размера;
  • формат моделей на основе FlatBuffers для эффективной загрузки без парсинга.

Основные компоненты

TensorFlow Lite предоставляет набор инструментов и библиотек для преобразования моделей, выполнения инференса и аппаратного ускорения (подробнее с документацией можно ознакомиться здесь).

Модели и конвертер

Основой работы с TensorFlow Lite является формат моделей .tflite, который создаётся из стандартных моделей TensorFlow с помощью конвертера. Этот формат использует FlatBuffers, что обеспечивает быструю загрузку и минимальное потребление памяти.

Основные функции и инструменты:

  • tf.lite.TFLiteConverter.from_saved_model() — создание конвертера из SavedModel;
  • tf.lite.TFLiteConverter.from_keras_model() — конвертация модели Keras;
  • tf.lite.TFLiteConverter.from_concrete_functions() — конвертация из Concrete Functions;
  • optimizations = [tf.lite.Optimize.DEFAULT] — применение стандартных оптимизаций (квантование);
  • representative_dataset() — предоставление репрезентативной выборки для калибровки при квантовании;
  • target_spec.supported_types = [tf.float16] — указание целевых типов данных;
  • convert() — непосредственно преобразование в формат .tflite.

Интерпретатор

Интерпретатор — это ядро библиотеки, выполняющее модель на устройстве. Он предоставляет API для загрузки модели, передачи входных данных и получения результатов. В зависимости от платформы доступны различные реализации (C++, Java, Python).

Основные методы C++ интерпретатора:

  • InterpreterBuilder() — построитель интерпретатора из модели;
  • BuildFromFile() / BuildFromBuffer() — загрузка модели из файла или буфера;
  • AllocateTensors() — выделение памяти для тензоров;
  • Invoke() — синхронный запуск инференса;
  • ResizeInputTensor(index, dims) — изменение размерности входного тензора (обязательно после вызова AllocateTensors() при изменении);
  • SetNumThreads(num) — установка количества потоков для выполнения;
  • SetAllowFp16PrecisionForFp32(allow) — разрешение использования fp16 для ускорения на совместимом оборудовании.

Делегаты

Делегаты позволяют перенести часть вычислений на специализированное аппаратное обеспечение, что значительно ускоряет инференс и снижает энергопотребление. Каждый делегат имеет свой API для инициализации и применения.

Основные делегаты и способы их применения:

  • GPU delegate (Android/iOS)TfLiteGpuDelegateV2Create() / Interpreter::ModifyGraphWithDelegate();
  • NNAPI delegateNnApiDelegate() / Interpreter::ModifyGraphWithDelegate() с параметрами выполнения (например, allow_fp16, execution_preference);
  • Core ML delegateTfLiteCoreMlDelegateCreate() / Interpreter::ModifyGraphWithDelegate();
  • XNNPACK delegate — включается через опции интерпретатора (флаг TfLiteXNNPackDelegateCreate() или через Interpreter::SetNumThreads());
  • Hexagon delegateTfLiteHexagonDelegateCreate() с указанием библиотеки DSP.

Все делегаты могут быть добавлены как до выделения тензоров, так и после (некоторые требуют пересоздания интерпретатора).

Поддержка типов данных и квантование

TensorFlow Lite оптимизирован для работы с квантованными моделями, что позволяет сократить размер модели и ускорить вычисления на целочисленных ядрах.

Основные типы данных и методы работы с ними:

  • kTfLiteFloat32, kTfLiteFloat16 — числа с плавающей точкой;
  • kTfLiteUInt8, kTfLiteInt8 — 8-битные целые (квантованные);
  • kTfLiteInt16 — 16-битное квантование;
  • kTfLiteBool — булевы тензоры;
  • kTfLiteString — строковые тензоры;
  • kTfLiteInt64, kTfLiteInt32 — дополнительные целые типы.

C API для микроконтроллеров

Для устройств с крайне ограниченными ресурсами (MCU) существует отдельная версия TensorFlow Lite для микроконтроллеров. Она предоставляет минималистичный C API.

Основные функции TFLM:

  • tflite::GetModel() — получение структуры модели из массива байт;
  • tflite::AllOpsResolver() — создание резолвера операций;
  • tflite::MicroInterpreter() — конструктор интерпретатора для MCU;
  • tflite::MicroInterpreter::AllocateTensors() — выделение памяти в арене;
  • tflite::MicroInterpreter::input() / output() — доступ к тензорам;
  • tflite::MicroInterpreter::Invoke() — запуск инференса.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "tensorflow-lite/2.16.2@aurora",
    )    

Процесс локальной сборки описан в документации.

tensorflow-lite

Лицензия
Apache-2.0
Версия
Домашняя страница
Скачать
armv7
3.99 Mb
MD5: 571184fcc3c2d359bf3c4351576fc564
Updated: 03.09.2025, 21:59:17
armv8
4.25 Mb
MD5: 8f094c0b72673a908a39ff1e549ecedd
Updated: 03.09.2025, 21:58:45
x86_64
4.35 Mb
MD5: 6a1d2cc5ea4ebb2a74249714bc72ee79
Updated: 03.09.2025, 22:03:45
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.