Suivre des objets vidéo à l'aide de la ligne de commande

Ce guide de démarrage rapide vous présente les processus suivants :

  • Copie d'un ensemble de vidéos dans Cloud Storage
  • Création de fichiers CSV répertoriant les vidéos et leurs libellés
  • Utilisation d'AutoML Video Object Tracking pour créer votre ensemble de données afin d'entraîner et d'utiliser votre modèle

Avant de commencer

Configurer votre projet

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Installez Google Cloud CLI.
  3. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  4. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activer les API AutoML and Cloud Storage :

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. Installez Google Cloud CLI.
  8. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  9. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  10. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  11. Activer les API AutoML and Cloud Storage :

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. Définissez la variable d'environnement PROJECT_ID sur l'ID de votre projet.
    export PROJECT_ID=PROJECT_ID
    Les noms de ressources et les appels d'API AutoML incluent votre ID de projet. La variable d’environnement PROJECT_ID constitue un moyen pratique de spécifier l’ID.

Créer un ensemble de données et importer des données d'entraînement

Créer un ensemble de données

Nommez votre ensemble de données, puis exécutez les commandes PowerShell ou curl suivantes pour créer un ensemble de données portant ce nom.

REST

L'exemple suivant montre comment envoyer une requête POST. L'exemple utilise la Google Cloud CLI pour créer un jeton d'accès. Pour obtenir des instructions sur l'installation de gcloud CLI, consultez le guide de démarrage rapide du suivi des objets AutoML Video Intelligence.

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • dataset-name : nom de l'ensemble de données cible.
    Par exemple, my_dataset_01
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$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 réponse aboutit, l'API de suivi des objets AutoML Video Intelligence renvoie le nom de votre opération. Voici un exemple de ce type de réponse, où project-number est le numéro de votre projet et operation-id est l'ID de l'opération de longue durée créée pour la requête. Par exemple : VOT12345....

Importer des données d'entraînement

REST

Pour importer vos données d'entraînement, utilisez la méthode importData. Cette méthode nécessite de fournir deux paramètres :

  1. Le chemin d'accès au fichier CSV contenant les chemins d'accès à l'entraînement.
  2. Les fichiers CSV de données de test. Remarque : ces fichiers sont disponibles dans le bucket "automl-video-demo-data" sur Cloud Storage.

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • dataset-id : ID de votre ensemble de données. L'ID correspond au dernier élément du nom de l'ensemble de données. Exemple :
    • Nom de l'ensemble de données : projects/project-number/locations/location-id/datasets/3104518874390609379
    • ID de l'ensemble de données : 3104518874390609379
  • bucket-name : remplacez cette valeur par le nom du bucket Cloud Storage dans lequel vous avez stocké le fichier CSV de votre liste de fichiers d'entraînement de modèle.
  • csv-file-name : remplacez cette valeur par le nom du fichier CSV de votre liste de fichiers d'entraînement de modèle.
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$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
Vous devez recevoir un ID d'opération pour l'opération d'importation des données. L'exemple montre une réponse contenant l'ID de l'opération d'importation VOT7506374678919774208.

Obtenir l'état de l'opération d'importation

Vous pouvez interroger l'état de votre opération d'importation de données à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • operation-id : ID de l'opération de longue durée créée pour la requête, qui est fourni dans la réponse renvoyée au démarrage de l'opération, par exemple VOT12345....
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

exécutez la commande suivante :

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

exécutez la commande suivante :

$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
L'opération d'importation peut prendre un certain temps. Une fois la tâche d'importation terminée, l'état de l'opération indique done: true sans erreur répertoriée, comme illustré dans l'exemple ci-dessus.
  • operation-name : nom de l'opération renvoyé par l'API de suivi des objets AutoML Video Intelligence. Il est au format suivant : projects/project-number/locations/location-id/operations/operation-id.

Répertorier tous les ensembles de données

Utilisez les commandes curl ou PowerShell suivantes pour obtenir la liste de vos ensembles de données et le nombre d'échantillons vidéo qui y ont été importés.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • project-number : numéro de votre projet.
  • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

exécutez la commande suivante :

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

exécutez la commande suivante :

$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
Dans la réponse ci-dessous, VOT3940649673949184000 est l'ID de l'opération de longue durée créé pour la requête et fourni dans la réponse lorsque vous avez démarré l'opération.

Entraîner le modèle

Lancer l'opération d'entraînement d'un modèle

Après avoir créé votre ensemble de données et y avoir importé vos données d'entraînement, vous pouvez entraîner votre modèle personnalisé. Entraînez votre modèle à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • dataset-id : nom de l'ensemble de données cible. Par exemple, le nom à afficher my_dataset_01.
  • model-name : remplacez cette valeur par le nom que vous avez choisi pour votre modèle.
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$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
Vous devriez recevoir un ID pour votre opération d'entraînement de modèle. L'exemple ci-dessus affiche une réponse contenant l'ID de l'opération d'entraînement de modèle VOT1741767155885539328.

Obtenir l'état de l'opération d'entraînement d'un modèle

Vous pouvez interroger l'état de l'opération d'entraînement de votre modèle à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • operation-name : nom de l'opération renvoyé par l'API de suivi des objets AutoML Video Intelligence. Il est au format suivant : projects/project-number/locations/location-id/operations/operation-id.
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

exécutez la commande suivante :

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

exécutez la commande suivante :

$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
Une fois l'opération terminée, son état affiche done: true sans qu'aucune erreur ne soit répertoriée.

Vérifier la disponibilité du modèle

Une fois l'opération d'entraînement du modèle terminée, vous pouvez vérifier que votre modèle est disponible en utilisant la commande suivante pour répertorier les modèles de votre projet.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • project-number : numéro de votre projet.
  • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Effectuer une prédiction

Vous pouvez demander des annotations (prédictions) pour les vidéos à l'aide de la méthode batchPredict. La méthode batchPredict nécessite deux entrées :

  1. Un fichier CSV stocké dans votre bucket Cloud Storage contenant les chemins d'accès aux vidéos à annoter
  2. Les heures de début et de fin qui permettent d'identifier la séquence de la vidéo à annoter

Pour ce guide de démarrage rapide, utilisez le fichier CSV nommé traffic_video_batch_predict.csv.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • model-id : remplacez cette valeur par l'identifiant de votre modèle.
  • input-uri : bucket Cloud Storage contenant le fichier que vous souhaitez annoter, y compris son nom. Doit commencer par gs://.
    Par exemple, "inputUris": ["gs://automl-video-demo-data/traffic_videos/traffic_video_batch_predict.csv"],
  • output-bucket : remplacez cette valeur par un bucket Cloud Storage qui contiendra les résultats de votre prédiction.
  • object-id : remplacez cette valeur par un nom d'objet permettant d'identifier l'emplacement de stockage du résultat de la requête de prédiction dans votre bucket Cloud Storage. Remarque : vous devez disposer d'autorisations en écriture sur le bucket Cloud Storage.
  • Remarque :
    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

Obtenir l'état de l'opération de prédiction

Vous pouvez interroger l'état de votre opération de prédiction par lot à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

    • project-number : numéro de votre projet.
    • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.
    • operation-id : ID de l'opération de longue durée créée pour la requête, qui est fourni dans la réponse renvoyée au démarrage de l'opération, par exemple VOT12345....

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

exécutez la commande suivante :

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

exécutez la commande suivante :

$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 est le nom de l'opération tel qu'il est renvoyé par l'API de suivi des objets AutoML Video Intelligence. Le nom de l'opération est au format suivant : projects/project-number/locations/location-id/operations/operation-id

Une fois la tâche de prédiction par lot terminée, le résultat de la prédiction est stocké dans le bucket Cloud Storage spécifié dans la commande. Chaque séquence vidéo est répertoriée dans un fichier JSON. Les fichiers JSON ont un format semblable à my-video-01.avi.json, où l'extension de fichier .json est ajoutée au nom du fichier d'origine.

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

Nettoyage

Si vous n'avez plus besoin de votre modèle personnalisé ni de l'ensemble de données associé, vous pouvez les supprimer.

Supprimer un modèle

Vous pouvez supprimer un modèle à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • project-number : numéro de votre projet.
  • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.
  • model-id : remplacez cette valeur par l'identifiant de votre modèle.

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Supprimer un ensemble de données

Vous pouvez supprimer un ensemble de données à l'aide des commandes curl ou PowerShell suivantes.

REST

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • project-number : numéro de votre projet.
  • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.
  • datase-id : remplacez cette valeur par l'identifiant de votre ensemble de données.

Méthode HTTP et URL :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.