Path: blob/master/site/pt-br/lite/models/convert/convert_models.md
25118 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).