Modelos personalizados com o Kit de ML

Por padrão, as APIs do ML Kit usam modelos de machine learning treinados pelo Google. Esses modelos foram criados para abranger uma ampla variedade de aplicativos. No entanto, alguns casos de uso exigem modelos mais direcionados. Por isso, algumas APIs do Kit de ML agora permitem substituir os modelos padrão por modelos LiteRT personalizados.

As APIs Image Labeling e Object Detection & Tracking oferecem suporte a modelos personalizados de classificação de imagens. Eles são compatíveis com uma seleção de modelos pré-treinados de alta qualidade no TensorFlow Hub ou com seu próprio modelo personalizado treinado com o TensorFlow ou o AutoML.

Se você precisar de uma solução personalizada para outros domínios ou casos de uso, acesse a página de machine learning no dispositivo para receber orientações sobre todas as soluções e ferramentas do Google para machine learning no dispositivo.

Benefícios de usar o Kit de ML com modelos personalizados

Os benefícios de usar um modelo personalizado de classificação de imagens com o ML Kit são:

  • APIs de alto nível fáceis de usar: não é necessário lidar com entrada/saída de modelo de baixo nível, processamento pré/pós-imagem ou criação de um pipeline de processamento.
  • Não é necessário se preocupar com o mapeamento de rótulos. O Kit de ML extrai os rótulos dos metadados do modelo LiteRT e faz o mapeamento para você.
  • Compatível com modelos personalizados de várias fontes, desde modelos pré-treinados publicados no TensorFlow Hub até modelos novos treinados com o TensorFlow ou o AutoML.
  • Otimizado para integração com as APIs de câmera do Android.

E, especificamente para detecção e rastreamento de objetos:

  • Melhore a acurácia da classificação localizando primeiro os objetos e executando o classificador apenas na área da imagem relacionada.
  • Proporcione uma experiência interativa em tempo real, oferecendo aos seus usuários feedback imediato sobre os objetos à medida que são detectados e classificados.

Usar um modelo de classificação de imagens pré-treinado

Você pode usar modelos LiteRT pré-treinados, desde que atendam a um conjunto de critérios. Pelo TensorFlow Hub, oferecemos um conjunto de modelos verificados (do Google ou de outros criadores) que atendem a esses critérios.

Usar um modelo publicado no TensorFlow Hub

O TensorFlow Hub oferece uma ampla variedade de modelos de classificação de imagens pré-treinados de vários criadores de modelos que podem ser usados com as APIs Image Labeling e Object Detection and Tracking. Siga estas etapas:

  1. Escolha um modelo na coleção de modelos compatíveis com o Kit de ML.
  2. Faça o download do arquivo modelo .tflite na página de detalhes do modelo. Quando disponível, escolha um formato de modelo com metadados.
  3. Siga nossos guias para a API Image Labeling ou a API Object Detection and Tracking sobre como agrupar o arquivo modelo com seu projeto e usá-lo no aplicativo Android ou iOS.

Treinar seu próprio modelo de classificação de imagens

Se nenhum modelo de classificação de imagens pré-treinado atender às suas necessidades, há várias maneiras de treinar seu próprio modelo LiteRT. Algumas delas são descritas e discutidas em mais detalhes na seção a seguir.

Opções para treinar seu próprio modelo de classificação de imagens
AutoML
  • Oferecido pela IA do Google Cloud
  • Criar modelos de classificação de imagens de última geração
  • Avaliação entre desempenho e tamanho
Converter um modelo do TensorFlow para o LiteRT
  • Treinar um modelo com o TensorFlow e convertê-lo para o LiteRT

AutoML

Os modelos de classificação de imagens treinados usando o AutoML são compatíveis com os modelos personalizados nas APIs Image Labeling e Object Detection and Tracking. Essas APIs também oferecem suporte ao download de modelos hospedados no Cloud Storage.

Para saber como usar um modelo treinado com o AutoML em apps Android e iOS, siga os guias de modelo personalizado para cada API, dependendo do seu caso de uso.

Modelos criados usando o conversor LiteRT

Se você tiver um modelo de classificação de imagens do TensorFlow, poderá convertê-lo usando o conversor LiteRT. Verifique se o modelo criado atende aos seguintes requisitos de compatibilidade.

Para saber como usar um modelo LiteRT nos seus apps Android e iOS, siga nossos guias para a API Image Labeling ou a API Object Detection and Tracking, dependendo do seu caso de uso.

Compatibilidade do modelo LiteRT

Você pode usar qualquer modelo de classificação de imagens LiteRT pré-treinado, desde que ele atenda a estes requisitos:

Tensores

  • O modelo precisa ter apenas um tensor de entrada com as seguintes restrições:
    • Os dados estão no formato de pixel RGB.
    • Os dados são do tipo UINT8 ou FLOAT32. Se o tipo de tensor de entrada for FLOAT32, ele precisará especificar o NormalizationOptions anexando Metadata.
    • O tensor tem quatro dimensões : BxHxWxC, em que:
      • B é o tamanho do lote. Precisa ser 1 (não há suporte para inferência em lotes maiores).
      • W e H são a largura e a altura da entrada.
      • C é o número de canais esperados. Precisa ser 3.
  • O modelo precisa ter pelo menos um tensor de saída com N classes e 2 ou 4 dimensões:
    • (1xN)
    • (1x1x1xN)
  • Apenas modelos de uma única cabeça têm suporte total. Os modelos multihead podem gerar resultados inesperados.

Metadados

É possível adicionar metadados ao arquivo LiteRT, conforme explicado em Adicionar metadados aos modelos do LiteRT.

Para usar um modelo com tensor de entrada FLOAT32, especifique NormalizationOptions nos metadados.

Também recomendamos anexar esses metadados ao tensor de saída TensorMetadata:

  • Um mapa de rótulos que especifica o nome de cada classe de saída, como um AssociatedFile com o tipo TENSOR_AXIS_LABELS. Caso contrário, apenas os índices numéricos de classe de saída poderão ser retornados.
  • Um limite de pontuação padrão abaixo do qual os resultados são considerados de confiança muito baixa para serem retornados, como um ProcessUnit com ScoreThresholdingOptions.