Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Используйте пользовательскую модель TensorFlow Lite с Flutter

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Если ваше приложение использует пользовательские модели TensorFlow Lite , вы можете использовать Firebase ML для развертывания своих моделей. Развертывая модели с помощью Firebase, вы можете уменьшить первоначальный размер загружаемого приложения и обновить модели машинного обучения своего приложения, не выпуская новую версию своего приложения. А с помощью удаленной настройки и A/B-тестирования вы можете динамически обслуживать разные модели для разных групп пользователей.

Модели TensorFlow Lite

Модели TensorFlow Lite — это модели машинного обучения, оптимизированные для работы на мобильных устройствах. Чтобы получить модель TensorFlow Lite:

Прежде чем вы начнете

  1. Установите и инициализируйте пакеты Firebase SDK для Flutter , если вы еще этого не сделали.

  2. Из корневого каталога вашего проекта Flutter выполните следующую команду, чтобы установить плагин загрузчика модели ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Перестройте свой проект:

    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 доступными для Firebase ML, Firebase ML сохраняет их в стандартном сериализованном формате protobuf в локальном хранилище.

Теоретически это означает, что любой может скопировать вашу модель. Однако на практике большинство моделей настолько зависят от приложения и запутаны оптимизацией, что риск аналогичен риску дизассемблирования и повторного использования вашего кода конкурентами. Тем не менее, вы должны знать об этом риске, прежде чем использовать пользовательскую модель в своем приложении.