Две недели назад на TensorFlow Dev Summit был анонсирован ряд интересных новых разработок для Android (сессионные записи). Они включали ускорение делегата графического процессора (в 2-7 раз быстрее по сравнению с процессором), расширенную документацию и новые лаборатории кода, демонстрирующие, как использовать модели TensorFlow Lite на Android. В этом посте освещаются некоторые из этих объявлений, а также резюмируются некоторые интересные разговоры, которые я провел с разработчиками.

Ускорение с помощью графического процессора делает машинное обучение на устройстве массовым

Заголовки машинного обучения часто фокусируются на последних достижениях в области новейших и самых мощных устройств. Что действительно важно для мобильных разработчиков, так это возможность обеспечить удобство работы пользователей на самых разных телефонах. Вот почему разработчики Android, с которыми я разговаривал, действительно воодушевлены тем, насколько новый экспериментальный делегат TensorFlow Lite GPU может ускорить логический вывод (запуск моделей машинного обучения) на устройствах с OpenGL ES 3.1, который был представлен как часть Android API Level 21 (Lollipop ).

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

При импорте интерпретатора модели TensorFlow используйте следующее:

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

Расширенная документация и новые образцы Android

Команда TensorFlow расширила свою документацию в рамках альфа-версии TensorFlow 2.0. Мне больше всего нравится новый раздел примеров TensorFlow Lite. Здесь вы найдете ряд примеров для Android (и iOS) для интеграции различных типов моделей, включая обнаружение объектов и распознавание речи. До того, как эти образцы существовали, такие задачи, как преобразование изображения (чтобы нарисовать результат анализа поверх изображения камеры), могли быть сложными для реализации. Теперь стало проще. Например, образец обнаружения объектов поставляется с кодом отслеживания и утилитой изображений для общих преобразований.

TensorFlow Lite, ML Kit и NNAPI

Google предоставляет широкий спектр продуктов для разработчиков, работающих с машинным обучением на устройствах. Для большинства разработчиков две типичные отправные точки:

  • API базы данных ML Kit, если одна из моделей Google на устройстве, такая как распознавание текста, распознавание лиц и т. Д. (Список поддерживаемых моделей), соответствует вашим потребностям, или
  • TensorFlow для использования другой предварительно обученной модели или для построения и обучения собственной модели.

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

  • Используйте предварительно обученную модель Google (например, распознавание лиц) - ML Kit Base APIs.
  • Используйте другие предварительно обученные модели - разработчики могут использовать предварительно обученные модели TensorFlow Lite, такие как оценка позы (определение тела и конечностей) и сегментация изображения (человек против фона).
  • Создайте свою собственную модель:
  1. Обучение кастомной модели - TensorFlow
  2. Конвертация и запуск готовой модели на устройствах Android / iOS / IoT - TensorFlow Lite
  3. Обслуживание преобразованной модели TensorFlow Lite конечным пользователям - Обслуживание пользовательской модели ML Kit

Все эти продукты работают вместе, чтобы предоставить разработчикам непрерывный опыт. Например, базовые API-интерфейсы ML Kit используют модели TensorFlow Lite за кулисами для доставки модели, обученной Google, в ваше приложение. Когда эти модели TensorFlow Lite работают на мобильных устройствах, их производительность повышается с помощью NNAPI.

Очень редко разработчикам необходимо взаимодействовать с NNAPI. Единственное исключение - если вы хотите создать свою собственную структуру машинного обучения.

На устройстве, новые варианты использования

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

1. Запуск более мощных моделей на устройстве

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

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

2. Мобильные устройства как универсальные устройства машинного обучения.

В течение многих лет существовала надежда, что устройства Интернета вещей (IoT), такие как промышленные машины или гаджеты для умного дома, могут вывести ML на край Интернета. Этому способствовало представление Edge TPU на Dev Summit. Что еще более интересно для меня, так это то, что эти устройства IoT, скорее всего, предназначены для одной цели - например, сортировка авокадо по размеру или установка комфортной комнатной температуры. Это те виды ценных примеров использования, о которых отрасль задумывалась долгое время.

Новым является то, что с мобильными платформами, такими как Android, у нас внезапно появляется универсальное устройство машинного обучения. ML может помочь пользователю регистрировать физическую активность одну минуту, а затем сканировать водительские права. Такие возможности, похоже, недостаточно изучены. С мобильным + ML появятся новые шаблоны проектирования и новые приложения для Android.

Лучший способ научиться - это попробовать

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

Я бы посоветовал разработчикам Android ознакомиться с примерами Android, чтобы понять, что возможно:

Машинное обучение на устройстве стало доступнее, и начать с него проще, чем когда-либо. В следующий раз, когда вы столкнетесь с проблемой, ML на устройстве может стать решением.