データセットからメタデータとアノテーションをエクスポートする

Vertex AI を使用すると、メタデータとアノテーション セットを Dataset リソースからエクスポートできます。この機能は、アノテーションの変更、追加、削除の特定のコレクションの記録を保持する場合に便利です。

Dataset をエクスポートすると、Vertex AI は Dataset のメタデータとアノテーションを含む 1 つ以上の JSON Lines ファイルを作成し、これらの JSON Lines ファイルを任意の Cloud Storage ディレクトリに保存します。

画像、テキスト、動画の Dataset リソースをエクスポートできますが、表形式の Dataset リソースはエクスポートできません。

Dataset をエクスポートしても、Dataset のベースとなっている画像、テキスト、動画データの追加のコピーは作成されません。エクスポート プロセスによって作成された JSON Lines ファイルには、Dataset にデータをインポートしたときに指定したデータの元の Cloud Storage URI が含まれています。

Google Cloud コンソールまたは API を使用して Dataset をエクスポートする

Google Cloud コンソールまたは Vertex AI API を使用して、Dataset をエクスポートできます。該当するタブの手順に沿って操作してください。

コンソール

  1. Google Cloud コンソールの [Vertex AI] セクションで、[データセット] ページに移動します。

    [データセット] ページに移動

  2. [リージョン] プルダウン リストで、Dataset が保存されているロケーションを選択します。

  3. Dataset の行を探します。すべてのアノテーション セットまたは特定のアノテーション セットのメタデータとアノテーションをエクスポートできます。

    • Dataset のすべてのアノテーション セットのメタデータとアノテーションをエクスポートする場合は、[ をさらに表示] をクリックします。次に、[データセットをエクスポート] をクリックします。

      これにより、Vertex AI は各アノテーション セットの JSON Lines ファイルのセットを作成します。

    • 特定のアノテーション セットのメタデータとアノテーションをエクスポートする場合は、次の手順を行います。

      1. [ノードを展開 ] をクリックして、Dataset の各アノテーション セットの行を表示します。

      2. エクスポートするアノテーション セットの行で、[ をさらに表示] をクリックしてから、[アノテーション セットをエクスポート] をクリックします。

      これにより、Vertex AI は指定されたアノテーション セットの JSON Lines ファイルのセットを作成します。

  4. [データのエクスポート] ダイアログで、Vertex AI でエクスポートされた JSON Lines ファイルを保存する Cloud Storage ディレクトリを入力します。[エクスポート] をクリックします。

REST

Dataset の ID を取得する

Dataset をエクスポートするには、Dataset の数値 ID が必要です。Dataset の表示名はわかっているが ID がわからない場合は、次のセクションを展開し、API を使用して ID を取得する方法を確認します。

表示名から Dataset の ID を取得する

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: Dataset が保存されているリージョン。例: us-central

  • PROJECT_ID: 実際のプロジェクト ID

  • DATASET_DISPLAY_NAME: Dataset の表示名。

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?filter=displayName=DATASET_DISPLAY_NAME

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?filter=displayName=DATASET_DISPLAY_NAME"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?filter=displayName=DATASET_DISPLAY_NAME" | Select-Object -Expand Content

次のレスポンス例は、Dataset の ID を検索する場所を強調するため、... で省略されています。これは、DATASET_ID の代わりとなる番号です。

{
  "datasets": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/datasets/DATASET_ID",
      "displayName": "DATASET_DISPLAY_NAME",
      ...
    }
  ]
}

または、Google Cloud コンソールから Dataset の ID を取得します。Vertex AI の [データセット] ページに移動し、[ID] 列で番号を確認します。

[データセット] ページに移動

1 つ以上のアノテーション セットをエクスポートする

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: Dataset が保存されているリージョン。例: us-central

  • PROJECT_ID: 実際のプロジェクト ID

  • DATASET_ID: Dataset の数値 ID。

  • EXPORT_DIRECTORY: Vertex AI でエクスポートされた JSON Lines ファイルを保存するディレクトリの Cloud Storage URI(gs:// で始まる)。これは、アクセスできる Cloud Storage バケットに存在している必要がありますが、ディレクトリはまだ存在していなくても構いません。

  • FILTER: エクスポートするアノテーション セットを決定するフィルタ文字列。

    • Dataset のすべてのアノテーション セットのメタデータとアノテーションをエクスポートする場合は、FILTER を空の文字列に置き換えます(または、リクエスト本文から annotationsFilter フィールド全体を省略します)。これにより、Vertex AI は各アノテーション セットの JSON Lines ファイルのセットを作成します。

    • 特定のアノテーション セットのメタデータとアノテーションをエクスポートする場合は、FILTER を次のように置き換えます。

      labels.aiplatform.googleapis.com/annotation_set_name=ANNOTATION_SET_ID
      

      これにより、Vertex AI は数値 ID が ANNOTATION_SET_ID のアノテーション セットに JSON Lines ファイルのセットを作成します。

      指定するアノテーション セットの数値 ID を確認するには、Google Cloud コンソールでアノテーション セットを表示し、URL で annotationSetId に続く値を探します。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:export

リクエストの本文(JSON):

{
  "exportConfig": {
    "gcsDestination": {
      "outputUriPrefix": "EXPORT_DIRECTORY"
    },
    "annotationsFilter": "FILTER"
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:export"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:export" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportDataOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-02-17T00:54:58.827429Z",
      "updateTime": "2021-02-17T00:54:58.827429Z"
    },
    "gcsOutputDirectory": "EXPORT_DIRECTORY/export-data-DATASET_DISPLAY_NAME-2021-02-17T00:54:58.734772Z"
  }
}

一部のリクエストでは、完了までに長時間かかるオペレーションが実行されます。このようなリクエストではオペレーション名が返されます。そのオペレーション名を使用して、オペレーションのステータス確認やキャンセルを行うことができます。Vertex AI には、長時間実行オペレーションに対して呼び出しを行うためのヘルパー メソッドが用意されています。詳細については、長時間実行オペレーションによる作業をご覧ください。

エクスポートされたファイルの説明

前のセクションで指定したエクスポート ディレクトリ内に、Vertex AI は Dataset の表示名とタイムスタンプでラベル付けされた新しいディレクトリを作成します(例: export-data-DATASET_DISPLAY_NAME-2021-02-17T00:54:58.734772Z)。このディレクトリには、エクスポートしたアノテーション セットごとにサブディレクトリがあります。

各アノテーション セットには、1 つ以上の JSON Lines ファイルがあります。各 JSON Lines ファイルの各行は、アノテーション セットのデータ項目を表します。各データ項目には、データを Vertex AI にインポートしたときに指定したメタデータとアノテーション、さらに、データをインポートした後に追加したメタデータとアノテーションが含まれている場合があります。たとえば、Datasetデータのラベル付けをリクエストした場合や、Google Cloud コンソールで Dataset に手動でラベルまたはアノテーションを追加した場合は、この情報はエクスポートされたファイルに含まれます。

複数のアノテーション セットをエクスポートすると、複数の JSON Lines ファイルに同じデータ項目が表示される場合があります。たとえば、複数のアノテーション セットを含む画像 Dataset をエクスポートする場合、1 つの JSON Lines ファイルに単一ラベル分類アノテーションを持つデータ項目が含まれる場合があります。異なるアノテーション セットの別の JSON Lines ファイルに、同じデータ項目が含まれていても、代わりにオブジェクト検出アノテーションが含まれている場合があります。

エクスポートされたファイルの形式は、Vertex AI へのデータのインポートに使用できる JSON Lines インポート ファイル形式と一致します。この形式は、データの種類(画像、表形式、テキスト、動画)と目的(オブジェクト トラッキング、エンティティ抽出、分類など)によって異なります。たとえば、単一ラベルの画像分類のアノテーション セットをエクスポートする場合、画像データの準備で説明されているように、各 JSON Lines ファイルの各行は gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml スキーマ ファイルに従ってフォーマットされます。

アノテーション セットの種類に応じた JSON Lines の形式については、次のガイドをご覧ください。

次のステップ