Descubre las novedades de Firebase en Google I/O 2022. Más información

Use un modelo TensorFlow Lite personalizado con Flutter

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

Modelos de TensorFlow Lite

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

Antes de que empieces

  1. Instale e inicialice los SDK de Firebase para Flutter si aún no lo ha hecho.

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

    flutter pub add firebase_ml_model_downloader
    
  3. Reconstruya su proyecto:

    flutter run
    

1. Implementa tu modelo

Implemente sus modelos personalizados de TensorFlow con Firebase console o Firebase Admin Python y Node.js SDK. Consulte Implementar y administrar modelos personalizados .

Después de agregar un modelo personalizado a su proyecto de Firebase, puede hacer referencia al modelo en sus aplicaciones con el nombre que especificó. En cualquier momento, puede implementar un nuevo modelo de TensorFlow Lite y descargar el nuevo modelo en los dispositivos de los usuarios llamando a getModel() (consulte a continuación).

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

Para usar su modelo de TensorFlow Lite en su aplicación, primero use el descargador de modelos para descargar la última versión del modelo en el dispositivo. Luego, crea 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 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 un modelo local disponible, se comporta como latestModel . Use 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 nuevos nombres (recomendado).
localModelUpdateInBackground Obtenga el modelo local del dispositivo y comience a actualizar el modelo en segundo plano. Si no hay un modelo local disponible, 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). Use este comportamiento solo en los casos en 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 se ha descargado el modelo.

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 que necesite 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. Para ello, tienes varias opciones:

Apéndice: Modelo de seguridad

Independientemente de cómo haga que sus 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 ofuscados por las optimizaciones que el riesgo es similar al de los competidores que desensamblan y reutilizan su código. No obstante, debe tener en cuenta este riesgo antes de utilizar un modelo personalizado en su aplicación.