Guia de tarefas de classificação de imagens

Um animal rotulado corretamente como flamingo com uma classificação de confiança de 95%

A tarefa do classificador de imagens do MediaPipe permite realizar a classificação de imagens. Você pode usar 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 categorias em potencial classificadas pela pontuação de probabilidade decrescente.

Teste!

Começar

Para começar a usar essa tarefa, siga 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

Esta seção descreve os recursos, entradas, saídas e opções de configuração da tarefa.

Recursos

  • Processamento de imagem de entrada: o processamento inclui rotação, redimensionamento, normalização e conversão de espaço de cores.
  • Região de interesse: realize a classificação em uma região da imagem em vez de toda a imagem.
  • Localização do mapa de rótulos: 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: limite o número de resultados de classificação.
  • Lista de permissões e de bloqueio de rótulos: especifique as categorias classificadas.
Entradas da tarefa Saídas de tarefas
A entrada pode ser um dos seguintes 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 contendo:
  • Índice da categoria: o índice da categoria nas saídas do modelo
  • Pontuação: a pontuação de confiança para essa categoria, geralmente uma probabilidade no intervalo [0,1].
  • Nome da categoria (opcional): o nome da categoria conforme especificado nos metadados do modelo TFLite, se disponível.
  • Nome de exibição da categoria (opcional): um nome de exibição para a categoria conforme especificado nos metadados do modelo TFLite, no idioma especificado nas opções de localidade de nomes de exibição, se disponível.

Opções de configuração

Esta 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.

VÍDEO: o modo para quadros decodificados de um vídeo.

LIVE_STREAM: o modo de 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 serem usados para os nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para o inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API Writer de metadados do TensorFlow Lite. Código de localidade en
max_results Define o número máximo opcional de resultados de classificação com a maior pontuação a serem retornados. Se for < 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). Resultados abaixo desse valor são rejeitados. Qualquer ponto flutuante Não definido
category_allowlist Define a lista opcional de nomes de categorias permitidos. Se não estiver vazio, os resultados de classificação cujo nome de categoria não estiver neste conjunto serão filtrados. Nomes de categorias duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_denylist, e o uso de ambas resulta em um erro. Qualquer string Não definido
category_denylist Define a lista opcional de nomes de categorias não permitidos. Se não estiver vazio, os resultados de classificação cujo nome de categoria estiver neste conjunto serão filtrados. Nomes de categorias duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva de category_allowlist, e o uso das duas resulta em um erro. Qualquer string Não definido
result_callback Define o listener de resultados para receber os resultados de 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 execução está definido como LIVE_STREAM. N/A Não definido

Modelos

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

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. Consulte 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 encontra um equilíbrio entre latência e precisão. Ele é preciso e leve o suficiente para muitos casos de uso.

Nome do modelo Forma de entrada Tipo de quantização Versões
EfficientNet-Lite0 (int8) 224 x 224 int8 Mais recente
EfficientNet-Lite0 (float 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. Consulte a lista completa de rótulos aceitos. O EfficientNet-Lite2 está disponível como um modelo int8 e float 32. Esse modelo geralmente é mais preciso do que o EfficientNet-Lite0, mas também é mais lento e consome mais memória. Esse modelo é adequado para casos de uso em que a precisão tem prioridade maior do que a velocidade ou o tamanho.

Nome do modelo Forma de entrada Tipo de quantização Versões
EfficientNet-Lite2 (int8) 224 x 224 int8 Mais recente
EfficientNet-Lite2 (float 32) 224 x 224 Nenhum (float32) Mais recente

Comparações de mercado de tarefas

Confira os comparativos de mercado da tarefa 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 (float 32) 23,52 ms 18,90 ms
EfficientNet-Lite0 (int8) 10,08 ms -
EfficientNet-Lite2 (float 32) 44,17 ms 22,20 ms
EfficientNet-Lite2 (int8) 19,43 ms -

Modelos personalizados

Você pode usar um modelo de ML personalizado com essa tarefa se quiser melhorar ou alterar os recursos dos modelos fornecidos. Você pode 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 metadata 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 o seu.

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