Démarrage rapide : Utiliser la ligne de commande

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

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

Avant de commencer

Configurer votre projet

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Cloud.

    Accéder à la page de sélection du projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez les AutoML and Cloud Storage API.

    Activer les API

  5. Installez l'outil de ligne de commande gcloud.
  6. Suivez les instructions pour créer un compte de service et télécharger un fichier de clé associé.
  7. Indiquez le chemin d'accès au fichier de clé du compte de service, que vous avez téléchargé lors de la création de ce dernier, comme variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.
    export GOOGLE_APPLICATION_CREDENTIALS=key-file
  8. Pour la variable d'environnement PROJECT_ID, indiquez l'ID de votre projet.
    export PROJECT_ID=your-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.
  9. Si vous êtes propriétaire du projet, ajoutez votre compte de service au rôle IAM Éditeur AutoML, en remplaçant service-account-name par le nom de votre nouveau compte de service. Par exemple, service-account1@myproject.iam.gserviceaccount.com.
    gcloud auth login
    gcloud projects add-iam-policy-binding $PROJECT_ID \
       --member="serviceAccount:service-account-name" \
       --role="roles/automl.editor"
    
  10. Si vous n'êtes pas propriétaire du projet, demandez au propriétaire d'ajouter votre ID utilisateur et votre compte de service au rôle IAM Éditeur AutoML.
  11. Assurez-vous que votre projet a été autorisé à accéder au programme d'accès anticipé.

    Vous pouvez vérifier si votre projet dispose des autorisations requises en appelant l'API AutoML, par exemple en essayant de créer un ensemble de données. Si vous obtenez une erreur d'autorisation, contactez Google pour que votre projet soit ajouté au programme d'accès anticipé. Pour les autres erreurs, comme une erreur indiquant que l'API n'est pas activée, passez en revue les étapes de cet article et assurez-vous que vous les avez toutes exécutées.

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 la commande curl suivante pour créer un ensemble de données portant ce nom.

curl exécute la commande gcloud auth application-default print-access-token pour obtenir un jeton d'accès au compte de service que vous avez configuré plus tôt dans le sujet. Le chemin d'accès au fichier de clé de compte de service est stocké dans la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets -d '{
    "displayName": "your-dataset-name",
    "videoClassificationDatasetMetadata": { }
}'

Vous devez recevoir une réponse contenant l'identifiant de votre nouvel ensemble de données. Par exemple : VCN4798585402963263488.

{
  "name": "projects/my-project/locations/us-central1/datasets/VCN4798585402963263488",
  "displayName": "my_dataset_01",
  "createTime": "2018-10-18T21:18:13.975412Z",
  "videoClassificationDatasetMetadata": {}
}

Importer des données d'entraînement

Importez l'exemple de données d'entraînement dans votre ensemble de données. La commande importData prend en entrée le chemin d'accès au fichier CSV qui contient les chemins d'accès aux fichiers CSV de données d'entraînement et de test. Ces fichiers sont disponibles dans le bucket "automl-video-demo-data" sur Google Cloud Storage.

  • Remplacez your-dataset-id par l'identifiant de votre ensemble de données, et non par le nom à afficher. Par exemple : VCN4798585402963263488.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id:importData \
-d '{
  "inputConfig": {
    "gcsSource": {
       "inputUris": ["gs://automl-video-demo-data/hmdb_split1.csv"]
     }
  }
}'

Vous devez recevoir un identifiant d'opération pour l'opération d'importation des données. Par exemple : VCN7506374678919774208.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:23:15.181451Z",
    "importDataDetails": {}
  }
}

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 de la commande curl suivante.

  • Remplacez your-operation-id par l'identifiant de votre opération d'importation de données.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

L'opération d'importation peut prendre un certain temps. Lorsque la tâche d'importation est terminée, l'état done: true de l'opération sans erreur répertoriée s'affiche, comme illustré dans l'exemple suivant.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Obtenir la liste des ensembles de données

Vous pouvez obtenir la liste de vos ensembles de données et le nombre d'échantillons vidéo qui y ont été importés à l'aide de la commande suivante.

curl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets

Un résultat semblable aux lignes suivantes doit s'afficher :

{
  "datasets": [
    {
      "name": "projects/my-project/locations/us-central1/datasets/VCN3940649673949184000",
      "displayName": "my_dataset_01",
      "createTime": "2018-10-18T21:18:13.975412Z",
      "exampleCount": 5097,
      "videoClassificationDatasetMetadata": {}
    }
  ]
}

Entraîner votre 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 de la commande curl suivante.

  • Remplacez your-dataset-id par l'identifiant de votre ensemble de données, et non par le nom à afficher.

  • Remplacez your-model-name par le nom de votre modèle.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https:/automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models -d '{
  "datasetId": "your-dataset-id",
  "displayName": "your-model-name",
  "videoClassificationModelMetadata": {},
}'

Vous devez recevoir un identifiant d'opération pour l'opération d'importation des données. Par exemple : VCN1741767155885539328.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

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

Vous pouvez interroger l'état de votre opération d'entraînement du modèle à l'aide de la commande curl suivante.

  • Remplacez your-operation-id par l'identifiant de votre opération d'entraînement.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

Un résultat semblable aux lignes suivantes doit s'afficher. Une fois l'opération terminée, l'état done: true s'affiche si aucune erreur n'est répertoriée.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

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 à l'aide de la commande suivante pour répertorier les modèles de votre projet.

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models

Un résultat semblable aux lignes suivantes doit s'afficher :

{
  "model": [
    {
      "name": "projects/915378992997/locations/us-central1/models/VCN2004101834179870720",
      "displayName": "my_model_01",
      "datasetId": "VCN3940649673949184000",
      "createTime": "2018-10-19T17:18:45.320701Z",
      "updateTime": "2018-10-19T17:18:45.320701Z",
      "videoClassificationModelMetadata": {}
    }
  ]
}

Effectuer une prédiction

Vous pouvez demander des annotations (prédictions) pour des vidéos à l'aide de la commande batchPredict. La commande batchPredict prend en entrée un fichier CSV, stocké dans votre bucket Google Cloud Storage, contenant les chemins d'accès aux vidéos à annoter, ainsi que les heures de début et de fin qui permettent d'identifier les séquences vidéo à annoter. Le fichier CSV utilisé dans ce démarrage rapide s'appelle hmdb_split1_train_gs.csv.

Exécutez la commande suivante pour envoyer une requête de prédiction par lot (asynchrone).

  • Remplacez your-model-id par l'identifiant de votre modèle.

  • Remplacez your-output-bucket par un bucket Google Cloud Storage qui contiendra les résultats de votre prédiction.

  • Remplacez your-object-id 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 Google Cloud Storage. Vous devez disposer des autorisations en écriture sur le bucket Google Cloud Storage.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id:batchPredict -d '{
  "inputConfig": {
    "gcsSource": {
      "inputUris": ["gs://automl-video-demo-data/hmdb_split1_test_gs_predict.csv"]
    }
  },
  "outputConfig": {
    "gcsDestination": {
      "outputUriPrefix": "gs://your-output-bucket/your-object-id"
    }
  }
}'

Vous devez recevoir un identifiant d'opération pour votre requête de prédiction par lot. Par exemple : VCN926615623331479552.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-19T21:22:27.003694Z",
    "updateTime": "2018-10-19T21:22:27.003694Z",
    "batchPredictDetails": {}
  }
}

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 de la commande curl suivante.

  • Remplacez your-operation-id par l'identifiant d'opération de votre opération de prédiction par lot.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

Selon le nombre de vidéos que vous avez spécifiées dans le fichier CSV, la tâche de prédiction par lot peut prendre un certain temps. Lorsque la tâche est terminée, l'état done: true de l'opération sans erreur répertoriée s'affiche, comme illustré dans l'exemple suivant.

{
  "name": "projects/915378992997/locations/us-central1/operations/VCN926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Une fois la tâche de prédiction par lot terminée, le résultat de la prédiction est stocké dans le bucket Google Cloud Storage spécifié dans la commande. Chaque séquence vidéo est répertoriée dans un fichier JSON. Exemple :

my-video-01.avi.json

{
  "input_uri": "automl-video-demo-data/sample_video.avi",
  "segment_classification_annotations": [ {
    "annotation_spec": {
      "display_name": "ApplyLipstick",
      "description": "ApplyLipstick"
    },
    "segments": [ {
      "segment": {
        "start_time_offset": {
        },
        "end_time_offset": {
          "seconds": 4,
          "nanos": 960000000
        }
      },
      "confidence": 0.43253016
    }, {
      "segment": {
        "start_time_offset": {
        },
        "end_time_offset": {
          "seconds": 4,
          "nanos": 960000000
        }
      },
      "confidence": 0.56746984
    } ],
    "frames": [ ]
  } ],
  "shot_classification_annotations": [ {
    "annotation_spec": {
      "display_name": "ApplyLipstick",
      "description": "ApplyLipstick"
    },
    "segments": [ {
      "segment": {
        "start_time_offset": {
        },
        "end_time_offset": {
          "seconds": 5
        }
      },
      "confidence": 0.43253016
    }, {
      "segment": {
        "start_time_offset": {
        },
        "end_time_offset": {
          "seconds": 5
        }
      },
      "confidence": 0.56746984
    } ],
    "frames": [ ]
  } ],
  "one_second_sliding_window_classification_annotations": [ {
    "annotation_spec": {
      "display_name": "ApplyLipstick",
      "description": "ApplyLipstick"
    },
    "segments": [ ],
    "frames": [ {
      "time_offset": {
        "nanos": 800000000
      },
      "confidence": 0.54533803
    }, {
      "time_offset": {
        "nanos": 800000000
      },
      ...
      "confidence": 0.57945728
    }, {
      "time_offset": {
        "seconds": 4,
        "nanos": 300000000
      },
      "confidence": 0.42054281
    } ]
  } ],
  "object_annotations": [ ],
  "error": {
    "details": [ ]
  }
}

Effectuer un nettoyage

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

Répertorier les modèles

Pour répertorier les modèles de votre projet et leurs identifiants, exécutez la commande suivante :

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models

Supprimer un modèle

Vous pouvez supprimer un modèle à l'aide de la commande suivante.

  • Remplacez your-model-id par l'identifiant de votre modèle.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id

Répertorier des ensembles de données

Pour répertorier les ensembles de données de votre projet et leurs identifiants, exécutez la commande suivante :

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets

Supprimer un ensemble de données

Vous pouvez supprimer un ensemble de données à l'aide de la commande suivante.

  • Remplacez your-dataset-id par l'identifiant de votre modèle.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id