Gérer les annotations

L'API entrepôt Vision vous permet de gérer les ressources entrepôt Vision à l'aide de la ligne de commande.

Un entrepôt de données connecté (corpus) dans une application déployée qui ingère des données comporte un ou plusieurs objets multimédias (par exemple, des ressources vidéo). Ces objets multimédias (ressources asset) contiennent des métadonnées et des annotations de ressources (annotations). Selon les modèles utilisés sur les objets multimédias, ces annotations peuvent contenir différents types d'informations, tels que des libellés, des cadres de sélection et des codes temporels.

Utilisez les commandes suivantes pour gérer ces annotations.

Il existe deux types d'annotations :

  1. Annotation au niveau du composant : annotation appliquée à l'ensemble du composant. Exemple : camera-location.
  2. Annotation au niveau de la partition : annotation qui ne s'applique qu'à une partie du composant. Vous devez spécifier une partition temporelle (heure de début et heure de fin) pour un composant Vidéo en streaming ou une partition temporelle relative (décalage de début ou décalage de fin) pour un composant Vidéo par lot afin d'obtenir des informations d'annotation au niveau de la partition.

Avant de créer une annotation, vous devez créer un schéma de données correspondant avec la même clé pour indiquer le type de données de la valeur de l'annotation. Si vous devez modifier le type de valeur d'une clé spécifique, vous devez supprimer toutes les annotations utilisant cette clé. Une fois ces annotations supprimées, vous pouvez mettre à jour le schéma de données correspondant.

Créer une annotation d'asset d'entrepôt

Vous devez effectuer les étapes suivantes avant de pouvoir créer une annotation pour un composant :

  • Créez une ressource asset dans un entrepôt.
  • Créez une ressource dataSchema avec la même clé pour indiquer le type de données de la valeur annotation.

Une ressource annotation peut éventuellement être associée à une partition temporelle. Par exemple, si une annotation s'applique à l'ensemble du composant, vous pouvez omettre toute partition temporelle qui y est associée. De même, si une annotation ne s'applique qu'à une partie spécifique d'un composant vidéo, vous pouvez fournir la plage temporelle du composant lors de la création de la ressource annotation.

Créer une annotation sans partition temporelle

Si une annotation s'applique à l'intégralité d'un élément vidéo, vous n'avez pas besoin de fournir de partition temporelle. Utilisez l'exemple suivant pour créer une ressource annotation pour un composant entier (aucune période vidéo spécifiée).

REST

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

  • REGIONALIZED_ENDPOINT : le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER : Numéro de votre projet Google Cloud.
  • LOCATION_ID : région dans laquelle vous utilisez Agent Platform Vision. Par exemple : us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID : ID de votre corpus cible.
  • ASSET_ID : ID de votre composant cible.
  • ANNOTATION_ID (facultatif) : valeur fournie par l'utilisateur pour l'ID d'annotation. Dans cette requête, la valeur est ajoutée à l'URL de la requête sous la forme suivante :
    • https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations

Corps JSON de la requête :

{
  "user_specified_annotation":{
    "key": "camera-location",
    "value": {
      "str_value": "Sunnyvale"
    }
  }
}

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 "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations"

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" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
  "userSpecifiedAnnotation": {
    "key": "camera-location",
    "value": {
      "strValue": "Sunnyvale"
    }
  }
}

Créer une annotation avec une partition temporelle

Si une annotation ne s'applique qu'à une partie d'un asset vidéo en streaming, vous pouvez fournir une plage de temps pour la partie vidéo ciblée. Utilisez l'exemple suivant pour créer une ressource annotation pour une période spécifique d'un élément vidéo à l'aide d'une partition temporelle.

REST

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

  • REGIONALIZED_ENDPOINT : le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER : Numéro de votre projet Google Cloud.
  • LOCATION_ID : région dans laquelle vous utilisez Agent Platform Vision. Par exemple : us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID : ID de votre corpus cible.
  • ASSET_ID : ID de votre composant cible.
  • ANNOTATION_ID (facultatif) : valeur fournie par l'utilisateur pour l'ID d'annotation. Dans cette requête, la valeur est ajoutée à l'URL de la requête sous la forme suivante :
    • https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations

Corps JSON de la requête :

{
  "user_specified_annotation": {
    "key": "object-detected",
    "value": {
      "str_value": "cat"
    },
    "partition": {
      "temporal_partition": {
        "start_time": {
          "seconds": "1630464728"
        },
        "end_time": {
          "seconds": "1630464729"
        }
      }
    }
  }
}

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 "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations"

PowerShell

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