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

Classificação de imagem

Use um modelo pré-treinado e otimizado para identificar centenas de classes de objetos, incluindo pessoas, atividades, animais, plantas e lugares.

iniciar

Se você não está familiarizado com o conceito de classificação de imagens, comece lendo O que é classificação de imagens?

Para aprender a usar a classificação de imagens em um aplicativo móvel, recomendamos explorar nossos aplicativos e guias de exemplo .

Se você estiver usando uma plataforma diferente de Android ou iOS, ou se já estiver familiarizado com as APIs TensorFlow Lite, você pode baixar nosso modelo de classificação de imagem inicial e os rótulos que o acompanham.

Baixe o modelo inicial e os rótulos

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. Para obter orientação, consulte Escolha um modelo diferente .

Aplicativos e guias de exemplo

Temos exemplos de aplicativos para classificação de imagens para Android e iOS. Para cada exemplo, fornecemos um guia que explica como funciona.

Android

Veja um exemplo de Android

Leia o guia de exemplo do Android para saber como o aplicativo funciona.

iOS

Veja um exemplo de iOS

Leia o guia de exemplo do iOS para saber como o aplicativo funciona.

Captura de tela

A captura de tela a seguir mostra o exemplo de classificação de imagem do Android.

Captura de tela do exemplo Android

O que é classificação de imagem?

Um uso comum do aprendizado de máquina é identificar o que uma imagem representa. Por exemplo, podemos querer saber que tipo de animal aparece na seguinte fotografia.

cão

A tarefa de prever 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, um modelo pode ser treinado para reconhecer fotos que representam três tipos diferentes de animais: coelhos, hamsters e cães.

Quando, subsequentemente, fornecermos 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

Com base no resultado, podemos ver que o modelo de classificação previu que a imagem tem uma alta probabilidade de representar um cachorro.

Treinamento, rótulos e inferência

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 distinto, ou classe, 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 imagem pode aprender a prever se as novas imagens pertencem a qualquer uma das classes nas quais foi treinado. Este processo de previsão é chamado de inferência .

Para realizar a inferência, uma imagem é passada como entrada para um modelo. O modelo produzirá uma matriz de probabilidades entre 0 e 1. Com nosso modelo de exemplo, esse processo pode ser semelhante ao seguinte:

cão [0,07, 0,02, 0,91]

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

Rótulo Probabilidade
Coelho 0,07
hamster 0,02
cão 0,91

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

Uma vez que as probabilidades sempre somam 1, se a 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

Usos e limitações

Os modelos de classificação de imagem que fornecemos são úteis para a classificação de rótulo único, o que significa prever qual rótulo único a imagem provavelmente representará. Eles são treinados para reconhecer 1000 classes de imagem. 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. Para obter orientação, consulte Escolha um modelo diferente .

Benchmarks de desempenho

Os números de referência de desempenho são gerados com a ferramenta descrita aqui .

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.

Escolha um modelo diferente

Um grande número de modelos de classificação de imagem está disponível em nossa Lista de modelos hospedados . Você deve escolher o modelo ideal para sua aplicação com base no desempenho, precisão e tamanho do modelo. Existem trade-offs entre cada um deles.

atuação

Medimos o desempenho em termos do tempo que um modelo leva para executar inferência em um determinado hardware. Quanto menos 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 do próximo quadro ser 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 desempenho de nossos modelos MobileNet quantizados varia de 3,7 ms a 80,3 ms.

Precisão

Medimos a precisão em termos de frequência com que o modelo classifica corretamente uma imagem. Por exemplo, um modelo com uma precisão declarada de 60% pode classificar uma imagem corretamente em uma média de 60% do tempo.

Nossa lista de modelos hospedados fornece estatísticas de precisão Top-1 e Top-5. Top-1 refere-se a quantas vezes o rótulo correto aparece como o rótulo com a 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.

A precisão do Top-5 de nossos modelos MobileNet quantizados varia de 64,4 a 89,9%.

Tamanho

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 os tamanhos de download do aplicativo) ou ao trabalhar com hardware (onde o armazenamento disponível pode ser limitado).

O tamanho dos nossos modelos MobileNet quantizados varia de 0,5 a 3,4 Mb.

Arquitetura

Diversas arquiteturas de modelo diferentes estão disponíveis na Lista de modelos hospedados , indicada pelo nome do modelo. Por exemplo, você pode escolher entre MobileNet, Inception e outros.

A arquitetura de um modelo impacta seu desempenho, precisão e tamanho. Todos os nossos modelos hospedados são treinados com os mesmos dados, o que significa que você pode usar as estatísticas fornecidas para compará-los e escolher qual é a ideal para sua aplicação.

Personalize o modelo

Os modelos pré-treinados que fornecemos são treinados para reconhecer 1000 classes de imagem. Para uma lista completa de classes, consulte o arquivo de rótulos no zip do modelo .

Você pode usar uma técnica conhecida como 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 no programa Reconhecer flores com o codelab TensorFlow ou com o kit de ferramentas do criador de modelos .