Schnellstart: Befehlszeile verwenden

In dieser Schnellstartanleitung werden folgende Verfahren erläutert:

  • Videos in Google Cloud Storage kopieren
  • CSV-Dateien zum Auflisten von Videos und den dazugehörigen Labels erstellen
  • AutoML Video Intelligence-ObjektTracking verwenden, um ein Dataset zu erstellen sowie ein Modell zu trainieren und bereitzustellen

Vorbereitung

Projekt einrichten

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie in der Cloud Console auf der Projektauswahlseite ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Cloud AutoML and Storage APIs.

    Aktivieren Sie die APIs

  5. Installieren Sie das gcloud-Befehlszeilentool.
  6. Folgen Sie der Anleitung, um ein Dienstkonto zu erstellen und eine Schlüsseldatei herunterzuladen.
  7. Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so fest, dass sie auf die Schlüsseldatei des Dienstkontos verweist. Die Schlüsseldatei haben Sie beim Erstellen des Dienstkontos heruntergeladen.
    export GOOGLE_APPLICATION_CREDENTIALS=key-file
  8. Legen Sie für die Umgebungsvariable PROJECT_ID Ihre Projekt-ID fest.
    export PROJECT_ID=your-project-id
    Die AutoML API-Aufrufe und Ressourcennamen enthalten Ihre Projekt-ID. Die Umgebungsvariable PROJECT_ID bietet eine bequeme Möglichkeit, die ID anzugeben.
  9. Fügen Sie sich und Ihr Dienstkonto der IAM-Rolle AutoML-Editor hinzu.
    1. Ersetzen Sie your-userid@your-domain durch Ihr Nutzerkonto.
    2. Ersetzen Sie service-account-name durch den Namen des neuen Dienstkontos, beispielsweise service-account1@myproject.iam.gserviceaccount.com.
    gcloud auth login
    gcloud projects add-iam-policy-binding $PROJECT_ID \
       --member="user:your-userid@your-domain" \
       --role="roles/automl.admin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
       --member="serviceAccount:service-account-name" \
       --role="roles/automl.editor"
    
  10. Prüfen Sie, ob Ihrem Projekt die Berechtigung zum Zugriff auf das EAP erteilt wurde.

    Sie können prüfen, ob Ihr Projekt die entsprechende Berechtigung hat, indem Sie die AutoML API aufrufen und z. B. versuchen, ein Dataset zu erstellen. Wenn Sie einen Berechtigungsfehler erhalten, wenden Sie sich an Google, um Ihr Projekt zum EAP hinzufügen zu lassen. Bei anderen Fehlern, z. B. einem Fehler bei nicht aktivierter API, gehen Sie die Schritte in diesem Thema durch und überprüfen Sie, ob Sie sie alle ausgeführt haben.

Dataset erstellen und Trainingsdaten importieren

Dataset erstellen

Legen Sie einen Namen für Ihr Dataset fest. Mit dem folgenden curl-Befehl erstellen Sie ein neues Dataset mit dem gewünschten Namen.

Der curl-Befehl gcloud auth application-default print-access-token ruft ein Zugriffstoken für das Dienstkonto ab, das Sie zuvor erstellt haben. Der Pfad zur Dienstkontoschlüsseldatei wird in der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS gespeichert.

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",
    "videoObjectTrackingDatasetMetadata": { }
}'

Sie sollten eine Antwort mit der ID Ihres neuen Datasets erhalten. Beispiel: VOT4798585402963263488.

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

Trainingsdaten importieren

Importieren Sie die Beispieltrainingsdaten in Ihr Dataset. Der Befehl importData nimmt als Eingabe den Pfad zu der CSV-Datei an, die die Pfade zu den CSV-Dateien für Trainings- und Testdaten enthält. Diese Dateien werden im Bucket "automl-video-demo-data" in Google Cloud Storage zur Verfügung gestellt.

  • Ersetzen Sie your-dataset-id durch die Dataset-ID des Datasets (nicht den Anzeigenamen). Beispiel: VOT4798585402963263488.
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-datasets/youtube_8m_videos_animal_tiny.csv"]
     }
  }
}'

Sie sollten eine Vorgangs-ID für den Datenimport erhalten. Beispiel: VOT7506374678919774208.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "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": {}
  }
}

Status des Importvorgangs abrufen

Sie können den Status des Importvorgangs mit folgendem curl-Befehl abfragen.

  • Ersetzen Sie your-operation-ID durch die ID des Importvorgangs.
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

Der Importvorgang kann einige Zeit in Anspruch nehmen. Wenn der Import abgeschlossen ist, wird im Status des Vorgangs done: true angezeigt und es sollten keine Fehler aufgelistet sein, wie im folgenden Beispiel zu sehen.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "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"
  }
}

Liste von Datasets abrufen

Sie können die Liste der Datasets und die Anzahl der in das Dataset importierten Beispielvideos mit dem folgenden Befehl abrufen.

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

Die Ausgabe sollte in etwa so aussehen:

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

Modell trainieren

Modelltraining starten

Nachdem Sie Ihr Dataset erstellt und Ihre Trainingsdaten in Ihr Dataset importiert haben, können Sie Ihr benutzerdefiniertes Modell trainieren.

Sie können Ihr Modell mit folgendem curl-Befehl trainieren.

  • Ersetzen Sie your-dataset-id durch die Dataset-ID des Datasets (nicht den Anzeigenamen).

  • Ersetzen Sie your-model-name durch einen Namen, den Sie für Ihr Modell auswählen.

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",
  "videoObjectTrackingModelMetadata": {},
}'

Sie sollten eine Vorgangs-ID für den Datenimport erhalten. Beispiel: VOT1741767155885539328.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "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": {}
  }
}

Status des Modelltrainings abrufen

Sie können den Status des Modelltrainings mit folgendem curl-Befehl abfragen.

  • Ersetzen Sie your-operation-ID durch die ID Ihres Trainingsvorgangs.
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

Die Ausgabe sollte Folgendem ähneln: Wenn der Vorgang abgeschlossen ist, wird done: true angezeigt und es sollten keine Fehler aufgelistet sein.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "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": {}
  }
}

Modellverfügbarkeit überprüfen

Nach erfolgreichem Abschluss des Modelltrainings können Sie überprüfen, ob Ihr Modell verfügbar ist. Verwenden Sie dazu den folgenden Befehl, um die Modelle für Ihr Projekt aufzulisten.

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

Die Ausgabe sollte in etwa so aussehen:

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

Vorhersagen treffen

Mit dem Befehl batchPredict können Sie Labels (Vorhersagen) für Videos anfragen. Der Befehl batchPredict benötigt als Eingabe eine CSV-Datei, die in Ihrem Google Cloud Storage-Bucket gespeichert ist. Diese Datei enthält die Pfade zu den Videos sowie jeweils die Start- und Endzeiten, die das zu annotierende Videosegment angeben. In diesem Schnellstart heißt diese CSV-Datei hmdb_split1_train_gs.csv.

Führen Sie den folgenden Befehl aus, um eine Batchvorhersageanfrage (asynchron) auszuführen.

  • Ersetzen Sie your-model-id durch die ID des Modells.

  • Ersetzen Sie your-output-bucket durch einen Google Cloud Storage-Bucket, in dem die Ergebnisse Ihrer Vorhersage gespeichert werden.

  • Ersetzen Sie your-object-id durch einen Objektnamen, der angibt, wo die Ausgabe Ihrer Vorhersageanfrage in Ihrem Google Cloud Storage-Bucket gespeichert werden soll. Sie müssen Schreibberechtigungen für den Google Cloud Storage-Bucket haben.

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-datasets/youtube_8m_videos_animal_batchpredict.csv"]
    }
  },
  "outputConfig": {
    "gcsDestination": {
      "outputUriPrefix": "gs://your-output-bucket/your-object-id"
    }
  }
}'

Sie sollten eine Vorgangs-ID für Ihre Batch-Vorhersageanforderung erhalten. Beispiel: VOT926615623331479552.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "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": {
      "inputConfig": {
        "gcsSource": {
          "inputUris": [
            "gs://automl-video-datasets/youtube_8m_videos_animal_batchpredict.csv"
          ]
        }
      },
      "outputInfo": {
        "gcsOutputDirectory": "${YOUR_BUCKET}/prediction-test_model_01-2019-01-11T21:39:19.684Z"
      }
    }
  }
}

Status des Vorhersagevorgangs abfragen

Sie können den Status Ihres Batchvorhersagevorgangs mit folgendem curl-Befehl abfragen.

  • Ersetzen Sie your-operation-id durch die ID des Vorgangs zur Batchvorhersage.
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

Abhängig von der Anzahl der Videos, die Sie in Ihrer CSV-Datei angegeben haben, kann die Batchvorhersage einige Zeit in Anspruch nehmen. Wenn der Vorgang abgeschlossen ist, wird im Status des Vorgangs done: true angezeigt und es sollten keine Fehler aufgelistet sein, wie im folgenden Beispiel zu sehen.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "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"
  }
}

Wenn die Batchvorhersage abgeschlossen ist, wird die Ausgabe der Vorhersage in dem Google Cloud Storage-Bucket gespeichert, den Sie in Ihrem Befehl angegeben haben. Für jedes Videosegment gibt es eine JSON-Datei. Beispiel:

my-video-01.avi.json

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

Bereinigen

Wenn Sie Ihr benutzerdefiniertes Modell und das zugehörige Dataset nicht mehr benötigen, können Sie sie löschen.

Modelle auflisten

Führen Sie folgenden Befehl aus, um für Ihr Projekt die Modelle und die zugehörigen IDs aufzulisten.

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

Modell löschen

Sie können ein Modell mit dem folgenden Befehl löschen.

  • Ersetzen Sie your-model-id durch die ID des Modells.
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

Datasets auflisten

Führen Sie folgenden Befehl aus, um für Ihr Projekt die Datasets und die zugehörigen IDs aufzulisten.

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

Dataset löschen

Sie können ein Dataset mit dem folgenden Befehl löschen.

  • Ersetzen Sie your-dataset-id durch die ID des Modells.
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