Первоначально написано для блога TechMagic: https://blog.techmagic.co/custom-image-labeling-is-getting-easier-than-ever/
Самая новая и одна из самых интересных функций Firebase - AutoML.
За последние несколько месяцев Firebase предоставила 2 варианта использования маркировки изображений в мобильных клиентах:
- Используйте их собственную предварительно созданную модель, которая может распознавать около 400 категорий, которые работают достаточно хорошо, пока вы не захотите конкретизировать.
- Создайте свою собственную модель с помощью TensorFlow Lite и используйте ее в Firebase ML. Подробнее о TensorFlow Lite вы можете прочитать здесь.
Более подробное сравнение можно найти здесь: https://medium.com/@TechMagic/is-firebase-ml-kit-your-choice-42546f24e9a9
Хорошо, если вы здесь, потому что заранее созданная модель - это не совсем то, что нужно вашему бизнесу, а второй вариант с построением вашей собственной модели слишком сложен, и тогда AutoML появляется на сцене. Или AutoML Vision Edge, чтобы быть точным для мобильного использования.
Использование AutoML Vision Edge состоит из двух этапов:
- Получение обученной модели из изображений.
- Используйте его на устройстве iOS / Android.
Шаг 1. Получение обученной модели из изображений
Чтобы начать работу с AutoML, откройте консоль firebase на вкладке ML Kit. В нем вы можете найти AutoML с пометкой новый. В зависимости от вашего плана вы можете создать один или несколько наборов данных. Кроме того, наборы данных Spark и Flame по-разному хранятся внутри платформы, поэтому, если ваш проект изменит план на Blaze, и вы хотите получить от него все преимущества, рассмотрите возможность использования этого официального руководства по миграции.
После создания набора данных вы можете приступить к предоставлению изображений, которые хотите распознать. Для этого вы можете использовать zip-архив, в котором папки будут ярлыками для изображений внутри них, или загружать изображения самостоятельно и присваивать им ярлыки. Небольшое примечание - план Spark может содержать только 1000 изображений в одном наборе данных.
Первые подводные камни при импорте изображений - в документации указано, что каждое отдельное изображение должно быть меньше 30 МБ, но на самом деле только 5 МБ, иначе вы получите «Внутреннюю ошибку сервера при импорте данных в набор данных». (для архивного подхода) и более описательная ошибка, если вы загружаете изображение.
Кроме того, мне не удалось начать обучение модели с 10 изображениями для каждой метки - появилась ошибка «Загрузите больше изображений, чтобы начать обучение». Собственно, пока я не обновил страницу без кеша.
Итак, у вас есть все необходимые изображения и метки, и вы готовы обучать модель. Действительно интересная особенность - это оценка задержки и размера построенной модели, особенно когда iPhone 8 является самым быстрым из списка, опережая другие устройства Android почти в 3 раза.
Пусть начнется обучение - 1 набор данных, 3 метки, 169 изображений, общего назначения, продолжительность обучения 30 минут.
Важное примечание. План Spark дает вам всего 3 часа тренировочного времени для проекта, поэтому будет хорошей идеей опробовать его на тестовом проекте, прежде чем делать это на том, который относится к вашему приложению.
После того, как обучение будет завершено, вы получите электронное письмо об этом, что действительно приятно. После этого вы можете загрузить модель в комплекте с приложениями или опубликовать ее для удаленного использования и сэкономить несколько мегабайт пользовательского трафика. Кроме того, Firebase предоставляет удобную панель для проверки общих показателей модели и тестовую страницу для ее тестирования.
Шаг 2. Использование AutoML на мобильных устройствах (Android)
Чтобы начать использовать результаты своей работы в своем приложении, прежде всего, оно должно быть готово к Firebase. Если это не так, ознакомьтесь с официальным руководством по интеграции Firebase.
Затем нам нужно добавить две зависимости:
dependencies { // other dependencies implementation 'com.google.firebase:firebase-ml-vision:21.0.0' implementation 'com.google.firebase:firebase-ml-vision-automl:17.0.0' }
В зависимости от вашего пользовательского интерфейса и целей вы можете использовать локальный, удаленный или локальный + удаленный подход.
Для локальной части вы должны были загрузить архив с панели управления Firebase AutoML с этими 3 файлами model.tflite
, dict.txt
и manifest.json
и поместить их в /assets/<model name>
.
Для удаленного использования - используйте опцию «Опубликовать» через панель управления Firebase AutoMl.
Тогда вы готовы добавить код:
- Зарегистрируйте локальные / удаленные модели в
FirebaseModelManager.getInstance()
- Создайте экземпляр
FirebaseVisionImage
изBitmap
,media.Image
,ByteBuffer
или пути к файлу. - Настроить изображение labeler
FirebaseVision.getInstance().getOnDeviceAutoMLImageLabeler(labelerOptions)
- (НЕОБЯЗАТЕЛЬНО, но рекомендуется для удаленного доступа) Проверьте, загружена ли удаленная модель
FirebaseModelManager.getInstance().downloadRemoteModelIfNeeded(remoteModel)
- Предоставьте изображение этикетировщику и подождите несколько миллисекунд, пока не произойдет волшебство
labeler.processImage(image)
.addOnSuccessListener {labels}
.addOnFailureListener {exception}
Подробный пример кода можно найти на официальной странице.
Резюме
AutoML - хороший инструмент с многообещающим будущим, особенно для новичков в области машинного обучения. По масштабам сложности, сравнивая другие функции ML Kit для маркировки изображений, AutoML будет как раз между использованием предварительно созданных моделей и пользовательских моделей.