Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Para treinar um modelo de rotulagem de imagem, você fornece ao AutoML Vision Edge um conjunto de imagens e rótulos correspondentes. O AutoML Vision Edge usa esse conjunto de dados para treinar um novo modelo na nuvem, que você pode usar para rotulagem de imagem no dispositivo em seu aplicativo. (Consulte a Visão geral para obter 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 do Serviço e é cobrado de acordo. Para obter informações de faturamento, consulte a página de preços do AutoML.

Antes de você começar

1. Reúna seus dados de treinamento

Primeiro, você precisa montar um conjunto de dados de treinamento de imagens rotuladas. Tenha em mente as seguintes diretrizes:

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

  • Cada imagem deve ter 30 MB ou menos. Observe que o AutoML Vision Edge reduz a escala da 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 preferencialmente 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 devem estar o mais próximo possível dos dados sobre os quais as previsões devem ser feitas. Por exemplo, se seu caso de uso envolver imagens desfocadas e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento devem ser compostos de imagens desfocadas e 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 à mão, documentos digitalizados, recibos e assim por diante.

    Além disso, os modelos geralmente não podem prever rótulos que os humanos não podem atribuir. Portanto, se um humano não puder atribuir rótulos observando a imagem por 1-2 segundos, o modelo provavelmente também não poderá ser treinado para fazê-lo.

Quando você tiver suas imagens de treinamento prontas, prepare-as para importar para o Firebase. Você tem três opções:

Opção 1: arquivo zip estruturado

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

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

Por 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

Faça upload de suas 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 imagem. Essa opção é útil ao usar conjuntos de dados muito grandes.

Por exemplo, faça upload de suas imagens para o 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 bucket que faça parte do projeto do Google Cloud correspondente ao seu projeto do Firebase.

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

Opção 3: imagens sem rótulo

Rotule suas imagens de treinamento no console do Firebase depois de carregá-las, individualmente ou em um arquivo zip não estruturado. Veja o próximo passo.

2. Treine seu modelo

Em seguida, treine um modelo usando suas imagens:

  1. Abra a página Vision Datasets no Console do Google Cloud. Selecione seu projeto quando solicitado.

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

  3. Na guia Importar do seu conjunto de dados, faça upload de um arquivo zip de suas imagens de treinamento ou de um arquivo CSV contendo os locais do Cloud Storage para os quais você as enviou. Consulte Montar seus 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 todas as imagens não rotuladas.

  5. Na guia Treinar , clique em Iniciar treinamento .

    1. Nomeie o modelo e selecione o tipo de modelo Edge .

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

      Otimize o modelo para... A configuração do modelo a ser usada. Você pode treinar modelos mais rápidos e menores quando baixa latência ou tamanho de pacote pequeno são importantes, ou modelos mais lentos e maiores quando a precisão é mais importante.
      Orçamento de horas do nó

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

      Observe que o treinamento pode ser concluído em menos tempo do que o especificado se o sistema determinar que o modelo está otimizado e o treinamento adicional não melhorar a precisão. Você é cobrado apenas pelas horas realmente usadas.

      Tempos típicos de treinamento
      Conjuntos muito pequenos 1 hora
      500 imagens 2 horas
      1.000 imagens 3 horas
      5.000 imagens 6 horas
      10.000 imagens 7 horas
      50.000 imagens 11 horas
      100.000 imagens 13 horas
      1.000.000 de imagens 18 horas

3. Avalie seu modelo

Quando o treinamento for concluído, você poderá clicar 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 seu modelo. O limite de confiança é a confiança mínima que o modelo deve ter para atribuir um rótulo a uma imagem. Ao mover o controle deslizante de limite de confiança , você pode ver como diferentes limites afetam o desempenho do modelo. O desempenho do modelo é medido usando duas métricas: precisão e recall .

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

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

Se você otimizar para precisão ou recall dependerá do seu caso de uso. Consulte o guia para iniciantes do AutoML Vision e o guia Inclusive ML - AutoML para obter mais informações.

Quando encontrar um limite de confiança que produza métricas com as quais você se sinta confortável, anote-o; você usará o limite de confiança para configurar o modelo em seu aplicativo. (Você pode usar essa ferramenta a qualquer momento para obter um valor limite apropriado.)

4. Publique ou baixe seu modelo

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

Implantar o modelo

Na guia Teste e uso do seu conjunto de dados, você pode implantar seu modelo para previsão online, que executa seu modelo na nuvem. Essa opção é abordada nos documentos do Cloud AutoML . Os documentos neste site tratam das duas opções restantes.

Publicar o modelo

Ao publicar o modelo no Firebase, você pode atualizar o modelo sem lançar uma nova versão do app e usar o Configuração remota e o teste A/B para veicular dinamicamente diferentes modelos para diferentes conjuntos de usuários.

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

Para publicar seu modelo, você pode usar um dos dois métodos:

  • Faça o download do modelo do TF Lite na página Teste e uso do conjunto de dados no Console do Google Cloud e faça upload do modelo na página Modelo personalizado do console do Firebase. Geralmente, essa é 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. Você pode usar esse método para publicar vários modelos em lote ou para ajudar a criar pipelines de publicação automatizados.

Para publicar o modelo com a API de gerenciamento de modelos do SDK Admin :

  1. Instale e inicialize o SDK .

  2. Publique o modelo.

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

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER O número do projeto do bucket do Cloud Storage que contém o modelo. Este pode ser seu projeto do Firebase ou outro projeto do Google Cloud. Você pode encontrar esse valor na página Configurações do console do Firebase ou no painel do Console do Google Cloud.
    MODEL_ID O ID do modelo, obtido da API AutoML Cloud.

    Pitão

    # 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);
    

Baixe e agrupe o modelo com seu aplicativo

Ao agrupar seu modelo com seu aplicativo, você garante que os recursos de ML do seu aplicativo ainda funcionem quando o modelo hospedado pelo Firebase não estiver disponível.

Se você publicar o modelo e agrupá-lo com seu aplicativo, o aplicativo usará a versão mais recente disponível.

Para baixar seu modelo, clique em TF Lite na página Teste e uso do seu conjunto de dados.

Próximos passos

Agora que você publicou ou baixou o modelo, saiba como usar o modelo em seus aplicativos iOS+ e Android .