Преимущества, варианты использования и среды для разработчиков

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

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

Почему разработчики решили использовать машинное обучение в своих приложениях?

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

Низкая задержка

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

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

Еще один отличный пример - приложение InstaSaber от u / hwoolery. Он обучил пользовательскую модель машинного обучения обнаруживать и оценивать положение свернутого листа бумаги, чтобы превратить его в световой меч. Эти типы интерфейсов AR возможны только в том случае, если обработка выполняется на устройстве.

Низкий / Нет подключения

Если у вас нет доступа к Интернету, ваше приложение не будет работать. Это не такая уж большая проблема во многих крупных городах, но как насчет сельской местности? Команда PlantVillage обучила нейронную сеть, которая может обнаруживать различные типы болезней сельскохозяйственных культур, поражающих места в Восточной Африке. Однако у фермеров нет хорошей связи, а стоимость передачи данных очень высока. Решение заключалось в том, чтобы поместить модель в приложение и запустить ее на устройстве. Подробнее об этом можно прочитать здесь:



Конфиденциальность

Машинное обучение может творить удивительные вещи, но для этого нужны данные. Что, если эти данные конфиденциальны? Вы бы чувствовали себя комфортно, отправив в Apple 3D-сканирование своего лица? Они не думают, что вам следует это делать, поэтому FaceID полностью работает на устройстве. Нейронная сеть берет 3D-сканирование, встраивает его в вектор, сохраняет его в защищенном анклаве, а затем сравнивает будущие сканирования с этим. Никакие данные о лице не отправляются каждый раз в Apple. Подобные вопросы постоянно возникают в сфере здравоохранения. Например, MDAcne - это приложение, которое отслеживает состояние кожи с течением времени с помощью алгоритмов компьютерного зрения, работающих прямо на телефоне.

Расходы

Такие сервисы, как AWS и GCP, довольно дешевы, если вы используете младшие конфигурации ЦП / памяти. Но рабочие нагрузки машинного обучения часто требуют графических процессоров и большого количества памяти, даже просто для вывода. Это может очень быстро стать дорогим. Передавая обработку на устройство пользователя, вы также снимаете с себя расходы на вычислительные ресурсы и полосу пропускания, которые вы понесли бы, если бы вам пришлось поддерживать этот бэкэнд.

Примеры использования мобильного машинного обучения

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

Инструменты для творчества

Это функции вашего приложения на основе машинного обучения, которые позволяют пользователям создавать отличный контент (фотографии, видео и т. Д.). Я уже говорил о таких приложениях, как Snapchat, которые используют машинное обучение на устройстве для усиления эффектов AR. Еще несколько примеров:

  • Momento Gifs - они используют сегментацию изображения в реальном времени, чтобы смешивать эффекты AR вокруг людей в сценах. На устройстве работа в реальном времени становится жизнеспособной.
  • Prisma - передача художественного стиля (таких приложений масса).
  • Octi - сегментация изображений и оценка позы для отслеживания людей в видео для получения забавных эффектов.
  • Панда - маски дополненной реальности наподобие Snapchat, но с добавленной возможностью слышать слова с помощью распознавания речи. Эффекты срабатывают, когда произносятся слова.
  • Meitu - использует машинное обучение на устройстве для поддержки ряда функций украшения в реальном времени.

Базовый интерфейс / пользовательский интерфейс

  • Наложить X - также использует сегментацию изображений для включения инструмента автоматического маскирования, поэтому пользователям не нужно вырезать людей вручную.
  • Подсказка субреддита - пример, который использует Create ML для обучения модели, которая автоматически изображает субреддит из заголовка вашего сообщения, поэтому вам не нужно нажимать так много кнопок для отправки нового сообщения.
  • Homecourt - показан на сцене последнего мероприятия Apple iPhone. Использует определение позы и некоторые другие модели машинного обучения для автоматического отслеживания аналитики для баскетбола. Думаю, мы увидим подобные приложения для многих видов спорта.
  • PlantVillage, как упоминалось выше.
  • Facebook заявил, что поставляет свою собственную среду выполнения в каждом пакете приложений FB. Они используют модели для всего, от точной настройки рейтинга новостной ленты на устройстве до анализа фотографий.
  • Polarr - использует машинное обучение на устройстве, чтобы помочь с компоновкой, редактированием и организацией фотографий в режиме реального времени.

Конфиденциальность

  • FaceID
  • MDAcne, как упоминалось выше.

Каково развиваться с помощью машинного обучения на устройстве?

Это все еще немного сложно, но становится все проще! Рассмотрим среды разработки для iOS и Android.

iOS

На iOS вам будет намного лучше, потому что есть инструменты более высокого уровня, а производительность моделей на устройстве НАМНОГО выше благодаря преимуществу чипа Apple. Для начала взгляните на:

  • Create ML - Apple представила инструмент обучения Core ML высокого уровня в Swift Playgrounds в этом году. По сути, это машинное обучение с перетаскиванием. Не такая большая гибкость, но если вы хотите сделать что-то вроде классификации текста или классификации изображений, начать очень легко.
  • Turi Create - высокоуровневый учебный фреймворк на основе Python, поддерживаемый Apple. Он более гибкий, чем Create ML, но вам нужно знать Python.

Android

  • ML Kit - часть продукта Google Firebase, ML Kit предлагает предварительно обученные модели для таких вещей, как обнаружение лиц и OCR. Они также предлагают возможность создавать гибридные системы, в которых некоторые модели на стороне сервера и на устройстве можно использовать через один и тот же API. Технически ML Kit является кроссплатформенным, но производительность на iOS в лучшем случае оставляет желать лучшего.
  • TensorFlow Lite / Mobile - если вам это нравится, вы можете конвертировать необработанные модели TensorFlow для использования на устройстве. TensorFlow Lite - это урезанная, оптимизированная для мобильных устройств среда выполнения для выполнения моделей в приложениях iOS и Android. Однако на данный момент поддержка многих операций ограничена, а производительность сильно снижена. Во многих развертываниях Android по-прежнему используется устаревшая среда выполнения TensorFlow Mobile.

Другое

  • Keras - популярный фреймворк для глубокого обучения на основе Python, наиболее часто используемый с бэкэндом TensorFlow. Я рекомендую Keras напрямую, а не TensorFlow, потому что это проще, и coremltools проще всего конвертировать модели Keras в Core ML. Модели TensorFlow также можно извлекать для преобразования в TFLite и TFMobile.
  • QNNPACK - оптимизированная для мобильных устройств среда выполнения, разработанная и используемая Facebook. Квантованные операции, написанные на языках низкого уровня, обеспечивают высокую производительность только для ЦП. QNNPACK совместим с моделями Caffe2 и PyTorch и доставляется каждому пользователю Facebook через его мобильное приложение.
  • ONNX - ONNX начинался как стандартизированный протокол с открытым исходным кодом для определения структуры и параметров нейронных сетей. Microsoft теперь также добавила среду выполнения вывода.

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

Обсудите этот пост в Hacker News

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее создавать лучшие модели машинного обучения.