Etichettare i video tramite la riga di comando
Questa guida rapida illustra la procedura per:
- Copia di un insieme di video in Cloud Storage.
- Creazione di file CSV che elencano i video e le relative etichette.
- Utilizzare AutoML Video per creare il set di dati, addestrare e utilizzare il modello.
Prima di iniziare
Configura il progetto
- 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.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Crea un progetto Google Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML and Cloud Storage.
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Crea un progetto Google Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML and Cloud Storage.
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Imposta la variabile di ambiente
PROJECT_ID
sul tuo ID progetto.export PROJECT_ID=PROJECT_ID
Le chiamate e i nomi delle risorse dell'API AutoML includono il tuo ID progetto. La variabile di ambientePROJECT_ID
offre un modo pratico per specificare l'ID.
Crea un set di dati e importa i dati di addestramento
Crea un set di dati
Scegli un nome per il set di dati e utilizza i seguenti comandi curl
o PowerShell per creare un nuovo set di dati con quel nome.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- dataset-name: nome del set di dati da mostrare nell'interfaccia
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Corpo JSON richiesta:
{ "displayName": "dataset-name", "videoClassificationDatasetMetadata": { } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
" https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri " https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets" | Select-Object -Expand Content
name
per la tua
operazione. Di seguito è riportato un esempio di tale risposta, dove project-number
è il numero del progetto e operation-id
è l'ID dell'operazione a lunga esecuzione creata per la richiesta.
Importa dati di addestramento
REST
Per importare i dati di addestramento, utilizza il metodoimportData
. Questo metodo richiede due parametri:
- il percorso del file CSV che contiene i percorsi dell'addestramento
- i file CSV dei dati di test. Nota: questi file sono resi disponibili nel bucket "automl-video-demo-data" su Cloud Storage.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- input-uri: un bucket Cloud Storage che contiene il file su cui vuoi annotare,
incluso il nome del file. Deve iniziare con gs://. Ad esempio:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1.csv"]
- dataset-id: sostituiscilo con l'identificatore del set di dati (non il nome visualizzato). Ad esempio:
VCN4798585402963263488
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData
Corpo JSON richiesta:
{ "inputConfig": { "gcsSource": { "inputUris": input-uri } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
" https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri " https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData" | Select-Object -Expand Content
VCN7506374678919774208
.
Verifica lo stato dell'operazione di importazione
Puoi eseguire query sullo stato dell'operazione di importazione dei dati utilizzando i seguenti comandi curl
o PowerShell.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- operation-id: sostituisci con l'ID dell'operazione di importazione dei dati.
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
nello stato dell'operazione senza errori, come mostrato nell'esempio seguente.
Elenco di tutti i set di dati
Utilizza i seguenti comandi curl
o PowerShell per ottenere un elenco dei tuoi set di dati e il numero di video di esempio importati nel set di dati.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, quest'ultima viene determinata in base alla località del file video.
Metodo HTTP e URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
addestra il modello
Avvia un'operazione di addestramento di un modello
Dopo aver creato il set di dati e importato i dati di addestramento nel set di dati, puoi addestrare il modello.
Addestra il modello utilizzando i seguenti comandi curl
o PowerShell.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- dataset-id: l'ID è l'ultimo elemento del nome del set di dati.
Ad esempio, se il nome del set di dati è
projects/434039606874/locations/us-central1/datasets/VCN3104518874390609379
, l'ID del set di dati èVCN3104518874390609379
. - Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
Corpo JSON richiesta:
{ "displayName": "test_model", "dataset_id": "dataset-id", "videoClassificationModelMetadata": {} }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models" | Select-Object -Expand Content
{ "name": "projects/project-number/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "progressPercentage": 100, "createTime": "2020-02-27T01:56:28.395640Z", "updateTime": "2020-02-27T02:04:12.336070Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model", "name": "projects/project-number/locations/location-id/models/operation-id", "createTime": "2020-02-27T02:00:22.329970Z", "videoClassificationModelMetadata": { "trainBudget": "1", "trainCost": "1", "stopReason": "BUDGET_REACHED" }, "displayName": "a_98487760535e48319dd204e6394670" } }
Visualizza lo stato dell'operazione di addestramento del modello
Addestra il modello utilizzando i seguenti comandi curl
o PowerShell.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- operation-id: sostituisci con l'ID dell'operazione di addestramento.
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
senza errori.
Verifica che il modello sia disponibile
Una volta completata l'operazione di addestramento del modello, puoi verificare che il modello sia disponibile utilizzando i seguenti comandi curl
o PowerShell per elencare i modelli per il tuo progetto.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- dataset-id: sostituiscilo con l'identificatore del set di dati (non il nome visualizzato).
- model-name: sostituiscilo con un nome scelto da te per il modello
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
Ad esempio:
VCN1741767155885539328
.
Fai una previsione
Puoi richiedere annotazioni (previsioni) per i video utilizzando il comando batchPredict
. Il comando batchPredict
prende come input un file CSV
archiviato nel bucket Cloud Storage contenente i percorsi dei video
per le annotazioni e le ore di inizio e di fine che identificano il segmento di video
da annotare. Per questa guida rapida, il file CSV è denominato
hmdb_split1_test_gs_predict.csv
.
Esegui i seguenti comandi curl
o PowerShell per effettuare una richiesta di previsione batch (asincrona).
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- input-uri: un bucket Cloud Storage che contiene il file su cui vuoi annotare,
incluso il nome del file. Deve iniziare con gs://. Ad esempio:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1_test_gs_predict.csv"]
- output-bucket sostituisci con il nome del tuo bucket Cloud Storage. Ad esempio:
my-project-vcm
- object-id: sostituisci con l'ID dell'operazione di importazione dei dati.
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict
Corpo JSON richiesta:
{ "inputConfig": { "gcsSource": { "inputUris": [input-uri] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "gs://output-bucket/object-id" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict "
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict " | Select-Object -Expand Content
Dovresti ricevere un ID operazione per la tua richiesta di previsione batch. Ad esempio:
VCN926615623331479552
Ottieni lo stato dell'operazione di previsione
Puoi eseguire query sullo stato dell'operazione di previsione batch utilizzando i seguenti comandi curl
o PowerShell.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- operation-id: sostituisci con l'ID dell'operazione di importazione dei dati.
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciare
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
nello
stato dell'operazione senza errori, come mostrato nell'esempio seguente.
Quando l'attività di previsione batch è completata, l'output della previsione viene archiviato nel bucket Cloud Storage specificato nel comando. È disponibile un file JSON per ogni segmento video. Ad esempio:
my-video-01.avi.json
{ "inputUris": ["gs://automl-video-demo-data/sample_video.avi"] "segment_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "shot_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "one_second_sliding_window_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ ], "frames": [ { "time_offset": { "nanos": 800000000 }, "confidence": 0.54533803 }, { "time_offset": { "nanos": 800000000 }, ... "confidence": 0.57945728 }, { "time_offset": { "seconds": 4, "nanos": 300000000 }, "confidence": 0.42054281 } ] } ], "object_annotations": [ ], "error": { "details": [ ] } }
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Se non hai più bisogno del modello e del relativo set di dati, puoi eliminarli.
Elenco modelli
Puoi elencare i modelli per il tuo progetto, insieme ai relativi identificatori, utilizzando i seguenti comandi curl
o PowerShell:
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- model-name: il nome completo del modello fornito dalla risposta al momento della creazione del modello. Il nome completo ha il formato: projects/project-number/locations/location-id/models
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Eliminazione di un modello
Puoi eliminare un modello utilizzando il seguente comando.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- model-id: sostituisci con l'identificatore del modello
- Nota:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
Metodo HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/test/models/model-id
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Creazione di un elenco di set di dati
Puoi elencare i set di dati per il tuo progetto, insieme ai relativi identificatori, utilizzando i seguenti comandi curl
o PowerShell:
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, quest'ultima viene determinata in base alla località del file video.
Metodo HTTP e URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Eliminazione di un set di dati
Puoi eliminare un set di dati utilizzando i seguenti comandi curl
o PowerShell.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- dataset-name: il nome completo del tuo set di dati, dalla risposta al momento della creazione del set di dati. Il nome completo ha il seguente formato:
projects/project-number/locations/location-id/datasets/dataset-id
- project-number: numero del progetto
- location-id: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
easia-east1
. Se non viene specificata alcuna regione, quest'ultima viene determinata in base alla località del file video. - dataset-id: l'ID fornito al momento della creazione del set di dati
Metodo HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/dataset-name
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Passaggi successivi
- Scopri di più sul flusso di lavoro della classificazione