Tutorial: executar a inferência em uma tabela de objetos usando um modelo vetorial de atributo
Neste tutorial, mostramos como criar uma tabela de objetos com base nas imagens do conjunto de dados de flores e como executar a inferência nessa tabela usando o modelo do MobileNet V3.
Modelo do MobileNet V3
O modelo MobileNet V3 analisa arquivos de imagem e retorna uma matriz de vetor de atributo. A matriz de vetor de recurso é uma lista de elementos numéricos que descrevem as características das imagens analisadas. Cada vetor de atributo descreve um espaço de recurso multidimensional e fornece as coordenadas da imagem nesse espaço. É possível usar as informações de vetores do recurso para uma imagem para classificá-la ainda mais, por exemplo, usando a semelhança de cossenos para agrupar imagens semelhantes.
A entrada do modelo MobileNet V3 usa um tensor de
DType
tf.float32 na forma [-1, 224, 224, 3]. A saída é uma matriz de tensores de tf.float32 no formato[-1, 1024].
Permissões necessárias
- Para criar o conjunto de dados, é preciso ter a permissão
bigquery.datasets.create. Para criar o recurso de conexão, você precisa das seguintes permissões:
bigquery.connections.createbigquery.connections.get
Para conceder permissões à conta de serviço da conexão, você precisa da seguinte permissão:
resourcemanager.projects.setIamPolicy
Para criar a tabela de objetos, é preciso ter as seguintes permissões:
bigquery.tables.createbigquery.tables.updatebigquery.connections.delegate
Para criar o bucket, você precisa da permissão
storage.buckets.create.Para fazer upload do conjunto de dados e do modelo no Cloud Storage, você precisa das permissões
storage.objects.createestorage.objects.get.Para carregar o modelo no BigQuery ML, você precisa das seguintes permissões:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Para executar a inferência, você precisa das seguintes permissões:
bigquery.tables.getDatana tabela de objetosbigquery.models.getDatano modelobigquery.jobs.create
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:
- BigQuery: You incur storage costs for the object table you create in BigQuery.
- BigQuery ML: You incur costs for the model you create and the inference you perform in BigQuery ML.
- Cloud Storage: You incur costs for the objects you store in Cloud Storage.
Para mais informações sobre preços de armazenamento do BigQuery, consulte Preços de armazenamento na documentação do BigQuery.
Para mais informações sobre preços do BigQuery ML, consulte Preços do BigQuery ML na documentação do BigQuery.
Consulte a página de preços do Cloud Storage para mais informações.
Antes de começar
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the BigQuery and BigQuery Connection 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.
Criar uma reserva
Para usar um
modelo importado
com uma tabela de objetos, é preciso
criar uma reserva
que use a edição
Enterprise ou Enterprise Plus
do BigQuery
e, em seguida,
criar uma atribuição de reserva
que use o tipo de serviço QUERY.
crie um conjunto de dados
Crie um conjunto de dados chamado mobilenet_inference_test:
SQL
Acessar a página do BigQuery.
No painel Editor, execute a seguinte instrução SQL:
CREATE SCHEMA `PROJECT_ID.mobilenet_inference_test`;
Substitua
PROJECT_IDpela ID do seu projeto.
bq
No console do Cloud de Confiance , ative o Cloud Shell.
Execute o comando
bq mkpara criar o usuário.bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
Substitua
PROJECT_IDpela ID do seu projeto.
Crie uma conexão
Crie uma conexão chamada lake-connection:
Console
Acessar a página do BigQuery.
No painel à esquerda, clique em Explorer:

Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.
No painel Explorer, clique em Adicionar dados.
A caixa de diálogo Adicionar dados é aberta.
No painel Filtrar por, na seção Tipo de fonte de dados, selecione Bancos de dados.
Como alternativa, no campo Pesquisar fontes de dados, insira
Vertex AI.Na seção Fontes de dados em destaque, clique em Vertex AI.
Clique no card da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas, BigLake e Spanner (recurso do Cloud).
No campo ID da conexão, digite
lake-connection.Clique em Criar conexão.
No painel Explorer, expanda seu projeto, clique em Conexões e selecione a conexão
us.lake-connection.No painel Informações da conexão, copie o valor do campo ID da conta de serviço. Você precisa dessas informações para conceder permissão à conta de serviço da conexão no bucket do Cloud Storage criado na próxima etapa.
bq
No Cloud Shell, execute o comando
bq mkpara criar a conexão:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connectionExecute o comando
bq showpara recuperar informações sobre a conexão:bq show --connection us.lake-connectionNa coluna
properties, copie o valor da propriedadeserviceAccountIde salve-o em algum lugars Você precisa dessas informações para conceder permissões à conta de serviço da conexão.
Criar um bucket do Cloud Storage
- Crie um bucket do Cloud Storage.
- Crie duas pastas
no bucket, uma chamada
mobilenetpara os arquivos de modelo e outra chamadaflowerspara o conjunto de dados.
Conceder permissões para a conta de serviço do portal
Console
Acesse a página IAM e administrador.
Clique em Conceder acesso.
A caixa de diálogo Adicionar principais é aberta.
No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar papel, selecione Cloud Storage e, em seguida, selecione Visualizador de objetos do Storage.
Clique em Salvar.
gcloud
No Cloud Shell, execute este comando gcloud storage buckets add-iam-policy-binding:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
Substitua MEMBER pelo ID da conta de serviço que você
copiou anteriormente. Substitua BUCKET_NAME pelo nome do bucket que você acabou de criar.
Para mais informações, consulte Adicionar um principal a uma política no nível do bucket.
Fazer upload do conjunto de dados para o Cloud Storage
Consiga os arquivos de conjunto de dados e disponibilize-os no Cloud Storage:
- Faça o download do conjunto de dados de flores na sua máquina local.
- Descompacte o arquivo
flower_photos.tgz. - Faça upload da pasta
flower_photospara a pastaflowersno bucket criado anteriormente. - Quando o upload for concluído, exclua o arquivo
LICENSE.txtna pastaflower_photos.
Criar uma tabela de objetos
Crie uma tabela de objetos chamada sample_images com base no conjunto de dados de flores enviado:
SQL
Acessar a página do BigQuery.
No painel Editor, execute a seguinte instrução SQL:
CREATE EXTERNAL TABLE mobilenet_inference_test.sample_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://BUCKET_NAME/flowers/*']);
Substitua
BUCKET_NAMEpelo nome do bucket que você acabou de criar.
bq
No Cloud Shell, execute o
comando bq mk
para criar a conexão:
bq mk --table \ --external_table_definition='gs://BUCKET_NAME/flowers/*@us.lake-connection' \ --object_metadata=SIMPLE \ mobilenet_inference_test.sample_images
Substitua BUCKET_NAME pelo nome do bucket que você acabou de criar.
Faça o upload do modelo para o Cloud Storage.
Consiga os arquivos de modelo e disponibilize-os no Cloud Storage:
- Faça o download
do modelo MobileNet V3 para sua máquina local. Isso fornece um arquivo
saved_model.pbe uma pastavariablespara o modelo. - Faça upload do arquivo
saved_model.pbe da pastavariablespara a pastamobilenetno bucket criado anteriormente.
Carregar o modelo no BigQuery ML
Acessar a página do BigQuery.
No painel Editor, execute a seguinte instrução SQL:
CREATE MODEL `mobilenet_inference_test.mobilenet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/mobilenet/*');
Substitua
BUCKET_NAMEpelo nome do bucket que você acabou de criar.
Inspecionar o modelo
Inspecione o modelo enviado para ver quais são os campos de entrada e saída:
Acessar a página do BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda o projeto, clique em Conjuntos de dados e, em seguida, clique no conjunto de dados
mobilenet_inference_test.Acesse a guia Modelos.
Clique no modelo
mobilenet.No painel de modelo que é aberto, clique na guia Esquema.
Confira a seção Rótulos. Isso identifica os campos que são gerados pelo modelo. Nesse caso, o valor do nome do campo é
feature_vector.Veja a seção Recursos. Isso identifica os campos que precisam ser inseridos no modelo. Faça referência a elas na instrução
SELECTda funçãoML.DECODE_IMAGE. Nesse caso, o valor do nome do campo éinputs.
Executar inferência
Execute a inferência na tabela de objetos sample_images usando o modelo mobilenet:
Acessar a página do BigQuery.
No painel Editor, execute a seguinte instrução SQL:
SELECT * FROM ML.PREDICT( MODEL `mobilenet_inference_test.mobilenet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS inputs FROM mobilenet_inference_test.sample_images) );
A resposta deve ficar assim:
-------------------------------------------------------------------------------------------------------------- | feature_vector | uri | inputs | —------------------------------------------------------------------------------------------------------------- | 0.850297749042511 | gs://mybucket/flowers/dandelion/3844111216_742ea491a0.jpg | 0.29019609093666077 | —------------------------------------------------------------------------------------------------------------- | -0.27427938580513 | | 0.31372550129890442 | —------------------------- ------------------------ | -0.23189745843410492 | | 0.039215687662363052 | —------------------------- ------------------------ | -0.058292809873819351 | | 0.29985997080802917 | —-------------------------------------------------------------------------------------------------------------
Limpar
- No console Cloud de Confiance , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.