1. Введение
Последние достижения в области машинного обучения значительно упростили для компьютеров распознавание объектов на изображениях. В этом практическом занятии мы шаг за шагом пройдем весь процесс создания модели классификации изображений, способной распознавать различные типы объектов, а затем развернем эту модель в приложениях для Android и iOS. ML Kit и AutoML позволяют создавать и развертывать модели в масштабе, не требуя специальных знаний в области машинного обучения.
Что такое ML Kit?
ML Kit — это мобильный SDK, который предоставляет экспертные знания Google в области машинного обучения для приложений Android и iOS в мощном, но простом в использовании пакете. Независимо от вашего опыта в машинном обучении, вы можете легко реализовать необходимую функциональность всего несколькими строками кода. Существует несколько API, которые могут распознавать текст, лица и т. д., и вы можете использовать их «из коробки». Однако, если вам нужно распознавать объекты, которые не поддерживаются API, например, распознавать разные виды цветов на изображении, вам потребуется обучить собственную модель. Именно здесь вам может помочь AutoML.
Что такое AutoML?
Cloud AutoML — это набор продуктов для машинного обучения, который позволяет разработчикам с ограниченными знаниями в этой области обучать высококачественные модели, адаптированные под их бизнес-задачи, используя передовые технологии трансферного обучения и поиска нейронных архитектур от Google.
В этом практическом занятии мы будем использовать AutoML Vision Edge из ML Kit для обучения модели классификации цветов. Модель обучается в облаке, но затем загружается приложением для выполнения выводов полностью на устройстве.

Что вы узнаете
- Как обучить модель классификации изображений с помощью AutoML Vision Edge в ML Kit.
- Как запустить это в тестовом приложении для Android или iOS, используя SDK ML Kit.
Что вам понадобится
Для приложения Android
- Последняя версия Android Studio (v3.4+)
- Эмулятор Android Studio с Play Store или физическое устройство Android (версия 5.0 и выше)
- Базовые знания разработки под Android на Kotlin.
Для приложения iOS
- Последняя версия Xcode (v10.2+)
- Симулятор iOS или физическое устройство iOS (версия 9.0 и выше)
- CocoaPods
- Базовые знания разработки iOS на Swift.
2. Настройка
Скачайте код и обучающий набор данных.
Загрузите ZIP-архив, содержащий исходный код для этого практического занятия и обучающий набор данных. Распакуйте архив на своем локальном компьютере.
Создать проект консоли Firebase
- Перейдите в консоль Firebase .
- Выберите «Создать новый проект » и назовите свой проект «ML Kit Codelab».
Настройте приложение для Android.
- Добавьте наше Android-приложение в проект Firebase. Имя пакета Android:
com.google.firebase.codelab.mlkit.automl - Загрузите конфигурационный файл
google-services.jsonи поместите его в папку Android-приложения по адресуandroid/mlkit-automl/app/google-services.json.
Настройка iOS-приложения
- Добавьте наше iOS-приложение в проект Firebase. Идентификатор пакета iOS:
com.google.firebase.codelab.mlkit.automl - Загрузите конфигурационный файл
GoogleService-Info.plistи следуйте инструкциям, чтобы добавить его в iOS-приложение по адресуios/mlkit-automl/GoogleService-Info.plist.
3. Подготовка обучающего набора данных.
Для обучения модели распознаванию различных типов объектов необходимо подготовить набор изображений и подписать каждое из них. Мы создали архив фотографий цветов, распространяемых по лицензии Creative Commons, который вы можете использовать в этом практическом задании.
Набор данных упакован в ZIP-файл под названием flower_photos.zip , который входит в состав ZIP-архива, загруженного вами на предыдущем шаге.
Изучите набор данных
Если вы распакуете файл flower_photos.zip , вы увидите, что набор данных содержит изображения 5 видов цветов: одуванчика, ромашки, тюльпанов, подсолнухов и роз, которые организованы в папки, названные в честь цветов. Это удобный способ создать обучающий набор данных для AutoML и обучения модели классификации изображений.
В этом обучающем наборе данных для каждого типа цветов содержится 200 изображений. Для обучения модели достаточно как минимум 10 изображений на класс. Однако, как правило, большее количество обучающих изображений приводит к созданию более качественных моделей.


4. Обучение модели
Загрузка обучающего набора данных
- Откройте созданный вами проект в консоли Firebase .
- Выберите ML Kit > AutoML .
- Возможно, вы увидите несколько приветственных экранов. Выберите «Начать» в соответствующем разделе.
- После завершения процесса настройки выберите «Добавить набор данных » и назовите его «Цветы».
- В поле «Цель модели» выберите «Классификация с одной меткой», поскольку обучающие данные содержат только одну метку на изображение.
- Выберите «Создать» .
- Загрузите файл
flower_photos.zip, который вы скачали на предыдущем шаге, чтобы импортировать обучающий набор данных с изображениями цветов. - Подождите несколько минут, пока завершится процесс импорта.
- Теперь вы можете убедиться, что набор данных импортирован корректно.
- Поскольку все изображения в обучающем наборе данных размечены, вы можете приступить к обучению модели.

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

Вот шаги, если вы хотите обучить модель самостоятельно.
- Выберите модель обучения .
- Выберите вариант "Общее назначение" и время обучения 1 час .
- Подождите некоторое время (вероятно, несколько часов), пока завершится тренировочное задание.
- После завершения обучения вы увидите оценочные метрики, показывающие, насколько хорошо работает обученная модель.

5. Используйте модель в мобильных приложениях.
Подготовка
- В этом практическом занятии представлены примеры приложений для Android и iOS, демонстрирующие использование модели классификации изображений, которую мы обучили ранее, в мобильном приложении. Оба приложения имеют схожие функции. Вы можете выбрать платформу, с которой вам удобнее работать.
- Прежде чем продолжить, убедитесь, что вы загрузили примеры приложений и настроили их на шаге 2.
- Также убедитесь, что ваша локальная среда настроена таким образом, чтобы обеспечивать сборку приложений для выбранной вами платформы (Android/iOS).
Скачать модель классификации изображений
- Если вы обучили модель на предыдущем шаге, выберите «Скачать» , чтобы получить модель.
- Если вы еще не обучили модель или задача обучения еще не завершена, вы можете использовать модель, которая включена в примеры приложений.
Добавьте модель в пример(ы) приложения.
Вам нужно всего лишь добавить модель в примеры приложений, и они будут работать сразу же. Полное руководство по интеграции ML Kit AutoML в ваше приложение вы найдете в нашей документации ( Android , iOS ). Код, взаимодействующий с ML Kit SDK, находится в файлах ImageClassifier.kt и ImageClassifier.swift соответственно, поэтому вы можете начать с них, чтобы изучить, как работают приложения.
Существует два варианта развертывания модели: локальный и удаленный.
- Локальная модель в основном используется для включения модели классификации изображений в исполняемый файл вашего приложения, хотя можно также предоставить модель, сохраненную в локальном хранилище. При включении модель становится доступна пользователям сразу после загрузки приложения из App Store/Play Store и будет работать без подключения к интернету.
- Удалённая модель означает, что модель размещена в Firebase и будет загружена на устройство пользователя только при первом использовании. После этого модель будет работать и в автономном режиме.

Приложение для Android
- Откройте Android Studio.
- Импортируйте Android-приложение в папку
android/mlkit-automl/ - (Необязательно) Распакуйте загруженную модель и скопируйте её содержимое в модель, включенную в пример приложения.

- Теперь нажмите «Выполнить» (
) в панели инструментов Android Studio и убедитесь, что она распознает разные виды цветов!

iOS-приложение
- Откройте Терминал и перейдите в папку
ios/mlkit-automl/ - Выполните команду
pod install, чтобы загрузить зависимости через Cocoapods. - Чтобы открыть рабочую область проекта в Xcode, выполните команду
open MLVisionExample.xcworkspace/. - (Необязательно) Распакуйте загруженную модель и скопируйте её содержимое в модель, включенную в пример приложения, расположенную в папке
ios/ml-automl/Resources/automl/
- Теперь нажмите «Выполнить» (
) в панели инструментов Xcode и убедитесь, что она распознает разные виды цветов!

6. (Необязательно) Используйте модель пульта дистанционного управления
Функция удалённой модели ML Kit позволяет не включать модели Tensorflow Lite в исполняемый файл приложения, а загружать их по запросу из Firebase при необходимости. Удалённые модели имеют ряд преимуществ перед локальными моделями:
- Меньший размер исполняемого файла приложения
- Возможность обновлять модели без обновления приложения.
- A/B-тестирование с использованием нескольких версий модели.
На этом этапе мы опубликуем удалённую модель и используем её в примерах приложений. Пожалуйста, убедитесь, что вы завершили обучение модели на шаге 4 этого практического занятия.
Опубликуйте модель
- Перейдите в консоль Firebase .
- Выберите проект "ML Kit AutoML Codelab", который вы создали ранее.
- Выберите ML Kit > AutoML.
- Выберите набор данных «Цветы», который вы создали ранее.
- Убедитесь, что задача обучения завершена, затем выберите модель.
- Выберите «Опубликовать» и назовите файл «mlkit_flowers».

Распознавайте цветы с помощью модели с дистанционным управлением.
В примерах приложений предусмотрено использование удаленной модели, если она доступна. После публикации удаленной модели достаточно повторно запустить приложения, чтобы инициировать загрузку модели. Проверить, использует ли приложение удаленную модель, можно по значению «Источник» в нижней части экрана приложения. Если это не поможет, обратитесь к разделу «Устранение неполадок» ниже.


Поиск неисправностей
Если в тестовом приложении по-прежнему используется локальная модель, убедитесь, что имя удаленной модели правильно задано в коде.
Приложение для Android
- Перейдите на сайт
ImageClassifier.ktи найдите этот блок.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- Убедитесь, что имя модели, указанное в коде, совпадает с именем модели, которую вы опубликовали ранее через консоль Firebase.
- Теперь нажмите «Выполнить» (
) в панели инструментов Android Studio, чтобы перезапустить приложение.
iOS-приложение
- Перейдите в файл
ImageClassifier.swiftи найдите этот блок:
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- Убедитесь, что имя модели, указанное в коде, совпадает с именем модели, которую вы опубликовали ранее через консоль Firebase.
- Теперь нажмите «Выполнить» (
) в панели инструментов Xcode, чтобы перезапустить приложение.
7. Поздравляем!
Вы прошли полный цикл обучения модели классификации изображений с использованием собственных обучающих данных с помощью AutoML, а затем использовали эту модель в мобильном приложении с помощью ML Kit.
Пожалуйста, ознакомьтесь с нашей документацией , чтобы узнать, как интегрировать AutoML Vision Edge из ML Kit в ваше приложение.
Вы также можете попробовать наши примеры приложений ML Kit, чтобы ознакомиться с другими функциями Firebase ML Kit.
Примеры Android
примеры iOS