Tutorial: esegui l'inferenza su una tabella di oggetti utilizzando un modello di classificazione
Questo tutorial mostra come creare una tabella di oggetti basata sulle immagini da un set di dati pubblico, ed esegui l'inferenza sulla tabella dell'oggetto utilizzando Modello ResNet 50.
Il modello ResNet 50
Il modello ResNet 50 analizza i file immagine e restituisce un batch di vettori che rappresentano la probabilità che un'immagine appartenga alla classe corrispondente (logit). Per ulteriori informazioni, consulta la sezione Utilizzo della pagina di TensorFlow Hub del modello.
L'input del modello ResNet 50 prende un tensore di
DType
=
float32
nella forma [-1, 224, 224, 3]
. L'output è un array di
tensori di tf.float32
nella forma[-1, 1024]
.
Autorizzazioni obbligatorie
- Per creare il set di dati, devi disporre dell'autorizzazione
bigquery.datasets.create
. Per creare la risorsa di connessione, devi disporre delle seguenti autorizzazioni:
bigquery.connections.create
bigquery.connections.get
Per concedere le autorizzazioni all'account di servizio della connessione, è necessario il seguente autorizzazione:
resourcemanager.projects.setIamPolicy
Per creare la tabella degli oggetti, devi disporre delle seguenti autorizzazioni:
bigquery.tables.create
bigquery.tables.update
bigquery.connections.delegate
Per creare il bucket, devi disporre dell'autorizzazione
storage.buckets.create
.Per caricare il modello in Cloud Storage, è necessario Autorizzazioni
storage.objects.create
estorage.objects.get
.Per caricare il modello in BigQuery ML, è necessario quanto segue autorizzazioni:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:
bigquery.tables.getData
nella tabella dell'oggettobigquery.models.getData
sul modellobigquery.jobs.create
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- 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.
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Per ulteriori informazioni sui prezzi dello spazio di archiviazione di BigQuery, vedi Prezzi dell'archiviazione in BigQuery documentazione.
Per ulteriori informazioni sui prezzi di BigQuery ML, consulta Prezzi di BigQuery ML in documentazione di BigQuery.
Per ulteriori informazioni sui prezzi di Cloud Storage, consulta Prezzi di Cloud Storage.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery and BigQuery Connection API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery and BigQuery Connection API.
Crea un set di dati
Crea un set di dati denominato resnet_inference_test
:
SQL
Vai alla pagina BigQuery.
Nel riquadro Editor, esegui la seguente istruzione SQL:
CREATE SCHEMA `PROJECT_ID.resnet_inference_test`;
Sostituisci
PROJECT_ID
con l'ID progetto.
bq
Nella console Google Cloud, attiva Cloud Shell.
Esegui l' Comando
bq mk
per creare il set di dati:bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
Sostituisci
PROJECT_ID
con l'ID progetto.
Crea una connessione
Crea una connessione denominata lake-connection
:
Console
Vai alla pagina BigQuery.
Fai clic su
Aggiungi dati e poi fai clic su Origine dati esterna.Nell'elenco Tipo di connessione, seleziona BigLake e funzioni remote (risorsa Cloud).
Nel campo ID connessione, digita
lake-connection
.Fai clic su Crea connessione.
Nel riquadro Informazioni sulla connessione, copia il valore dalla ID account di servizio e salvalo da qualche parte. Ti serve le informazioni per concedere autorizzazioni all'infrastruttura l'account di servizio.
bq
In Cloud Shell, esegui Comando
bq mk
per creare la connessione:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connection
Esegui il comando
bq show
per recuperare le informazioni sulla connessione:bq show --connection us.lake-connection
Dalla colonna
properties
, copia il valore della colonnaserviceAccountId
. e salvarla da qualche parte. Queste informazioni sono necessarie per concedere autorizzazioni allo spazio l'account di servizio.
Crea un bucket Cloud Storage
Crea un bucket Cloud Storage per che contengono i file del modello.
Concedi le autorizzazioni all'account di servizio della connessione
Console
Vai alla sezione IAM e Console di amministrazione.
Fai clic su Concedi l'accesso.
Si apre la finestra di dialogo Aggiungi entità.
Nel campo Nuove entità, inserisci l'ID account di servizio che copiato in precedenza.
Nel campo Seleziona un ruolo, seleziona Cloud Storage e poi Visualizzatore oggetti Storage.
Fai clic su Salva.
gcloud
In Cloud Shell, esegui
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
Sostituisci MEMBER
con l'ID dell'account di servizio che hai
copiato in precedenza. Sostituisci BUCKET_NAME
con il nome
del bucket che hai creato in precedenza.
Per saperne di più, consulta Aggiungere un'entità a livello di bucket .
Crea una tabella di oggetti
Crea una tabella di oggetti denominata vision_images
in base al
file immagine nel bucket gs://cloud-samples-data/vision
pubblico:
SQL
Vai alla pagina BigQuery.
Nel riquadro Editor, esegui la seguente istruzione SQL:
CREATE EXTERNAL TABLE resnet_inference_test.vision_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vision/*.jpg'] );
bq
In Cloud Shell, esegui
Comando bq mk
per creare la connessione:
bq mk --table \
--external_table_definition='gs://cloud-samples-data/vision/*.jpg@us.lake-connection' \
--object_metadata=SIMPLE \
resnet_inference_test.vision_images
Carica il modello in Cloud Storage
Ottieni i file del modello e rendili disponibili in Cloud Storage:
- Scarica
il modello ResNet 50 alla tua macchina locale. Questo ti offre
saved_model.pb
e una cartellavariables
per il modello. - Carica il file
saved_model.pb
e la cartellavariables
al bucket che hai creato in precedenza.
Carica il modello in BigQuery ML
Vai alla pagina BigQuery.
Nel riquadro Editor, esegui la seguente istruzione SQL:
CREATE MODEL `resnet_inference_test.resnet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/*');
Sostituisci
BUCKET_NAME
con il nome del bucket creato in precedenza.
Ispeziona il modello
Esamina il modello caricato per vedere quali sono i suoi campi di input e output:
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto, espandi la
resnet_inference_test
ed espandi il nodo Modelli.Fai clic sul modello
resnet
.Nel riquadro del modello visualizzato, fai clic sulla scheda Schema.
Esamina la sezione Etichette. Identifica i campi di output modello. In questo caso, il valore del nome del campo
activation_49
.Esamina la sezione Funzionalità. Identifica i campi che devono da inserire nel modello. Puoi farne riferimento nell'istruzione
SELECT
per la funzioneML.DECODE_IMAGE
. In questo caso, il valore del nome del campoinput_1
.
Esegui inferenza
Esegui l'inferenza sulla tabella dell'oggetto vision_images
utilizzando il modello resnet
:
Vai alla pagina BigQuery.
Nel riquadro Editor, esegui la seguente istruzione SQL:
SELECT * FROM ML.PREDICT( MODEL `resnet_inference_test.resnet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS input_1 FROM resnet_inference_test.vision_images) );
I risultati dovrebbero essere simili ai seguenti:
------------------------------------------------------------------------------------------------------------------------------------- | activation_49 | uri | input_1 | —------------------------------------------------------------------------------------------------------------------------------------ | 1.0254175464297077e-07 | gs://cloud-samples-data/vision/automl_classification/flowers/daisy/21652746_cc379e0eea_m.jpg | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------ | 2.1671139620593749e-06 | | 0.0 | —-------------------------- ----------- | 8.346052027263795e-08 | | 0.0 | —-------------------------- ----------- | 1.159310958342985e-08 | | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------
Esegui la pulizia
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.