Utilice un modelo personalizado de TensorFlow Lite con Flutter

Si tu aplicación usa modelos personalizados de TensorFlow Lite , puedes usar Firebase ML para implementar tus modelos. Al implementar modelos con Firebase, puedes reducir el tamaño de descarga inicial de tu aplicación y actualizar los modelos de aprendizaje automático de tu aplicación sin lanzar una nueva versión de tu aplicación. Y, con Remote Config y A/B Testing, puede servir dinámicamente diferentes modelos a diferentes conjuntos de usuarios.

Modelos TensorFlow Lite

Los modelos TensorFlow Lite son modelos ML que están optimizados para ejecutarse en dispositivos móviles. Para obtener un modelo de TensorFlow Lite:

Tenga en cuenta que, en ausencia de una biblioteca TensorFlow Lite mantenida para Dart, deberá integrarla con la biblioteca nativa TensorFlow Lite para sus plataformas. Esta integración no está documentada aquí.

Antes de que empieces

  1. Instala e inicializa los SDK de Firebase para Flutter si aún no lo has hecho.

  2. Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando para instalar el complemento de descarga del modelo ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Reconstruya su proyecto:

    flutter run
    

1. Implementa tu modelo

Implementa tus modelos personalizados de TensorFlow usando Firebase console o los SDK de Firebase Admin Python y Node.js. Consulte Implementar y administrar modelos personalizados .

Después de agregar un modelo personalizado a tu proyecto de Firebase, puedes hacer referencia al modelo en tus aplicaciones usando el nombre que especificaste. En cualquier momento, puedes implementar un nuevo modelo de TensorFlow Lite y descargarlo en los dispositivos de los usuarios llamando a getModel() (ver más abajo).

2. Descargue el modelo en el dispositivo e inicialice un intérprete de TensorFlow Lite.

Para usar su modelo TensorFlow Lite en su aplicación, primero use el descargador de modelos para descargar la última versión del modelo en el dispositivo. Luego, cree una instancia de un intérprete de TensorFlow Lite con el modelo.

Para iniciar la descarga del modelo, llame al método getModel() del descargador de modelos, especificando el nombre que le asignó al modelo cuando lo cargó, si desea descargar siempre el último modelo y las condiciones bajo las cuales desea permitir la descarga.

Puede elegir entre tres comportamientos de descarga:

Tipo de descarga Descripción
localModel Obtenga el modelo local del dispositivo. Si no hay ningún modelo local disponible, esto se comporta como latestModel . Utilice este tipo de descarga si no está interesado en buscar actualizaciones de modelos. Por ejemplo, está utilizando Remote Config para recuperar nombres de modelos y siempre carga modelos con nombres nuevos (recomendado).
localModelUpdateInBackground Obtenga el modelo local del dispositivo y comience a actualizar el modelo en segundo plano. Si no hay ningún modelo local disponible, esto se comporta como latestModel .
latestModel Consigue el último modelo. Si el modelo local es la última versión, devuelve el modelo local. De lo contrario, descargue el último modelo. Este comportamiento se bloqueará hasta que se descargue la última versión (no recomendado). Utilice este comportamiento solo en los casos en los que necesite explícitamente la última versión.

Debe deshabilitar la funcionalidad relacionada con el modelo (por ejemplo, atenuar u ocultar parte de su interfaz de usuario) hasta que confirme que el modelo se ha descargado.

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;

      // ...
    });

Muchas aplicaciones inician la tarea de descarga en su código de inicialización, pero puede hacerlo en cualquier momento antes de necesitar usar el modelo.

3. Realizar inferencias sobre los datos de entrada.

Ahora que tiene su archivo de modelo en el dispositivo, puede usarlo con el intérprete de TensorFlow Lite para realizar inferencias. En ausencia de una biblioteca TensorFlow Lite mantenida para Dart, deberá realizar la integración con las bibliotecas nativas de TensorFlow Lite para iOS y Android.

Apéndice: Seguridad del modelo

Independientemente de cómo hagas que tus modelos de TensorFlow Lite estén disponibles para Firebase ML, Firebase ML los almacena en el formato protobuf serializado estándar en el almacenamiento local.

En teoría, esto significa que cualquiera puede copiar su modelo. Sin embargo, en la práctica, la mayoría de los modelos son tan específicos de la aplicación y están tan confusos por las optimizaciones que el riesgo es similar al de que los competidores desensamblen y reutilicen su código. Sin embargo, debes ser consciente de este riesgo antes de utilizar un modelo personalizado en tu aplicación.