Периферийные устройства, такие как смартфоны, со временем стали более мощными и позволили все чаще использовать машинное обучение на устройствах.
Что такое 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 - это современная модель глубокого обучения для семантической сегментации изображений, цель которой - присвоить семантические метки (например, человек, собака, кошка и т. д.) каждому пикселю в входное изображение.
Подробнее