Anotar imagens com a função ML.ANNOTATE_IMAGE

Este tutorial explica como usar a função ML.ANNOTATE_IMAGE para extrair insights de dados de imagem não estruturados. Ao trabalhar com grandes repositórios de imagens, talvez seja necessário categorizar automaticamente os arquivos, detectar objetos específicos ou extrair propriedades de imagem para tornar o conjunto de dados pesquisável. Ao criar um modelo remoto do BigQuery ML que se conecta à API Cloud Vision, é possível realizar essas tarefas de análise de imagens diretamente em uma tabela de objetos do BigQuery usando SQL padrão, eliminando a necessidade de mover arquivos ou criar pipelines de dados complexos.

Objetivos

  • Crie um conjunto de dados e uma conexão de recurso.
  • Crie uma tabela de objetos para arquivos de imagem armazenados no Cloud Storage.
  • Crie um modelo remoto que se conecte à API Cloud Vision.
  • Anotar imagens usando a função ML.ANNOTATE_IMAGE.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:

Antes de começar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, BigQuery Connection API, and Cloud Vision API APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Funções exigidas

Para conseguir as permissões necessárias a fim de concluir este tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Criar um conjunto de dados

Para criar um conjunto de dados do BigQuery, selecione uma das seguintes opções:

Console

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

    Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.

  3. Em Explorer, expanda seu projeto e clique em Conjuntos de dados.

  4. Na página Conjuntos de dados, clique em Criar conjunto de dados.

  5. No painel Criar conjunto de dados, faça o seguinte:

    • Para o código do conjunto de dados, insira bqml_tutorial.

    • Em Local dos dados, selecione US.

    Não mude as outras configurações padrão.

  6. Clique em Criar conjunto de dados.

bq

Para criar um conjunto de dados, use o comando bq mk --dataset.

  1. Crie um conjunto de dados chamado bqml_tutorial com o local dos dados definido como US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Confirme se o conjunto de dados foi criado:

    bq ls

API

Chame o método datasets.insert com um recurso de conjunto de dados definido:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

criar uma tabela de objetos

Crie uma tabela de objetos chamada my_object_table com conteúdo de imagens. Com a tabela de objetos, é possível analisar as imagens sem movê-las do Cloud Storage.

O bucket do Cloud Storage usado pela tabela de objetos precisa estar no mesmo projeto em que você planeja criar o modelo e chamar a função ML.ANNOTATE_IMAGE. Se você quiser chamar a função ML.ANNOTATE_IMAGE em um projeto diferente que contém o bucket do Cloud Storage usado pela tabela de objetos, é preciso conceder o papel de Administrador do Storage no nível do bucket

Criar um modelo

Crie um modelo remoto chamado my_model com um REMOTE_SERVICE_TYPE de CLOUD_AI_VISION_V1:

CREATE OR REPLACE MODEL
`PROJECT_ID.bqml_tutorial.my_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_VISION_V1');

Substitua PROJECT_ID pelo ID do projeto.

Anotar imagens

Use a função ML.ANNOTATE_IMAGE com os recursos de sua preferência para anotar imagens na tabela de objetos.

  1. Para rotular os itens mostrados nas imagens, use a função ML.ANNOTATE_IMAGE com o recurso label_detection:

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['label_detection'] AS vision_features)
    );

    Substitua PROJECT_ID pelo ID do projeto.

  2. Para detectar todos os rostos mostrados nas imagens e retornar atributos de imagem, como cores dominantes, use a função ML.ANNOTATE_IMAGE com os recursos face_detection e image_properties:

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['face_detection', 'image_properties'] AS vision_features)
    );

    Substitua PROJECT_ID pelo ID do projeto.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

Console

  1. No console Cloud de Confiance , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

gcloud

    Excluir um projeto do Cloud de Confiance :

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Se você planeja manter o projeto usado neste tutorial, evite mais cobranças excluindo os recursos individuais criados:

  1. Exclua o conjunto de dados:ao fazer isso, você também remove o modelo remoto e a tabela de objetos criada nele.

    • No console Cloud de Confiance , acesse BigQuery Studio.
    • No painel Explorer, expanda o projeto e selecione o conjunto de dados criado.
    • Clique em Ver ações e em Excluir.
    • Na caixa de diálogo, digite delete e clique em Excluir.
  2. Exclua a conexão:

    • No painel Explorer, expanda o nome do projeto e clique em Conexões.
    • Clique no ícone Ver ações ao lado da conexão criada e selecione Excluir.
    • Na caixa de diálogo, clique em Excluir para confirmar.

A seguir