Если ваше приложение использует собственные модели TensorFlow Lite , вы можете использовать Firebase ML для развертывания этих моделей. Развертывание моделей с помощью Firebase позволяет уменьшить размер первоначальной загрузки приложения и обновлять модели машинного обучения без выпуска новой версии приложения. А благодаря функциям удаленной конфигурации и A/B-тестирования вы можете динамически предоставлять разные модели разным группам пользователей.
модели TensorFlow Lite
Модели TensorFlow Lite — это модели машинного обучения, оптимизированные для работы на мобильных устройствах. Чтобы получить модель TensorFlow Lite:
- Используйте готовую модель, например, одну из официальных моделей TensorFlow Lite.
- Преобразуйте модель TensorFlow, модель Keras или конкретную функцию в формат TensorFlow Lite.
Обратите внимание, что при отсутствии поддерживаемой библиотеки TensorFlow Lite для Dart вам потребуется интегрировать её с собственной библиотекой TensorFlow Lite для вашей платформы. Эта интеграция здесь не описана.
Прежде чем начать
Установите и инициализируйте SDK Firebase для Flutter, если вы еще этого не сделали.
Для установки плагина загрузки моделей машинного обучения выполните следующую команду из корневого каталога вашего проекта Flutter:
flutter pub add firebase_ml_model_downloaderПерестройте свой проект:
flutter run
1. Разверните свою модель.
Развертывайте свои пользовательские модели TensorFlow, используя либо консоль Firebase, либо SDK Firebase Admin для Python и Node.js. См. раздел «Развертывание и управление пользовательскими моделями» .
После добавления пользовательской модели в ваш проект 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 в локальном хранилище.
Теоретически это означает, что любой может скопировать вашу модель. Однако на практике большинство моделей настолько специфичны для конкретного приложения и завуалированы оптимизациями, что риск сопоставим с риском того, что конкуренты разберут и повторно используют ваш код. Тем не менее, вам следует помнить об этом риске, прежде чем использовать собственную модель в своем приложении.