Guia de tarefas de classificação de imagens

A tarefa MediaPipe Image Classifier permite que você classifique as imagens. Use essa tarefa para identificar o que uma imagem representa entre um conjunto de categorias definidas no momento do treinamento. Essa tarefa opera em dados de imagem com um modelo de machine learning (ML) como dados estáticos ou um fluxo contínuo e gera uma lista de possíveis categorias classificadas por pontuação de probabilidade decrescente.

Faça um teste.

Comece já

Comece a usar essa tarefa seguindo um destes guias de implementação para sua plataforma de destino. Estes guias específicos da plataforma orientam você em uma implementação básica dessa tarefa usando um modelo recomendado e fornecem exemplos de código com as opções de configuração recomendadas:

Detalhes da tarefa

Nesta seção, descrevemos os recursos, as entradas, as saídas e as opções de configuração desta tarefa.

Recursos

  • Processamento de imagem de entrada: o processamento inclui rotação, redimensionamento, normalização e conversão do espaço de cor de imagens.
  • Região de interesse: realize a classificação em uma região da imagem, e não na imagem inteira.
  • Localidade do mapa do marcador: defina o idioma usado para os nomes de exibição.
  • Limite de pontuação: filtre os resultados com base nas pontuações de previsão.
  • Classificação Top-K: limita o número de resultados de classificação.
  • Lista de permissões e de bloqueio de marcadores: especifique as categorias classificadas.
Entradas de tarefas Saídas de tarefas
A entrada pode ser de um destes tipos de dados:
  • Imagens estáticas
  • Frames de vídeo decodificados
  • Feed de vídeo ao vivo
O classificador de imagens gera uma lista de categorias que contém:
  • Índice da categoria: o índice da categoria nos resultados do modelo
  • Pontuação: a pontuação de confiança desta categoria, geralmente uma probabilidade em [0,1]
  • Nome da categoria (opcional): o nome da categoria conforme especificado nos metadados do modelo do TFLite, se disponível
  • Nome de exibição da categoria (opcional): um nome de exibição para a categoria, conforme especificado nos metadados de modelo do TFLite, no idioma especificado pelas opções de localidade de nomes de exibição, se disponíveis.

Opções de configuração

Essa tarefa tem as seguintes opções de configuração:

Nome da opção Descrição Intervalo de valor Valor padrão
running_mode Define o modo de execução da tarefa. Há três modos:

IMAGE: o modo para entradas de imagem única.

VIDEO: o modo para frames decodificados de um vídeo.

LIVE_STREAM: é o modo para uma transmissão ao vivo de dados de entrada, como de uma câmera. Nesse modo, o resultListener precisa ser chamado para configurar um listener para receber resultados de forma assíncrona.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names_locale Define o idioma dos rótulos a ser usado para nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API TensorFlow Lite Metadata Writer Código da localidade en
max_results Define o número máximo opcional de resultados de classificação com a melhor pontuação a ser retornado. Se < 0, todos os resultados disponíveis serão retornados. Qualquer número positivo -1
score_threshold Define o limite de pontuação de previsão que substitui o fornecido nos metadados do modelo (se houver). Os resultados abaixo desse valor são rejeitados. Qualquer ponto flutuante Não definido
category_allowlist Define a lista opcional de nomes de categorias permitidas. Se não estiver em branco, os resultados de classificação com nome de categoria que não estiver nesse conjunto serão filtrados. Nomes de categoria duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_denylist, e o uso de ambos resulta em um erro. Qualquer string Não definido
category_denylist Define a lista opcional de nomes de categorias que não são permitidos. Se não estiver em branco, os resultados de classificação com o nome de categoria nesse conjunto serão filtrados. Nomes de categoria duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_allowlist, e o uso de ambos resulta em um erro. Qualquer string Não definido
result_callback Define o listener de resultados para receber os resultados da classificação de forma assíncrona quando o classificador de imagens está no modo de transmissão ao vivo. Só pode ser usado quando o modo de corrida está definido como LIVE_STREAM N/A Não definido

Modelos

O classificador de imagens exige que um modelo de classificação de imagem seja transferido por download e armazenado no diretório do projeto. Comece com o modelo padrão recomendado para a plataforma de destino ao começar a desenvolver com essa tarefa. Os outros modelos disponíveis normalmente compensam os requisitos de desempenho, precisão, resolução e recursos e, em alguns casos, incluem outros recursos.

O modelo EfficientNet-Lite0 usa uma arquitetura EfficientNet e foi treinado usando o ImageNet para reconhecer 1.000 classes, como árvores, animais, alimentos, veículos, pessoas etc. Veja a lista completa de rótulos compatíveis. O EfficientNet-Lite0 está disponível como um modelo int8 e float 32. Esse modelo é recomendado porque alcança um equilíbrio entre latência e acurácia. Ele é preciso e leve o suficiente para muitos casos de uso.

Nome do modelo Forma de entrada Tipo de quantização Versions
EfficientNet-Lite0 (int8) 224 x 224 int8 Mais recente
EfficientNet-Lite0 (flutuante 32) 224 x 224 Nenhum (float32) Mais recente

Modelo EfficientNet-Lite2

O modelo EfficientNet-Lite2 usa uma arquitetura EfficientNet e foi treinado usando o ImageNet para reconhecer 1.000 classes, como árvores, animais, alimentos, veículos, pessoas etc. Veja a lista completa de rótulos compatíveis. O EfficientNet-Lite2 está disponível como um modelo int8 e float 32. Em geral, esse modelo é mais preciso do que o EfficientNet-Lite0, mas é mais lento e consome mais memória. Esse modelo é apropriado para casos de uso em que a acurácia é uma prioridade maior do que a velocidade ou o tamanho.

Nome do modelo Forma de entrada Tipo de quantização Versions
EfficientNet-Lite2 (int8) (em inglês) 224 x 224 int8 Mais recente
EfficientNet-Lite2 (flutuante 32) 224 x 224 Nenhum (float32) Mais recente

Comparativos de mercado de tarefas

Aqui estão os comparativos de mercado de tarefas para todo o pipeline com base nos modelos pré-treinados acima. O resultado da latência é a latência média no Pixel 6 usando CPU / GPU.

Nome do modelo Latência da CPU Latência da GPU
EfficientNet-Lite0 (flutuante 32) 23,52 ms 18,90 ms
EficientNet-Lite0 (int8) 10,08 ms -
EfficientNet-Lite2 (flutuante 32) 44,17 ms 22,20 ms
EficientNet-Lite2 (int8) 19,43 ms -

Modelos personalizados

Use um modelo de ML personalizado com essa tarefa se você quiser melhorar ou alterar os recursos dos modelos fornecidos. É possível usar o Model Maker para modificar os modelos existentes ou criar um modelo usando ferramentas como o TensorFlow. Os modelos personalizados usados com o MediaPipe precisam estar no formato TensorFlow Lite e incluir metadados específicos que descrevam os parâmetros operacionais do modelo. Considere usar o Model Maker para modificar os modelos fornecidos para essa tarefa antes de criar seu próprio modelo.

Se você quiser criar um classificador de imagens personalizado usando seu próprio conjunto de dados, comece com o tutorial de personalização do classificador de imagens.