支持的模型和架构

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

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

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

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

每个模型都会生成一个专用 JSON 载荷,Cloud Storage 会将该载荷直接附加到对象,作为 contexts.custom 属性下的 Google 管理的对象上下文。每个载荷都由一个以 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 不适用 一个 google.rpc.Status 对象,包含 code 和 message。仅在模型执行失败时填充。

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 不适用 一个 google.rpc.Status 对象,包含 code 和 message。仅在模型执行失败时填充。

示例输出

{
  "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 不适用 一个 google.rpc.Status 对象,包含 code 和 message。仅在模型执行失败时填充。

示例输出

{
  "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 不适用 一个 google.rpc.Status 对象,包含 code 和 message。仅在模型执行失败时填充。

示例输出

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

PDF 分类

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

模型详情

  • 模型名称:pdf-classification
  • 上下文键:google:annotation:pdf-classification-v1
  • 符合条件的对象:大小不超过 20 MiB 且 Content-Type 为 application/pdf 的 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
      }
    ]
  }
}

后续步骤