O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Classificação de imagem

A tarefa de identificar o que uma imagem representa é chamada de classificação de imagens . Um modelo de classificação de imagens é treinado para reconhecer várias classes de imagens. Por exemplo, você pode treinar um modelo para reconhecer fotos que representam três tipos diferentes de animais: coelhos, hamsters e cães. O TensorFlow Lite fornece modelos pré-treinados otimizados que você pode implantar em seus aplicativos móveis. Saiba mais sobre a classificação de imagens usando o TensorFlow aqui .

A imagem a seguir mostra a saída do modelo de classificação de imagem no Android.

Captura de tela do exemplo Android

iniciar

Se você é novo no TensorFlow Lite e está trabalhando com Android ou iOS, é recomendável explorar os seguintes aplicativos de exemplo que podem ajudá-lo a começar.

Você pode aproveitar a API pronta para uso da Biblioteca de Tarefas do TensorFlow Lite para integrar modelos de classificação de imagem em apenas algumas linhas de código. Você também pode criar seu próprio pipeline de inferência personalizado usando a Biblioteca de Suporte do TensorFlow Lite .

O exemplo do Android abaixo demonstra a implementação de ambos os métodos como lib_task_api e lib_support , respectivamente.

Veja um exemplo de Android

Veja um exemplo de iOS

Se você estiver usando uma plataforma diferente de Android / iOS ou se já estiver familiarizado com as APIs TensorFlow Lite , baixe o modelo inicial e os arquivos de suporte (se aplicável).

Baixe o modelo inicial

Descrição do modelo

Como funciona

Durante o treinamento, um modelo de classificação de imagem é alimentado com imagens e seus rótulos associados. Cada rótulo é o nome de um conceito ou classe distinto que o modelo aprenderá a reconhecer.

Com dados de treinamento suficientes (geralmente centenas ou milhares de imagens por rótulo), um modelo de classificação de imagens pode aprender a prever se as novas imagens pertencem a alguma das classes nas quais foi treinado. Este processo de previsão é chamado de inferência . Observe que você também pode usar o aprendizado de transferência para identificar novas classes de imagens usando um modelo pré-existente. A aprendizagem por transferência não requer um conjunto de dados de treinamento muito grande.

Quando você subsequentemente fornecer uma nova imagem como entrada para o modelo, ele produzirá as probabilidades da imagem que representa cada um dos tipos de animal em que foi treinado. Um exemplo de saída pode ser o seguinte:

Tipo animal Probabilidade
Coelho 0,07
Hamster 0,02
Cão 0,91

Cada número na saída corresponde a um rótulo nos dados de treinamento. Associando a saída aos três rótulos nos quais o modelo foi treinado, você pode ver que o modelo previu uma alta probabilidade de que a imagem represente um cachorro.

Você pode notar que a soma de todas as probabilidades (para coelho, hamster e cachorro) é igual a 1. Este é um tipo comum de saída para modelos com várias classes (consulte Softmax para obter mais informações).

Resultados ambíguos

Como as probabilidades de saída sempre somam 1, se uma imagem não for reconhecida com segurança como pertencente a qualquer uma das classes nas quais o modelo foi treinado, você poderá ver a probabilidade distribuída por todos os rótulos sem nenhum valor ser significativamente maior.

Por exemplo, o seguinte pode indicar um resultado ambíguo:

Rótulo Probabilidade
Coelho 0,31
hamster 0,35
cão 0,34
Se o seu modelo retorna frequentemente resultados ambíguos, pode ser necessário um modelo diferente e mais preciso.

Escolha de uma arquitetura modelo

O TensorFlow Lite oferece uma variedade de modelos de classificação de imagem, todos treinados no conjunto de dados original. Arquiteturas de modelo como MobileNet, Inception e NASNet estão disponíveis na página de modelos hospedados . Para escolher o melhor modelo para seu caso de uso, você precisa considerar as arquiteturas individuais, bem como algumas das compensações entre os vários modelos. Algumas dessas compensações de modelo são baseadas em métricas como desempenho, precisão e tamanho do modelo. Por exemplo, você pode precisar de um modelo mais rápido para construir um leitor de código de barras, enquanto pode preferir um modelo mais lento e preciso para um aplicativo de imagens médicas. Observe que os modelos de classificação de imagem fornecidos aceitam vários tamanhos de entrada. Para alguns modelos, isso é indicado no nome do arquivo. Por exemplo, o modelo Mobilenet_V1_1.0_224 aceita uma entrada de 224x224 pixels. Todos os modelos requerem três canais de cores por pixel (vermelho, verde e azul). Os modelos quantizados requerem 1 byte por canal e os modelos float requerem 4 bytes por canal. Os exemplos de código do Android e iOS demonstram como processar imagens de câmera em tamanho real no formato necessário para cada modelo.

Usos e limitações

Os modelos de classificação de imagem do TensorFlow Lite são úteis para classificação de rótulo único; ou seja, prever qual rótulo único a imagem provavelmente representará. Eles são treinados para reconhecer 1000 classes de imagens. Para uma lista completa de classes, consulte o arquivo de rótulos no zip do modelo . Se você deseja treinar um modelo para reconhecer novas classes, consulte Personalizar modelo . Para os seguintes casos de uso, você deve usar um tipo diferente de modelo:
  • Prever o tipo e a posição de um ou mais objetos em uma imagem (consulte Detecção de objetos )
  • Previsão da composição de uma imagem, por exemplo, assunto versus fundo (ver Segmentação )
Depois de ter o modelo inicial em execução no dispositivo de destino, você pode experimentar diferentes modelos para encontrar o equilíbrio ideal entre desempenho, precisão e tamanho do modelo.

Personalize o modelo

Os modelos pré-treinados fornecidos são treinados para reconhecer 1000 classes de imagens. Para uma lista completa de classes, consulte o arquivo de rótulos no zip do modelo . Você também pode usar a aprendizagem por transferência para treinar novamente um modelo para reconhecer classes que não estão no conjunto original. Por exemplo, você pode treinar novamente o modelo para distinguir entre diferentes espécies de árvore, apesar de não haver árvores nos dados de treinamento originais. Para fazer isso, você precisará de um conjunto de imagens de treinamento para cada um dos novos rótulos que deseja treinar. Aprenda a realizar o aprendizado de transferência com o TFLite Model Maker ou no codelab Reconhecer flores com TensorFlow.

Benchmarks de desempenho

O desempenho do modelo é medido em termos da quantidade de tempo que leva para um modelo executar inferência em uma determinada peça de hardware. Quanto menor o tempo, mais rápido é o modelo. O desempenho de que você precisa depende do seu aplicativo. O desempenho pode ser importante para aplicativos como vídeo em tempo real, onde pode ser importante analisar cada quadro antes que o próximo quadro seja desenhado (por exemplo, a inferência deve ser mais rápida do que 33 ms para realizar inferência em tempo real em um fluxo de vídeo de 30 fps) . O TensorFlow Lite quantizou a faixa de desempenho dos modelos MobileNet de 3,7 ms a 80,3 ms. Números de benchmark de desempenho são gerados com a ferramenta de benchmarking .
Nome do Modelo Tamanho do modelo Dispositivo NNAPI CPU
Mobilenet_V1_1.0_224_quant 4,3 Mb Pixel 3 (Android 10) 6ms 13ms *
Pixel 4 (Android 10) 3,3ms 5ms *
iPhone XS (iOS 12.4.1) 11ms **

* 4 fios usados.

** 2 fios usados ​​no iPhone para o melhor resultado de desempenho.

Precisão do modelo

A precisão é medida em termos da frequência com que o modelo classifica corretamente uma imagem. Por exemplo, pode-se esperar que um modelo com uma precisão declarada de 60% classifique uma imagem corretamente em uma média de 60% do tempo.

A lista de modelos hospedados fornece estatísticas de precisão Top-1 e Top-5. Top-1 refere-se à frequência com que o rótulo correto aparece como o rótulo com maior probabilidade na saída do modelo. Os 5 principais referem-se à frequência com que o rótulo correto aparece nas 5 probabilidades mais altas na saída do modelo.

O TensorFlow Lite quantificou a faixa de precisão Top-5 dos modelos MobileNet de 64,4 a 89,9%.

Tamanho do modelo

O tamanho de um modelo em disco varia com seu desempenho e precisão. O tamanho pode ser importante para o desenvolvimento móvel (onde pode afetar os tamanhos de download do aplicativo) ou ao trabalhar com hardware (onde o armazenamento disponível pode ser limitado).

Os tamanhos dos modelos de MobileNet quantizados do TensorFlow Lite variam de 0,5 a 3,4 MB.

Leitura adicional e recursos

Use os seguintes recursos para aprender mais sobre os conceitos relacionados à classificação de imagens: