开始持续评估之前

您必须先完成以下两项操作,才能使用持续评估功能:

  • 训练一个模型版本并将其部署到 AI Platform Prediction 以进行评估
  • 启用持续评估所需的 Google Cloud API

将模型版本部署到 AI Platform Prediction

AI Platform 数据标签服务只能对已部署到 AI Platform Prediction 的机器学习模型执行持续评估。创建评估作业时,请将其附加到一个 AI Platform Prediction 模型版本。每个模型版本只能附加一个评估作业。

如需了解如何训练机器学习模型并将其作为模型版本部署到 AI Platform Prediction,请参阅使用 Keras 进行训练和预测的入门指南

模型版本要求

持续评估功能支持多种类型的机器学习模型:

模型类型
图片分类 采用一张图片作为输入并返回一个或多个标签作为输出的模型。输入的图片可以是使用 base64 编码的图片或 Cloud Storage 文件的路径。
文本分类 采用文本作为输入并返回一个或多个标签作为输出的模型。
一般分类 采用任意数组或字符串作为输入并返回一个或多个标签作为输出的模型。

数据标签服务不能指派人工审核者为一般分类提供评估依据标签。如果您为一般分类模型设置持续评估,则必须自行标记标准答案标签。
图片对象检测 采用图片作为输入并返回一个或多个标记边界框作为输出的模型。这些边界框用于预测图片中对象的位置。

根据机器学习模型执行的任务,您必须对该模型进行训练,使部署的模型版本接受在线预测输入并以连续评估所支持的特定格式生成在线预测输出。

请注意,下一部分中的规范扩展了 AI Platform Prediction 在线预测请求和响应的 JSON 正文要求。目前,持续评估仅对在线预测进行采样,不对批量预测进行采样。了解在线预测与批量预测之间的差异。

示例中突出显示的字段表示持续评估所需的字段。您可以在预测输入和输出中加入其他字段,但数据标签服务在将您的输入分配给人工审核者以添加评估依据标签以及计算评估指标时会忽略这些字段。

突出显示的字段的键(yourDataKeyyourLabelKeyyourScoreKeyyourBoundingBoxKey)可以替换为您选择的任何字符串,只要这些字符串不包含 / 字符即可。创建评估作业时,您必须指定这些字符串

以下部分介绍了每种模型的要求:

图片分类

输入格式

您的模型必须接收以下格式的在线预测请求:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> 可以是以下任一内容:

  • 使用 base64 编码的图片
  • 存储在 Cloud Storage 中的图片的 URI。为确保 Data Labeling Service 拥有图片的读取权限,Cloud Storage 存储分区应属于您要创建评估作业的 Google Cloud 项目。
Base64 编码示例

以下示例展示了一个在线预测请求正文,其中含有使用 base64 编码的图片:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

请注意,输入数据嵌套在此示例的 image_bytes 字段中。如果模型接受这样的预测输入,请确保在创建评估作业时指定此嵌套结构。

Cloud Storage 引用示例

以下示例展示了一个在线预测请求正文,其中引用了 Cloud Storage 中的图片:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

输出格式

您的模型必须按以下格式返回在线预测结果:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

标签数组和得分数组必须具有相同的长度。如果模型执行单个标签分类,则必须有一个标签和一个得分。如果模型执行多个标签分类,则标签数组中的每个标签必须对应于得分数组中相同索引处的得分。

得分是必需的。它们表示机器学习模型为其预测结果分配的置信度或概率。通常情况下,模型将针对特定输入计算出的得分与分类阈值进行比较,以选择标签。

分类输出示例

以下示例展示了分类的在线预测响应正文:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

文本分类

输入格式

您的模型必须接收以下格式的在线预测请求:

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
文本输入示例

以下示例展示了包含文本数据的在线预测请求正文:

{
  "instances": [
    {
      "text": "If music be the food of love, play on;"
    }
  ]
}

输出格式

您的模型必须按以下格式返回在线预测结果:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

标签数组和得分数组必须具有相同的长度。如果模型执行单个标签分类,则必须有一个标签和一个得分。如果模型执行多个标签分类,则标签数组中的每个标签必须对应于得分数组中相同索引处的得分。

得分是必需的。它们表示机器学习模型为其预测结果分配的置信度或概率。通常情况下,模型将针对特定输入计算出的得分与分类阈值进行比较,以选择标签。

分类输出示例

以下示例展示了分类的在线预测响应正文:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

一般分类

输入格式

您的模型必须接收以下格式的在线预测请求:

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
一般输入示例

以下示例展示了一个在线预测请求正文,其中包含一组由字符串和数字组成的输入数据:

{
  "instances": [
    {
      "weather": [
        "sunny",
        72,
        0.22
      ]
    }
  ]
}

输出格式

您的模型必须按以下格式返回在线预测结果:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

标签数组和得分数组必须具有相同的长度。如果模型执行单个标签分类,则必须有一个标签和一个得分。如果模型执行多个标签分类,则标签数组中的每个标签必须对应于得分数组中相同索引处的得分。

得分是必需的。它们表示机器学习模型为其预测结果分配的置信度或概率。通常情况下,模型将针对特定输入计算出的得分与分类阈值进行比较,以选择标签。

分类输出示例

以下示例展示了分类的在线预测响应正文:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

图片对象检测

输入格式

您的模型必须接收以下格式的在线预测请求:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> 可以是以下任一内容:

  • 使用 base64 编码的图片
  • 存储在 Cloud Storage 中的图片的 URI。为确保 Data Labeling Service 拥有图片的读取权限,Cloud Storage 存储分区应属于您要创建评估作业的 Google Cloud 项目。
Base64 编码示例

以下示例展示了一个在线预测请求正文,其中含有使用 base64 编码的图片:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

请注意,输入数据嵌套在此示例的 image_bytes 字段中。如果模型接受这样的预测输入,请确保在创建评估作业时指定此嵌套结构。

Cloud Storage 引用示例

以下示例展示了一个在线预测请求正文,其中引用了 Cloud Storage 中的图片:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

输出格式

您的模型必须按以下格式返回在线预测结果:

{
  "predictions": [
    {
      "yourBoundingBoxKey": [
        {
          "top_left": {
            "x": <left coordinate for first box>,
            "y": <top coordinate for first box>
          },
          "bottom_right": {
            "x": <right coordinate for first box>,
            "y": <bottom coordinate for first box>
          },
        },
        ...
      ],
      "YOUR_LABEL_KEY": [
        <label for first box>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

边界框数组、标签数组和得分数组必须具有相同的长度。边界框数组中的每个条目都必须使用标签数组中相同索引处的标签进行标记,并对应于得分数组中相同索引处的得分。例如,yourBoundingBoxKey[0] 的标签为 yourLabelKey[0],得分为 yourScoreKey[0]

得分是必需的。它们表示机器学习模型为其预测结果分配的置信度或概率。通常情况下,模型将针对特定输入计算出的得分与分类阈值进行比较,以选择标签。

其他输出格式

如果您对 yourBoundingBoxKey 使用字符串 detection_boxes,对 yourLabelKey 使用字符串 detection_classes,对 yourScoreKey 使用字符串 detection_scores,则可以对预测输出使用以下格式(而不是标准格式):

{
  "predictions": [
    {
      "detection_boxes": [
        {
          "x_min": <left coordinate for first box>,
          "y_min": <top coordinate for first box>,
          "x_max": <right coordinate for first box>,
          "y_max": <bottom coordinate for first box>
        },
        ...
      ],
      "detection_classes": [
        <label for first box>,
        ...
      ],
      "detection_scores": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
对象检测输出示例

以下示例展示了对象检测的在线预测响应正文:

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

启用 API

您必须先启用多个 Google Cloud API,然后才能使用持续评估功能。以下步骤假设您在将模型版本部署到 AI Platform Prediction 时,已在同一项目中启用了 AI Platform Training and Prediction API。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Data Labeling Service and BigQuery APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Data Labeling Service and BigQuery APIs.

    Enable the APIs

后续步骤

阅读创建评估作业指南,开始使用持续评估。