输出数据 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

输出数据

标记作业的输出会被 Amazon S3 到您在控制台中或对CreateLabelingJoboperation. 当工作人员提交了一个或多个任务或任务过期时,输出数据将显示在此位置。请注意,在工作程序提交任务或任务过期后,输出数据可能需要几分钟才能显示在 Amazon S3 中。

输出数据文件的每一行都与清单文件完全相同,此外添加了分配给输入对象的标记的属性和值。该值的属性名称在控制台中或在对 CreateLabelingJob 操作的调用中定义。您不能在标签属性名称中使用 -metadata。如果您运行图像语义分割、3D 点云语义分割或 3D 点云对象跟踪作业,则标签属性必须以 -ref 结尾。对于任何其他类型的作业,属性名称不能以 -ref 结尾。

标记作业的输出是标签键值对的值。标签和值将用新值覆盖输入文件中任何现有的 JSON 数据。

例如,下面是一个图像分类标记作业的输出,其中输入数据文件存储在 Amazon S3 中。AWSDOC-EXAMPLE-BUCKET,并且标注属性名称被定义为sport. 在本示例中,JSON 对象设置为便于阅读的格式;在实际输出文件中,JSON 对象位于单行上。有关数据格式的更多信息,请参阅 JSON 行

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/image_example.png", "sport":0, "sport-metadata": { "class-name": "football", "confidence": 0.00, "type":"groundtruth/image-classification", "job-name": "identify-sport", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }

标签的值可以是任意有效的 JSON。在这种情况下,标签的值是分类表中此类的索引。其他作业类型(如边界框)具有更复杂的值。

输入清单文件中除标签属性之外的任何密钥值对在输出文件中都保持不变。您可以使用此功能将数据传递到您的应用程序。

一个标记作业的输出可以用作另一个标记作业的输入。在将标记作业连接在一起时,您可以使用此功能。例如,您可以发送一个标记作业以确定正在开展的运动。然后,您可以发送另一个使用相同数据的作业,以确定此运动是室内还是室外的。通过将第一个作业的输出数据作为第二个作业的清单,您可以将两个作业的结果整合为一个输出文件,以便应用程序可以更轻松地进行处理。

当作业正在进行时,输出数据文件将定期地写入到输出位置。这些中间文件对于清单文件中的每一行都包含一行。如果标记了一个对象,则会包含标签。如果未标记该对象,则将其写入到中间输出文件中,写入方式与清单文件完全相同。

输出目录

Ground Truth 在您的 Amazon S3 输出路径中创建几个目录。这些目录包含标记作业的结果和该作业的其他项目。标记作业顶层目录的名称与标记作业名称相同;输出目录放在此目录之下。例如,如果您将标记作业命名为find-people,您的输出将在以下目录中:

s3://AWSDOC-EXAMPLE-BUCKET/find-people/activelearning s3://AWSDOC-EXAMPLE-BUCKET/find-people/annotations s3://AWSDOC-EXAMPLE-BUCKET/find-people/inference s3://AWSDOC-EXAMPLE-BUCKET/find-people/manifests s3://AWSDOC-EXAMPLE-BUCKET/find-people/training

每个目录包含以下输出:

Active Learning 目录

activelearning 目录仅在您使用自动数据标记时才出现。它包含为自动数据标记设置的输入和输出验证以及自动标记数据的输入和输出文件夹。

Annotations 目录

annotations 目录包含人力所做的所有注释。这些是来自各个工作人员的响应,这些响应尚未整合到数据对象的单个标签中。

annotations 目录中有三个子目录。

  • 第一个子目录是 worker-response,它包含来自各个工作人员的响应。这包含用于每次迭代的一个子目录,其中反过来又包含该迭代中每个数据对象的一个子目录。每个数据对象的工作人员响应数据存储在带有时间戳的 JSON 文件中,该文件包含每个工作人员为该数据对象提交的答案,如果您使用私有工作人员,则包含有关这些工作人员的元数据。要了解有关此元数据的更多信息,请参阅员工元数据.

  • 第二个子目录是 consolidated-annotation,它包含将当前批次中的注释合并到数据对象标签所需的信息。

  • 第三个子目录是 intermediate,其中包含当前批次的输出清单以及任何已完成的标签。当完成每个数据对象的标签时,该文件会更新。

Inference 目录

inference 目录仅在您使用自动数据标记时才出现。该目录包含在标记数据对象时,SageMaker 批次转换使用的输入和输出文件。

Manifest 目录

manifest 目录包含来自标记作业的输出清单。清单目录 output 中有一个子目录。output 目录包含标记作业的输出清单文件。此文件命名为 output.manifest

Training 目录

training 目录仅在您使用自动数据标记时才出现。此目录包含用于训练自动数据标记模型的输入和输出文件。

置信度得分

如果多个工作人员对单个任务进行注释,则您的标签将从注释合并中产生。Ground Truth 计算每个标签的置信度得分。A置信度得分是一个介于 0 和 1 之间的数字,用于表示 Ground Truth 标签中的可信度。您可以使用置信度得分相互比较已标记的数据对象,并确定最不可信和最可信的标签。

您不应将置信度得分的值解释为一个绝对的值,也不能跨标记作业比较置信度得分。例如,如果所有置信度得分都在 0.98 和 0.998 之间,您只应在数据对象之间进行比较,而不应依赖于这些高的置信度得分。

您不能将人工标记的数据对象和自动标记的数据对象的置信度得分进行比较。使用针对任务的注释整合函数计算人工的置信度得分,而自动标记的置信度得分是使用一个纳入对象要素的模型计算得出的。两个模型通常具有不同的规模和平均置信度。

对于边界框标记作业,Ground Truth 值将计算每个框计算置信度得分。对于相同的标记类型(人工或自动),您可以在一个图像中或跨图像比较置信度得分。您不能跨标记作业比较置信度得分。

如果单个工作人员注释一个任务 (NumberOfHumanWorkersPerDataObject设置为1或在控制台中,您输入 1每个数据集对象的工作线程数),则置信度得分设置为0.00.

员工元数据

Ground Truth 提供的信息可用于跟踪任务输出数据中的个别工作人员。以下数据位于worker-response位于Annotations 目录

  • 这些区域有:acceptanceTime是工作人员接受任务的时间。此日期和时间戳的格式为YYYY-MM-DDTHH:MM:SS.mmmZ的年份 (YYYY), 月 (MM), 天 (DD),小时(HH), 分钟 (MM), 第二 (SS)和毫秒(mmm)。日期和时间由T.

  • 这些区域有:submissionTime是工作人员使用SUBM按钮。此日期和时间戳的格式为YYYY-MM-DDTHH:MM:SS.mmmZ的年份 (YYYY), 月 (MM), 天 (DD),小时(HH), 分钟 (MM), 第二 (SS)和毫秒(mmm)。日期和时间由T.

  • timeSpentInSeconds报告工作人员积极处理该任务的总时间(以秒为单位)。此指标不包括工作人员暂停或休息的时间。

  • workerId 对于每个工作人员都是唯一的。

  • 如果您将私有人力, 在workerMetadata,您将看到以下内容。

    • 这些区域有:identityProviderType是用于管理私有人力的服务。

    • 这些区域有:issuer是与分配给此人工审核任务的工作团队关联的 Cognito 用户池或 OIDC 身份提供程序 (IdP) 发放者。

    • 独一无二的sub标识符是指工作线程。如果您使用 Amazon Cognito 创建一个工作人员,您可以使用 Amazon Cognito 通过此 ID 检索有关此工作人员的详细信息(如姓名或用户名)。要了解如何操作,请参阅管理和搜索用户账户Amazon Cognito 开发人员指南.

以下是您使用 Amazon Cognito 创建私人员工队伍时可能会看到的输出示例。这在identityProviderType.

"submissionTime": "2020-12-28T18:59:58.321Z", "acceptanceTime": "2020-12-28T18:59:15.191Z", "timeSpentInSeconds": 40.543, "workerId": "a12b3cdefg4h5i67", "workerMetadata": { "identityData": { "identityProviderType": "Cognito", "issuer": "https://cognito-idp.aws-region.amazonaws.com/aws-region_123456789", "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" } }

以下是一个示例配置文件workerMetadata你可能会看到你是否使用自己的 OIDC IdP 来创建一个私人工作队伍:

"workerMetadata": { "identityData": { "identityProviderType": "Oidc", "issuer": "https://example-oidc-ipd.com/adfs", "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" } }

要了解有关使用私有人力的更多信息,请参阅使用私有人力.

输出元数据

每个作业的输出包含有关分配给数据对象的标签的元数据。对于所有具有微小差异的作业,这些元素都是一样的。以下示例显示了元数据元素:

"confidence": 0.00, "type": "groundtruth/image-classification", "job-name": "identify-animal-species", "human-annotated": "yes", "creation-date": "2020-10-18T22:18:13.527256"

元素有以下含义:

  • confidence— Ground Truth 对于标签正确的可信度。有关更多信息,请参阅置信度得分

  • type— 分类作业的类型。有关作业类型,请参阅内置任务类型

  • job-name— 创建作业时分配给作业的名称。

  • human-annotated— 数据对象是由人工标记的,还是由自动数据标记所标记的。有关更多信息,请参阅自动数据标记

  • creation-date— 创建标签的日期和时间。

分类作业输出

以下是一个图像分类作业和一个文本分类作业的示例输出(输出清单文件)。它们包含 Ground Truth 分配给数据对象的标签、标签的值和描述标签的元数据。

除了标准元数据元素外,分类作业的元数据还包括标签的类的文本值。有关更多信息,请参阅图像分类算法

以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

{ "source-ref":"s3://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "species":"0", "species-metadata": { "class-name": "dog", "confidence": 0.00, "type": "groundtruth/image-classification", "job-name": "identify-animal-species", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }
{ "source":"The food was delicious", "mood":"1", "mood-metadata": { "class-name": "positive", "confidence": 0.8, "type": "groundtruth/text-classification", "job-name": "label-sentiment", "human-annotated": "yes", "creation-date": "2020-10-18T22:18:13.527256" } }

多标签分类作业输出

以下是多标签图像分类作业和多标签文本分类作业的示例输出清单文件。它们包括 Ground Truth 分配给数据对象(例如,图像或文本片段)的标签以及描述工作人员在完成标记任务时看到的标签的元数据。

标签属性名称参数(例如,image-label-attribute-name) 包含由至少一个已完成该任务的工作人员选择的所有标签的数组。此数组包含与 class-map 中找到的标签对应的整数键(例如 [1,0,8])。在多标签图像分类示例中,至少一个完成图像标记任务的工作人员已为图像 exampleimage.jpg 选择 bicyclepersonclothing

这些区域有:confidence-map显示分配给工作人员选择的每个标签的置信度分数。要了解有关 Ground Truth 置信度分数的更多信息,请参置信度得分.

以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

以下是多标签图像分类输出清单文件的示例。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "image-label-attribute-name":[1,0,8], "image-label-attribute-name-metadata": { "job-name":"labeling-job/image-label-attribute-name", "class-map": { "1":"bicycle","0":"person","8":"clothing" }, "human-annotated":"yes", "creation-date":"2020-02-27T21:36:25.000201", "confidence-map": { "1":0.95,"0":0.77,"8":0.2 }, "type":"groundtruth/image-classification-multilabel" } }

以下是多标签文本分类输出清单文件的示例。在该示例中,approvingsadcritical 是由完成位于 AWSDOC-EXAMPLE-BUCKET 中的 exampletext.txt 对象的标记任务的至少一个工作人员选择的。

{ "source-ref": "AWSDOC-EXAMPLE-BUCKET/text_file.txt", "text-label-attribute-name":[1,0,4], "text-label-attribute-name-metadata": { "job-name":"labeling-job/text-label-attribute-name", "class-map": { "1":"approving","0":"sad","4":"critical" }, "human-annotated":"yes", "creation-date":"2020-02-20T21:36:25.000201", "confidence-map": { "1":0.95,"0":0.77,"4":0.2 }, "type":"groundtruth/text-classification-multilabel" } }

边界框作业输出

以下是边界框作业中的示例输出(输出清单文件)。对于此任务,返回三个边界框。标签值包含有关图像大小和边界框位置的信息。

class_id 元素是框的类在该任务的可用类列表中的索引。class-map 元数据元素包含类的文本。

对于每个边界框,元数据有一个单独的置信度得分。元数据还包含 class-map 元素,该元素将 class_id 映射到类的文本值。有关更多信息,请参阅对象检测算法

以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_image.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" } }

边界框调整作业的输出如以下 JSON 所示。请注意,原始 JSON 保持不变并列出了两个新作业,每个作业都在原始属性名称前加上“adjust-”。

{ "source-ref": "S3 bucket location", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "adjusted-bounding-box": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 110, "top": 135, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 10, "top": 10, "width": 30, "height": 30} ] }, "adjusted-bounding-box-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-bounding-boxes-on-dogs-and-toys", "adjustment-status": "adjusted" } }

在此输出中,作业的 type 不会更改,但会添加一个 adjustment-status 字段。此字段的值为 adjustedunadjusted。如果多个工作人员已查看了对象,并且至少有一个工作人员调整了标签,则状态为 adjusted

命名实体识别

以下是命名实体识别 (NER) 标记任务的示例输出清单文件。对于这项任务,七entities返回。

在输出清单中,JSON 对象annotations,包括labels(标签类别)。

工作人员响应位于名为entities. 此列表中的每个实体都是一个 JSON 对象,其中包含label值,匹配labels列表中,整数startOffset值用于标记范围的起始 Unicode 偏移量,以及一个整数endOffset值作为结束 Unicode 偏移量。

对于每个实体,元数据有一个单独的置信度得分。如果单个工作线程标记了每个数据对象,则每个实体的置信值将为零。

以下示例中的红色斜体文本取决于标记作业输入和工作人员响应。

{ "source": "Amazon SageMaker is a cloud machine-learning platform that was launched in November 2017. SageMaker enables developers to create, train, and deploy machine-learning (ML) models in the cloud. SageMaker also enables developers to deploy ML models on embedded systems and edge-devices", "ner-labeling-job-attribute-name": { "annotations": { "labels": [ { "label": "Date", "shortDisplayName": "dt" }, { "label": "Verb", "shortDisplayName": "vb" }, { "label": "Thing", "shortDisplayName": "tng" }, { "label": "People", "shortDisplayName": "ppl" } ], "entities": [ { "label": "Thing", "startOffset": 22, "endOffset": 53 }, { "label": "Thing", "startOffset": 269, "endOffset": 281 }, { "label": "Verb", "startOffset": 63, "endOffset": 71 }, { "label": "Verb", "startOffset": 228, "endOffset": 234 }, { "label": "Date", "startOffset": 75, "endOffset": 88 }, { "label": "People", "startOffset": 108, "endOffset": 118 }, { "label": "People", "startOffset": 214, "endOffset": 224 } ] } }, "ner-labeling-job-attribute-name-metadata": { "job-name": "labeling-job/example-ner-labeling-job", "type": "groundtruth/text-span", "creation-date": "2020-10-29T00:40:39.398470", "human-annotated": "yes", "entities": [ { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 } ] } }

标签验证作业输出

边界框验证作业的输出(输出清单文件)看起来与边界框注释作业的输出不相同。这是由于工作人员有不同类型的任务。他们并不标记对象,而是评估先前标记的准确性,做出判断,然后提供判断结果,或许还有一些评论。

如果工作人员正在验证或调整先前的边界框标签,则验证作业的输出将类似于以下 JSON。以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

{ "source-ref":"s3://AWSDOC-EXAMPLE-BUCKET/image_example.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "verify-bounding-box-attribute-name":"1", "verify-bounding-box-attribute-name-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-bounding-boxes", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The bounding box on the bird is too wide on the right side."}, {"comment": "The bird on the upper right is not labeled."} ] } }

虽然原始边界框输出上的 typegroundtruth/object-detection,但新的 typegroundtruth/label-verification。另请注意,worker-feedback 数组提供工作人员注释。如果工作人员不提供注释,则合并期间将排除空字段。

语义分割作业输出

以下是语义分割标记作业中的输出清单文件。此作业的标签的值是对 Amazon S3 S3 S3 S3 S3 S3 存储桶中的 PNG 文件的引用。

除了标准元素之外,标签的元数据还包括一个颜色映射,该映射定义用于标记图像的颜色、与该颜色关联的类名称以及每种颜色的置信度得分。有关更多信息,请参阅语义分割算法

以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "verify-city-streets-ref":"1", "verify-city-streets-ref-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-city-streets", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The mask on the leftmost building is assigned the wrong side of the road."}, {"comment": "The curb of the road is not labeled but the instructions say otherwise."} ] } }

置信度是按每个图像评分的。一个图像中所有分类的置信度得分都将相同。

语义分割调整作业的输出类似于以下 JSON。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "adjusted-city-streets-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "adjusted-city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-label-city-streets", } }

视频帧对象检测输出

以下是视频帧对象检测标记作业的输出清单文件。以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

除了标准元素以外,元数据还包含一个类映射,该映射列出每个在序列中至少具有一个标签的类。元数据还包括job-name这是您分配给标注作业的名称。对于调整任务,如果修改了一个或多个边界框,则存在一个adjustment-status参数;该参数将设置为adjusted.

{ "source-ref": "s3://DOC-EXAMPLE-BUCKET/example-path/input-manifest.json", "CarObjectDetection-ref": "s3://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectDetection-ref-metadata": { "class-map": { "0": "car" "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2020-05-15T08:01:16+0000", "type": "groundtruth/video-object-detection" } }

“Ground Truth” 为每个标记的视频帧序列创建一个输出序列文件。每个输出序列文件包含以下内容:

  • 序列中所有帧的所有注释detection-annotationsJSON 对象列表。

  • 对于工作线程注释的每个帧,帧文件名 (frame), 数字 (frame-no),包含注释的 JSON 对象列表(annotations),如果适用,frame-attributes. 此列表的名称由您使用的任务类型定义:polylinespolygonskeypoints,对于边界框,annotations.

    每个 JSON 对象都包含有关单个注释和关联标签的信息。下表概述了您将在每个视频帧任务类型中看到的参数。

    任务类型 参数

    Bounding Box

    箱体尺寸:heightwidth

    框顶部,左角像素位置:topleft

    keypoint

    关键点顶点:{ "x": int, "y": int }

    多边形顶点列表:vertices

    多边形顶点:{ "x": int, "y": int }

    多边形是封闭形状,因此第一个点也将表示最后一个点。

    多边形

    折线顶点的列表:vertices

    折线顶点:{ "x": int, "y": int }

    除了特定于任务类型的值之外,您还会在每个 JSON 对象中看到以下内容:

    • 任何值label-category-attributes为该标签指定的。

    • 这些区域有:class-id箱中)。使用class-map,以查看此 ID 映射到哪个标签类别。

以下是一个示例SeqLabel.json文件来自边界框视频帧对象检测标签作业。此文件将位于s3://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/

{ "detection-annotations": [ { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 339, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" } }, { "height": 24, "width": 37, "top": 148, "left": 183, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": "0", "frame": "frame_0000.jpeg", "frame-attributes": {name: value, name: value} }, { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 341, "class-id": "0", "label-category-attributes": {} }, { "height": 24, "width": 37, "top": 141, "left": 177, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": "1", "frame": "frame_0001.jpeg", "frame-attributes": {name: value, name: value} } ] }

视频帧对象跟踪输出

以下是视频帧对象跟踪标记作业的输出清单文件。以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

除了标准元素以外,元数据还包含一个类映射,该映射列出在帧序列中至少具有一个标签的每个类。元数据还包括job-name这是您分配给标注作业的名称。对于调整任务,如果修改了一个或多个边界框,则存在一个adjustment-status参数;该参数将设置为adjusted.

{ "source-ref": "s3://DOC-EXAMPLE-BUCKET/example-path/input-manifest.json", "CarObjectTracking-ref": "s3://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectTracking-ref-metadata": { "class-map": { "0": "car" "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2020-05-15T08:01:16+0000", "type": "groundtruth/video-object-tracking" } }

“Ground Truth” 为每个标记的视频帧序列创建一个输出序列文件。每个输出序列文件包含以下内容:

  • 序列中所有帧的所有注释tracking-annotationsJSON 对象列表。

  • 对于由工作程序注释的每个帧,框架 (frame), 数字 (frame-no),包含注释的 JSON 对象列表(annotations)以及框架属性(如果适用)(frame-attributes)。此列表的名称由您使用的任务类型定义:polylinespolygonskeypoints,对于边界框,annotations.

    每个 JSON 对象都包含有关单个注释和关联标签的信息。下表概述了您将在每个视频帧任务类型中看到的参数。

    任务类型 参数

    Bounding Box

    箱体尺寸:heightwidth

    框顶部,左角像素位置:topleft

    keypoint

    关键点顶点:{ "x": int, "y": int }

    多边形顶点列表:vertices

    多边形顶点:{ "x": int, "y": int }

    多边形是封闭形状,因此第一个点也将表示最后一个点。

    多边形

    折线顶点的列表:vertices

    折线顶点:{ "x": int, "y": int }

    除了特定于任务类型的值之外,您还会在每个 JSON 对象中看到以下内容:

    • 任何值label-category-attributes为该标签指定的。

    • 这些区域有:class-id箱中)。使用class-map,以查看此 ID 映射到哪个标签类别。

    • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的object-id,它标识了标签的实例。如果工作程序在多个帧中标识了同一个对象的实例,则此 ID 在帧之间将是相同的。例如,如果一辆汽车出现在多个帧中,则所有用于标识该汽车的边界框将具有相同object-id.

    • 这些区域有:object-name,它是该注释的实例 ID。

以下是一个示例SeqLabel.json文件。此文件将位于s3://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/

{ "tracking-annotations": [ { "annotations": [ { "height": 36, "width": 46, "top": 178, "left": 315, "class-id": "0", "label-category-attributes": { "occluded": "no" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": "0", "frame": "frame_0001.jpeg", "frame-attributes": {} }, { "annotations": [ { "height": 30, "width": 47, "top": 163, "left": 344, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" }, "object-id": "98f2b0b0-c0ca-11ea-961f-a9b1c5c97972", "object-name": "bus:1" }, { "height": 28, "width": 33, "top": 150, "left": 192, "class-id": "0", "label-category-attributes": { "occluded": "partially" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": "1", "frame": "frame_0002.jpeg", "frame-attributes": {name: value, name: value} } ] }

3D 点云语义分割输出

以下是 3D 点云语义分割标记作业中的输出清单文件。

除了标准元素之外,标签的元数据还包括一个颜色映射,该映射定义用于标记图像的颜色、与该颜色关联的类名称以及每种颜色的置信度得分。此外,还有一个adjustment-status参数;该参数将设置为adjusted如果颜色蒙版已修改。如果您添加了一个或多个frameAttributes添加到您的标签类别配置文件中,框架属性的工作程序响应位于 JSON 对象中,dataset-object-attributes.

your-label-attribute-ref 参数包含具有 .zlib 扩展名的压缩文件的位置。解压缩此文件时,它包含一个数组。数组中的每个索引对应于输入点云中注释点的索引。给定索引处的数组值根据在color-map参数metadata.

您可以使用类似于以下内容的 Python 代码解压缩 .zlib 文件:

import zlib from array import array # read the label file compressed_binary_file = open(zlib_file_path/file.zlib, 'rb').read() # uncompress the label file binary_content = zlib.decompress(compressed_binary_file) # load labels to an array my_int_array_data = array('B', binary_content); print(my_int_array_data)

上面的代码块将生成类似于以下内容的输出。打印数组的每个元素都包含点云中该索引处某个点的类。例如,my_int_array_data[0] = 1意味着point[0]在输入点云中有一个类1. 在以下输出清单文件示例中,0对应"Background"1替换为Car, 和2替换为Pedestrian.

>> array('B', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

以下是语义分割 3D 点云标记作业输出清单文件的示例。以下示例中的红色斜体文本 取决于标记作业规范和输出数据。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.bin", "source-ref-metadata":{ "format": "binary/xyzi", "unix-timestamp": 1566861644.759115, "ego-vehicle-pose":{...}, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "images": [{...}] }, "lidar-ss-label-attribute-ref": "s3://your-output-bucket/labeling-job-name/annotations/consolidated-annotation/output/dataset-object-id/filename.zlib", "lidar-ss-label-attribute-ref-metadata": { 'color-map': { "0": { "class-name": "Background", "hex-color": "#ffffff", "confidence": 0.00 }, "1": { "class-name": "Car", "hex-color": "#2ca02c", "confidence": 0.00 }, "2": { "class-name": "Pedestrian", "hex-color": "#1f77b4", "confidence": 0.00 }, "3": { "class-name": "Tree", "hex-color": "#ff7f0e", "confidence": 0.00 } }, 'type': 'groundtruth/point_cloud_single_frame_semantic_segmentation', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'labeling-job-name', //only present for adjustment audit workflow "adjustment-status": "adjusted", // "adjusted" means the label was adjusted "dataset-object-attributes": {name: value, name: value} } }

3D 点云对象检测输出

以下是 3D 点云对象检测作业的示例输出。对于该任务类型,有关 3D 长方体的数据是在名为 annotations 的列表上的 3d-bounding-box 参数中返回的。在该列表中,每个 3D 长方体是使用以下信息描述的。

  • 您在输入清单中指定的每个类或标签类别与class-id. 可以使用 class-map 标识与每个类 ID 关联的类。

  • 这些类用于为每个 3D 长方体提供一个采用 <class>:<integer> 格式的 object-name,其中 integer 是用于在帧中标识该长方体的唯一数字。

  • center-xcenter-y, 和center-z是立方体中心坐标,位于与标注作业中使用的 3D 点云输入数据相同的坐标系中。

  • lengthwidth, 和height描述长方体的尺寸。

  • yaw用于描述长方体的方向(方位),以弧度。

    这些区域有:yaw输出数据中的测量值为 180 度,或者以弧度为单位的 pi,减去yaw在右手世界坐标系时,向下看着立方体。换句话说,当从上到下看一个立方体时,yaw_in_output_data为顺时针正(与右手世界坐标系相反,其中自上而下视图与逆时针正旋转相关联)。当从立方体上查看时,yaw_in_output_data是逆时针积极的。

    转换架构yaw_in_output_data设置为右手世界坐标系的更常见方向,请使用以下内容(所有单位均以弧度为单位):

    yaw_right_handed_cartesian_system = pi - yaw_in_output_data
  • 如果您创建 3D 点云调整标记作业并包括pitchroll在输入清单文件中,相同的pitchroll测量将显示在输出清单文件中。否则为pitchrole将始终为 0。

  • 如果在输入清单文件中包含给定类的标签属性,则label-category-attributes参数包含工作人员为其选择标签属性的所有立方体。

在审核工作流的元数据中具有 adjustment-status 参数;如果修改了一个或多个长方体,该参数将设置为 adjusted。如果您添加了一个或多个frameAttributes添加到您的标签类别配置文件中,框架属性的工作程序响应位于 JSON 对象中,dataset-object-attributes.

以下示例中的红色斜体文本 取决于标记作业规范和输出数据。省略号 (...) 表示该列表的延续,其中可能显示与前面对象格式相同的其他对象。

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.txt", "source-ref-metadata":{ "format": "text/xyzi", "unix-timestamp": 1566861644.759115, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "ego-vehicle-pose": { "heading": { "qx": -0.02111296123795955, "qy": -0.006495469416730261, "qz": -0.008024565904865688, "qw": 0.9997181192298087 }, "position": { "x": -2.7161461413869947, "y": 116.25822288149078, "z": 1.8348751887989483 } }, "images": [ { "fx": 847.7962624528487, "fy": 850.0340893791985, "cx": 576.2129134707038, "cy": 317.2423573573745, "k1": 0, "k2": 0, "k3": 0, "k4": 0, "p1": 0, "p2": 0, "skew": 0, "unix-timestamp": 1566861644.759115, "image-path": "images/frame_0_camera_0.jpg", "position": { "x": -2.2722515189268138, "y": 116.86003310568965, "z": 1.454614668542299 }, "heading": { "qx": 0.7594754093069037, "qy": 0.02181790885672969, "qz": -0.02461725233103356, "qw": -0.6496916273040025 }, "camera_model": "pinhole" } ] }, "3d-bounding-box": { "annotations": [ { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.616382013657516, "center-y": 125.04149850484193, "center-z": 0.311272296465834, "length": 2.993000265181146, "width": 1.8355260519692056, "height": 1.3233490884304047, "roll": 0, "pitch": 0, "yaw": 1.6479308313703527 }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.188984560617168, "center-y": 99.7954483288783, "center-z": 0.2226435567445657, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.6243170732068055 } ] }, "3d-bounding-box-metadata": { "objects": [], "class_map": { "0": "Car", }, "type": "groundtruth/point_cloud_object_detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-3d-objects", "adjustment-status": "adjusted", "dataset-object-attributes": {name: value, name: value} } }

3D 点云对象跟踪输出

以下是 3D 点云对象跟踪标记作业的输出清单文件示例。以下示例中的红色斜体文本 取决于标记作业规范和输出数据。省略号 (...) 表示该列表的延续,其中可能显示与前面对象格式相同的其他对象。

除了标准元素以外,元数据还包含一个类映射,该映射列出每个在序列中至少具有一个标签的类。在审核工作流的元数据中具有 adjustment-status 参数;如果修改了一个或多个长方体,该参数将设置为 adjusted

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/myfolder/seq1.json", "lidar-label-attribute-ref": "s3://<CustomerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json", "lidar-label-attribute-ref-metadata": { "objects": [ { "frame-no": 300, "confidence": [] }, { "frame-no": 301, "confidence": [] }, ... ], 'class-map': {'0': 'Car', '1': 'Person'}, 'type': 'groundtruth/point_cloud_object_tracking', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'identify-3d-objects', "adjustment-status": "adjusted" } }

在上面的示例中,seq1.json位于SeqLabel.json在 Amazon S3 位置中,s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. 以下是该标签序列文件的示例。

对于序列中的每个帧,您将看到frame-numberframe-name,如果适用,frame-attributes,以及annotations. 该列表包含为该帧绘制的 3D 长方体。每个注释包含以下信息:

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的object-name格式<class>:<integer>其中class标识标签类别,integer是整个数据集的唯一 ID。

  • 在工作人员绘制长方体时,它与唯一的 object-id 相关联,后者与在多个帧中标识同一对象的所有长方体相关联。

  • 您在输入清单中指定的每个类或标签类别与 class-id 关联。可以使用 class-map 标识与每个类 ID 关联的类。

  • center-xcenter-y, 和center-z是立方体中心坐标,位于与标注作业中使用的 3D 点云输入数据相同的坐标系中。

  • lengthwidth, 和height描述长方体的尺寸。

  • yaw用于描述长方体的方向(方位),以弧度。

    这些区域有:yaw输出数据中的测量值为 180 度,或者以弧度为单位的 pi,减去yaw在右手世界坐标系时,向下看着立方体。换句话说,当从上到下看一个立方体时,yaw_in_output_data为顺时针正(与右手世界坐标系相反,其中自上而下视图与逆时针正旋转相关联)。当从立方体上查看时,yaw_in_output_data是逆时针积极的。

    转换架构yaw_in_output_data设置为右手世界坐标系的更常见方向,请使用以下内容(所有单位均以弧度为单位):

    yaw_right_handed_cartesian_system = pi - yaw_in_output_data
  • 如果您创建 3D 点云调整标记作业并包括pitchroll在输入清单文件中,相同的pitchroll测量将显示在输出清单文件中。否则为pitchrole将始终为 0。

  • 如果在输入清单文件中包含给定类的标签属性,则label-category-attributes参数包含工作人员为其选择标签属性的所有立方体。

{ "tracking-annotations": [ { "frame-number": 0, "frame-name": "0.txt.pcd", "frame-attributes": {name: value, name: value}, "annotations": [ { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": -2.2906369208300674, "center-y": 103.73924823843463, "center-z": 0.37634114027023313, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5827222214406014, "object-id": "ae5dc770-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.6451293634707413, "center-y": 124.9534455706848, "center-z": 0.5020834081743839, "length": 4, "width": 2, "height": 2.080488827301309, "roll": 0, "pitch": 0, "yaw": -1.5963335581398077, "object-id": "06efb020-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.205611313118477, "center-y": 99.91731932137061, "center-z": 0.22917217081212138, "length": 3.8747142207671956, "width": 1.9999999999999918, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5672228760316775, "object-id": "26fad020-a782-11ea-b57d-67c51a0561a1" } ] }, { "frame-number": 1, "frame-name": "1.txt.pcd", "frame-attributes": {}, "annotations": [ { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": -2.2906369208300674, "center-y": 103.73924823843463, "center-z": 0.37634114027023313, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5827222214406014, "object-id": "ae5dc770-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.6451293634707413, "center-y": 124.9534455706848, "center-z": 0.5020834081743839, "length": 4, "width": 2, "height": 2.080488827301309, "roll": 0, "pitch": 0, "yaw": -1.5963335581398077, "object-id": "06efb020-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.221311072916759, "center-y": 100.4639841045424, "center-z": 0.22917217081212138, "length": 3.8747142207671956, "width": 1.9999999999999918, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5672228760316775, "object-id": "26fad020-a782-11ea-b57d-67c51a0561a1" } ] } ] }