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.
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:
- Android: exemplo de código - Guia
- Python: exemplo de código - Guia
- Web – Exemplo de código – Guia
- iOS - Exemplo de código - Guia
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:
|
O classificador de imagens gera uma lista de categorias que contém:
|
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.
Modelo EfficientNet-Lite0 (recomendado)
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.