Faça anotações em imagens com a função ML.ANNOTATE_IMAGE
Este documento descreve como usar a função ML.ANNOTATE_IMAGE com um modelo remoto para anotar imagens de uma tabela de objetos.
Funções necessárias
Para criar um modelo remoto e anotar imagens, precisa das seguintes funções de gestão de identidade e acesso (IAM) ao nível do projeto:
- Criar e usar conjuntos de dados, tabelas e modelos do BigQuery:
Editor de dados do BigQuery (roles/bigquery.dataEditor)
- Criar, delegar e usar ligações do BigQuery: Administrador de ligações do BigQuery ( - roles/bigquery.connectionsAdmin)- Se não tiver uma associação predefinida configurada, pode criar e definir uma como parte da execução da declaração - CREATE MODEL. Para tal, tem de ter a função de administrador do BigQuery (- roles/bigquery.admin) no seu projeto. Para mais informações, consulte o artigo Configure a ligação predefinida.
- Conceda autorizações à conta de serviço da associação: administrador de IAM do projeto ( - roles/resourcemanager.projectIamAdmin)
- Criar tarefas do BigQuery: utilizador de tarefas do BigQuery ( - roles/bigquery.jobUser)
Estas funções predefinidas contêm as autorizações necessárias para realizar as tarefas descritas neste documento. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
- Crie um conjunto de dados: bigquery.datasets.create
- Crie, delegue e use uma associação:
    bigquery.connections.*
- Defina as autorizações da conta de serviço:
    resourcemanager.projects.getIamPolicyeresourcemanager.projects.setIamPolicy
- Crie uma tabela de objetos:
    bigquery.tables.createebigquery.tables.update
- Crie um modelo e execute a inferência:
    - bigquery.jobs.create
- bigquery.models.create
- bigquery.models.getData
- bigquery.models.updateData
- bigquery.models.updateMetadata
 
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud 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
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the BigQuery, BigQuery Connection API, and Cloud Vision API APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud 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
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the BigQuery, BigQuery Connection API, and Cloud Vision API APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- Na Google Cloud consola, aceda à página BigQuery. 
- No painel esquerdo, clique em Explorador:  - Se não vir o painel do lado esquerdo, clique em Expandir painel do lado esquerdo para o abrir. 
- No painel Explorador, clique no nome do projeto. 
- Clique em Ver ações > Criar conjunto de dados. 
- Na página Criar conjunto de dados, faça o seguinte: - Para ID do conjunto de dados, escreva um nome para o conjunto de dados. 
- Para Tipo de localização, selecione Região ou Várias regiões. - Se selecionou Região, selecione uma localização na lista Região.
- Se selecionou Multirregional, selecione EUA ou Europa na lista Multirregional.
 
- Clique em Criar conjunto de dados. 
 
- Para criar um novo conjunto de dados, use o comando - bq mkcom a flag- --location:- bq --location=LOCATION mk -d DATASET_ID - Substitua o seguinte: - LOCATION: a localização do conjunto de dados.
- DATASET_IDé o ID do conjunto de dados que está a criar.
 
- Confirme que o conjunto de dados foi criado: - bq ls
- Aceda à página do BigQuery. 
- No painel Explorador, clique em Adicionar dados:   - É apresentada a caixa de diálogo Adicionar dados. 
- No painel Filtrar por, na secção Tipo de origem de dados, selecione Aplicações empresariais. - Em alternativa, no campo Pesquisar origens de dados, pode introduzir - Vertex AI.
- Na secção Origens de dados em destaque, clique em Vertex AI. 
- Clique no cartão da solução Modelos da Vertex AI: federação do BigQuery. 
- Na lista Tipo de ligação, selecione Modelos remotos, funções remotas, BigLake e Spanner (recurso da nuvem) da Vertex AI. 
- No campo ID da associação, introduza um nome para a associação. 
- Clique em Criar associação. 
- Clique em Aceder à associação. 
- No painel Informações de associação, copie o ID da conta de serviço para utilização num passo posterior. 
- Num ambiente de linha de comandos, crie uma associação: - bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID - O parâmetro - --project_idsubstitui o projeto predefinido.- Substitua o seguinte: - REGION: a sua região de ligação
- PROJECT_ID: o ID do seu Google Cloud projeto
- CONNECTION_ID: um ID para a sua ligação
 - Quando cria um recurso de ligação, o BigQuery cria uma conta de serviço do sistema única e associa-a à ligação. - Resolução de problemas: se receber o seguinte erro de ligação, atualize o SDK do Google Cloud: - Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of... 
- Obtenha e copie o ID da conta de serviço para utilização num passo posterior: - bq show --connection PROJECT_ID.REGION.CONNECTION_ID - O resultado é semelhante ao seguinte: - name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
- Inicie o Cloud Shell.
- 
    Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform. Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório. export GOOGLE_CLOUD_PROJECT=PROJECT_ID As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform. 
- 
    No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo,main.tf. Neste tutorial, o ficheiro é denominadomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf 
- 
    Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo. Copie o exemplo de código para o ficheiro main.tfcriado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa. 
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
- 
    Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:terraform init -upgrade 
- 
    Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
    atualizar correspondem às suas expetativas:
    terraform plan Faça correções à configuração conforme necessário. 
- 
    Aplique a configuração do Terraform executando o seguinte comando e introduzindo yesno comando:terraform apply Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!). 
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Aceda à página IAM e administrador. 
- Clique em Adicionar. - É apresentada a caixa de diálogo Adicionar responsáveis. 
- No campo Novos membros, introduza o ID da conta de serviço que copiou anteriormente. 
- No campo Selecionar uma função, selecione Utilização do serviço e, de seguida, selecione Consumidor de utilização do serviço. 
- Clique em Adicionar outra função. 
- No campo Selecionar uma função, selecione BigQuery e, de seguida, selecione Utilizador da ligação do BigQuery. 
- Clique em Guardar. 
- PROJECT_NUMBER: o número do seu projeto.
- MEMBER: o ID da conta de serviço que copiou anteriormente.
- PROJECT_ID: o ID do seu projeto.
- DATASET_ID: o ID do conjunto de dados que vai conter o modelo. Este conjunto de dados tem de estar na mesma localização que a ligação que está a usar.
- MODEL_NAME: o nome do modelo.
- REGION: a região usada pela ligação.
- CONNECTION_ID: o ID da associação, por exemplo,- myconnection.- Quando vê os detalhes da associação na Google Cloud consola, o ID da associação é o valor na última secção do ID da associação totalmente qualificado que é apresentado em ID da associação, por exemplo - projects/myproject/locations/connection_location/connections/myconnection.
- PROJECT_ID: o ID do seu projeto.
- DATASET_ID: o ID do conjunto de dados que contém o modelo.
- MODEL_NAME: o nome do modelo.
- OBJECT_TABLE_NAME: o nome da tabela de objetos que contém os URIs das imagens a anotar.
- FEATURE_NAME: o nome de uma funcionalidade da Cloud Vision API suportada.
- Para mais informações sobre a inferência de modelos no BigQuery ML, consulte a Vista geral da inferência de modelos.
- Para mais informações sobre a utilização das APIs de IA da nuvem para realizar tarefas de IA, consulte a vista geral da aplicação de IA.
- Para obter informações sobre as funções e as declarações SQL suportadas para modelos de IA generativa, consulte o artigo Percursos do utilizador ponto a ponto para modelos de IA generativa.
- Experimente o bloco de notas de análise de dados não estruturados com o BigQuery ML e os modelos pré-formados do Vertex AI.
Crie um conjunto de dados
Crie um conjunto de dados do BigQuery para conter os seus recursos:
Consola
bq
Crie uma associação
Pode ignorar este passo se tiver uma associação predefinida configurada ou tiver a função de administrador do BigQuery.
Crie uma ligação de recursos da nuvem para o modelo remoto usar e obtenha a conta de serviço da ligação. Crie a associação na mesma localização que o conjunto de dados que criou no passo anterior.
Selecione uma das seguintes opções:
Consola
bq
Terraform
Use o recurso
google_bigquery_connection.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma associação de recursos da nuvem com o nome my_cloud_resource_connection na região US:
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Conceda acesso à conta de serviço
Selecione uma das seguintes opções:
Consola
gcloud
Use o comando
gcloud projects add-iam-policy-binding:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/serviceusage.serviceUsageConsumer' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/bigquery.connectionUser' --condition=None
Substitua o seguinte:
Se não conceder a autorização, ocorre um erro.
Crie uma tabela de objetos
Crie uma tabela de objetos com conteúdos de imagens. A tabela de objetos permite analisar as imagens sem as mover do Cloud Storage.
O contentor do Cloud Storage usado pela tabela de objetos deve estar no mesmo projeto onde planeia criar o modelo e chamar a função ML.ANNOTATE_IMAGE. Se quiser chamar a função
ML.ANNOTATE_IMAGE num projeto diferente do que
contém o contentor do Cloud Storage usado pela tabela de objetos, tem de
conceder a função de administrador do armazenamento ao nível do contentor.
Criar um modelo
Crie um modelo remoto com um
REMOTE_SERVICE_TYPE de
CLOUD_AI_VISION_V1:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_VISION_V1');
Substitua o seguinte:
Anotar imagens
Faça anotações em imagens com a função ML.ANNOTATE_IMAGE:
SELECT * FROM ML.ANNOTATE_IMAGE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME, STRUCT(['FEATURE_NAME' [,...]] AS vision_features) );
Substitua o seguinte:
Exemplo 1
O exemplo seguinte etiqueta os itens apresentados nas imagens:
SELECT * FROM ML.ANNOTATE_IMAGE( MODEL `myproject.mydataset.myvisionmodel`, TABLE myproject.mydataset.image_table, STRUCT(['label_detection'] AS vision_features) );
Exemplo 2
O exemplo seguinte deteta quaisquer caras apresentadas nas imagens e também devolve atributos de imagem, como cores dominantes:
SELECT * FROM ML.ANNOTATE_IMAGE( MODEL `myproject.mydataset.myvisionmodel`, TABLE myproject.mydataset.image_table, STRUCT(['face_detection', 'image_properties'] AS vision_features) );