Bounding Box - Amazon SageMaker

Bounding Box

Dans de nombreuses situations, les images utilisées pour entraîner un modèle de machine learning contiennent plus d'un objet. Pour classer et localiser un ou plusieurs objets dans des images, utilisez le type de tâche d'étiquetage Bounding Box d'Amazon SageMaker Ground Truth. Dans ce contexte, la localisation signifie l'emplacement du pixel du cadre de délimitation.

Vous créez une tâche d'étiquetage Bounding Box à l'aide de la section Ground Truth de la console Amazon SageMaker ou de l'opération CreateLabelingJob.

Important

Pour ce type de tâche, si vous créez votre propre fichier manifeste, utilisez "source-ref" pour identifier l'emplacement dans Amazon S3 de chaque fichier image que vous souhaitez étiqueter. Pour de plus amples informations, veuillez consulter Données d'entrée.

Création d'une tâche d'étiquetage de cadre de délimitation (Console)

Vous pouvez suivre les instructions présentées dans Création d'une tâche d'étiquetage (Console) pour apprendre à créer une tâche d'étiquetage par cadre de délimitation dans la console SageMaker. À l'étape 10, choisissez Image dans le menu déroulant Catégorie de tâche puis choisissez Cadre de délimitation comme type de tâche.

Ground Truth fournit une interface utilisateur employé similaire à la suivante pour l'étiquetage des tâches. Lorsque vous créez une tâche d'étiquetage avec la console, vous spécifiez des instructions pour aider les employés à effectuer la tâche et jusqu'à 50 étiquettes parmi lesquelles les employés peuvent choisir.

Créer une tâche d'étiquetage de cadre de délimitation (API)

Pour créer une tâche d'étiquetage par cadre de délimitation, utilisez l'opération de l'API SageMaker CreateLabelingJob. Cette API définit cette opération pour tous les kits SDK AWS. Pour afficher la liste des kits SDK spécifiques à la langue pris en charge pour cette opération, veuillez consulter la section Voir aussi de CreateLabelingJob.

Suivez les instructions présentées dans Création d'une tâche d'étiquetage (API) et procédez comme suit pour configurer votre demande :

  • Les fonctions Lambda de pré-annotation pour ce type de tâche se terminent par PRE-BoundingBox. Pour trouver l'ARN Lambda de pré-annotation pour votre région, veuillez consulter PreHumanTaskLambdaArn.

  • Les fonctions Lambda de consolidation des annotations pour ce type de tâche se terminent par ACS-BoundingBox. Pour trouver l'ARN Lambda de consolidation des annotations pour votre région, veuillez consulter AnnotationConsolidationLambdaArn.

Voici un exemple de requête du kit SDK AWS Python (Boto3) pour créer une tâche d'étiquetage dans la région USA Est (Virginie du Nord). Tous les paramètres en rouge doivent être remplacés par vos spécifications et ressources.

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

Fournir un modèle pour les tâches d'étiquetage de cadre de délimitation

Si vous créez une tâche d'étiquetage à l'aide de l'API, vous devez fournir un modèle personnalisé dans UiTemplateS3Uri. Copiez et modifiez le modèle suivant. Modifiez uniquement short-instructions, full-instructions, et header. Téléchargez ce modèle vers S3 et fournissez l'URI S3 pour ce fichier dans 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>

Données de sortie du cadre de délimitation

Une fois que vous avez créé une tâche d'étiquetage de cadre de délimitation, vos données de sortie seront situées dans le compartiment Amazon S3 spécifié dans le paramètre S3OutputPath lorsque vous utilisez l'API ou dans le champ Output dataset location (Emplacement du jeu de données de sortie) de la section Job overview (Présentation de la tâche) de la console.

Par exemple, le fichier manifeste de sortie d'une tâche de cadre de délimitation à une seule classe exécutée avec succès contiendra les éléments suivants :

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

Le paramètre boundingBoxes identifie l'emplacement du cadre de délimitation tracé autour d'un objet identifié comme un « oiseau » par rapport au coin supérieur gauche de l'image qui est considéré comme la coordonnée pixel (0,0). Dans l'exemple précédent, left et top identifient l'emplacement du pixel dans le coin supérieur gauche du cadre de sélection par rapport au coin supérieur gauche de l'image. Les dimensions du cadre englobant sont identifiées par height et width. Le paramètre inputImageProperties donne les dimensions en pixels de l'image d'entrée d'origine.

Lorsque vous utilisez le type de tâche de zone de délimitation, vous pouvez créer des tâches d'étiquetage de zone de délimitation à une ou plusieurs classes. Le fichier manifeste de sortie d'un cadre délimitation à plusieurs classes exécuté avec succès contiendra les éléments suivants :

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

Pour en savoir plus sur le fichier manifeste de sortie qui résulte d'une tâche d'étiquetage de cadre délimitation, veuillez consulter Sortie de tâche de tracé de cadre de délimitation.

Pour en savoir plus sur le fichier manifeste de sortie généré par Ground Truth et sur la structure de fichier que ce dernier utilise pour stocker vos données de sortie, veuillez consulter Données de sortie.