Tenere traccia degli oggetti 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 Object Tracking per creare il set di dati per addestrare e utilizzare il modello.

Prima di iniziare

Configura il progetto

  1. 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.
  2. Installa Google Cloud CLI.
  3. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  4. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del tuo progetto Google Cloud.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API AutoML and Cloud Storage.

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. Installa Google Cloud CLI.
  8. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  9. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del tuo progetto Google Cloud.

  10. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  11. Abilita le API AutoML and Cloud Storage.

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. Imposta la variabile di ambiente PROJECT_ID sul tuo ID progetto.
    export PROJECT_ID=PROJECT_ID
    Le chiamate API e i nomi delle risorse AutoML includono l'ID progetto al loro interno. La variabile di ambiente PROJECT_ID consente di specificare facilmente 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

Di seguito viene mostrato come inviare una richiesta POST. L'esempio utilizza Google Cloud CLI per creare un token di accesso. Per istruzioni sull'installazione di gcloud CLI, consulta la guida rapida di AutoML Video Intelligence Object Tracking.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • dataset-name: il nome del set di dati di destinazione.
    Ad esempio, my_dataset_01
  • 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 e asia-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",
    "videoObjectTrackingDatasetMetadata": { }
}

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
Se la risposta ha esito positivo, l'API AutoML Video Intelligence Object Tracking restituisce il nome dell'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. Ad esempio VOT12345....

Importa dati di addestramento

REST

Per importare i dati di addestramento, utilizza il metodo importData. Questo metodo richiede due parametri:

  1. il percorso del file CSV che contiene i percorsi dell'addestramento
  2. 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:

  • dataset-id: l'ID del set di dati. L'ID è l'ultimo elemento del nome del set di dati. Ad esempio:
    • nome set di dati: projects/project-number/locations/location-id/datasets/3104518874390609379
    • ID set di dati: 3104518874390609379
  • bucket-name: sostituiscilo con il nome del bucket Cloud Storage in cui hai archiviato il file CSV con l'elenco dei file di addestramento dei modelli.
  • csv-file-name: sostituiscilo con il nome del file CSV con l'elenco dei file di addestramento 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 e asia-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": ["gs://bucket-name/csv-file-name.csv"]
    }
  }
}

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
Dovresti ricevere un ID operazione per l'operazione di importazione dei dati. L'esempio mostra una risposta contenente l'ID operazione di importazione VOT7506374678919774208.

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: l'ID dell'operazione a lunga esecuzione creata per la richiesta e fornito nella risposta quando hai avviato l'operazione, ad esempio VOT12345....
  • 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 e asia-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
Il completamento dell'operazione di importazione può richiedere del tempo. Al termine dell'attività di importazione, lo stato dell'operazione mostra done: true senza l'elenco di errori, come mostrato nell'esempio precedente.
  • operation-name: il nome dell'operazione restituito dall'API AutoML Video Intelligence Object Tracking. Il nome dell'operazione ha il formato projects/project-number/locations/location-id/operations/operation-id

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: il 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 e asia-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/datasets

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/datasets "

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/datasets " | Select-Object -Expand Content
Nella risposta seguente, VOT3940649673949184000, è l'ID operazione dell'operazione a lunga esecuzione creata per la richiesta e fornito nella risposta quando hai avviato l'operazione.

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 personalizzato. Addestra il modello utilizzando i seguenti comandi curl o PowerShell.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • dataset-id: il nome del set di dati di destinazione. Ad esempio, my_dataset_01 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 e asia-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:

{
  "datasetId": "dataset-id",
  "displayName": "model-name",
  "videoObjectTrackingModelMetadata": {},
}

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
Dovresti ricevere un ID operazione per l'operazione di addestramento del modello. L'esempio riportato sopra mostra una risposta contenente l'ID operazione di addestramento del modello VOT1741767155885539328.

Visualizza lo stato dell'operazione di addestramento del modello

Puoi eseguire query sullo stato dell'operazione di addestramento del modello utilizzando i seguenti comandi curl o PowerShell.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • operation-name: il nome dell'operazione restituito dall'API AutoML Video Intelligence Object Tracking. Il nome dell'operazione ha il formato projects/project-number/locations/location-id/operations/operation-id
  • 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 e asia-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/operation-name

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/operation-name"

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/operation-name" | Select-Object -Expand Content
Al termine dell'operazione, lo stato dell'operazione mostra done: true senza el'elenco di errori.

Verifica che il modello sia disponibile

Una volta completata l'operazione di addestramento del modello, puoi verificare che il modello sia disponibile utilizzando il seguente comando per elencare i modelli per il tuo progetto.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • project-number: il 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 e asia-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:

Esegui una previsione

Puoi richiedere annotazioni (previsioni) per i video utilizzando il metodo batchPredict. Il metodo batchPredict richiede due input:

  1. un file CSV memorizzato nel bucket Cloud Storage contenente i percorsi dei video per le annotazioni,
  2. l'ora di inizio e l'ora di fine che identificano il segmento di video a cui aggiungere annotazioni.

Per questa guida rapida, utilizza il file CSV denominato traffic_video_batch_predict.csv.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • model-id: sostituisci con l'identificatore del modello
  • 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/traffic_videos/traffic_video_batch_predict.csv"],
  • output-bucket: sostituisci con un bucket Cloud Storage che conterrà i risultati della previsione.
  • object-id: sostituiscilo con un nome oggetto che identifica dove archiviare l'output della richiesta di previsione nel bucket Cloud Storage. Nota: devi disporre delle autorizzazioni di scrittura per il bucket Cloud Storage.
  • 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 e asia-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"
    }
  }
  "params": {
    "score_threshold": "0.0"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Visualizza 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:

    • project-number: il 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 e asia-east1. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
    • operation-id: l'ID dell'operazione a lunga esecuzione creata per la richiesta e fornito nella risposta quando hai avviato l'operazione, ad esempio VOT12345....

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
operation-name è il nome dell'operazione restituito dall'API AutoML Video Intelligence Object Tracking. Il nome dell'operazione ha il formato projects/project-number/locations/location-id/operations/operation-id

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. I file JSON hanno un formato simile a my-video-01.avi.json, in cui l'estensione del file .json viene aggiunta al nome del file originale.

{
  "inputUris": ["automl-video-demo-data/sample_video.avi"],
  "object_annotations": [ {
    "annotation_spec": {
      "display_name": "Cat",
      "description": "Cat"
    },
    "confidence": 0.43253016
    "frames": [ {
      "frame": {
        "time_offset": {
          "seconds": 4,
          "nanos": 960000000
        },
        "normalized_bounding_box": {
          "x_min": 0.1,
          "y_min": 0.1,
          "x_max": 0.8,
          "y_max": 0.8
        }
      }
    }, {
      "frame": {
        "time_offset": {
          "seconds": 5,
          "nanos": 960000000
        },
        "normalized_bounding_box": {
          "x_min": 0.2,
          "y_min": 0.2,
          "x_max": 0.9,
          "y_max": 0.9
        }
      }
    } ],
    "segment": {
      "start_time_offset": {
          "seconds": 4,
          "nanos": 960000000
      },
      "end_time_offset": {
          "seconds": 5,
          "nanos": 960000000
      }
    }
  } ],
  "error": {
    "details": [ ]
  }
}

esegui la pulizia

Se non hai più bisogno del tuo modello personalizzato e del relativo set di dati, puoi eliminarli.

Eliminazione di un modello

Puoi eliminare un modello utilizzando i seguenti comandi curl o PowerShell.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • project-number: il 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 e asia-east1. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
  • model-id: sostituiscilo con l'identificatore del modello.

Metodo HTTP e URL:

DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

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:

  • project-number: il 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 e asia-east1. Se non viene specificata alcuna regione, verrà determinata in base alla località del file video.
  • datase-id: sostituisci con l'identificatore dell'ID del set di dati.

Metodo HTTP e URL:

DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.