Если ваше приложение использует пользовательские модели TensorFlow Lite , вы можете использовать Firebase ML для развертывания своих моделей. Развертывая модели с помощью Firebase, вы можете уменьшить первоначальный размер загружаемого приложения и обновить модели машинного обучения своего приложения, не выпуская новую версию своего приложения. А с помощью удаленной настройки и A/B-тестирования вы можете динамически обслуживать разные модели для разных групп пользователей.
Модели TensorFlow Lite
Модели TensorFlow Lite — это модели машинного обучения, оптимизированные для работы на мобильных устройствах. Чтобы получить модель TensorFlow Lite:
- Используйте готовую модель, например одну из официальных моделей TensorFlow Lite .
- Преобразуйте модель TensorFlow, модель Keras или конкретную функцию в TensorFlow Lite.
Обратите внимание, что при отсутствии поддерживаемой библиотеки TensorFlow Lite для Dart вам потребуется интегрироваться с собственной библиотекой TensorFlow Lite для ваших платформ. Эта интеграция здесь не задокументирована.
Прежде чем вы начнете
Установите и инициализируйте пакеты Firebase SDK для Flutter , если вы еще этого не сделали.
Из корневого каталога вашего проекта Flutter выполните следующую команду, чтобы установить плагин загрузчика модели ML:
flutter pub add firebase_ml_model_downloader
Перестройте свой проект:
flutter run
1. Разверните свою модель
Разверните свои пользовательские модели TensorFlow с помощью консоли Firebase или пакетов Firebase Admin Python и Node.js SDK. См. Развертывание пользовательских моделей и управление ими .
После добавления пользовательской модели в проект Firebase вы можете ссылаться на модель в своих приложениях, используя указанное вами имя. В любое время вы можете развернуть новую модель TensorFlow Lite и загрузить новую модель на устройства пользователей, вызвав getModel()
(см. ниже).
2. Загрузите модель на устройство и инициализируйте интерпретатор TensorFlow Lite.
Чтобы использовать модель TensorFlow Lite в своем приложении, сначала используйте загрузчик модели, чтобы загрузить последнюю версию модели на устройство. Затем создайте экземпляр интерпретатора TensorFlow Lite с моделью.
Чтобы начать загрузку модели, вызовите метод getModel()
загрузчика модели, указав имя, которое вы присвоили модели при ее загрузке, хотите ли вы всегда загружать последнюю модель и условия, при которых вы хотите разрешить загрузку.
Вы можете выбрать один из трех способов загрузки:
Тип загрузки | Описание |
---|---|
localModel | Получите локальную модель с устройства. Если нет доступной локальной модели, это ведет себя как latestModel . Используйте этот тип загрузки, если вы не заинтересованы в проверке обновлений модели. Например, вы используете Remote Config для получения имен моделей и всегда загружаете модели под новыми именами (рекомендуется). |
localModelUpdateInBackground | Получите локальную модель с устройства и запустите обновление модели в фоновом режиме. Если нет доступной локальной модели, это ведет себя как latestModel . |
latestModel | Получите последнюю модель. Если локальная модель является последней версией, возвращает локальную модель. В противном случае загрузите последнюю модель. Это поведение будет заблокировано до тех пор, пока не будет загружена последняя версия (не рекомендуется). Используйте это поведение только в тех случаях, когда вам явно нужна последняя версия. |
Вы должны отключить функции, связанные с моделью, например сделать серым или скрыть часть вашего пользовательского интерфейса, пока вы не подтвердите, что модель была загружена.
FirebaseModelDownloader.instance
.getModel(
"yourModelName",
FirebaseModelDownloadType.localModel,
FirebaseModelDownloadConditions(
iosAllowsCellularAccess: true,
iosAllowsBackgroundDownloading: false,
androidChargingRequired: false,
androidWifiRequired: false,
androidDeviceIdleRequired: false,
)
)
.then((customModel) {
// Download complete. Depending on your app, you could enable the ML
// feature, or switch from the local model to the remote model, etc.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite interpreter.
final localModelPath = customModel.file;
// ...
});
Многие приложения запускают задачу загрузки в своем коде инициализации, но вы можете сделать это в любой момент, прежде чем вам понадобится использовать модель.
3. Выполните вывод по входным данным
Теперь, когда у вас есть файл модели на устройстве, вы можете использовать его с интерпретатором TensorFlow Lite для выполнения логических выводов. При отсутствии поддерживаемой библиотеки TensorFlow Lite для Dart вам потребуется интегрироваться с собственными библиотеками TensorFlow Lite для iOS и Android.
Приложение: Безопасность модели
Независимо от того, как вы делаете свои модели TensorFlow Lite доступными для Firebase ML, Firebase ML сохраняет их в стандартном сериализованном формате protobuf в локальном хранилище.
Теоретически это означает, что любой может скопировать вашу модель. Однако на практике большинство моделей настолько зависят от приложения и запутаны оптимизацией, что риск аналогичен риску дизассемблирования и повторного использования вашего кода конкурентами. Тем не менее, вы должны знать об этом риске, прежде чем использовать пользовательскую модель в своем приложении.