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 classificação de imagens usando o TensorFlow aqui .

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

Captura de tela do exemplo do Android

iniciar

Se você é novo no TensorFlow Lite e trabalha com Android ou iOS, é recomendável explorar os exemplos de aplicativos a seguir 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 imagens 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 Android abaixo demonstra a implementação de ambos os métodos lib_task_api e lib_support , respectivamente.

Veja exemplo do Android

Veja exemplo do iOS

Se você estiver usando uma plataforma diferente de Android/iOS ou se já estiver familiarizado com as APIs do TensorFlow Lite , faça download do modelo inicial e dos 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 imagens recebe imagens e seus rótulos associados. Cada rótulo é o nome de um conceito ou classe distinto que o modelo aprenderá a reconhecer.

Dados 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 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 a aprendizagem por 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ê posteriormente fornecer uma nova imagem como entrada para o modelo, ele produzirá as probabilidades da imagem que representa cada um dos tipos de animais nos quais foi treinado. Um exemplo de saída pode ser o seguinte:

Tipo de animal Probabilidade
Coelho 0,07
Hamster 0,02
Cachorro 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 múltiplas classes (consulte Softmax para obter mais informações).

Resultados ambíguos

Como as probabilidades de saída sempre somarão 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 pelos rótulos sem que nenhum valor seja significativamente maior.

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

Rótulo Probabilidade
coelho 0,31
hamster 0,35
cachorro 0,34
Se o seu modelo retornar frequentemente resultados ambíguos, talvez você precise de um modelo diferente e mais preciso.

Escolhendo uma arquitetura de modelo

O TensorFlow Lite oferece uma variedade de modelos de classificação de imagens, todos treinados no conjunto de dados original. Arquiteturas de modelo como MobileNet, Inception e NASNet estão disponíveis no TensorFlow Hub . 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, mas pode preferir um modelo mais lento e preciso para um aplicativo de imagens médicas. Observe que os modelos de classificação de imagens fornecidos aceitam tamanhos variados 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 flutuantes requerem 4 bytes por canal. Os exemplos de código 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 imagens do TensorFlow Lite são úteis para classificação de rótulo único; isto é, prever qual rótulo único a imagem provavelmente representará. Eles são treinados para reconhecer 1.000 classes de imagens. Para obter uma lista completa de classes, consulte o arquivo de rótulos no modelo zip . Se você quiser 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 )
  • Prever a composição de uma imagem, por exemplo, assunto versus fundo (consulte Segmentação )
Depois de executar o modelo inicial no dispositivo de destino, você poderá experimentar diferentes modelos para encontrar o equilíbrio ideal entre desempenho, precisão e tamanho do modelo.

Personalizar modelo

Os modelos pré-treinados fornecidos são treinados para reconhecer 1.000 classes de imagens. Para obter uma lista completa de classes, consulte o arquivo de rótulos no modelo zip . 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ê poderia treinar novamente o modelo para distinguir entre diferentes espécies de árvores, 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 como realizar o aprendizado por transferência com o TFLite Model Maker ou no codelab Reconhecer flores com TensorFlow .

Referências 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 necessário depende da sua aplicação. O desempenho pode ser importante para aplicações como vídeo em tempo real, onde pode ser importante analisar cada quadro antes de o próximo quadro ser desenhado (por exemplo, a inferência deve ser mais rápida que 33ms para realizar inferência em tempo real em um fluxo de vídeo de 30fps) . O desempenho dos modelos MobileNet quantizados do TensorFlow Lite varia de 3,7 ms a 80,3 ms. Os 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 threads usados ​​no iPhone para 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 média 60% das vezes.

As métricas de precisão mais relevantes sã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. Top-5 refere-se à frequência com que o rótulo correto aparece nas 5 probabilidades mais altas na saída do modelo.

A precisão dos 5 principais modelos MobileNet quantizados do TensorFlow Lite varia de 64,4 a 89,9%.

Tamanho do modelo

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

Os tamanhos dos modelos 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 conceitos relacionados à classificação de imagens: