Файл tflite что это

Обновлено: 05.07.2024

Библиотека машинного обучения TensorFlow уже работает на огромном количестве платформ: от стоек серверов до крошечных устройств Интернета вещей. Но так как внедрение моделей машинного обучения за последние несколько лет растёт экспоненциально, уже требуется их развёртывание даже на мобильных и встраиваемых устройствах. Именно поэтому Google представила новую версию библиотеки, TensorFlow Lite.

Преимущества Lite-версии

Выход новой версии библиотеки, специально разработанной для обучения на небольших устройствах, был анонсирован на конференции Google I/O 2017. Среди основных преимуществ Lite-версии стоит выделить:

  • Легковесность: обсепечивает быстрые инициализацию и запуск моделей машинного обучения небольшого размера на мобильных устройствах;
  • Кроссплатформенность: обучение моделей возможно на большом количестве мобильных платформ, включая Android и iOS;
  • Скорость: библиотека оптимизирована для использования на мобильных устройствах, поддерживает аппаратное ускорение.

Поддержка большинством мобильных устройств

В настоящее время всё больше мобильных устройств используют специально разработанные аппаратные средства для более эффективной обработки рабочих нагрузок машинного обучения. TensorFlow Lite поддерживает нейросетевой API (Android Neural Networks API) для ускорения машинного обучения на мобильных устройствах.

TensorFlow Lite гарантирует, что ваши модели машинного обучения смогут быстро работать на большом наборе устройств. Это достигается за счёт функции возврата к использованию ЦП для обучения, когда аппаратные средства ускорителей недоступны.

Архитектура

Диаграмма представляет полную архитектуру новой лёгкой версии библиотеки TensorFlow:

TensorFlow Lite

Рассмотрим каждый компонент отдельно:

  • TensorFlow Model: обученная модель TensorFlow, сохранённая на диске;
  • TensorFlow Lite Cpnverter: программа, конвертирующая модель в формат TensorFlow Lite;
  • TensorFlow Lite Model File: формат файла модели на основе FlatBuffers, оптимизированный для максимальной скорости и минимального размера.

После промежуточных шагов с переводом модели в нужный формат файл с разрешением .tflite разворачивается в мобильном приложении для одной из ОС:

  • Java API: оболочка вокруг C++ API для ОС Android;
  • C++ API: загружает файл модели TensorFlow Lite и вызывает интерпретатор. Эта же библиотека доступна как на Android, так и на iOS;
  • Интерпретатор: запускает модель при помощи набора операторов. Интерпретатор поддерживает выборочную загрузку операторов: без них его вес всего 70 КБ и 300 КБ со всеми загруженными операторами. Это значительное сокращение от 1,5 Мб, требуемых TensorFlow Mobile;
  • На некоторых устройствах интерпретатор будет использовать Android Neural Networks API для аппаратного ускорения.

Поддерживаемые модели обучения

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

Шаг вперёд

По словам разработчиков, TensorFlow Lite является эволюцией их предыдущего проекта для мобильных устройств, TensorFlow Mobile. Именно TensorFlow Lite будет рекомендуемым решением для использования библиотеки на мобильных и встраиваемых устройствах. Однако, Mobile-версия останется для поддержки уже созданных приложений.

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


Представьте ситуацию: впереди выходные, а у вас есть достаточно нагруженная малинка и вы — ради эксперимента — хотите посмотреть, что ML умеет на мощностях RPi, но не хотите слишком перегружать машину, даже всей облегчённой версией TF. Что можно сделать? Мы уже писали о классификации мусора с помощью RPi, а сегодня, к старту курса о глубоком и машинном обучении, делимся переводом руководства, автор которого приводит простейший пример работы с необходимым минимумом TFLite. Выводы делаются моделью менее чем за секунду, при этом не нужно устанавливать весь пакет TensorFlow; используется только tflite_runtime, поддерживающий класс Interpreter.

Доступ к Raspberry Pi с компьютера

Есть несколько способов доступа к Raspberry Pi. Вне зависимости от способа цель — получить доступ к терминалу RPi для ввода команд, помогающих подготовить компьютер к работе с TFLite.

Можно работать с RPi как с обычным ПК, подключив его к монитору через порт HDMI, а также подсоединив мышь и клавиатуру. После успешного запуска RPi вы сможете получить доступ к его графическому интерфейсу и открыть терминал. К сожалению, этот метод может не сработать при покупке новой RPi: чтобы разрешить использование порта HDMI, нужно изменить некоторые настройки.

Доступ к RPi через специальный монитор и периферийные устройства обойдётся дорого, если у вас нет собственного ПК/ноутбука. Для управления RPi через свой ПК сначала нужно подключить порт Ethernet RPi к порту коммутатора. Коммутатор должен поддерживать протокол DHCP, чтобы IP-адрес для RPi присваивался автоматически.

Назначив IP, при помощи IP-сканера вы найдёте IP Ethernet-интерфейса RPi с подключённого через тот же коммутатор ПК, а имея IP-адрес RPi, с вашего ПК вы сможете открыть сеанс SSH, где получите доступ к терминалу RPi. Подробности читайте в этом учебном руководстве.

При таком доступе RPi нужно каждый раз подключать к коммутатору. Чтобы упростить работу, можно воспользоваться беспроводным интерфейсом. Подключив RPi к порту коммутатора и настроив его беспроводной интерфейс на беспроводную сеть, вы облегчите доступ к малинке в будущем. Эта сеть может быть создана со смартфона, он будет точкой доступа.

Возможно, после настройки сети коммутатор не понадобится. Всё, что нужно сделать, — подключить ПК к той же беспроводной сети. IP-сканер сообщит IP беспроводного интерфейса в RPi. После этого можно открыть сеанс SSH и достучаться до терминала одноплатника.

Независимо от метода доступа к RPi вы должны иметь возможность получить доступ к терминалу, как на рисунке ниже. На этом этапе можно подготовить TFLite командами терминала, их обсудим ниже.


Подготовка TFLite в RPi

Здесь предполагается, что у вас уже есть модель TensorFlow, преобразованная в модель TensorFlow Lite. Если это не так, есть множество моделей TensorFlow Lite, которые можно загрузить; воспользуемся Lite-версией MobileNet.

TensorFlow Lite — это часть TensorFlow, то есть установив библиотеку TensorFlow, вы установите и версию Lite. Перед установкой TensorFlow задумайтесь о необходимых проекту модулях. Здесь мы просто запускаем модель TFLite, чтобы классифицировать изображение, и ничего больше, поэтому не нужно устанавливать все модули TensorFlow.

Единственный класс TensorFlow, необходимый для прогнозирования в режиме TFLite — это Interpreter, доступ к нему можно получить так:

То есть вместо установки всего TensorFlow можно установить только этот класс, сэкономив пространство на RPi. Но как именно установить только этот класс?

Пакет tflite_runtime содержит только класс Interpreter. Доступ к нему можно получить по адресу tflite_runtime.interpreter.Interpreter. Чтобы установить tflite_runtime, просто скачайте подходящее версии Python wheel, например Python 3.5 или Python 3.7.

В моей RPi файл .whl расположен здесь:

Чтобы установить скачанный пакет, я запустил pip3 install. Обратите внимание: нужно использовать pip3: просто pip будет работать с Python 2.

Пакет успешно установлен

Пакет успешно установлен

Установив tflite_runtime, вы можете проверить, что всё работает правильно, импортировав класс Interpreter:

И вот результат:


Установка tflite_runtime не означает, что установлена вся TFLite. Доступен только класс Interpreter, который делает прогнозы на основе TFLite. Если нужны другие возможности TFLite, установите TensorFlow.

После установки tflite_runtime и подготовки RPi к прогнозированию переходим к следующему шагу.

Загрузка MobileNet

MobileNet для TFLite можно скачать здесь. Это сжатый файл, он содержит не только модель TFLite, но и метки классов, которые прогнозирует модель. Распакованный архив выглядит так:

У MobileNet две версии, от версии зависит разрешение входного изображения. Здесь воспользуемся первой версией, она принимает изображения с разрешением 224x224. Модель подвергается квантованию, то есть она уменьшается, снижается задержка прогнозов. Для двух изображений на RPi я создал новую папку TFLite_MobileNet.


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

Классификация одного изображения

Код загрузки модели TFLite и классификации приведён ниже. Пути к модели и файла меток классов содержатся в model_path и labels. Пути к модели для её загрузки передаются конструктору класса Interpreter. Загруженная модель возвращается в переменной interpreter.

После загрузки модели для выделения памяти под входные и выходные тензоры вызывается метод allocate_tensors(), затем, чтобы вернуть информацию о входном тензоре, вызывается get_input_details(). В возвращаемую информацию входят ширина и высота входного изображения. Для чего они?

Вспомните, что загруженная модель принимает изображения 224x224. Если подать изображение другого размера, мы получим ошибку. Зная ширину и высоту принимаемого моделью изображения, можно изменить размер входных данных так, чтобы модель могла работать с ними. Тестовое изображение считывается с помощью PIL, и возвращается изображение с подходящим модели разрешением.

Теперь с помощью функции classify_image(), реализация которой показана ниже, выполним классификацию. В ней функцией set_input_tensor() входной тензор модели устанавливается равным тензору тестового изображения.

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

Далее для запуска модели и передачи входных данных вызывается invoke(). Выходные данные — индекс класса и его вероятность.

Далее метки классов загружаются из текстового файла с помощью функции load_labels(), её реализация показана ниже. Она принимает путь к текстовому файлу и возвращает список с метками классов. Индекс класса, к которому отнесено изображение, используется для возврата соответствующей метки класса. Наконец, метка выводится на консоль.

Весь код приведён ниже.

Raspberry Pi — относительно недорогой компьютер, на котором уже сегодня можно запускать простые модели — ML идёт к тому, чтобы стать таким же естественным, как вода в вашем доме — и если вы не хотите оставаться в стороне от сферы ИИ, то можете обратить внимание на наш курс «Machine Learning и Deep Learning», а если предпочитаете полагаться не на машины, но на себя, то можете присмотреться к нашему флагманскому курсу о Data Science.


Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Что такое TensorFlow Lite?

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

В настоящее время он поддерживает C ++ API на Android и iOS и предоставляет Java Wrapper для разработчиков Android. Кроме того, на устройствах Android, которые его поддерживают, интерпретатор также может использовать API нейронной сети Android для аппаратного ускорения, в противном случае он будет выполняться на ЦП по умолчанию. В этой статье я остановлюсь на том, как использовать его в приложениях для Android.

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

Модель не может быть обучена на TensorFlow. Вам необходимо обучить модель на более производительной машине, затем преобразовать модель в формат .TFLITE и загрузить ее в мобильный интерпретатор.

image

TensorFlow Lite в настоящее время находится в предварительной версии для разработчиков, поэтому он может не поддерживать все операции в модели TensorFlow. Тем не менее, он по-прежнему может работать с обычными моделями классификации изображений (включая Inception и MobileNets). В этой статье вы увидите модель MobileNet, работающую на Android. Приложение получит данные камеры и использует обученную MobileNet для классификации предметного изображения на картинке.

Используйте MobileNet в TensorFlow Lite

Например, на этом изображении я направил камеру на свою любимую кофейную чашку, и вы можете видеть, что она в основном классифицируется как «чашка». Учитывая его форму, это легко понять! Что интересно, у него большая, широкая ручка, которая тоже похожа на чайник!

image

Как это работает? Он использует модель MobileNet, которая разработана и оптимизирована для различных сцен изображений на мобильных устройствах, включая обнаружение объектов, классификацию, обнаружение атрибутов лица и распознавание ориентиров.

image

Вы можете узнать больше о TensorFlow Lite из этого видео:

image

Создайте Android-приложение TensorFlow Lite

Чтобы создать приложение для Android, использующее TensorFlow Lite, первое, что вам нужно сделать, - это добавить в приложение библиотеку tensorflow-lite. Это можно сделать, добавив следующую строку в раздел зависимостей файла build.gradle:

После этого вы можете импортировать интерпретатор TensorFlow Lite. Интерпретатор загружает модель и предоставляет набор входных данных для ее запуска. Затем TensorFlow Lite выполнит модель и напишет на выходе, очень просто.

Чтобы использовать его, вам нужно создать экземпляр интерпретатора, а затем использовать MappedByteBuffer для его загрузки.

Затем, чтобы классифицировать изображение, вам нужно только вызвать метод run в Interpeter, передать ему данные изображения и массив меток, а остальное сделано:

Подробное обсуждение того, как получить изображение с камеры и подготовить его для tflite, выходит за рамки этой статьи, но полный пример этого есть на tenorflow github. Детализировав этот пример, вы можете увидеть, как он получает данные с камеры, подготавливает данные для классификации и обрабатывает выходные данные путем сопоставления модели взвешенного списка приоритетов вывода с массивом меток.

Вы можете узнать больше о создании приложений TensorFlow Lite для Android из этого видео:

image

Получите и запустите образец Android

Чтобы запустить этот пример, убедитесь, что у вас есть полный исходный код TensorFlow. Вы можете использовать команду:

После завершения вы можете открыть папку / tensorflow / contrib / lite / java / demo образца проекта TensorFlow в Android Studio:

image

image

Теперь вы можете запустить приложение.

Обратите внимание, что приложение может поддерживать как Inception, так и Quantized MobileNet. Последний используется по умолчанию, поэтому вам нужно убедиться, что модель существует, иначе приложение выйдет из строя! Код для захвата данных с камеры, преобразования их в байтовый буфер и загрузки в модель можно найти в файле ImageClassifier.java.

Ядро этой функции находится в методе classifyFrame () файла Camera2BasicFragment.java:

Здесь вы можете видеть, что растровое изображение загружено и масштабируется в соответствии с классификатором. Затем метод classifyFrame () вернет текст, содержащий список первых трех классов, соответствующих изображению, и их веса.

Существует несколько способов очистить систему Android от мусора и освободить таким образом память устройства. Это могут быть как встроенные сервисы, так и некоторые сторонние приложения для очистки. Но что делать, если ни один способ вам не помог и телефон все равно сигнализирует о нехватке памяти? В этом случае можно прибегнуть к ручной очистке и освободить таким образом до 20 Гб памяти смартфона.

Удаление папки Telegram

В 2021 году этот кроссплатформенный мессенджер по праву стал самым популярным приложением в мире, обогнав по числу скачиваний даже такого гиганта как Tik-Tok.

Но у Telegram есть одна небольшая проблема – вся просмотренная вами информация сохраняется во внутренней памяти телефона, тем самым засоряя систему.

Если вы являетесь активным пользователем Telegram, рекомендуем периодически очищать содержимое папки с приложением. Для этого достаточно перейти в любой файловый менеджер и полностью удалить папку Telegram. Не стоит переживать, с приложением после удаления ничего не случится. Система при следующем входе автоматически создаст папку Telegram заново.

Примечание: Если ваш файловый менеджер удаляет данные в корзину, то не забудьте затем очистить ее содержимое.

Многим пользователям, которые делают такую процедуру впервые после установки Telegram, удается очистить таким образом от 1 до 10 Гб памяти. Проверьте и убедитесь сами.

Удаление папки.Thumbnails

Следующий способ – удаление папки, которая содержится в корневом разделе DCIM (или Pictures) системы Android и содержит в себе все мини копии картинок и фотографий, которые встречаются вам при серфинге в интернете и в приложениях. Этот раздел также может занимать очень большой объем данных, если ранее вы еще не проводили подобную очистку.

Папка.Thumbnails довольно хитрая и скрыта от глаз пользователя в каталогах системы. Чтобы ее найти и удалить, необходимо сначала включить отображение скрытых папок в настройках файлового менеджера.

В некоторых случаях системный файловый менеджер также не дает увидеть эту папку. В этом случае можно попробовать установить стороннее приложение, например ES-проводник, а затем перейти в каталог DCIM (Pictures), включить отображение скрытых папок и удалить папку.Thumbnails.

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

Система Android устроена таким образом, что никогда не позволит создать два файла с одинаковым названием, поэтому папка.Thumbnails больше не сможет там появиться. Сделать это также можно с помощью ES-проводника.

Нажимаем на три точки в верхнем правом углу приложения → «+Создать» → Файл. Называем файл.Thumbnails (обязательно ставим точку вначале).

Готово! Теперь наш созданный файл не позволит системе Android создать папку.Thumbnails, а значит система больше не будет засоряться лишними миниатюрами.

Удаление папки Data

Еще одна папка, занимающая большое количество памяти в телефоне – папка Data, которая находится внутри каталога Android. Эта папка содержит кэш, а также некоторые настройки и служебную информацию о приложениях. Но каких-либо серьезных системных данных, влияющих на работу системы в целом, она не содержит. Поэтому ее также можно удалить, освободив до 10 Гб памяти.

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

Открываем ES проводник и переходим во внутренний каталог системы. Затем переходим в папку Android→Выделяем папку Data→ Нажимаем Удалить. Убираем галочку с пункта «Перенести в корзину» и нажимаем ОК. Нам удалось очистить таким образом почти 3 Гб внутренней памяти.

Заключение

В далеком 1981 году на пути становления IBM, Билл Гейтс произнес, ставшую сегодня забавным мемом, фразу: «В будущем 640 Кб будет достаточно для каждого». Из-за особенностей первых процессоров, никто не мог и представить, что когда-нибудь в компьютерах, а тем более в мобильных устройствах удастся разместить большее количество памяти, а главное, что кому-то может понадобиться такой объем информации.

Несмотря на то, что сегодня любой смартфон обладает памятью в десятки тысяч раз, превышающий этот объем, нехватка памяти до сих пор остается актуальной проблемой, особенно для бюджетных моделей смартфонов. Мы надеемся, что с помощью нашей инструкции вам удастся очистить ваше устройство и наконец решить данную проблему.

Читайте также: