Haz un seguimiento de objetos de video con la línea de comandos

En esta guía de inicio rápido, se te guiará por los siguientes procesos:

  • Copiar de un conjunto de videos en Cloud Storage
  • Crear archivos CSV que enumeren videos y sus etiquetas
  • Usar el seguimiento de objetos de AutoML Video a fin de crear tu conjunto de datos para entrenar y usar tu modelo.

Antes de comenzar

Configura tu proyecto

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.
  3. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  4. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las APIs de AutoML and Cloud Storage:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. Instala Google Cloud CLI.
  8. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  9. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  10. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  11. Habilita las APIs de AutoML and Cloud Storage:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. Establece la variable de entorno PROJECT_ID para tu ID del proyecto.
    export PROJECT_ID=PROJECT_ID
    Las llamadas a la API de AutoML y los nombres de los recursos incluyen el ID del proyecto. La variable de entorno PROJECT_ID proporciona una manera conveniente de especificar el ID.

Crea un conjunto de datos e importa datos de entrenamiento

Cree un conjunto de datos

Elige un nombre para tu conjunto de datos y usa los siguientes comandos curl o PowerShell para crear un conjunto de datos nuevo con ese nombre.

REST

A continuación, se muestra cómo enviar una solicitud POST. En el ejemplo, se usa Google Cloud CLI para crear un token de acceso. Si deseas obtener instrucciones para instalar gcloud CLI, consulta la Guía de inicio rápido de seguimiento de objetos de AutoML Video Intelligence.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • dataset-name: Es el nombre de tu conjunto de datos de destino.
    Por ejemplo, my_dataset_01
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
    "displayName": "dataset-name",
    "videoObjectTrackingDatasetMetadata": { }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
Si la respuesta es correcta, la API de seguimiento de objetos de AutoML Video Intelligence muestra el nombre de la operación. El siguiente es un ejemplo de una respuesta de este tipo, en la que project-number es el número de tu proyecto y operation-id es el ID de la operación de larga duración que se creó para la solicitud. Por ejemplo VOT12345....

Importa datos de entrenamiento

REST

Para importar tus datos de entrenamiento, usa el método importData. Este método requiere que proporciones dos parámetros:

  1. la ruta de acceso al archivo CSV que contiene las rutas de acceso al entrenamiento
  2. los archivos CSV de datos de prueba Nota: Estos archivos están disponibles en el bucket “automl-video-demo-data” en Cloud Storage.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • dataset-id: Es el ID del conjunto de datos. El ID es el último elemento del nombre de tu conjunto de datos. Por ejemplo:
    • Nombre del conjunto de datos: projects/project-number/locations/location-id/datasets/3104518874390609379
    • ID del conjunto de datos: 3104518874390609379
  • bucket-name: Reemplaza por el nombre del depósito de Cloud Storage en el que almacenaste tu archivo CSV de la lista de archivos de entrenamiento de modelos.
  • csv-file-name: Reemplaza por el nombre de tu archivo CSV de la lista de archivos de entrenamiento de modelos.
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "inputConfig": {
    "gcsSource": {
      "inputUris": ["gs://bucket-name/csv-file-name.csv"]
    }
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
Deberías recibir un ID de operación para la operación de importación de datos. En el ejemplo, se muestra una respuesta que contiene el ID de la operación de importación VOT7506374678919774208.

Obtén el estado de la operación de importación

Puedes consultar el estado de la operación de importación de datos mediante los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • operation-id: Es el ID de la operación de larga duración creada para la solicitud y proporcionada en la respuesta cuando iniciaste la operación, por ejemplo VOT12345.....
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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
La operación de importación puede tomar un tiempo en completarse. Cuando la tarea de importación finaliza, el estado de la operación muestra done: true sin errores, como se muestra en el ejemplo anterior.
  • operation-name: Es el nombre de la operación que muestra la API de seguimiento de objetos de AutoML Video Intelligence. El nombre de la operación tiene el formato projects/project-number/locations/location-id/operations/operation-id.

Enumera todos los conjuntos de datos

Usa los siguientes comandos curl o PowerShell para obtener una lista de tus conjuntos de datos y la cantidad de videos de muestra que se importaron en él.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-number: Es el número de tu proyecto.
  • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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
En la respuesta a continuación, VOT3940649673949184000 es el ID de la operación de larga duración creada para la solicitud y proporcionado en la respuesta cuando iniciaste la operación.

Entrene su modelo

Inicia una operación de entrenamiento de modelos

Luego de crear el conjunto de datos y de importar los datos de entrenamiento en el conjunto, puedes entrenar el modelo personalizado. Entrena tu modelo con los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • dataset-id: Es el nombre de tu conjunto de datos de destino. Por ejemplo, el nombre visible de my_dataset_01.
  • Reemplaza model-name por un nombre que elijas para el modelo.
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
Deberías recibir un ID de operación para la operación de entrenamiento de modelos. En el ejemplo anterior, se muestra una respuesta que contiene el ID de operación de entrenamiento del modelo VOT1741767155885539328.

Obtén el estado de la operación de entrenamiento de modelos

Puedes consultar el estado de la operación de entrenamiento de modelos mediante los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • operation-name: nombre de la operación que muestra la API de seguimiento de objetos de AutoML Video Intelligence. El nombre de la operación tiene el formato projects/project-number/locations/location-id/operations/operation-id.
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

GET https://automl.googleapis.com/v1beta1/operation-name

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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
Cuando se completa la operación, el estado de la operación muestra done: true sin errores.

Verifica que el modelo esté disponible

Una vez que la operación de entrenamiento de modelos se complete de forma correcta, puedes verificar que tu modelo esté disponible mediante el siguiente comando para enumerar los modelos de tu proyecto.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-number: Es el número de tu proyecto.
  • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Realiza una predicción

Puedes solicitar anotaciones (predicciones) para los videos con el método batchPredict. El método batchPredict requiere dos entradas:

  1. un archivo CSV almacenado en tu bucket de Cloud Storage que contiene las rutas de acceso a los videos a anotar
  2. los tiempos de inicio y finalización que identifican el segmento de video que se anotará

Para esta guía de inicio rápido, usa el archivo CSV llamado traffic_video_batch_predict.csv.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • Reemplaza model-id por el identificador del modelo.
  • input-uri: Es el bucket de Cloud Storage que contiene el archivo que deseas anotar, incluido el nombre del archivo. Debe comenzar con gs://.
    Por ejemplo: "inputUris": ["gs://automl-video-demo-data/traffic_videos/traffic_video_batch_predict.csv"],
  • Reemplaza output-bucket por un bucket de Cloud Storage que contendrá los resultados de tu predicción.
  • Reemplaza object-id por un nombre de objeto que identifique dónde almacenar la salida de tu solicitud de predicción en tu bucket de Cloud Storage. Nota: Debes tener permisos de escritura en el bucket de Cloud Storage.
  • Nota:
    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "inputConfig": {
    "gcsSource": {
      "inputUris": ["input-uri"]
    }
  },
  "outputConfig": {
    "gcsDestination": {
      "outputUriPrefix": "gs://output-bucket/object-id"
    }
  }
  "params": {
    "score_threshold": "0.0"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Obtén el estado de la operación de predicción

Puedes consultar el estado de la operación de predicción por lotes mediante los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • project-number: Es el número de tu proyecto.
    • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.
    • operation-id: Es el ID de la operación de larga duración creada para la solicitud y proporcionada en la respuesta cuando iniciaste la operación, por ejemplo VOT12345.....

HTTP method and URL:

GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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
El operation-name es el nombre de la operación que muestra la API de seguimiento de objetos de AutoML Video Intelligence. El nombre de la operación tiene el formato projects/project-number/locations/location-id/operations/operation-id

Cuando se completa la tarea de predicción por lotes, el resultado de la predicción se almacena en el bucket de Cloud Storage que especificaste en el comando. Hay un archivo JSON para cada segmento de video. Los archivos JSON tienen un formato similar a my-video-01.avi.json, en el que la extensión de archivo .json se agrega al nombre del archivo original.

{
  "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": [ ]
  }
}

Limpieza

Si ya no necesitas tu modelo personalizado ni el conjunto de datos relacionado, puedes borrarlos.

Borra un modelo

Puedes borrar un modelo con los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-number: Es el número de tu proyecto.
  • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.
  • Reemplaza model-id por el identificador del modelo.

HTTP method and URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Borra un conjunto de datos

Puedes borrar un conjunto de datos con los siguientes comandos curl o PowerShell.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-number: Es el número de tu proyecto.
  • location-id: Es la región de Cloud en la que se debe realizar la anotación. Las regiones en la nube compatibles son: us-east1, us-west1, europe-west1, asia-east1. Si no se especifica ninguna región, se determinará una región en función de la ubicación del archivo de video.
  • datase-id: Reemplaza por el identificador de tu ID del conjunto de datos.

HTTP method and URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.