从数据集导出元数据和注解

Vertex AI 允许您从 Dataset 资源导出元数据和注释集。如果您想要维护一组特定的注解更改、添加或删除操作的记录,此功能会非常有用。

当您导出 Dataset 时,Vertex AI 会创建包含 Dataset 的元数据和注解的一个或多个 JSON 行文件,并将这些 JSON 行文件保存到您选择的 Cloud Storage 目录。

您可以导出图片、文本和视频 Dataset 资源。您无法导出表格 Dataset 资源。

导出 Dataset 不会创建您的 Dataset 所基于的图片、文本或视频数据的其他副本。导出过程创建的 JSON 行文件包含您在将数据导入 Dataset 时为数据指定的原始 Cloud Storage URI。

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

您可以使用 Google Cloud Console 或 Vertex AI API 导出 Dataset。请按照相应标签页中的步骤操作:

控制台

  1. 在 Google Cloud 控制台的 Vertex AI 部分中,转到数据集页面。

    转到“数据集”页面

  2. 区域下拉列表中,选择存储 Dataset 的位置。

  3. 找到 Dataset 的行。您可以导出所有注释集或特定注释集的元数据和注释:

    • 如果要导出 Dataset 的所有注释集的元数据和注释,请点击查看更多 ,然后点击导出数据集

      这会指示 Vertex AI 为每个注解集创建一组 JSON 行文件。

    • 如果要导出特定注释集的元数据和注释,请执行以下操作:

      1. 点击展开节点 以显示 Dataset 的每个注释集对应的行。

      2. 在要导出的注释集所在的行中,点击查看更多 ,然后点击导出注释集

      这会指示 Vertex AI 为您指定的注解集创建一组 JSON 行文件。

  4. 导出数据对话框中,输入您希望 Vertex AI 用于保存导出的 JSON 行文件的 Cloud Storage 目录。点击导出

REST

获取 Dataset 的 ID

要导出 Dataset,您必须知道 Dataset 的数字 ID。如果您知道 Dataset 的显示名,但不知道 ID,请展开以下部分,了解如何使用 API 获取 ID:

从数据集的显示名称获取 Dataset ID

在使用任何请求数据之前,请先进行以下替换:

  • LOCATIONDataset 的存储位置。例如 us-central1

  • PROJECT_ID:您的项目 ID

  • DATASET_DISPLAY_NAMEDataset 的显示名。

HTTP 方法和网址:

GET http://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)" \
"http://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 "http://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 列中找到该编号。

转到“数据集”页面

导出一个或多个注解集

在使用任何请求数据之前,请先进行以下替换:

  • LOCATIONDataset 的存储位置。例如 us-central1

  • PROJECT_ID:您的项目 ID

  • DATASET_IDDataset 的数字 ID。

  • EXPORT_DIRECTORY:您希望 Vertex AI 用于保存导出的 JSON 行文件的目录的 Cloud Storage URI(以 gs:// 开头)。此目录必须位于您有权访问的 Cloud Storage 存储桶中,但目录不需要已经存在。

  • FILTER:过滤器字符串,用于确定导出哪些注释集

    • 如果要导出 Dataset 的所有注释集的元数据和注释,请将 FILTER 更换为空字符串(或在请求正文中完全省略 annotationsFilter 字段)。这会指示 Vertex AI 为每个注解集创建一组 JSON 行文件。

    • 如果要导出特定注释集的元数据和注释,请将 FILTER 替换为以下内容:

      labels.aiplatform.googleapis.com/annotation_set_name=ANNOTATION_SET_ID
      

      这会指示 Vertex AI 为具有数字 ID ANNOTATION_SET_ID 的注解集创建一组 JSON 行文件。

      如需找到您要指定的注解集的数字 ID,请在 Google Cloud 控制台中查看注解集,并在网址中查找 annotationSetId 后面的值。

HTTP 方法和网址:

POST http://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 \
"http://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 "http://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 行文件。每个 JSON 行文件的每一行代表注解集中的一个数据项。每个数据项可能包含您在将数据导入 Vertex AI 时指定的元数据和注解,以及您在导入数据后添加的元数据和注解。例如,如果您为 Dataset 请求了为数据加标签,或者您在 Google Cloud 控制台中为 Dataset 手动添加了标签或注解,则导出的文件中会包含此信息。

如果您导出多个注解集,则相同的数据项可能会出现在多个 JSON 行文件中。例如,如果您导出具有多个注解集的图片 Dataset,一个 JSON 行文件可能包含具有单标签分类注解的数据项;不同注解集的另一个 JSON 行文件可能包含相同的数据项,但它具有对象检测注解。

导出文件的格式与可用于将数据导入 Vertex AI 的 JSON 行导入文件的格式一致。此格式取决于数据类型(图片、表格、文本、视频)和目标(例如对象跟踪、实体提取或分类)。例如,如果导出单标签图片分类的注解集,则每个 JSON 行文件的每一行都根据 gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml 架构文件设置格式,如准备图片数据中所述。

如需详细了解适用于不同类型的注释集的不同 JSON 行格式,请查看以下指南:

后续步骤