Периферийные устройства, такие как смартфоны, со временем стали более мощными и позволили все чаще использовать машинное обучение на устройствах.

Что такое Tensorflow?

TensorFlow - это платформа для построения и обучения нейронных сетей, которая позволяет обнаруживать и расшифровывать закономерности и корреляции, аналогичные обучению и рассуждениям, используемым людьми.
Гибкая архитектура TensorFlow позволяет разработчикам развертывать вычисления в один или несколько процессоров или графических процессоров на настольных компьютерах, серверах или мобильных устройствах с одним API. Первоначально он был разработан исследователями и инженерами, работающими в Google Brain Team, в исследовательском отделе Machine Intelligence, с целью проведения машинного обучения и глубоких исследований нейронных сетей.

Tensorflow lite

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

В чем преимущества «Lite» версии?

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

Как это работает?

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

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

3- Выполнение вывода с моделью: Вывод - это процесс обработки данных через модель для получения распознавания. Требуются модель, интерпретатор и входные данные.

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

Если вы хотите узнать больше о возможностях TensorFlow lite и приступить к реализации собственных моделей, рекомендую посетить этот пост.

Mobilenet

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

Об эффективности мобильной сети

Архитектура MobileNet основана на разделении традиционных сверток на 2 типа слоев: первый сверточный слой «по глубине» и сверточный слой 1x1 «точечно». Это разделение позволяет снизить вычислительные затраты и размер модели.
Стандартные сверточные слои имеют вычислительные затраты в 8–9 раз больше, чем вычислительные затраты как на глубинный, так и на точечный слои. Кроме того, добавлены некоторые параметры, позволяющие уменьшить размер и скорость нейронной сети.

Обучение мобильным сетям

Они обучаются на наборе данных ImageNet, который содержит изображения из 1000 классов, подробно описанных в этой сути.

Для получения дополнительной информации посетите эту газету.

Мобильная сеть в режиме флаттера для распознавания изображений в реальном времени

В этом проекте я собираюсь реализовать модель Mobilenet, используя tflite library, плагин Flutter для доступа к TensorFlow Lite API.

Установка

В своем pubspec.yml добавьте:

Android: в android / app / build.gradle добавьте следующий параметр в блок android.

iOS: Решения для устранения ошибок в iOS

  • «векторный» файл не найден:
    Откройте ios / Runner.xcworkspace в Xcode, нажмите Runner ›Tagets› Runner ›Build Settings, выполните поиск Compile Sources As, измените значение на Objective-C ++
  • Файл 'tensorflow / lite / kernels / register.h' не найден:
    Плагин предполагает, что файлы заголовков tensorflow расположены по пути tensorflow/lite/kernels.
    Однако для ранних версий tensorflow путь заголовка - tensorflow/contrib/lite/kernels. ИспользуйтеCONTRIB_PATH, чтобы переключить путь. Раскомментируйте //#define CONTRIB_PATHот здесь.

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

Шаг 1

Мы импортируем модель в наше приложение, загрузив файлы labels.txt и mobilenet_v1_1.0_224_quant.tflite отсюда, затем создадим папку с ресурсами и поместим в нее файл метки и модели.

Шаг 2

По завершении шага 1 добавьте в pubspec.yaml:

Затем запустим flutter pub get в терминале.

Шаг 3:

Сделайте простое приложение, которое использует камеру. Вы можете использовать документацию по флаттеру в качестве руководства по следующей ссылке.

Шаг 4:

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

Шаг 5:

Мы используем контроллер камеры для захвата каждого кадра, затем мы используем их для распознавания и вуаля! Модель дает нам результат распознавания в каждом кадре.

Соображения:

1- Результатом является список, упорядоченный по уверенности, со следующей структурой:

2- При его реализации я решил оставить задержку в 1 секунду между каждым распознаванием, чтобы улучшить производительность.

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

Вы можете посетить этот репозиторий на github, чтобы увидеть полную реализацию.

Другие модели

MobileNet SSD: также известное как Модель Single Shot MultiBox Detector используется для обнаружения нескольких объектов на одном изображении, придавая каждому из них достоверность.
Подробнее

Tiny YOLOv2: у него другой подход. Мы применяем единственную нейронную сеть к полному изображению. Эта сеть делит изображение на области и прогнозирует ограничивающие рамки и вероятности для каждой области. Эти ограничивающие прямоугольники взвешиваются по прогнозируемым вероятностям.
Архитектура Tiny-YOLO примерно на 442% быстрее, чем ее более крупные братья, и обеспечивает более 244 кадров в секунду на одном графическом процессоре.
Небольшой размер модели (‹50 МБ) и быстрая скорость вывода делают детектор объектов Tiny-YOLO естественным образом подходящим для встроенных устройств компьютерного зрения / глубокого обучения.
Подробнее

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

Deeplab: DeepLab - это современная модель глубокого обучения для семантической сегментации изображений, цель которой - присвоить семантические метки (например, человек, собака, кошка и т. д.) каждому пикселю в входное изображение.
Подробнее