支持的模型和架构

配置对象丰富化功能时,您可以选择哪些机器学习模型来分析存储的对象。每个模型都会评估符合条件的图片或 PDF 文档,并将结构化元数据直接附加到 Cloud Storage 对象。

本页面介绍了每种受支持的模型、其资格要求以及其输出架构,以帮助您在 BigQuery 中或通过 API 解析和查询丰富元数据。

模型与对象丰富化之间的关系

您可以通过创建特征配置 (FeatureConfig) 来激活模型,该配置指定要扫描的存储桶以及要运行的模型。在异步处理期间,Cloud Storage 会使用您选择的模型评估符合条件的对象,并生成名为对象丰富化的结构化 JSON 元数据。

每个模型都会生成一个专用的 JSON 载荷,Cloud Storage 会将该载荷作为 Google 管理的对象上下文直接附加到 contexts.custom 属性下的对象。每个载荷都由一个以 google:annotation: 为前缀的唯一上下文键标识。

根据您的工作流,您可以通过以下两种方式使用此元数据:

人脸检测

使用 face-detector 模型检测存储的图片中的人脸。该模型可检测整个头部和各个面部的边界多边形,并定位 36 个面部特征点,例如眼睛、鼻子和嘴巴。它还会计算头部方向角度(例如侧倾、平移和倾斜),并评估情绪表达的可能性。

模型详情

  • 模型名称:face-detector
  • 上下文键:google:annotation:face-detector-v1
  • 符合条件的对象:大小不超过 20 MiB 且 Content-Type 为 BMP、GIF、ICO、JPEG、PNG、TIFF 或 WEBP 的图片对象。

输出架构

模型会输出一个 JSON 对象,其中包含 modelName、modelVersion 和一个包含 faceAnnotations 数组的 faceAnnotationGroup。如果模型执行失败,则 JSON 对象包含 error 对象,而不是 faceAnnotationGroup。

字段 类型 范围 说明
modelName string 不适用 生成此丰富数据的机器学习模型的名称。
modelVersion string 不适用 生成此丰富内容的机器学习模型的版本。
faceAnnotationGroup object 不适用 人脸检测丰富功能的顶级容器对象。在模型执行成功时显示。
faceAnnotationGroup.faceAnnotations[] array 不适用 图片中检测到的人脸列表。
faceAnnotationGroup.faceAnnotations[].boundingPoly object 不适用 包围整个头部和面部的 BoundingPoly,已缩放到原始图片尺寸。
faceAnnotationGroup.faceAnnotations[].faceDetectionBoundingPoly object 不适用 用于人脸检测的 BoundingPoly。比 boundingPoly 更紧密,仅包含皮肤和可见的面部特征。
faceAnnotationGroup.faceAnnotations[].landmarks[] array 不适用 检测到的 FaceLandmark 对象列表,表示特定的面部特征。
faceAnnotationGroup.faceAnnotations[].rollAngle number -180 至 180 人脸的顺时针或逆时针旋转角度。
faceAnnotationGroup.faceAnnotations[].panAngle number -180 至 180 脸部朝向左侧或右侧的水平角度(以度为单位)。
faceAnnotationGroup.faceAnnotations[].tiltAngle number -180 至 180 人脸向上或向下倾斜的垂直俯仰角(以度为单位)。
faceAnnotationGroup.faceAnnotations[].detectionConfidence number 0 至 1(0% 至 100%) 整体人脸检测的置信度分数。
faceAnnotationGroup.faceAnnotations[].landmarkingConfidence number 0 至 1(0% 至 100%) 面部特征定位的置信度分数。
faceAnnotationGroup.faceAnnotations[].joyProbability number 0 至 1(0% 至 100%) 人脸表达喜悦的可能性。
faceAnnotationGroup.faceAnnotations[].sorrowProbability number 0 至 1(0% 至 100%) 人脸表达悲伤的可能性。
faceAnnotationGroup.faceAnnotations[].angerProbability number 0 至 1(0% 至 100%) 人脸表达愤怒情绪的可能性。
faceAnnotationGroup.faceAnnotations[].surpriseProbability number 0 至 1(0% 至 100%) 人脸表达惊讶的可能性。
faceAnnotationGroup.faceAnnotations[].underExposedProbability number 0 至 1(0% 至 100%) 图片中的面孔曝光不足的可能性。
faceAnnotationGroup.faceAnnotations[].blurredProbability number 0 至 1(0% 至 100%) 图片中的人脸模糊的可能性。
faceAnnotationGroup.faceAnnotations[].headwearProbability number 0 至 1(0% 至 100%) 此人戴着头饰(例如帽子或便帽)的可能性。
error object 不适用 一个包含 code 和 message 的 google.rpc.Status 对象。仅在模型执行失败时填充。

BoundingPoly

BoundingPoly 对象表示一个边界多边形,其中包含检测到的图片特征。

字段 类型 范围 说明
vertices[] array 不适用 使用绝对像素 Vertex 对象的边界多边形坐标。
normalizedVertices[] array 不适用 使用相对 NormalizedVertex 对象的多边形边界坐标,缩放比例为 0 到 1。

Vertex

Vertex 对象表示缩放到原始图片尺寸的 2D 坐标点。

字段 类型 范围 说明
x integer 0 或更高版本 水平 X 坐标,以距离左边缘的像素数为单位。
y integer 0 或更高版本 垂直 Y 坐标,以距离顶部边缘的像素数为单位。

NormalizedVertex

NormalizedVertex 对象表示一个 2D 坐标点,以相对于原始图片尺寸的比率表示。

字段 类型 范围 说明
x number 0 至 1 相对于图片宽度的水平 X 坐标,其中 0.0 是左边缘,1.0 是右边缘。
y number 0 至 1 相对于图片高度的垂直 Y 坐标,其中 0.0 是顶边,1.0 是底边。

FaceLandmark

FaceLandmark 对象表示在人脸中检测到的特定面部地标。

字段 类型 范围 说明
type enum 请参阅地标类型 检测到的特定面部特征点。
position object 不适用 地标的 3D Position。

地标类型

该模型可识别 36 个特定的面部特征点:

  • TYPE_UNSPECIFIED
  • LEFT_EYE
  • RIGHT_EYE
  • LEFT_OF_LEFT_EYEBROW
  • RIGHT_OF_LEFT_EYEBROW
  • LEFT_OF_RIGHT_EYEBROW
  • RIGHT_OF_RIGHT_EYEBROW
  • MIDPOINT_BETWEEN_EYES
  • NOSE_TIP
  • UPPER_LIP
  • LOWER_LIP
  • MOUTH_LEFT
  • MOUTH_RIGHT
  • MOUTH_CENTER
  • NOSE_BOTTOM_RIGHT
  • NOSE_BOTTOM_LEFT
  • NOSE_BOTTOM_CENTER
  • LEFT_EYE_TOP_BOUNDARY
  • LEFT_EYE_RIGHT_CORNER
  • LEFT_EYE_BOTTOM_BOUNDARY
  • LEFT_EYE_LEFT_CORNER
  • RIGHT_EYE_TOP_BOUNDARY
  • RIGHT_EYE_RIGHT_CORNER
  • RIGHT_EYE_BOTTOM_BOUNDARY
  • RIGHT_EYE_LEFT_CORNER
  • LEFT_EYEBROW_UPPER_MIDPOINT
  • RIGHT_EYEBROW_UPPER_MIDPOINT
  • LEFT_EAR_TRAGION
  • RIGHT_EAR_TRAGION
  • LEFT_EYE_PUPIL
  • RIGHT_EYE_PUPIL
  • FOREHEAD_GLABELLA
  • CHIN_GNATHION
  • CHIN_LEFT_GONION
  • CHIN_RIGHT_GONION
  • LEFT_CHEEK_CENTER
  • RIGHT_CHEEK_CENTER

位置

Position 对象表示面部重要部位的 3D 坐标。

字段 类型 范围 说明
x number 不适用 水平 X 坐标。
y number 不适用 垂直 Y 坐标。
z number 不适用 相对于面部平面的深度坐标,值越小表示距离摄像头越近。

示例输出

{
  "modelName": "face-detector",
  "modelVersion": "v1",
  "faceAnnotationGroup": {
    "faceAnnotations": [
      {
        "boundingPoly": {
          "vertices": [
            { "x": 1079, "y": 148 },
            { "x": 2152, "y": 148 },
            { "x": 2152, "y": 1396 },
            { "x": 1079, "y": 1396 }
          ],
          "normalizedVertices": [
            { "x": 0.35, "y": 0.12 },
            { "x": 0.70, "y": 0.12 },
            { "x": 0.70, "y": 0.95 },
            { "x": 0.35, "y": 0.95 }
          ]
        },
        "faceDetectionBoundingPoly": {
          "vertices": [
            { "x": 1190, "y": 427 },
            { "x": 2037, "y": 427 },
            { "x": 2037, "y": 1285 },
            { "x": 1190, "y": 1285 }
          ]
        },
        "landmarks": [
          {
            "type": "LEFT_EYE",
            "position": { "x": 1368.8, "y": 737.6, "z": 0.0016 }
          },
          {
            "type": "RIGHT_EYE",
            "position": { "x": 1659.2, "y": 755.1, "z": -116.4 }
          }
        ],
        "rollAngle": 1.959,
        "panAngle": -21.954,
        "tiltAngle": -2.267,
        "detectionConfidence": 0.98,
        "landmarkingConfidence": 0.61,
        "joyProbability": 0.18,
        "headwearProbability": 0.80
      }
    ]
  }
}

对象检测

使用 object-detector 模型检测和跟踪图片中的多个不同对象。对于每个识别出的对象,模型会提供实体名称、知识图谱实体 ID (knowledgeGraphId)、置信度分数和边界坐标。

模型详情

  • 模型名称:object-detector
  • 上下文键:google:annotation:object-detector-v1
  • 符合条件的对象:大小不超过 20 MiB 且 Content-Type 为 BMP、GIF、ICO、JPEG、PNG、TIFF 或 WEBP 的图片对象。

输出架构

模型会输出一个 JSON 对象,其中包含 modelName、modelVersion 和一个包含 objectAnnotations 数组的 objectAnnotationGroup。如果模型执行失败,则 JSON 对象包含 error 对象,而不是 objectAnnotationGroup。

字段 类型 范围 说明
modelName string 不适用 生成此丰富数据的机器学习模型的名称。
modelVersion string 不适用 生成此丰富内容的机器学习模型的版本。
objectAnnotationGroup object 不适用 对象检测丰富功能的顶级容器对象。在模型执行成功时显示。
objectAnnotationGroup.objectAnnotations[] array 不适用 图片中检测到的对象列表。
objectAnnotationGroup.objectAnnotations[].knowledgeGraphId string 不适用 检测到的对象的 Google 知识图谱实体 ID。
objectAnnotationGroup.objectAnnotations[].name string 不适用 检测到的物体的名称或标签,例如 "Person" 或 "Chair"。
objectAnnotationGroup.objectAnnotations[].score number 0 至 1(0% 至 100%) 对象检测的置信度分数。
objectAnnotationGroup.objectAnnotations[].boundingPoly object 不适用 对象周围的BoundingPoly,包含像素坐标 (vertices) 和归一化坐标 (normalizedVertices)。
error object 不适用 一个包含 code 和 message 的 google.rpc.Status 对象。仅在模型执行失败时填充。

示例输出

{
  "modelName": "object-detector",
  "modelVersion": "v1",
  "objectAnnotationGroup": {
    "objectAnnotations": [
      {
        "knowledgeGraphId": "/m/01g317",
        "name": "Person",
        "score": 0.89,
        "boundingPoly": {
          "normalizedVertices": [
            { "x": 0.1, "y": 0.15 },
            { "x": 0.2, "y": 0.15 },
            { "x": 0.2, "y": 0.3 },
            { "x": 0.1, "y": 0.3 }
          ]
        }
      }
    ]
  }
}

常规图片标签

使用 label-detector 模型为图片生成描述性标签、关键字和广泛的语义类别。该模型可识别一般实体、场景、活动和位置(例如 Landscape、Urban 或 Night),从而使您的视觉资源可搜索和可编目。

模型详情

  • 模型名称:label-detector
  • 上下文键:google:annotation:label-detector-v1
  • 符合条件的对象:大小不超过 20 MiB 且 Content-Type 为 BMP、GIF、ICO、JPEG、PNG、TIFF 或 WEBP 的图片对象。

输出架构

模型会输出一个 JSON 对象,其中包含 modelName、modelVersion 和一个包含 labelAnnotations 数组的 labelAnnotationGroup。如果模型执行失败,则 JSON 对象包含 error 对象,而不是 labelAnnotationGroup。

字段 类型 范围 说明
modelName string 不适用 生成此丰富数据的机器学习模型的名称。
modelVersion string 不适用 生成此丰富内容的机器学习模型的版本。
labelAnnotationGroup object 不适用 图片标签丰富功能的顶级容器对象。在模型执行成功时显示。
labelAnnotationGroup.labelAnnotations[] array 不适用 检测到的标签和类别列表。
labelAnnotationGroup.labelAnnotations[].knowledgeGraphId string 不适用 标签的 Google 知识图谱实体 ID。
labelAnnotationGroup.labelAnnotations[].description string 不适用 检测到的实体的文本说明或标签名称。
labelAnnotationGroup.labelAnnotations[].score number 0 至 1(0% 至 100%) 标签的置信度分数。
labelAnnotationGroup.labelAnnotations[].topicality number 0 至 1(0% 至 100%) 标签与图片主要主题的相关性,分数越高表示越突出。
error object 不适用 一个包含 code 和 message 的 google.rpc.Status 对象。仅在模型执行失败时填充。

示例输出

{
  "modelName": "label-detector",
  "modelVersion": "v1",
  "labelAnnotationGroup": {
    "labelAnnotations": [
      {
        "knowledgeGraphId": "/m/01d74z",
        "description": "Night",
        "score": 0.92,
        "topicality": 0.19
      }
    ]
  }
}

露骨内容检测

使用 content-safety 模型筛查上传的图片中是否包含敏感、露骨或不当内容。该模型会根据 Google 安全政策评估图片。它会评估成人内容、暴力内容和其他敏感内容的可能性,帮助您自动执行内容审核工作流。

模型详情

  • 模型名称:content-safety
  • 上下文键:google:annotation:content-safety-v1
  • 符合条件的对象:大小不超过 20 MiB 且 Content-Type 为 BMP、GIF、ICO、JPEG、PNG、TIFF 或 WEBP 的图片对象。

输出架构

模型会输出一个 JSON 对象,其中包含 modelName、modelVersion 和一个带有可能性评分的 contentSafetyAnnotation 对象。如果模型执行失败,则 JSON 对象包含 error 对象,而不是 contentSafetyAnnotation。

字段 类型 值 / 范围 说明
modelName string 不适用 生成此丰富数据的机器学习模型的名称。
modelVersion string 不适用 生成此丰富内容的机器学习模型的版本。
contentSafetyAnnotation object 不适用 内容分析结果的顶级容器对象。在模型执行成功时显示。
contentSafetyAnnotation.adultContentLikelihood string VERY_UNLIKELY、UNLIKELY、POSSIBLE、LIKELY、VERY_LIKELY 图片包含成人内容的可能性。
contentSafetyAnnotation.violentContentLikelihood string VERY_UNLIKELY、UNLIKELY、POSSIBLE、LIKELY、VERY_LIKELY 图片描绘暴力行为的可能性。
error object 不适用 一个包含 code 和 message 的 google.rpc.Status 对象。仅在模型执行失败时填充。

示例输出

{
  "modelName": "content-safety",
  "modelVersion": "v1",
  "contentSafetyAnnotation": {
    "adultContentLikelihood": "VERY_UNLIKELY",
    "violentContentLikelihood": "UNLIKELY"
  }
}

PDF 分类

使用 pdf-classification 模型,根据 PDF 文档的文本和视觉结构自动对其进行分类。该模型会为业务、行业和主题分配标准化的分层类别。这些类别可帮助您整理大型文档集合、为生成式 AI 检索提供依据,以及将文档路由到下游工作流。

模型详情

  • 模型名称:pdf-classification
  • 上下文键:google:annotation:pdf-classification-v1
  • 符合条件的对象:Content-Type 为 application/pdf 且大小不超过 20 MiB 的 PDF 文档对象。

输出架构

模型会输出一个 JSON 对象,其中包含 modelName、modelVersion 和一个 pdfClassificationCategoryList,后者包含一个已分类 categories 的数组。如果模型执行失败,则 JSON 对象包含 error 对象,而不是 pdfClassificationCategoryList。

字段 类型 范围 说明
modelName string 不适用 生成此丰富数据的机器学习模型的名称。
modelVersion string 不适用 生成此丰富内容的机器学习模型的版本。
pdfClassificationCategoryList object 不适用 PDF 分类结果的顶级容器对象。在模型执行成功时显示。
pdfClassificationCategoryList.categories[] array 不适用 检测到的分类类别列表。
pdfClassificationCategoryList.categories[].label string 查看 PDF 分类类别 层次结构类别路径,例如 "/Finance/Accounting & Auditing/Tax Preparation & Planning"。
pdfClassificationCategoryList.categories[].score number 0 至 1(0% 至 100%) 所分配类别的置信度分数。
error object 不适用 一个包含 code 和 message 的 google.rpc.Status 对象。仅在模型执行失败时填充。

支持的类别

pdf-classification 模型会为 PDF 文档分配标准化的分层内容类别。

类别采用分层结构,使用正斜杠 (/) 分隔类别深度。它们从广泛的顶级行业开始,然后缩小到特定的子类别:

  • 顶级行业:广泛的主题领域,例如 /Finance、/Law & Government 或 /Computers & Electronics。
  • 子类别:行业内的特定主题,例如 /Finance/Accounting & Auditing/Tax Preparation & Planning。
  • /Other 子类别:适用于与父类别一致但不属于任何特定子类别的内容。

如果文档涵盖多个不同的主题,模型可以为单个 PDF 对象分配多个高置信度类别。

顶级类别

该模型将 PDF 文档分为 27 个顶级类别:

  • /Adult
  • /Arts & Entertainment
  • /Autos & Vehicles
  • /Beauty & Fitness
  • /Books & Literature
  • /Business & Industrial
  • /Computers & Electronics
  • /Finance
  • /Food & Drink
  • /Games
  • /Health
  • /Hobbies & Leisure
  • /Home & Garden
  • /Internet & Telecom
  • /Jobs & Education
  • /Law & Government
  • /News
  • /Online Communities
  • /People & Society
  • /Pets & Animals
  • /Real Estate
  • /Reference
  • /Science
  • /Sensitive Subjects
  • /Shopping
  • /Sports
  • /Travel & Transportation

子类别遵循这些顶级类别下的分层路径 /Top-Level-Vertical/Subcategory,并可选择更深层次。如需查看所有受支持类别路径的完整列表,请参阅 PDF 分类类别。

示例输出

{
  "modelName": "pdf-classification",
  "modelVersion": "v1",
  "pdfClassificationCategoryList": {
    "categories": [
      {
        "label": "/Finance/Accounting & Auditing/Tax Preparation & Planning",
        "score": 0.85
      },
      {
        "label": "/Business & Industrial/Printing & Publishing/Document & Printing Services",
        "score": 0.25
      }
    ]
  }
}

后续步骤