配置对象丰富化功能时,您可以选择哪些机器学习模型来分析存储的对象。每个模型都会评估符合条件的图片或 PDF 文档,并将结构化元数据直接附加到您的 Cloud Storage 对象。
本页面介绍了每种受支持的模型、其资格要求以及其输出架构,以帮助您在 BigQuery 中或通过 API 解析和查询丰富元数据。
模型与对象丰富化之间的关系
您可以通过创建功能配置 (FeatureConfig) 来激活模型,该配置用于指定要扫描哪些存储桶以及要运行哪些模型。在异步处理期间,Cloud Storage 会使用您选择的模型评估符合条件的对象,并生成名为对象丰富化的结构化 JSON 元数据。
每个模型都会生成一个专用 JSON 载荷,Cloud Storage 会将该载荷直接附加到对象,作为 contexts.custom 属性下的 Google 管理的对象上下文。每个载荷都由一个以 google:annotation: 为前缀的唯一上下文键标识。
您可以根据自己的工作流程,通过以下两种方式使用此元数据:
- 检查单个对象:使用对象 API(例如
viewFullContext方法 [预览版])检索特定对象的丰富信息。 - 大规模分析:使用 Storage Insights 数据集和 BigQuery 中的标准 SQL 查询存储桶中所有对象的丰富元数据。
人脸检测
使用 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_UNSPECIFIEDLEFT_EYERIGHT_EYELEFT_OF_LEFT_EYEBROWRIGHT_OF_LEFT_EYEBROWLEFT_OF_RIGHT_EYEBROWRIGHT_OF_RIGHT_EYEBROWMIDPOINT_BETWEEN_EYESNOSE_TIPUPPER_LIPLOWER_LIPMOUTH_LEFTMOUTH_RIGHTMOUTH_CENTERNOSE_BOTTOM_RIGHTNOSE_BOTTOM_LEFTNOSE_BOTTOM_CENTERLEFT_EYE_TOP_BOUNDARYLEFT_EYE_RIGHT_CORNERLEFT_EYE_BOTTOM_BOUNDARYLEFT_EYE_LEFT_CORNERRIGHT_EYE_TOP_BOUNDARYRIGHT_EYE_RIGHT_CORNERRIGHT_EYE_BOTTOM_BOUNDARYRIGHT_EYE_LEFT_CORNERLEFT_EYEBROW_UPPER_MIDPOINTRIGHT_EYEBROW_UPPER_MIDPOINTLEFT_EAR_TRAGIONRIGHT_EAR_TRAGIONLEFT_EYE_PUPILRIGHT_EYE_PUPILFOREHEAD_GLABELLACHIN_GNATHIONCHIN_LEFT_GONIONCHIN_RIGHT_GONIONLEFT_CHEEK_CENTERRIGHT_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
}
]
}
}
后续步骤
- 了解对象丰富化。
- 配置对象丰富化。
- 管理对象丰富化。
- 在 BigQuery 中分析对象丰富化。
- 查看
featureConfigsJSON API 资源。 - 排查对象丰富功能问题。