Identifier le contenu des images à l’aide de la segmentation sémantique - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Identifier le contenu des images à l’aide de la segmentation sémantique

Pour identifier le contenu d’une image au niveau du pixel, utilisez une tâche d’étiquetage par segmentation sémantique Amazon SageMaker Ground Truth. Lorsqu’on leur confie une tâche d’étiquetage par segmentation sémantique, les employés classent les pixels de l’image dans un ensemble d’étiquettes ou de classes prédéfinies. Ground Truth prend en charge les tâches d’étiquetage par segmentation sémantique à simple ou multiple classe. Vous créez une tâche d’étiquetage par segmentation sémantique à l’aide de la section Ground Truth de la console Amazon SageMaker AI ou de l’opération CreateLabelingJob.

Les images qui contiennent un grand nombre d’objets devant être segmentées nécessitent plus de temps. Pour aider les employés (d’une main-d’œuvre privée ou d’un fournisseur) à étiqueter ces objets en moins de temps et avec plus de précision, Ground Truth propose un outil de segmentation automatique assisté par l’IA. Pour plus d’informations, consultez Outil de segmentation automatique.

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 plus d’informations, consultez Données d’entrée.

Création d’une tâche d’étiquetage de segmentation sémantique (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 segmentation sémantique dans la console SageMaker AI. À l’étape 10, choisissez Image dans le menu déroulant Catégorie de tâches, puis Segmentation sémantique 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 la tâche d’étiquetage avec la console, vous spécifiez des instructions pour aider les collaborateurs à terminer la tâche et des étiquettes parmi lesquelles ceux-ci peuvent faire leur choix.

Gif montrant un exemple de comment créer une tâche d’étiquetage par segmentation sémantique dans la console SageMaker AI.

Créer une tâche d’étiquetage de segmentation sémantique (API)

Pour créer une tâche d’étiquetage par segmentation sémantique, utilisez l’opération CreateLabelingJob de l’API SageMaker. 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, consultez 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-SemanticSegmentation. Pour trouver l’ARN Lambda de pré-annotation pour votre région, consultez PreHumanTaskLambdaArn.

  • Les fonctions Lambda de consolidation des annotations pour ce type de tâche se terminent par ACS-SemanticSegmentation. Pour trouver l’ARN Lambda de consolidation des annotations pour votre région, consultez 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-semantic-segmentation-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-SemanticSegmentation, 'TaskKeywords': [ 'Semantic Segmentation', ], 'TaskTitle': 'Semantic segmentation task', 'TaskDescription': 'For each category provided, segment out each relevant object using the color associated with that category', 'NumberOfHumanWorkersPerDataObject': 123, 'TaskTimeLimitInSeconds': 123, 'TaskAvailabilityLifetimeInSeconds': 123, 'MaxConcurrentTaskCount': 123, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:ACS-SemanticSegmentation' }, Tags=[ { 'Key': 'string', 'Value': 'string' }, ] )

Fournir un modèle pour les tâches d’étiquetage de segmentation sémantique

Si vous créez une tâche d’étiquetage à l’aide de l’API, vous devez fournir un modèle de tâche d’employé 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-semantic-segmentation name="crowd-semantic-segmentation" src="{{ task.input.taskObject | grant_read_access }}" header="Please segment out all pedestrians." labels="{{ task.input.labels | to_json | escape }}" > <full-instructions header="Segmentation instructions"> <ol><li><strong>Read</strong> the task carefully and inspect the image.</li> <li><strong>Read</strong> the options and review the examples provided to understand more about the labels.</li> <li><strong>Choose</strong> the appropriate label that best suits an object and paint that object using the tools provided.</li></ol> </full-instructions> <short-instructions> <h2><span style="color: rgb(0, 138, 0);">Good example</span></h2> <p>Enter description to explain a correctly done segmentation</p> <p><br></p><h2><span style="color: rgb(230, 0, 0);">Bad example</span></h2> <p>Enter description of an incorrectly done segmentation</p> </short-instructions> </crowd-semantic-segmentation> </crowd-form>

Données de sortie de segmentation sémantique

Une fois que vous avez créé une tâche d’étiquetage par segmentation sémantique, 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.

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, consultez Étiquetage des données de sortie des tâches.

Pour afficher un exemple de fichier manifeste en sortie pour une tâche d’étiquetage de segmentation sémantique, consultez Fichier de sortie de segmentation sémantique de nuage de points 3D.