Confira as novidades do Firebase anunciadas no Google I/O 2022. Saiba mais

Use um modelo personalizado do TensorFlow Lite com Flutter

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Se seu aplicativo usa modelos personalizados do TensorFlow Lite , você pode usar o Firebase ML para implantar seus modelos. Ao implantar modelos com o Firebase, você pode reduzir o tamanho inicial do download do seu aplicativo e atualizar os modelos de ML do seu aplicativo sem lançar uma nova versão dele. E, com o Remote Config e o teste A/B, você pode servir dinamicamente diferentes modelos para diferentes conjuntos de usuários.

Modelos do TensorFlow Lite

Os modelos do TensorFlow Lite são modelos de ML otimizados para execução em dispositivos móveis. Para obter um modelo do TensorFlow Lite:

Antes de você começar

  1. Instale e inicialize os SDKs do Firebase para Flutter , caso ainda não tenha feito isso.

  2. No diretório raiz do seu projeto Flutter, execute o seguinte comando para instalar o plug-in do downloader do modelo de ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Reconstrua seu projeto:

    flutter run
    

1. Implante seu modelo

Implante seus modelos personalizados do TensorFlow usando o Firebase console ou os SDKs do Firebase Admin Python e Node.js. Consulte Implantar e gerenciar modelos personalizados .

Depois de adicionar um modelo personalizado ao seu projeto do Firebase, você pode fazer referência ao modelo em seus aplicativos usando o nome que você especificou. A qualquer momento, você pode implantar um novo modelo do TensorFlow Lite e baixar o novo modelo nos dispositivos dos usuários chamando getModel() (veja abaixo).

2. Faça download do modelo para o dispositivo e inicialize um interpretador do TensorFlow Lite

Para usar seu modelo do TensorFlow Lite em seu aplicativo, primeiro use o downloader de modelo para baixar a versão mais recente do modelo para o dispositivo. Em seguida, instancie um interpretador do TensorFlow Lite com o modelo.

Para iniciar o download do modelo, chame o método getModel() do downloader do modelo, especificando o nome que você atribuiu ao modelo ao carregá-lo, se deseja sempre baixar o modelo mais recente e as condições sob as quais deseja permitir o download.

Você pode escolher entre três comportamentos de download:

Tipo de download Descrição
localModel Obtenha o modelo local do dispositivo. Se não houver um modelo local disponível, ele se comportará como latestModel . Use este tipo de download se não estiver interessado em verificar as atualizações do modelo. Por exemplo, você está usando o Configuração remota para recuperar nomes de modelos e sempre faz upload de modelos com novos nomes (recomendado).
localModelUpdateInBackground Obtenha o modelo local do dispositivo e comece a atualizar o modelo em segundo plano. Se não houver um modelo local disponível, ele se comportará como latestModel .
latestModel Obtenha o modelo mais recente. Se o modelo local for a versão mais recente, retornará o modelo local. Caso contrário, baixe o modelo mais recente. Esse comportamento será bloqueado até que a versão mais recente seja baixada (não recomendado). Use esse comportamento apenas nos casos em que você precisar explicitamente da versão mais recente.

Você deve desabilitar a funcionalidade relacionada ao modelo - por exemplo, acinzentado ou ocultar parte da sua interface do usuário - até confirmar que o modelo foi baixado.

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;

      // ...
    });

Muitos aplicativos iniciam a tarefa de download em seu código de inicialização, mas você pode fazer isso a qualquer momento antes de precisar usar o modelo.

3. Realizar inferência nos dados de entrada

Agora que você tem seu arquivo de modelo no dispositivo, pode usá-lo com o interpretador do TensorFlow Lite para realizar a inferência. Para isso, você tem várias opções:

Apêndice: Segurança do modelo

Independentemente de como você disponibiliza seus modelos do TensorFlow Lite para o Firebase ML, o Firebase ML os armazena no formato protobuf serializado padrão no armazenamento local.

Em teoria, isso significa que qualquer pessoa pode copiar seu modelo. No entanto, na prática, a maioria dos modelos são tão específicos do aplicativo e ofuscados por otimizações que o risco é semelhante ao dos concorrentes desmontando e reutilizando seu código. No entanto, você deve estar ciente desse risco antes de usar um modelo personalizado em seu aplicativo.