匯出資料集內的中繼資料和註解

您可以使用 Vertex AI 從 Dataset 資源匯出中繼資料和註解集。如果您想保留特定註解變更、新增或刪除作業的記錄,這項功能就非常實用。

匯出 Dataset 時,Vertex AI 會建立一或多個 JSON Lines 檔案,其中包含 Dataset 的中繼資料和註解,並將這些 JSON Lines 檔案儲存至您選擇的 Cloud Storage 目錄。

您可以匯出圖片、文字和影片Dataset資源。您無法匯出表格 Dataset 資源。

匯出 Dataset 不會建立 Dataset 所依據的圖片、文字或影片資料副本。匯出程序建立的 JSON Lines 檔案包含原始 Cloud Storage URI,這些 URI 是您將資料匯入 Dataset 時指定的。

使用 Google Cloud 控制台或 API 匯出 Dataset

您可以使用 Google Cloud 控制台或 Vertex AI API 匯出 Dataset。 請按照對應分頁中的步驟操作:

控制台

  1. 在 Google Cloud 控制台的 Vertex AI 專區,前往「Datasets」頁面。

    前往「資料集」頁面

  2. 在「Region」(區域) 下拉式清單中,選取儲存 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:

根據資料集的顯示名稱取得 ID

使用任何要求資料之前,請先替換以下項目:

  • LOCATION:儲存 Dataset 的位置。 例如:us-central1

  • PROJECT_ID:您的專案 ID

  • DATASET_DISPLAY_NAMEDataset 的顯示名稱。

HTTP 方法和網址:

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」欄中的數字。

前往「資料集」頁面

匯出一或多個註解集

使用任何要求資料之前,請先替換以下項目:

  • LOCATION:儲存 Dataset 的位置。 例如:us-central1

  • PROJECT_ID:您的專案 ID

  • DATASET_IDDataset 的數值 ID。

  • EXPORT_DIRECTORY:Cloud Storage URI (開頭為 gs://),指定要讓 Vertex AI 儲存匯出 JSON Lines 檔案的目錄。這必須位於您有權存取的 Cloud Storage bucket 中,但目錄不需存在。

  • FILTER:篩選器字串,用於決定要匯出哪些註解集

    • 如要匯出所有 Dataset 註解集的註解和中繼資料,請將 FILTER 替換為空字串 (或完全省略要求主體中的 annotationsFilter 欄位)。這會告知 Vertex AI 為每個註解集建立一組 JSON Lines 檔案。

    • 如要匯出特定註解集的註解和中繼資料,請將 FILTER 替換為下列內容:

      labels.aiplatform.googleapis.com/annotation_set_name=ANNOTATION_SET_ID
      

      這會告知 Vertex AI 為註解集建立一組 JSON Lines 檔案,並使用數值 ID ANNOTATION_SET_ID

      如要找出要指定的註解集數字 ID,請在 Google Cloud 控制台中查看註解集,並在網址中尋找 annotationSetId 後方的值。

HTTP 方法和網址:

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。在這個目錄中,您可以找到每個匯出註解集的子目錄。

每個註解集都有一或多個 JSON Lines 檔案。每個 JSON Lines 檔案的每一列,都代表註解集中的一個資料項目。每個資料項目可能包含您將資料匯入 Vertex AI 時指定的中繼資料和註解,以及匯入資料後新增的中繼資料和註解。舉例來說,如果您要求為 Dataset 加上資料標籤,或是在Google Cloud 控制台中手動為 Dataset 新增標籤或註解,匯出的檔案就會包含這類資訊。

如果您匯出多個註解集,相同的資料項目可能會出現在多個 JSON Lines 檔案中。舉例來說,如果您匯出含有多個註解集的圖片 Dataset,一個 JSON Lines 檔案可能包含具有單一標籤分類註解的資料項目;另一個註解集的 JSON Lines 檔案可能包含相同的資料項目,但具有物件偵測註解。

匯出檔案的格式與 JSON Lines 匯入檔案的格式相同,可用於將資料匯入 Vertex AI。格式取決於資料類型 (圖片、表格、文字、影片) 和目標 (例如物件追蹤、實體擷取或分類)。舉例來說,如果您匯出單一標籤圖片分類的註解集,則每個 JSON Lines 檔案的每一行都會按照gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml結構定義檔案格式設定,如「準備圖片資料」一文所述。

如要進一步瞭解不同類型的註解集適用的 JSON Lines 格式,請參閱下列指南:

後續步驟