本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
输出数据
标记作业的输出 Amazon S3 置于您在控制台中或对CreateLabelingJoboperation. 当工作人员提交一个或多个任务或任务过期时,输出数据将显示在此位置。请注意,在工作人员提交任务或任务过期后,输出数据可能需要几分钟时间才能显示在 Amazon S3 中。
输出数据文件的每一行都与清单文件完全相同,此外添加了分配给输入对象的标记的属性和值。该值的属性名称在控制台中或在对 CreateLabelingJob 操作的调用中定义。您不能在标签属性名称中使用 -metadata。如果您运行图像语义分割、3D 点云语义分割或 3D 点云对象跟踪作业,则标签属性必须以 -ref 结尾。对于任何其他类型的作业,属性名称不能以 -ref 结尾。
标记作业的输出是标签键值对的值。标签和值将用新值覆盖输入文件中任何现有的 JSON 数据。
例如,以下是一个图像分类标记作业的输出,其中输入数据文件存储在 Amazon S3 中。标签属性名称被定义为AWSDOC-EXAMPLE-BUCKET. 在本示例中,JSON 对象设置为便于阅读的格式;在实际输出文件中,JSON 对象位于单行上。有关数据格式的更多信息,请参阅 JSON 行sport
{ "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 将计算每个标签的置信度得分。一个置信度得分是介于 0 和 1 之间的数字,表示在标签中具有多大的可信度。您可以使用置信度得分相互比较已标记的数据对象,并确定最不可信和最可信的标签。
您不应将置信度得分的值解释为绝对值,也不能比较标记作业的置信度得分。例如,如果所有置信度得分都在 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)、1 天 (DD)、小时 (HH)、分钟 (MM), 第二 (SS)和毫秒(mmm)。日期和时间由分隔T. -
这些区域有:
submissionTime是工作人员使用提交按钮。此日期和时间戳的格式为YYYY-MM-DDTHH:MM:SS.mmmZ年份 (YYYY)、月 (MM)、1 天 (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"
元素有以下含义:
分类作业输出
以下是一个图像分类作业和一个文本分类作业的示例输出(输出清单文件)。它们包括 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 分配给数据对象的标签(例如,图像或文本片段)以及用于描述工作人员在完成标记任务时看到的标签的元数据。
label 属性名称参数(例如,image-label-attribute-name) 包含由完成此任务的至少一个工作人员选择的所有标签的数组。此数组包含与 class-map 中找到的标签对应的整数键(例如 [1,0,8])。在多标签图像分类示例中,至少一个完成图像标记任务的工作人员已为图像 exampleimage.jpg 选择 bicycle、person 和 clothing。
这些区域有: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" } }
以下是多标签文本分类输出清单文件的示例。在该示例中,approving、sad 和 critical 是由完成位于 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 字段。此字段的值为 adjusted 或 unadjusted。如果多个工作人员已查看了对象,并且至少有一个工作人员调整了标签,则状态为 adjusted。
命名实体识别
以下是命名实体识别 (NER) 标记任务中的输出清单文件示例。对于这个任务,七entities返回。
在输出清单中,JSON 对象annotations,包括labels您提供的(标签类别)。
工作人员的响应在名为的列表中entities. 此列表中的每个实体都是一个 JSON 对象,其中包含label与中的一个匹配的值labels列出,整数startOffset标记 span 的起始 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."} ] } }
虽然原始边界框输出上的 type 是 groundtruth/object-detection,但新的 type 是 groundtruth/label-verification。另请注意,worker-feedback 数组提供工作人员注释。如果工作人员不提供注释,则合并期间将排除空字段。
语义分割作业输出
以下是语义分割标记作业中的输出清单文件。此作业的标签的值是对 Amazon 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": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-detection" } }
Ground Truth 为标记的每个视频帧序列创建一个输出序列文件。每个输出序列文件包含以下内容:
-
中序列中所有帧的所有注释
detection-annotationsJSON 对象列表。 -
对于由工作程序进行注释的每个帧,帧文件名称 (
frame)、数字 (frame-no),包含注释的 JSON 对象的列表(annotations),如果适用,frame-attributes. 此列表的名称由您使用的任务类型定义:polylines、polygons、keypoints,对于边界框,annotations.每个 JSON 对象都包含有关单个注释和关联标签的信息。下表概述了您将为每种视频帧任务类型看到的参数。
任务类型 参数 Bounding Box
箱的尺寸:
height和width框顶、左角像素位置:
top和leftKeypoint
关键点顶点: { "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": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-tracking" } }
Ground Truth 为标记的每个视频帧序列创建一个输出序列文件。每个输出序列文件包含以下内容:
-
中序列中所有帧的所有注释
tracking-annotationsJSON 对象列表。 -
对于由工作人员注释的每个帧,该框架 (
frame)、数字 (frame-no),包含注释的 JSON 对象的列表(annotations),如果适用,框架属性(frame-attributes)。此列表的名称由您使用的任务类型定义:polylines、polygons、keypoints,对于边界框,annotations.每个 JSON 对象都包含有关单个注释和关联标签的信息。下表概述了您将为每种视频帧任务类型看到的参数。
任务类型 参数 Bounding Box
箱的尺寸:
height和width框顶、左角像素位置:
top和leftKeypoint
关键点顶点: { "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.
参数包含具有 .zlib 扩展名的压缩文件的位置。解压缩此文件时,它包含一个数组。数组中的每个索引对应于输入点云中注释点的索引。在给定索引处,数组的值根据位于your-label-attribute-refcolor-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. 在以下输出清单文件示例中,class0对应于"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-x、center-y, 和center-z是立方体中心的坐标,与标注作业中使用的 3D 点云输入数据位于同一坐标系中。 -
length、width, 和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 点云调整标记作业并包含在内的作业
pitch和roll在输入清单文件中,相同pitch和roll测量值将显示在输出清单文件中。否则为pitch和role将始终为 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-number、frame-name,如果适用,frame-attributes,以及一份清单annotations. 此列表包含为该帧绘制的 3D 长方体。每条注释包含以下信息:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的
object-name格式<class>:<integer>哪里class识别标签类别和integer是整个数据集的唯一 ID。 -
在工作人员绘制长方体时,它与唯一的
object-id相关联,后者与在多个帧中标识同一对象的所有长方体相关联。 -
您在输入清单中指定的每个类或标签类别与
class-id关联。可以使用class-map标识与每个类 ID 关联的类。 -
center-x、center-y, 和center-z是立方体中心的坐标,与标注作业中使用的 3D 点云输入数据位于同一坐标系中。 -
length、width, 和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 点云调整标记作业并包含在内的作业
pitch和roll在输入清单文件中,相同pitch和roll测量值将显示在输出清单文件中。否则为pitch和role将始终为 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" } ] } ] }