Введение

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

Зачем добавлять машинное обучение в ваше приложение для Android?

Машинное обучение можно использовать для добавления в ваше приложение Android различных функций, таких как:

  • Обнаружение объектов
  • Распознавание жестов
  • Распознавание лица
  • Распознавание речи
  • Обработка естественного языка
  • Рекомендательные системы
  • Обнаружение мошенничества
  • Обнаружение спама
  • Персонализация

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

  • Поиск
  • Рекомендации
  • Перевод
  • Классификация изображений
  • Обнаружение мошенничества

Что такое машинное обучение на устройстве?

Машинное обучение на устройстве — это сдвиг парадигмы традиционного облачного машинного обучения. Это позволяет:

  • Прямая обработка. Задачи машинного обучения выполняются непосредственно на устройстве, например смартфоне или планшете.
  • Независимость от облака. Работает без необходимости постоянного подключения к облаку.
  • Локальная обработка данных.Данные обрабатываются локально, что обеспечивает более быстрое время ответа и немедленный вывод. В этом контексте вывод относится к процессу применения обученной модели машинного обучения для прогнозирования или вывода выводов на основе входных данных.

Почему стоит выбрать машинное обучение на устройстве?

Вот несколько веских причин выбрать ML на устройстве:

  • Низкая задержка. Машинное обучение на устройстве может обеспечить более быстрое время отклика и более плавное взаимодействие с пользователем, устраняя необходимость отправлять данные в облако и ждать результатов. Это может быть особенно полезно для приложений реального времени, таких как игры, дополненная реальность и т. д.
  • Конфиденциальность данных. ML на устройстве может гарантировать, что конфиденциальные данные останутся на устройстве и не будут переданы третьим лицам или хакерам. Это может быть важно для приложений, работающих с личной или конфиденциальной информацией, например, о здоровье, финансах и т. д.
  • Офлайн-поддержка. ML на устройстве может работать, не полагаясь на доступность или качество сети. Это может быть полезно для приложений, которые работают в удаленных районах или районах с низким уровнем подключения, а также в сценариях, когда пользователь хочет сэкономить данные или заряд батареи.
  • Экономия затрат. ML на устройстве может сократить расходы на облачные вычисления и хранение за счет минимизации объема данных, передаваемых и обрабатываемых в облаке. Это может быть выгодно для приложений, которые генерируют или потребляют большие объемы данных, таких как потоковое видео, социальные сети и т. д.

Приложения машинного обучения на устройстве

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

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

Обнаружение объектов (ODML)

  • Возможность обнаружения нескольких объектов на изображении или видео.
  • Предоставляет информацию об ограничивающей рамке для выделения обнаруженных объектов.
  • Классифицирует обнаруженный объект на основе предопределенных категорий.

ODML для обнаружения жестов

  • Обнаруживает определенные жесты пальцев в режиме реального времени.
  • Классифицирует тип выполняемого жеста.
  • Предоставляет подробную информацию о точках кончиков пальцев.

Как добавить машинное обучение на устройстве?

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

  • ML Kit: Google SDK, который предоставляет готовые к использованию модели ML и API для распространенных задач, таких как сканирование штрих-кода, распознавание текста, распознавание лиц, поз и т. д. ML Kit также поддерживает пользовательский TensorFlow. Модели Lite и модели AutoML Vision Edge.
  • MediaPipe. Платформа Google, позволяющая создавать собственные конвейеры машинного обучения с использованием готовых компонентов, таких как графики, калькуляторы, модели и т. д. MediaPipe также предоставляет готовые к использованию решения для распространенных задач, таких как обнаружение сетки лиц. , отслеживание рук, обнаружение объектов и т. д.
  • TFLite: библиотека Google, позволяющая запускать модели TensorFlow на мобильных устройствах с низкой задержкой и небольшим размером двоичного файла. TFLite также поддерживает аппаратное ускорение, оптимизацию моделей и извлечение метаданных.

Комплект машинного обучения для Android

ML Kit — это мобильный SDK, который привносит опыт Google в машинное обучение в приложения для Android.

Основные характеристики комплекта ML

  • Кроссплатформенность. Комплект ML предназначен как для Android, так и для iOS, что обеспечивает более широкий охват.
  • Предварительно обученные модели. Разработчики могут использовать предварительно обученные модели Google для различных задач.
  • Поддержка пользовательских моделей. Хотя предварительно обученные модели эффективны, ML Kit также поддерживает пользовательские модели TensorFlow Lite для специализированных нужд.
  • Обработка на устройстве и в облаке. ML Kit обеспечивает гибкость запуска моделей на устройстве для обработки в реальном времени, автономной обработки или в облаке для более высокой точности.

Сканер кода Google

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

  • Разрешение камеры не требуется
  • Выводы машинного обучения на устройстве
  • Пользовательский интерфейс предоставлен сервисом Google Play.

Распознавание текста версии 2

Сканер документов

  • Высококачественный процесс сканирования кода
  • На базе сервисов Google Play
  • Конфиденциальность пользователя

Обнаружение сетки лиц

Обнаруживает и отображает черты лица.

Вот как вы можете это интегрировать:

//Create the face mesh detector with default option - Face Mesh
val defaultDetector = FaceMeshDetection.getClient(FaceMeshDetectorOptions.DEFAULT_OPTIONS)



//Create the face mesh detector based on the usecase
val boundingBoxDetector = FaceMeshDetection.getClient(FaceMeshDetectorOptions.Builder()
    .setUseCase(UseCase.BOUNDING_BOX_ONLY).build()
)


defaultDetector.process(image)
        .addOnSuccessListener { result ->
            // Task completed successfully
            // …
        }
        .addOnFailureListener { e ->
            // Task failed with an exception
            // …
        }

Определение позы

Обнаруживает позы человека в режиме реального времени. Он может быстро определить совпадение скелета по 33 точкам всего тела.

  • В реальном времени
  • Скелетный матч всего тела по 33 очкам
  • Быстрый

Вот как вы можете это интегрировать:

// Base pose detector with streaming frames, when depending on the pose-detection sdk
val options = PoseDetectorOptions.Builder()
    .setDetectorMode(PoseDetectorOptions.STREAM_MODE)
    .build()

// Accurate pose detector on static images, when depending on the pose-detection-accurate sdk
val options = AccuratePoseDetectorOptions.Builder()
    .setDetectorMode(AccuratePoseDetectorOptions.SINGLE_IMAGE_MODE)
    .build()

val poseDetector = PoseDetection.getClient(options)

poseDetector.process(image)
       .addOnSuccessListener { results ->
           // Task completed successfully
           // ...
       }
       .addOnFailureListener { e ->
           // Task failed with an exception
           // ...
       }

Распознавание текста

Распознает текст в различных сценариях.

Вот как вы можете это интегрировать:

// When using Latin script library
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)

// When using Devanagari script library
val recognizer = TextRecognition.getClient(DevanagariTextRecognizerOptions.Builder().build())

recognizer.process(image)
        .addOnSuccessListener { visionText ->
            // Task completed successfully
            // ...
        }
        .addOnFailureListener { e ->
            // Task failed with an exception
            // ...
        }

Медиапайп

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

  • Простота использования
  • Инновационный
  • Быстрый

Решения MediaPipe

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

Доступные решения

Создайте машинное обучение на устройстве за считанные минуты

Шаги для быстрого создания машинного обучения на устройстве:

  1. Определите требование. Определите конкретную функциональность машинного обучения, необходимую для приложения. Например, если вы разрабатываете приложение для редактирования фотографий, вам могут понадобиться такие функции, как обнаружение объектов или сегментация изображений.
  2. Выберите правильный инструмент. В зависимости от требований выберите подходящий инструмент или библиотеку. Если вам нужно распознавание жестов, MediaPipe может быть лучшим выбором. Для распознавания текста идеально подойдет ML Kit.
  3. Интеграция готовых решений: используйте готовые решения или API, предоставляемые выбранным инструментом. Часто для этого нужно добавить несколько строк кода и убедиться, что у приложения есть необходимые разрешения.
  4. Тестирование и повторение. После интеграции тщательно протестируйте функциональность машинного обучения. Убедитесь, что он работает в различных сценариях и условиях. Соберите отзывы пользователей и внесите необходимые коррективы.
  5. Оптимизация производительности. Хотя быстрая композиция ускоряет разработку, важно оптимизировать функцию машинного обучения для повышения производительности. Это может включать уменьшение размера модели, обеспечение низкой задержки или повышение точности.

Распознавание жестов

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

  • В реальном времени
  • Ориентиры обнаруженных рук
  • Быстрый

Вот как вы можете это интегрировать:

val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(MP_RECOGNIZER_TASK)

val optionsBuilder =
    GestureRecognizer.GestureRecognizerOptions.builder()
        .setBaseOptions(baseOptions)
        .setMinHandDetectionConfidence(minHandDetectionConfidence)
        .setMinTrackingConfidence(minHandTrackingConfidence)
        .setMinHandPresenceConfidence(minHandPresenceConfidence)
        .setResultListener(this::returnLivestreamResult)
        .setErrorListener(this::returnLivestreamError)
        .setRunningMode(RunningMode.LIVE_STREAM)

val options = optionsBuilder.build()
val gestureRecognizer = GestureRecognizer.createFromOptions(context, options)

val mpImage = BitmapImageBuilder(rotatedBitmap).build()
val frameTime = SystemClock.uptimeMillis()

gestureRecognizer?.recognizeAsync(mpImage, frameTime)

МедиаПайп Студия

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

MediaPipe Studio — пользовательские модели

  • Настройка модели с помощью MediaPipe
  • Требования к входным и выходным данным модели
  • Инструмент создания моделей MediaPipe

TensorFlow Lite — пользовательская модель машинного обучения на Android

TensorFlow Lite (TFLite) — это платформа глубокого обучения с открытым исходным кодом, разработанная Google. Это облегченная версия TensorFlow, специально разработанная для мобильных и встраиваемых устройств. TFLite позволяет разработчикам запускать модели машинного обучения на устройстве, обеспечивая более быстрый вывод и улучшенный пользовательский опыт. Это предлагает:

  • Механизм вывода Android
  • Автоматические обновления
  • Уменьшить размер двоичного файла

Почему TensorFlow Lite?

  • Легкость.TFLite оптимизирован по размеру, что делает его подходящим для мобильных устройств с ограниченным объемом памяти и вычислительными возможностями.
  • Универсальность. Поддерживает широкий спектр задач машинного обучения, от классификации изображений до обработки естественного языка.
  • Кроссплатформенность. Совместимость как с Android, так и с iOS, что обеспечивает более широкий охват приложений.
  • Возможности в автономном режиме. Поскольку вывод происходит на устройстве, приложения на базе TFLite могут работать без подключения к Интернету.

Ключевые особенности TFLite

  1. Преобразование модели. TFLite предоставляет инструменты для преобразования обученных моделей TensorFlow в формат, оптимизированный для мобильных устройств.
  2. Предварительно обученные модели. Предлагает коллекцию готовых к использованию моделей для выполнения стандартных задач, что сокращает время разработки.
  3. Настройка. Хотя предварительно обученные модели удобны, TFLite также поддерживает пользовательские модели, адаптированные к конкретным потребностям.
  4. Интеграция API нейронной сети. На устройствах Android TFLite может использовать API нейронной сети для аппаратно-ускоренного вывода.

Реализация TFLite в приложениях для Android

Интеграция TFLite в приложения Android включает в себя несколько ключевых шагов:

  1. Подготовка модели. Начните с выбора предварительно обученной модели или обучения пользовательской модели TensorFlow. Когда все будет готово, преобразуйте эту модель в формат TFLite с помощью конвертера TFLite.
  2. Интеграция. Добавьте библиотеку Android TFLite в проект приложения. Эта библиотека предоставляет необходимые функции для запуска моделей TFLite.
  3. Развертывание модели. Встройте модель TFLite в папку ресурсов приложения. Это гарантирует, что модель будет упакована вместе с приложением во время развертывания.
  4. Вывод: используйте интерпретатор TFLite для запуска модели на входных данных и получения прогнозов.

TensorFlow Lite в сервисах Google Play

Принятие с сентября 2022 г.

  • 1 млрд+ пользователей в месяц
  • более 10 тыс. приложений

API-интерфейсы комплекта машинного обучения

TensorFlow Lite в сервисах Google Play поддерживает несколько API-интерфейсов ML Kit, включая API сканирования штрих-кода, идентификацию языка и интеллектуальный ответ.

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

Интеграция API-интерфейсов ML Kit в приложения Android

Процесс интеграции прост:

  1. Настройка Firebase. Поскольку ML Kit является частью Firebase, начните с настройки проекта Firebase и добавления необходимых зависимостей в приложение Android.
  2. Выберите API. В зависимости от требований приложения выберите соответствующий API ML Kit.
  3. Внедрите API. Следуйте документации, чтобы интегрировать выбранный API. Например, для распознавания текста захватите данные изображения, передайте их в API распознавания текста и обработайте возвращенные текстовые данные.
  4. Оптимизация и тестирование. Убедитесь, что функция машинного обучения работает бесперебойно в различных сценариях. Оптимизация производительности и точности.

Заключение

Машинное обучение на устройстве — это будущее мобильных приложений. Благодаря таким инструментам, как ML Kit, MediaPipe и TensorFlow Lite, разработчики Android могут создавать интеллектуальные приложения, быстрые, безопасные и удобные для пользователя. Поскольку машинное обучение продолжает развиваться, в будущем мы можем ожидать еще более продвинутых функций и более простых методов интеграции.