Path: blob/master/site/pt-br/lite/models/convert/convert_models.md
39042 views
Converta modelos do TensorFlow
Esta página descreve como converter um modelo do TensorFlow para um do TensorFlow Lite (um formato FlatBuffer otimizado, indicado pela extensão de arquivo .tflite) usando o conversor do TensorFlow Lite.
Observação: este guia pressupõe que você tenha instalado o TensorFlow 2.x e treinado modelos no TensorFlow 2.x. Caso o seu modelo tenha sido treinado no TensorFlow 1.x, considere migrar para o TensorFlow 2.x. Para identificar a versão do TensorFlow instalada, execute print(tf.__version__).
Workflow de conversão
O diagrama abaixo ilustra o workflow geral para converter um modelo:

Figura 1. Workflow do conversor
É possível converter um modelo por uma das seguintes opções:
API do Python (opção recomendada): permite integrar a conversão ao seu pipeline de desenvolvimento, aplicar otimizações, adicionar metadados e realizar diversas outras tarefas que simplificam o processo de conversão.
Linha de comando: tem suporte somente à conversão básica de modelos.
Observação: caso haja problemas durante a conversão do modelo, crie um issue no GitHub.
API do Python
Código auxiliar: para saber mais sobre a API do conversor do TensorFlow Lite, execute print(help(tf.lite.TFLiteConverter)).
Converta um modelo do TensorFlow usando tf.lite.TFLiteConverter. Um modelo do TensorFlow é armazenado usando o formato SavedModel e é gerado usando as APIs de alto nível tf.keras.* (um modelo do Keras) ou as APIs de baixo nível tf.* (a partir das quais você gera funções concretas). Consequentemente, você tem as três opções abaixo (confira os exemplos nas próximas seções):
tf.lite.TFLiteConverter.from_saved_model()(opção recomendada): converte um SavedModel.tf.lite.TFLiteConverter.from_keras_model(): converte um modelo do Keras.tf.lite.TFLiteConverter.from_concrete_functions(): converte funções concretas.
Converta um SavedModel (recomendado)
O exemplo abaixo mostra como converter um SavedModel em um modelo do TensorFlow Lite.
Converta um modelo do Keras
O exemplo abaixo mostra como converter um modelo do Keras em um modelo do TensorFlow Lite.
Converta funções concretas
O exemplo abaixo mostra como converter funções concretas em um modelo do TensorFlow Lite.
Outros recursos
Aplique otimizações. Uma otimização usada com frequência é a quantização pós-treinamento, que pode reduzir a latência e o tamanho do modelo, com perda mínima da exatidão.
Adicione metadados, que facilitam a criação de código encapsulador para plataformas específicas ao implantar modelos em dispositivos.
Erros de conversão
Veja abaixo os erros de conversão comuns e suas respectivas soluções:
Erro:
Some ops are not supported by the native TFLite runtime, you can enable TF kernels fallback using TF Select. See instructions: https://www.tensorflow.org/lite/guide/ops_select. TF Select ops: ..., .., ...(Algumas operações não têm suporte do runtime nativo do TFLite. Você pode ativar o fallback para kernels do TF usando TF Select. Confira as instruções: https://www.tensorflow.org/lite/guide/ops_select. Operações específicas do TF: ..., .., ...)Solução: esse erro ocorre quando seu modelo usa operações do TF que não têm uma implementação correspondente no TF Lite. Para resolver esse problema, basta usar a operação do TF no modelo do TF Lite (recomendado). Se você quiser gerar um modelo somente com operações do TF Lite, pode adicionar uma solicitação para a operação do TF Lite ausente no issue 21526 do GitHub (deixe um comentário caso sua solicitação ainda não tenha sido mencionada) ou pode criar a operação do TF Lite por conta própria.
Erro:
.. is neither a custom op nor a flex op(... não é uma operação personalizada nem uma operação flex).Solução: se essa operação do TF:
Tiver suporte no TF: o erro ocorre porque a operação do TF está ausente na lista de permissão (uma lista completa das operações do TF com suporte no TF Lite). Você pode resolver da seguinte forma:
Não tiver suporte no TF: o erro ocorre porque o TF Lite não conhece o operador do TF personalizado definido por você. É possível resolver da seguinte forma:
Crie e a operação do TF Lite e execute a inferência fazendo sua vinculação ao runtime do TF Lite.
Ferramenta de linha de comando
Observação: é altamente recomendável usar a API do Python indicada acima, se possível.
Se você tiver instalado o TensorFlow 2.x via pip, use o comando tflite_convert. Para ver todos os sinalizadores disponíveis, use o seguinte comando:
Se você tiver baixado o código-fonte do TensorFlow 2.x e quiser executar o conversor a partir dele sem compilar e instalar o pacote, pode substituir 'tflite_convert' por 'bazel run tensorflow/lite/python:tflite_convert --' no comando.
Como converter um SavedModel
Como converter um modelo H5 do Keras
Próximos passos
Use o interpretador do TensorFlow Lite para executar a inferência em um dispositivo cliente (como um dispositivo móvel ou embarcado, por exemplo).