Репозиторий TensorFlow содержит набор примеров, в том числе образцы мобильных приложений для Android и iOS. В этой статье сравнивается классификатор изображений TensorFlow на Android, Android Things и iOS.

1 - Android

Как и следовало ожидать от проекта с открытым исходным кодом, разработанного Google, TensorFlow в настоящее время предлагает больше примеров приложений для Android, чем для iOS. README объясняет их все, но сегодня мы просто рассмотрим классификатор изображений (приложение, показанное слева).

Вот демонстрационное видео, как это работает:

Он может только классифицировать предметы, по которым был обучен (как объясняется здесь), и в целом выполняет свою работу хорошо.

Совет от профессионалов: вы можете нажать аппаратную кнопку уменьшения громкости, чтобы увидеть диагностическую информацию на экране следующим образом:

На изображении выше вы можете увидеть:

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

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

Представление

~ 200–300 мс на вывод на Nexus 5 2015 года.

~ 100–400 мс на вывод на Samsung S8 +.

Размер

Размер приложения 99 МБ (включает все четыре примера приложений):

  • Начальная модель = 53 МБ.
  • Библиотеки = от 11 МБ до 17 МБ на архитектуру.

Предпосылки

  • Android Studio.

Для тестирования на реальном устройстве:

Строительство

  • Откройте Android Studio.
  • Нажмите на кнопку воспроизведения.

Если вы не хотите создавать пример приложения, у вас есть два варианта:

2 - Android Вещи

В дополнение к образцам приложений для Android и iOS в папке примеров TensorFlow есть также образец классификатора изображений Android Things, который поставляется с превосходной Кодовой таблицей классификатора изображений Android Things, которая проведет вас через все этапы.

Если у вас есть аппаратный экран, вы сможете увидеть на нем фотографии и классификации (как указано выше). Если у вас нет аппаратного экрана, вы можете просматривать журналы в Logcat. Вы увидите много шумных журналов, но нужно искать ImageClassifierActivity журнал:

...
01-01 00:01:12.596 714-756/com.example.androidthings.imageclassifier D/ImageClassifierActivity: Got the following results from Tensorflow: [[578] remote control (91.3%)]
...

Я попытался сфотографировать несколько разных объектов с переменным успехом:

  • Пульт дистанционного управления, экран ноутбука и бутылка с водой работали очень хорошо.
  • Плата разработчика (то есть аппаратное селфи) была классифицирована как holster или switch.
  • Фотографировать людей не получалось. По-видимому, это связано с тем, что ранние версии модели классификатора изображений Inception не были обучены на изображениях людей, поэтому я предполагаю, что на данный момент это «работает так, как задумано». :-)

Представление

~ 2000–5000 мс на вывод на плате Pico.

Размер

Размер приложения 69 МБ:

  • Начальная модель = 53 МБ.
  • Библиотеки = 11 МБ на архитектуру (armv7 и arm64).

Предпосылки

Подробные инструкции для необходимого оборудования и шаги по его настройке можно найти в Кодовой таблице Android Things Image Classifier. Я только что перечислил основные моменты здесь.

  • Аппаратное обеспечение (плата разработчика, камера, Rainbow HAT, кабель USB C). Экран не является обязательным.
  • Образ ОС для оборудования.
  • Android Studio 3.0+.

В моем случае я использовал доску разработчика Pico Pro.

Строительство

  • Подключите все:

  • Прошить образ ОС.
  • Нажмите play в Android Studio.
  • Перезагрузите плату (необходимо для разрешения камеры).
  • Снова нажмите play в Android Studio.

3 - iOS

В репозитории TensorFlow есть три примера приложений для iOS.

Если у вас нет доступа к настоящему устройству iOS, вы сможете создавать и запускать только проекты simple и benchmark.

Проект simple загружает одно изображение Грейс Хоппер и классифицирует его, что дает 51% уверенности в том, что он видит «военную форму», и 10% уверенности, что он видит «миномет».

Проект benchmark такой же, за исключением того, что он также распечатывает информацию профилирования.

Проект camera в основном такой же, как приложение TF Classify для Android. Он обеспечивает сверхбыструю классификацию изображений в реальном времени с дополнительной возможностью заморозить их:

Представление

~ 50 мс на вывод на iPhone 7.

Размер

Размер приложения 98 МБ:

  • Начальная модель = 53 МБ
  • Библиотеки = 11 МБ на архитектуру (armv7 и arm64)

Предпосылки

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

  • Xcode 7.3+.
  • Установите CocoaPods (pod).

Для тестирования реальных устройств:

  • Учетная запись разработчика Apple - 99 долларов в год.
  • Настройте несколько сертификатов подписи и профилей обеспечения.
  • Предоставьте свои тестовые устройства Apple.

Примечание. Если вам интересно, почему вы не можете просто загрузить демонстрационное приложение, это потому, что в Apple App Store в настоящее время не разрешены демонстрационные / образцы приложений.

Строительство

README предоставляет все подробные шаги, но вкратце:

  • Скачать модель, запустить pod install, качает ~ 800MB
  • Откройте файл .xcworkspace (.xcodeproj выдает ошибки компоновщика)
  • нажмите на кнопку воспроизведения

Для тестирования реальных устройств:

  • Выберите свою личность для подписи в Info.plist

Заключение

Это был краткий обзор некоторых классификаторов изображений TensorFlow, доступных для Android, Android Things и iOS. Чтобы ознакомиться с полным списком и объяснением соответствующих предложений, посетите:

Если вам понравилась эта статья, вам может понравиться видео с моим докладом Прикладной TensorFlow в приложениях для Android.

ЗАЯВЛЕНИЕ О РАСКРЫТИИ ИНФОРМАЦИИ: это мнение автора. Если в этом посте не указано иное, Capital One не связан и не одобрен ни одной из упомянутых компаний. Все используемые или отображаемые товарные знаки и другая интеллектуальная собственность являются собственностью соответствующих владельцев. Эта статья принадлежит © 2017 Capital One.