Caixa delimitadora - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Caixa delimitadora

As imagens usadas para treinar um modelo de machine learning geralmente contêm mais de um objeto. Para classificar e localizar um ou mais objetos em imagens, use a caixa delimitadora Amazon SageMaker Ground Truth rotulando o tipo de tarefa de trabalho. Nesse contexto, a localização significa a localização de pixel na caixa delimitadora.

Você cria um trabalho de rotulagem de caixa delimitadora usando a seção Ground Truth do SageMaker console da Amazon ou a CreateLabelingJoboperação.

Importante

Para esse tipo de tarefa, se você criar seu próprio arquivo de manifesto, use "source-ref" para identificar o local de cada arquivo de imagem que deseja rotular. Para obter mais informações, consulte Dados de entrada.

Criar um trabalho de rotulagem da caixa delimitadora (console)

Você pode seguir as instruções Criar um trabalho de rotulagem (console) para aprender como criar uma tarefa de etiquetagem de caixa delimitadora no SageMaker console. Na Etapa 10, escolha Imagem, no menu suspenso Categoria de tarefa, e Caixa delimitadora como o tipo de tarefa.

O Ground Truth fornece uma interface de usuário do operador que se parece com a seguinte para tarefas de rotulagem. Ao criar o trabalho de rotulagem com o console, você especifica instruções para ajudar os operadores a concluírem o trabalho e até 50 rótulos que eles podem escolher.

Gif mostrando como desenhar uma caixa ao redor de um objeto para uma categoria.

Criar um Bounding Box Labeling Job () API

Para criar um trabalho de etiquetagem de caixa delimitadora, use a SageMaker API operação. CreateLabelingJob Isso API define essa operação para todos AWS SDKs. Para ver uma lista de idiomas específicos com SDKs suporte para essa operação, consulte a seção Consulte também do. CreateLabelingJob

Siga as instruções em Criar um trabalho de rotulagem (API) e faça o seguinte enquanto você configura a solicitação:

  • As funções do Lambda de pré-anotação para esse tipo de tarefa terminam com PRE-BoundingBox. Para encontrar a pré-anotação ARN Lambda para sua região, consulte. PreHumanTaskLambdaArn

  • As funções do Lambda de consolidação de anotações para esse tipo de tarefa terminam com ACS-BoundingBox. Para encontrar o ARN Lambda de consolidação de anotações para sua região, consulte. AnnotationConsolidationLambdaArn

Veja a seguir um exemplo de uma solicitação em AWS Python SDK (Boto3) para criar um trabalho de etiquetagem na região Leste dos EUA (Norte da Virgínia). Todos os parâmetros em vermelho devem ser substituídos por suas especificações e recursos.

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' }, ] )

Fornecer um modelo para trabalhos de rotulagem da caixa delimitadora

Se você criar um trabalho de etiquetagem usando oAPI, deverá fornecer um modelo de tarefa do trabalhador emUiTemplateS3Uri. Copie e modifique o modelo a seguir. Modifique somente short-instructions, full-instructions e header. Faça o upload desse modelo para o S3 e forneça o S3 URI para esse arquivo. UiTemplateS3Uri

<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>

Dados de saída da caixa delimitadora

Depois de criar um trabalho de rotulagem de caixa delimitadora, seus dados de saída estarão localizados no bucket do Amazon S3 especificado no parâmetro ao usar S3OutputPath o ou no campo Localização API do conjunto de dados de saída da seção Visão geral do trabalho do console.

Por exemplo, o arquivo manifesto de saída de uma tarefa de caixa delimitadora de classe única concluída com êxito conterá o seguinte:

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

O parâmetro boundingBoxes identifica o local da caixa delimitadora desenhada em volta de um objeto identificado como um “pássaro” em relação ao canto superior esquerdo da imagem que é considerada como a coordenada de pixel (0,0). No exemplo anterior, left e top identificam o local do pixel no canto superior esquerdo da caixa delimitadora em relação ao canto superior esquerdo da imagem. As dimensões da caixa delimitadora são identificadas por height e width. O parâmetro inputImageProperties fornece as dimensões do pixel da imagem de entrada original.

Ao usar o tipo de tarefa da caixa delimitadora, é possível criar trabalhos de rotulagem de caixa delimitadora de classe única e múltipla. O arquivo manifesto de saída de uma caixa delimitadora de várias classes concluída com êxito conterá o seguinte:

[ { "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 } } } ]

Para saber mais sobre o arquivo manifesto de saída resultante de um trabalho de rotulagem de caixa delimitadora, consulte Saída de trabalho de caixa delimitadora.

Para saber mais sobre o arquivo manifesto de saída gerado pelo Ground Truth, e sobre a estrutura do arquivo que o Ground Truth usa para armazenar os dados de saída, consulte Dados de saída.