使用週框方塊分類影像物件 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用週框方塊分類影像物件

用來訓練機器學習模型的影像通常包含多個物件。若要對影像中的一或多個物件進行分類和本地化,請使用 Amazon SageMaker Ground Truth 邊界框標籤任務類型。在此情況下,區域化表示邊界框的像素位置。您可以使用 Amazon SageMaker 主控台的 Ground Truth 區段或 CreateLabelingJob操作建立週框方塊標籤工作。

重要

對於此任務類型,如果您建立自己的資訊清單檔案,請使用 "source-ref" 來識別您要在 Amazon S3 中標籤的每個影像檔案位置。如需詳細資訊,請參閱輸入資料

建立邊界框標籤工作 (主控台)

您可以遵循指示建立標記任務 (主控台),了解如何在 SageMaker 主控台中建立週框方塊標籤工作。在步驟 10 中,從任務類別下拉式清單選單中選擇映像,然後選擇邊界框做為任務類型。

Ground Truth 提供與以下類似的工作者使用者介面以進行標籤任務。使用主控台建立標籤工作時,您可以指定指示以協助工作者完成工作,以及最多 50 個可供工作者選擇的標籤。

Gif 顯示如何在 類別的物件周圍繪製方塊。

建立邊界框標籤任務 (API)

若要建立週框方塊標籤工作,請使用 SageMaker API操作 CreateLabelingJob。這會為所有 API定義此操作 AWS SDKs。若要查看此操作SDKs支援的特定語言清單,請檢閱 的另請參閱 一節CreateLabelingJob

設定請求時,請遵循建立標記任務 (API)上的指示並執行下列動作:

  • 此任務類型的註釋前 Lambda 函式會以 PRE-BoundingBox 結尾。若要尋找ARN您 區域的預先註釋 Lambda,請參閱 PreHumanTaskLambdaArn

  • 此任務類型的註釋合併 Lambda 函式會以 ACS-BoundingBox 結尾。若要尋找ARN您 區域的註釋合併 Lambda,請參閱 AnnotationConsolidationLambdaArn

以下是在美國東部 AWS SDK(維吉尼亞北部) 區域中建立標籤工作的 Python (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-instructionsfull-instructionsheader。將此範本上傳至 S3,並在 中提供此檔案URI的 S3UiTemplateS3Uri

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-bounding-box name="boundingBox" src="{{ task.input.taskObject | grant_read_access }}" header="please draw box" labels="{{ task.input.labels | to_json | escape }}" > <full-instructions header="Bounding box instructions"> <ol><li><strong>Inspect</strong> the image</li><li><strong>Determine</strong> if the specified label is/are visible in the picture.</li> <li><strong>Outline</strong> each instance of the specified label in the image using the provided “Box” tool.</li></ol> <ul><li>Boxes should fit tight around each object</li> <li>Do not include parts of the object are overlapping or that cannot be seen, even though you think you can interpolate the whole shape.</li> <li>Avoid including shadows.</li> <li>If the target is off screen, draw the box up to the edge of the image.</li> </full-instructions> <short-instructions> <h3><span style="color: rgb(0, 138, 0);">Good example</span></h3> <p>Enter description of a correct bounding box label and add images</p> <h3><span style="color: rgb(230, 0, 0);">Bad example</span></h3> <p>Enter description of an incorrect bounding box label and add images</p> </short-instructions> </crowd-bounding-box> </crowd-form>

邊框方塊輸出資料

建立週框方塊標籤任務後,當您使用 API或 時,輸出資料將位於 S3OutputPath 參數中指定的 Amazon S3 儲存貯體中,位於主控台工作概觀區段的輸出資料集位置欄位中。

例如,成功完成的單一類別邊界框任務的輸出資訊清單檔案將包含下列項目:

[ { "boundingBox": { "boundingBoxes": [ { "height": 2832, "label": "bird", "left": 681, "top": 599, "width": 1364 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]

boundingBoxes 參數會識別根據識別為 “鳥” 的物件所繪製之邊界框的位置,而此位置相對於影像左上角,即 (0,0) 像素座標。在上一個範例中,lefttop 識別邊界框左上角中相對於影像左上角的像素位置。邊界框的維度是以 heightwidth 識別。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 用來儲存輸出資料的檔案結構,請參閱標記任務輸出資料