Treinar um modelo de rotulagem de imagens com o AutoML Vision Edge

Para treinar um modelo de rotulagem de imagens, forneça um conjunto de imagens e rótulos correspondentes ao AutoML Vision Edge. O AutoML Vision Edge usará esse conjunto de dados para treinar um novo modelo na nuvem, que pode ser usado para rotular imagens no dispositivo no app. Consulte a Visão geral para informações gerais sobre esse recurso.

O AutoML Vision Edge é um serviço do Google Cloud. O uso do serviço está sujeito ao Contrato de Licença do Google Cloud Platform e aos Termos específicos de serviço, sendo cobrado de acordo. Para ver as informações de faturamento, consulte a página de Preços do AutoML.

Antes de começar

1. Preparar os dados de treinamento

Primeiro, monte um conjunto de dados de treinamento de imagens rotuladas. Tenha as seguintes diretrizes em mente:

  • As imagens precisam estar em um dos seguintes formatos: JPEG, PNG, GIF, BMP, ICO.

  • Cada imagem precisa ter no máximo 30 MB. Observe que o AutoML Vision Edge reduz a maioria das imagens durante o pré-processamento, portanto geralmente não há benefício de precisão em fornecer imagens de resolução muito alta.

  • Inclua pelo menos 10 e, de preferência, 100 ou mais exemplos de cada rótulo.

  • Inclua vários ângulos, resoluções e planos de fundo para cada rótulo.

  • Os dados de treinamento precisam estar o mais próximo possível dos dados que serão previstos. Por exemplo, se o caso de uso envolver imagens borradas e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento precisarão ser compostos de imagens borradas de baixa resolução.

  • Os modelos gerados pelo AutoML Vision Edge são otimizados para fotografias de objetos no mundo real. Eles podem não funcionar bem para raios X, desenhos a mão, documentos digitalizados, recibos e assim por diante.

    Além disso, os modelos não preveem rótulos que pessoas não sejam capazes de atribuir. Por essa razão, se uma pessoa não conseguir atribuir rótulos após olhar a imagem por um ou dois segundos, provavelmente não será possível treinar o modelo para fazer isso também.

Quando as imagens de treinamento estiverem prontas, prepare-as para serem importadas ao Firebase. Você tem três opções:

Opção 1: arquivo zip estruturado

Organize as imagens de treinamento em diretórios, cada um com o nome de um rótulo e contendo imagens que sejam exemplos desse rótulo. Em seguida, compacte a estrutura do diretório em um arquivo zip.

Os nomes de diretório nesse arquivo zip podem ter até 32 caracteres ASCII e podem conter apenas caracteres alfanuméricos e o caractere sublinhado (_).

Exemplo:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

Opção 2: Cloud Storage com índice CSV

Envie as imagens de treinamento para o Google Cloud Storage e prepare um arquivo CSV listando o URL de cada imagem e, opcionalmente, os rótulos corretos para cada uma delas. Esta opção é útil ao usar conjuntos de dados muito grandes.

Por exemplo, envie as imagens para Cloud Storage e prepare um arquivo CSV como este:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

As imagens precisam ser armazenadas em um intervalo que faça parte do Google Cloud correspondente ao projeto do Google Cloud.

Para mais informações sobre como preparar o arquivo CSV, consulte Como preparar seus dados de treinamento na documentação do Cloud AutoML Vision.

Opção 3: imagens não rotuladas

Rotule suas imagens de treinamento no Console do Firebase depois de enviá-las, individualmente ou em um arquivo zip não estruturado. Para isso, veja a próxima etapa.

2. Treinar o modelo

Em seguida, treine um modelo usando as imagens:

  1. Abra a página Conjuntos de dados do Vision no console Google Cloud. Selecione seu projeto quando solicitado.

  2. Clique em Novo conjunto de dados, forneça um nome para ele, selecione o tipo de modelo que você quer treinar e clique em Criar conjunto de dados.

  3. Na guia Importar do conjunto de dados, faça upload de um arquivo ZIP das imagens de treinamento ou de um arquivo CSV que contenha os locais do Cloud Storage para os quais você fez o upload. Consulte Preparar os dados de treinamento.

  4. Após a conclusão da tarefa de importação, use a guia Imagens para verificar os dados de treinamento e rotular quaisquer imagens sem rótulos.

  5. Na guia Treinar, clique em Iniciar treinamento.

    1. Dê um nome ao modelo e selecione o tipo de modelo Edge.

    2. Defina as configurações de treinamento a seguir, que controlam o desempenho do modelo gerado:

      Otimize o modelo para… A configuração do modelo a ser usada. Será possível treinar modelos menores e mais rápidos quando a latência baixa ou a restrição do tamanho do pacote forem prioritárias ou modelos maiores e mais lentos quando a precisão for mais importante.
      Orçamento de horas de nó

      O tempo máximo, em horas de computação, de treinamento do modelo. Mais tempo de treinamento geralmente resulta em um modelo mais preciso.

      O treinamento poderá ser concluído mais rapidamente do que o especificado se o sistema determinar que o modelo está otimizado e se não for possível melhorar a precisão com mais tempo de treinamento. Você é cobrado apenas pelas horas realmente usadas.

      Tempos de treinamento típicos
      Conjuntos muito pequenos1 hora
      500 imagens2 horas
      1.000 imagens3 horas
      5.000 imagens6 horas
      10.000 imagens7 horas
      50.000 imagens11 horas
      100.000 imagens13 horas
      1.000.000 de imagens18 horas

3. Avalie o modelo

Quando o treinamento for concluído, clique na guia Avaliar para ver as métricas de desempenho do modelo.

Um uso importante desta página é determinar o limite de confiança que funciona melhor para o modelo. O limite de confiança é a confiança mínima que o modelo precisa ter para atribuir um rótulo a uma imagem. Ao mover o controle deslizante de limite de confiança, é possível ver como diferentes limites afetam o desempenho do modelo. Esse desempenho é medido usando duas métricas: precisão e recall.

No contexto da classificação de imagens, precisão é a razão entre o número de imagens que foram corretamente rotuladas e o número de imagens que o modelo rotulou, dado o limite selecionado. Quando um modelo tem alta precisão, ele atribui rótulos incorretamente com menos frequência (menos falsos positivos).

Recall é a proporção do número de imagens que foram corretamente rotuladas para o número de imagens que tinham conteúdo que o modelo deveria ter sido capaz de rotular. Quando um modelo tem alto recall, ele falha em atribuir um rótulo com menos frequência (menos falsos negativos).

Escolher otimizar a precisão ou o recall dependerá do seu caso de uso. Consulte o Guia para iniciantes do AutoML Vision e o Guia de ML inclusivo: AutoML para mais informações.

Quando encontrar um limite de confiança que produza métricas que atendam às suas necessidades, anote-o. Você usará esse limite para configurar o modelo no seu app. É possível usar essa ferramenta a qualquer momento para conseguir um valor de limite apropriado.

4. Publicar ou fazer o download do modelo

Se estiver satisfeito com o desempenho do modelo e quiser usá-lo em um aplicativo, você terá três opções para escolher qualquer combinação: implantar o modelo para previsão on-line, publicar o modelo no Firebase ou fazer o download do modelo e empacotá-lo com seu app.

Implantar o modelo

Na guia Testar e usar do conjunto de dados, é possível implantar o modelo para previsão on-line, que o executa na nuvem. Essa opção é abordada nos documentos do Cloud AutoML. Os documentos neste site tratam das duas opções restantes.

Publicar o modelo

Com a publicação do modelo no Firebase, você pode atualizar o modelo sem liberar uma nova versão do app e usar Remote Config e A/B Testing para exibir dinamicamente diferentes modelos para diferentes conjuntos de usuários.

Se você optar por fornecer o modelo hospedando-o apenas com o Firebase, e não agrupá-lo com o aplicativo, poderá reduzir o tamanho inicial do download do aplicativo. No entanto, lembre-se de que, se o modelo não estiver incluído no seu app, nenhuma função relacionada ao modelo estará disponível até que o app faça o download dele pela primeira vez.

Para publicar seu modelo, use um destes dois métodos:

  • Faça o download do modelo do TF Lite na página Testar e usar do conjunto de dados no Console do Google Cloud e, em seguida, faça upload do modelo na página Modelo personalizado do Console do Firebase. Essa geralmente é a maneira mais fácil de publicar um único modelo.
  • Publique o modelo diretamente do seu projeto do Google Cloud no Firebase usando o SDK Admin. Use esse método para publicar em lote vários modelos ou ajudar a criar pipelines de publicação automatizados.

Para publicar o modelo com a API Management de modelos do SDK Admin, siga estas instruções:

  1. Instale e inicialize o SDK.

  2. Publique o modelo.

    Você precisará especificar o identificador de recurso do modelo, que é uma string semelhante ao exemplo a seguir:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER O número do projeto do bucket Cloud Storage que contém o modelo. Pode ser seu projeto do Firebase ou outro projeto do Google Cloud. Esse valor pode ser encontrado na página "Configurações" do console Firebase ou no painel do console Google Cloud.
    MODEL_ID O ID do modelo que você recebeu da API AutoML do Cloud.

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Fazer o download do modelo e agrupá-lo com o app

Ao agrupar o modelo e o aplicativo, é possível garantir que os recursos de ML do aplicativo ainda funcionem quando o modelo hospedado pelo Firebase não estiver disponível.

Se o modelo for publicado e empacotado com o aplicativo, o aplicativo usará a versão mais recente disponível.

Para fazer o download do modelo, clique em TF Lite na página Testar e usar do conjunto de dados.

Próximas etapas

Agora que você publicou ou fez o download do modelo, saiba como usá-lo nos seus apps iOS+ e Android.