1. Введение
Недавний прогресс в машинном обучении позволил компьютерам относительно легко распознавать объекты на изображениях. В этой лаборатории кода мы проведем вас через комплексное путешествие по созданию модели классификации изображений, которая может распознавать различные типы объектов, а затем развернет эту модель в приложении для Android и iOS. ML Kit и AutoML позволяют создавать и развертывать модели в большом масштабе без каких-либо знаний в области машинного обучения.
Что такое комплект ML?
ML Kit — это мобильный SDK, который объединяет опыт Google в области машинного обучения в приложениях Android и iOS в мощном, но простом в использовании пакете. Независимо от того, являетесь ли вы новичком или имеете опыт в области машинного обучения, вы можете легко реализовать нужные вам функции всего за несколько строк кода. Существует несколько API-интерфейсов, которые могут распознавать текст, лица и т. д., которые вы можете использовать готовые к использованию. Однако если вам необходимо распознавать объекты, которые не поддерживаются API-интерфейсами, например распознавать различные типы цветов по изображению, вам необходимо обучить собственную модель. Здесь вам может помочь 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 (v5.0+)
- Базовые знания разработки Android на Kotlin.
Для приложения iOS
- Последняя версия XCode (v10.2+)
- iOS Simulator или физическое устройство iOS (v9.0+)
- Какао-стручки
- Базовые знания 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-студию.
- Импортируйте приложение Android в
android/mlkit-automl/
- (Необязательно) Извлеките загруженную модель и скопируйте ее содержимое поверх модели, включенной в пример приложения.
- Теперь нажмите «Выполнить» ( ) на панели инструментов Android Studio и убедитесь, что он распознает разные типы цветов!
iOS-приложение
- Откройте терминал и перейдите в папку
ios/mlkit-automl/
- Запустите
pod install
, чтобы загрузить зависимости через Cocoapods. - Запустите
open MLVisionExample.xcworkspace/
чтобы открыть рабочую область проекта в Xcode. - (Необязательно) Извлеките загруженную модель и скопируйте ее содержимое поверх модели, включенной в пример приложения, в папку
ios/ml-automl/Resources/automl/
- Теперь нажмите «Выполнить» ( ) на панели инструментов Xcode и убедитесь, что он распознает разные типы цветов!
6. (Необязательно) Использовать удаленную модель.
Удаленная модель ML Kit позволяет вам не включать модели Tensorflow Lite в двоичный файл приложения, а загружать их по требованию из Firebase, когда это необходимо. Удаленные модели имеют ряд преимуществ перед локальными моделями:
- Меньший двоичный файл приложения
- Возможность обновлять модели без обновления приложения.
- A/B-тестирование с несколькими версиями модели
На этом этапе мы опубликуем удаленную модель и будем использовать ее в примерах приложений. Убедитесь, что вы завершили обучение своей модели на шаге 4 этой лаборатории.
Опубликовать модель
- Перейдите в консоль Firebase .
- Выберите проект «ML Kit AutoML Codelab», который вы создали ранее.
- Выберите Комплект ML > 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