Esta página foi traduzida pela API Cloud Translation.
Switch to English

Primeiros passos com TensorFlow Lite

O TensorFlow Lite fornece todas as ferramentas de que você precisa para converter e executar modelos do TensorFlow em dispositivos móveis, incorporados e IoT. O guia a seguir percorre cada etapa do fluxo de trabalho do desenvolvedor e fornece links para instruções adicionais.

1. Escolha um modelo

Um modelo do TensorFlow é uma estrutura de dados que contém a lógica e o conhecimento de uma rede de aprendizado de máquina treinada para resolver um problema específico. Há muitas maneiras de obter um modelo do TensorFlow, desde o uso de modelos pré-treinados até o seu próprio treinamento.

Para usar um modelo com o TensorFlow Lite, é necessário converter um modelo completo do TensorFlow no formato TensorFlow Lite. Não é possível criar ou treinar um modelo usando o TensorFlow Lite. Portanto, você deve começar com um modelo regular do TensorFlow e, em seguida, converter o modelo .

Use um modelo pré-treinado

A equipe do TensorFlow Lite oferece um conjunto de modelos pré-treinados que resolvem uma variedade de problemas de aprendizado de máquina. Esses modelos foram convertidos para funcionar com o TensorFlow Lite e estão prontos para uso em seus aplicativos.

Os modelos pré-treinados incluem:

Veja nossa lista completa de modelos pré-treinados em Modelos .

Modelos de outras fontes

Existem muitos outros lugares onde você pode obter modelos pré-treinados do TensorFlow, incluindo o TensorFlow Hub . Na maioria dos casos, esses modelos não serão fornecidos no formato TensorFlow Lite e você terá que convertê- los antes do uso.

Treine novamente um modelo (aprendizagem por transferência)

A aprendizagem por transferência permite que você pegue um modelo treinado e o treine novamente para executar outra tarefa. Por exemplo, um modelo de classificação de imagem pode ser retreinado para reconhecer novas categorias de imagem. O retreinamento leva menos tempo e requer menos dados do que treinar um modelo do zero.

Você pode usar o aprendizado de transferência para personalizar modelos pré-treinados para seu aplicativo. Aprenda a realizar o aprendizado de transferência no codelab Reconhecer flores com TensorFlow.

Treine um modelo personalizado

Se você projetou e treinou seu próprio modelo do TensorFlow ou treinou um modelo obtido de outra fonte, deve convertê-lo para o formato TensorFlow Lite .

Você também pode experimentar a biblioteca TensorFlow Lite Model Maker, que simplifica o processo de treinamento de um modelo TensorFlow Lite usando conjuntos de dados personalizados.

2. Converta o modelo

O TensorFlow Lite foi projetado para executar modelos com eficiência em dispositivos móveis e outros dispositivos incorporados com recursos de computação e memória limitados. Parte dessa eficiência vem do uso de um formato especial para armazenar modelos. Os modelos do TensorFlow devem ser convertidos nesse formato antes de serem usados ​​pelo TensorFlow Lite.

A conversão de modelos reduz o tamanho do arquivo e introduz otimizações que não afetam a precisão. O conversor TensorFlow Lite oferece opções que permitem reduzir ainda mais o tamanho do arquivo e aumentar a velocidade de execução, com algumas desvantagens.

Conversor TensorFlow Lite

O conversor TensorFlow Lite é uma ferramenta disponível como uma API Python que converte modelos treinados do TensorFlow no formato TensorFlow Lite. Ele também pode apresentar otimizações, que são abordadas na seção 4, Otimize seu modelo .

O exemplo a seguir mostra um TensorFlow SavedModel sendo convertido no formato TensorFlow Lite:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

Você pode converter modelos do TensorFlow 2.0 de maneira semelhante.

O conversor também pode ser usado na linha de comando , mas a API Python é recomendada.

Opções

O conversor pode converter vários tipos de entrada.

Ao converter modelos do TensorFlow 1.x , estes são:

Ao converter modelos do TensorFlow 2.x , estes são:

O conversor pode ser configurado para aplicar várias otimizações que podem melhorar o desempenho ou reduzir o tamanho do arquivo. Isso é abordado na seção 4, Otimize seu modelo .

Compatibilidade de operações

O TensorFlow Lite atualmente oferece suporte a um subconjunto limitado de operações do TensorFlow . A meta de longo prazo é que todas as operações do TensorFlow sejam compatíveis.

Se o modelo que você deseja converter contém operações incompatíveis, você pode usar o TensorFlow Select para incluir operações do TensorFlow. Isso resultará na implantação de um binário maior nos dispositivos.

3. Execute inferência com o modelo

Inferência é o processo de execução de dados por meio de um modelo para obter previsões. Requer um modelo, um intérprete e dados de entrada.

Intérprete TensorFlow Lite

O interpretador TensorFlow Lite é uma biblioteca que pega um arquivo de modelo, executa as operações que define nos dados de entrada e fornece acesso à saída.

O interpretador funciona em várias plataformas e fornece uma API simples para executar modelos TensorFlow Lite de Java, Swift, Objective-C, C ++ e Python.

O código a seguir mostra o intérprete sendo chamado de Java:

try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
  interpreter.run(input, output);
}

Aceleração GPU e delegados

Alguns dispositivos fornecem aceleração de hardware para operações de aprendizado de máquina. Por exemplo, a maioria dos telefones celulares tem GPUs, que podem realizar operações de matriz de ponto flutuante mais rápido do que uma CPU.

A aceleração pode ser substancial. Por exemplo, um modelo de classificação de imagem MobileNet v1 é executado 5,5x mais rápido em um telefone Pixel 3 quando a aceleração de GPU é usada.

O interpretador TensorFlow Lite pode ser configurado com Delegados para usar a aceleração de hardware em diferentes dispositivos. O GPU Delegate permite que o intérprete execute operações apropriadas na GPU do dispositivo.

O código a seguir mostra o GPU Delegate sendo usado em Java:

GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(tensorflow_lite_model_file, options);
try {
  interpreter.run(input, output);
}

Para adicionar suporte para novos aceleradores de hardware, você pode definir seu próprio delegado .

Android e iOS

O interpretador TensorFlow Lite é fácil de usar nas principais plataformas móveis. Para começar, explore os guias de início rápido do Android e os guias de início rápido do iOS . Aplicativos de exemplo estão disponíveis para ambas as plataformas.

Para obter as bibliotecas necessárias, os desenvolvedores Android devem usar o TensorFlow Lite AAR . Os desenvolvedores iOS devem usar o CocoaPods for Swift ou Objective-C .

Linux

Embedded Linux é uma plataforma importante para implantação de aprendizado de máquina. Para começar a usar Python para realizar inferências com seus modelos do TensorFlow Lite, siga o guia de início rápido do Python .

Para instalar a biblioteca C ++, consulte as instruções de construção para placas baseadas em Raspberry Pi ou Arm64 (para placas como Odroid C2, Pine64 e NanoPi).

Microcontroladores

TensorFlow Lite para Microcontroladores é uma porta experimental do TensorFlow Lite voltada para microcontroladores e outros dispositivos com apenas kilobytes de memória.

Operações

Se o seu modelo requer operações do TensorFlow que ainda não foram implementadas no TensorFlow Lite, você pode usar o TensorFlow Select para usá-las no seu modelo. Você precisará construir uma versão personalizada do interpretador que inclui as operações do TensorFlow.

Você pode usar operadores personalizados para escrever suas próprias operações ou transferir novas operações para o TensorFlow Lite.

As versões do operador permitem adicionar novas funcionalidades e parâmetros às operações existentes.

4. Otimize seu modelo

O TensorFlow Lite fornece ferramentas para otimizar o tamanho e o desempenho dos seus modelos, geralmente com impacto mínimo na precisão. Os modelos otimizados podem exigir um treinamento, conversão ou integração um pouco mais complexo.

A otimização do aprendizado de máquina é um campo em evolução, e o Model Optimization Toolkit do TensorFlow Lite está crescendo continuamente à medida que novas técnicas são desenvolvidas.

atuação

O objetivo da otimização do modelo é atingir o equilíbrio ideal entre desempenho, tamanho do modelo e precisão em um determinado dispositivo. As melhores práticas de desempenho podem ajudar a orientá-lo nesse processo.

Quantização

Ao reduzir a precisão de valores e operações dentro de um modelo, a quantização pode reduzir o tamanho do modelo e o tempo necessário para inferência. Para muitos modelos, há apenas uma perda mínima de precisão.

O conversor TensorFlow Lite facilita a quantização de modelos TensorFlow. O seguinte código Python quantiza um SavedModel e o salva em disco:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_quantized_model)

O TensorFlow Lite oferece suporte à redução da precisão de valores de ponto flutuante completo para flutuações de meia precisão (float16) ou inteiros de 8 bits. Existem vantagens e desvantagens no tamanho do modelo e na precisão de cada opção, e algumas operações otimizaram implementações para esses tipos de precisão reduzida.

Para saber mais sobre quantização, consulte Quantização pós-treinamento .

Kit de ferramentas de otimização de modelo

O Model Optimization Toolkit é um conjunto de ferramentas e técnicas projetadas para tornar mais fácil para os desenvolvedores otimizarem seus modelos. Muitas das técnicas podem ser aplicadas a todos os modelos do TensorFlow e não são específicas do TensorFlow Lite, mas são especialmente valiosas ao executar inferência em dispositivos com recursos limitados.

Próximos passos

Agora que você está familiarizado com o TensorFlow Lite, explore alguns dos seguintes recursos: