Um modelo de detecção de objetos é semelhante a um modelo de rotulagem de imagens, mas em vez de atribuir rótulos a imagens inteiras, ele atribui rótulos a regiões das imagens. Você pode usar modelos de detecção de objetos para reconhecer e localizar objetos em uma imagem ou para rastrear os movimentos de um objeto em uma série de imagens.
Para treinar um modelo de detecção de objetos, você fornece ao AutoML Vision Edge um conjunto de imagens com rótulos e limites de objetos correspondentes. O AutoML Vision Edge usa esse conjunto de dados para treinar um novo modelo na nuvem, que pode ser usado para detecção de objetos no dispositivo.
Antes de você começar
Se você ainda não tem um projeto do Firebase, crie um no console do Firebase .
Familiarize-se com as diretrizes apresentadas no guia Inclusive ML - AutoML .
Se você quiser apenas experimentar o AutoML Vision Edge e não tiver seus próprios dados de treinamento, baixe um conjunto de dados de amostra como um dos seguintes:
- Um dos conjuntos de dados recomendados do TensorFlow.
- Um conjunto de dados hospedado no Kaggle .
1. Reúna seus dados de treinamento
Primeiro, você precisa reunir 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 maioria das imagens durante o pré-processamento, portanto, geralmente não há benefício de precisão no fornecimento de 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 etiqueta.
Os dados de treinamento devem estar o mais próximos possível dos dados sobre os quais as previsões serão feitas. Por exemplo, se o seu caso de uso envolver imagens desfocadas e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento deverão ser compostos por imagens desfocadas e de baixa resolução.
Os modelos gerados pelo AutoML Vision Edge são otimizados para fotografias de objetos do mundo real. Eles podem não funcionar bem para radiografias, desenhos manuais, documentos digitalizados, recibos e assim por diante.
Além disso, os modelos geralmente não conseguem prever rótulos que os humanos não possam atribuir. Portanto, se um ser humano não consegue atribuir rótulos olhando a imagem por 1 a 2 segundos, o modelo provavelmente também não poderá ser treinado para fazer isso.
Quando você tiver suas imagens de treinamento prontas, prepare-as para importação para o Google Cloud. Você tem duas opções:
Opção 1: Cloud Storage com índice CSV
Faça upload das imagens de treinamento para o Google Cloud Storage e prepare um arquivo CSV listando o URL de cada imagem e, opcionalmente, os rótulos de objeto corretos e as regiões delimitadoras de cada imagem. Esta opção é útil ao usar grandes conjuntos de dados.
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,0.2,0.4,,,0.3,0.5,, gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,, gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,
As caixas delimitadoras de objetos são especificadas como coordenadas relativas na imagem. Consulte Formatando um CSV de dados de treinamento .
As imagens devem ser armazenadas em um bucket que esteja na região us-central1
e faça parte do projeto Google Cloud correspondente do seu projeto Firebase.
Opção 2: imagens não rotuladas
Rotule suas imagens de treinamento e desenhe limites de objetos no console do Google Cloud depois de fazer upload delas. Isso é recomendado apenas para pequenos conjuntos de dados. Veja o próximo passo.
2. Treine seu modelo
A seguir, treine um modelo usando suas imagens:
Abra a página Vision Datasets no console do Google Cloud. Selecione seu projeto quando solicitado.
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 .
Na guia Importar do conjunto de dados, faça upload das imagens de treinamento, um arquivo zip das imagens de treinamento ou um arquivo CSV contendo os locais do Cloud Storage para os quais você as enviou. Consulte Montar seus dados de treinamento .
Após a conclusão da tarefa de importação, use a guia Imagens para verificar os dados de treinamento.
Se você não carregou um CSV, para cada imagem, desenhe caixas delimitadoras ao redor dos objetos que deseja reconhecer e rotule cada objeto.
Na guia Treinar , clique em Iniciar treinamento .
Nomeie o modelo e selecione o tipo de modelo Edge .
Configure as seguintes configurações de treinamento, que controlam o desempenho do modelo gerado:
Otimizar modelo para... A configuração do modelo a ser usada. Você pode treinar modelos menores e mais rápidos quando a baixa latência ou o tamanho do pacote pequeno são importantes, ou modelos maiores e mais lentos quando a precisão é mais importante. Orçamento de horas de nó O tempo máximo, em horas de computação, gasto no treinamento do modelo. Mais tempo de treinamento geralmente resulta em um modelo mais preciso.
Observe que o treinamento pode ser concluído em menos do que o tempo especificado se o sistema determinar que o modelo está otimizado e o treinamento adicional não melhorar a precisão. Você será cobrado apenas pelas horas efetivamente utilizadas.
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 o 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 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).
A otimização 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 você 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 esta 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, das quais pode escolher qualquer combinação: implantar o modelo para previsão on-line, publicar o modelo no Firebase ou baixar o 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 on-line, que executa seu modelo na nuvem. Essa opção é abordada na documentação do Cloud AutoML . Os documentos deste site tratam das duas opções restantes.
Publique o modelo
Ao publicar o modelo no Firebase, você pode atualizá-lo sem lançar uma nova versão do aplicativo e pode usar a 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 no Firebase e não agrupá-lo ao seu aplicativo, poderá reduzir o tamanho inicial do download do seu aplicativo. Tenha em mente, porém, que se o modelo não estiver incluído no seu aplicativo, qualquer funcionalidade relacionada ao modelo não estará disponível até que seu aplicativo baixe o modelo pela primeira vez.
Para publicar seu modelo, você pode usar um destes dois métodos:
- Faça download do modelo TF Lite na página Teste e uso do seu 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. 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 Admin SDK. 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 Admin SDK:
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 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 na 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ê pode garantir 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 usá-lo em seus aplicativos iOS+ e Android .