Используйте собственную модель TensorFlow Lite с Flutter.

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

модели TensorFlow Lite

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

Обратите внимание, что при отсутствии поддерживаемой библиотеки TensorFlow Lite для Dart вам потребуется интегрировать её с собственной библиотекой TensorFlow Lite для вашей платформы. Эта интеграция здесь не описана.

Прежде чем начать

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

  2. Для установки плагина загрузки моделей машинного обучения выполните следующую команду из корневого каталога вашего проекта Flutter:

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

    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 в локальном хранилище.

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