Se o app usa modelos personalizados do TensorFlow Lite, é possível utilizar o Firebase ML para implantar os modelos. Ao fazer isso com o Firebase, você pode reduzir o tamanho inicial do download do app e atualizar os modelos de ML sem lançar uma nova versão do app. Além disso, com o recurso Configuração remota e o Teste A/B, é possível exibir 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 receber um modelo do TensorFlow Lite, faça o seguinte:
- Use um modelo pré-criado, como um dos modelos oficiais do TensorFlow Lite.
- Converta para o TensorFlow Lite um modelo do TensorFlow, um modelo do Keras ou uma função concreta.
Na ausência de uma biblioteca do TensorFlow Lite mantida para Dart, é necessário integrar suas plataformas à biblioteca nativa do TensorFlow Lite. Essa integração não está documentada aqui.
Antes de começar
Instale e inicialize os SDKs do Firebase para o Flutter, caso ainda não tenha feito isso.
No diretório raiz do projeto do Flutter, execute o seguinte comando para instalar o plug-in de download do modelo de ML:
flutter pub add firebase_ml_model_downloader
Recrie seu projeto:
flutter run
1. Implantar seu modelo
Implante seus modelos personalizados do TensorFlow usando o Console do Firebase ou os SDKs Admin para Python e Node.js do Firebase. Consulte Implantar e gerenciar modelos personalizados.
Depois de adicionar um modelo personalizado ao seu projeto do Firebase, você poderá referenciar esse modelo
nos seus apps usando o nome especificado. A qualquer momento, é possível implantar
um novo modelo do TensorFlow Lite e fazer o download dele nos dispositivos dos usuários.
Para isso, chame getModel()
(confira abaixo).
2. Fazer o download do modelo no dispositivo e inicializar um interpretador do TensorFlow Lite
Para usar o modelo do TensorFlow Lite no app, use o downloader de modelos para salvar a versão mais recente dele no seu dispositivo. Em seguida, instancie um interpretador do TensorFlow Lite com o modelo.
Para iniciar o download do modelo, chame o método getModel()
da ferramenta de download de modelos,
especificando o nome atribuído ao modelo durante o upload,
se você quer sempre fazer o download do modelo mais recente e as condições em que
quer permitir o download.
Você pode escolher entre três comportamentos de download:
Tipo de download | Descrição |
---|---|
localModel
|
Consiga o modelo local do dispositivo.
Se não houver um modelo local disponível, o
comportamento será como latestModel . Use esse
tipo de download se você não tiver interesse 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
usando novos nomes (recomendado). |
localModelUpdateInBackground
|
Consiga o modelo local do dispositivo e
comece a atualizá-lo em segundo plano.
Se não houver um modelo local disponível, o
comportamento será como latestModel . |
latestModel
|
Receba o modelo mais recente. Se o modelo local for a versão mais recente, retornará o modelo local. Caso contrário, faça o download do modelo mais recente. Esse comportamento será bloqueado até o download da versão mais recente (não recomendado). Use esse comportamento somente quando precisar da versão mais recente. |
Desative o recurso relacionado ao modelo, por exemplo, usar o recurso esmaecido ou ocultar parte da IU, até confirmar que o download do modelo foi concluído.
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 apps iniciam a tarefa de download no código de inicialização, mas você pode fazer isso a qualquer momento antes de precisar usar o modelo.
3. Fazer a inferência em dados de entrada
Com o arquivo de modelo já no dispositivo, você pode usar o arquivo com o interpretador do TensorFlow Lite para fazer a inferência. Na ausência de uma biblioteca do TensorFlow Lite mantida para Dart, é necessário fazer a integração 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 localmente no formato padrão protobuf serializado.
Teoricamente, isso significa que qualquer pessoa pode copiar seu modelo. No entanto, na prática, a maioria dos modelos é tão específica de cada aplicativo e ofuscada por otimizações que o risco é comparável ao de concorrentes desmontando e reutilizando seu código. Apesar disso, você deve estar ciente desse risco antes de usar um modelo personalizado no seu app.