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 do seu aplicativo. E, com a Configuração remota e o teste A/B, você pode servir dinamicamente diferentes modelos para diferentes conjuntos de usuários.
Modelos do TensorFlow Lite
Os modelos TensorFlow Lite são modelos de ML otimizados para execução em dispositivos móveis. Para obter um modelo do TensorFlow Lite:
- Use um modelo pré-construído, como um dos modelos oficiais do TensorFlow Lite
- Converta um modelo do TensorFlow, um modelo Keras ou uma função concreta no TensorFlow Lite.
Observe que, na ausência de uma biblioteca TensorFlow Lite mantida para Dart, você precisará integrar-se à biblioteca nativa do TensorFlow Lite para suas plataformas. Esta integração não está documentada aqui.
Antes de você começar
Instale e inicialize os SDKs do Firebase para Flutter , caso ainda não tenha feito isso.
No diretório raiz do seu projeto Flutter, execute o seguinte comando para instalar o plug-in de download do modelo ML:
flutter pub add firebase_ml_model_downloader
Reconstrua seu projeto:
flutter run
1. Implante seu modelo
Implante seus modelos personalizados do TensorFlow usando o console do Firebase ou os SDKs Firebase Admin Python e Node.js. Consulte Implantar e gerenciar modelos customizados .
Depois de adicionar um modelo personalizado ao seu projeto do Firebase, você poderá referenciar o modelo nos seus aplicativos usando o nome especificado. A qualquer momento, você pode implantar um novo modelo do TensorFlow Lite e fazer download do novo modelo nos dispositivos dos usuários chamando getModel()
(veja abaixo).
2. Baixe o modelo para o dispositivo e inicialize um interpretador TensorFlow Lite
Para usar o modelo do TensorFlow Lite no 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 quando o carregou, 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 nenhum modelo local disponível, ele se comportará como latestModel . Use este tipo de download se não estiver interessado em verificar atualizações de modelo. Por exemplo, você usa 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 nenhum 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, retorna o modelo local. Caso contrário, baixe o modelo mais recente. Este comportamento será bloqueado até que a versão mais recente seja baixada (não recomendado). Use esse comportamento apenas nos casos em que você precisa explicitamente da versão mais recente. |
Você deve desativar a funcionalidade relacionada ao modelo (por exemplo, esmaecer ou ocultar parte da sua UI) até confirmar que o download do modelo foi feito.
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 usar o modelo.
3. Realize inferência nos dados de entrada
Agora que você tem o arquivo de modelo no dispositivo, pode usá-lo com o interpretador TensorFlow Lite para realizar inferências. Na ausência de uma biblioteca TensorFlow Lite mantida para Dart, você precisará integrar com as bibliotecas nativas do TensorFlow Lite para iOS e Android.
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 o seu modelo. No entanto, na prática, a maioria dos modelos são tão específicos da aplicação e ofuscados por otimizações que o risco é semelhante ao dos concorrentes desmontarem e reutilizarem seu código. No entanto, você deve estar ciente desse risco antes de usar um modelo personalizado em seu aplicativo.