本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Bounding Box
用于训练机器学习模型的映像通常包含多个对象。要对图像中的一个或多个对象进行分类和本地化,请使用 Amazon SageMaker Ground Truth 边界框标记作业任务类型。在这种情况下,本地化意味着边界框的像素位置。
您可以使用 Amazon SageMaker 控制台的 “Ground Truth” 部分或CreateLabelingJoboperation.
对于此任务类型,如果您创建自己的清单文件,请使用"source-ref"以识别 Amazon S3 中您要标记的每个图像文件的位置。有关更多信息,请参阅 输入数据。
创建边界框标记作业(控制台)
你可以按照说明进行操作创建标记作业(控制台)以了解如何在 SageMaker 控制台中创建边界框标记作业。在步骤 10 中,选择Image来自 的任务类别下拉菜单,然后选择边界框作为任务类型。
为标记任务提供类似于以下内容的工作人员 UI。在您使用控制台创建标记作业时,需要指定说明,以帮助工作人员完成作业和工作人员可以从中选择的多达 50 个标签。
创建边界框标记作业 (API)
要创建边界框标记作业,请使用 SageMaker API 操作。CreateLabelingJob. 该 API 为所有 Amazon 开发工具包定义了该操作。要查看此操作支持的特定于语言的 SDK 列表,请查看另请参阅部分CreateLabelingJob.
请按照创建标记作业 (API)中的说明进行操作,并在配置请求时执行以下操作:
-
此任务类型的注释前 Lambda 函数以结尾
PRE-BoundingBox. 要查找您的区域的注释前 Lambda ARN,请参阅PreHumanTaskLambdaArn. -
此任务类型的注释合并 Lambda 函数以结尾
ACS-BoundingBox. 要查找您的区域的注释合并 Lambda ARN,请参阅AnnotationConsolidationLambdaArn.
以下是一个示例:AmazonPython 软件开发工具包 (Boto3) 请求
response = client.create_labeling_job( LabelingJobName='example-bounding-box-labeling-job, LabelAttributeName='label', InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri':'s3://bucket/path/manifest-with-input-data.json'} }, 'DataAttributes': { 'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent', ] } }, OutputConfig={ 'S3OutputPath':'s3://bucket/path/file-to-store-output-data', 'KmsKeyId':'string'}, RoleArn='arn:aws:iam::*:role/*, LabelCategoryConfigS3Uri='s3://bucket/path/label-categories.json', StoppingConditions={ 'MaxHumanLabeledObjectCount':123, 'MaxPercentageOfInputDatasetLabeled':123}, HumanTaskConfig={ 'WorkteamArn':'arn:aws:sagemaker:region:*:workteam/private-crowd/*', 'UiConfig': { 'UiTemplateS3Uri':'s3://bucket/path/worker-task-template.html'}, 'PreHumanTaskLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:PRE-BoundingBox', 'TaskKeywords': ['Bounding Box', ], 'TaskTitle':'Bounding Box task', 'TaskDescription':'Draw bounding boxes around objects in an image', 'NumberOfHumanWorkersPerDataObject':123, 'TaskTimeLimitInSeconds':123, 'TaskAvailabilityLifetimeInSeconds':123, 'MaxConcurrentTaskCount':123, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:ACS-BoundingBox' }, Tags=[ { 'Key':'string', 'Value':'string'}, ] )
为边界框标记作业提供模板
如果要使用 API 创建标记作业,必须在 UiTemplateS3Uri 中提供工作人员任务模板。复制并修改以下模板。仅修改 short-instructions、full-instructions 和 header。将此模板上传到 S3,并在 UiTemplateS3Uri 中为此文件提供 S3 URI。
边界框输出数据
创建了边框标签作业后,您的输出数据将位于S3OutputPath使用 API 时的参数或输出数据集位置字段的Job 概述控制台的部分。
例如,成功完成的单类边界框任务的输出清单文件将包含以下内容:
[ { "boundingBox": { "boundingBoxes": [ { "height": 2832, "label": "bird", "left": 681, "top": 599, "width": 1364 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]
boundingBoxes 参数标识围绕标识为“鸟”的对象绘制的边界框相对于图像左上角的位置,该位置被认为是 (0,0) 像素坐标。在上一个示例中,left 和 top 确定边界框左上角的像素相对于图像左上角的位置。边界框的尺寸使用 height 和 width 进行标识。inputImageProperties 参数给出原始输入图像的像素尺寸。
当您使用边界框任务类型时,您可以创建单类和多类边界框标记作业。成功完成的多类边界框的输出清单文件将包含以下内容:
[ { "boundingBox": { "boundingBoxes": [ { "height": 938, "label": "squirrel", "left": 316, "top": 218, "width": 785 }, { "height": 825, "label": "rabbit", "left": 1930, "top": 2265, "width": 540 }, { "height": 1174, "label": "bird", "left": 748, "top": 2113, "width": 927 }, { "height": 893, "label": "bird", "left": 1333, "top": 847, "width": 736 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]
要了解有关边界框标记作业产生的输出清单文件的更多信息,请参阅边界框作业输出。
要详细了解 Ground Truth 生成的输出清单文件以及 Ground Truth 用于存储输出数据的文件结构,请参阅。输出数据.