Créer une annotation d'entrepôt

Les objets multimédias (ressources asset) d'un entrepôt (corpus) contiennent des métadonnées et des ressources annotation. Ces ressources annotation représentent un mappage clé/valeur du contenu d'un asset.

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

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

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

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

Créer une annotation sans partition temporelle

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

REST

Avant d'utiliser les données de requête ci-dessous, 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 : Votre Google Cloud numéro de projet.
  • 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 asset 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 :
    • 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, vous pouvez fournir une plage temporelle pour la partie vidéo cible. Utilisez l'exemple suivant pour créer une annotation fournie par l'utilisateur pour une période spécifique d'un asset vidéo à l'aide d'une partition temporelle.

REST

Avant d'utiliser les données de requête ci-dessous, 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 : Votre Google Cloud numéro de projet.
  • 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 asset 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 :
    • 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 :

$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": "object-detected",
    "value": {
      "strValue": "cat"
    },
    "partition": {
      "temporalPartition": {
        "startTime": "2022-09-14T20:33:09Z",
        "endTime": "2022-09-14T20:33:39Z"
      }
    }
  }
}

Mettre à jour une annotation (sans partition temporelle)

REST

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

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

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 PATCH \
-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/ANNOTATION_ID"

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 PATCH `
-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/ANNOTATION_ID" | 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": "UPDATED_FIELD_VALUE"
    }
  }
}