Wie kann ich eine benutzerdefinierte Benutzeroberflächen-Vorlage mit von AWS bereitgestellten Lambda-Funktionen in Ground Truth verwenden?
Ich möchte eine benutzerdefinierte Benutzeroberflächen-Vorlage von Amazon SageMaker Ground Truth und AWS-Lambda-Funktionen für einen Beschriftungsauftrag verwenden.
Lösung
Erstelle eine benutzerdefinierte Benutzeroberflächen-Vorlage für den Beschriftungsauftrag, wie im folgenden Beispiel gezeigt:
-
Setze für semantische Segmentierungsaufträge die Variable name auf crowd-semantic-segmentation, wie im folgenden Beispiel gezeigt. Setze für Begrenzungsrahmenaufträge die name-Variable auf boundingBox. Eine vollständige Liste der erweiterten HTML-Elemente für benutzerdefinierte Vorlagen findest du unter Referenz zu Crowd-HTML-Elementen.
<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= "{{ task.input.header }}" labels="{{ task.input.labels | to_json | escape }}"> <full-instructions header= "Segmentation Instructions"> <ol> <li>Read the task carefully and inspect the image.</li> <li>Read the options and review the examples provided to understand more about the labels.</li> <li>Choose the appropriate label that best suits the image.</li> </ol> </full-instructions> <short-instructions> <p>Use the tools to label the requested items in the image</p> </short-instructions> </crowd-semantic-segmentation> </crowd-form> -
Erstelle eine JSON-Datei für die Beschriftungen. Beispiel:
{ "labels": [ { "label": "Chair" }, ... { "label": "Oven" } ] } -
Erstelle eine Eingabe-Manifestdatei für die Bilder. Beispiel:
{"source-ref":"s3://awsdoc-example-bucket/input_manifest/apartment-chair.jpg"} {"source-ref":"s3://awsdoc-example-bucket/input_manifest/apartment-carpet.jpg"} -
Lade die HTML-, Manifest- und JSON-Dateien auf Amazon Simple Storage Service (Amazon S3) hoch. Beispiel:
import boto3import os bucket = 'awsdoc-example-bucket' prefix = 'GroundTruthCustomUI' boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'customUI.html')).upload_file('customUI.html') boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'input.manifest')).upload_file('input.manifest') boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'testLabels.json')).upload_file('testLabels.json') -
Rufe die Amazon-Ressourcennamen (ARNs) für die Lambda-Funktionen pre-processing (Vorverarbeitung) und annotation consolidation (Konsolidierung von Anmerkungen) ab. Hier sind zum Beispiel die ARNs der semantischen Segmentierung:
arn:aws:lambda:eu-west-1:111122223333:function:PRE-SemanticSegmentation
arn:aws:lambda:eu-west-1:111122223333:function:ACS-SemanticSegmentation -
Verwende ein AWS SDK, z. B. boto3, um den Beschriftungsauftrag zu erstellen:
import boto3 client = boto3.client("sagemaker") client.create_labeling_job( LabelingJobName="SemanticSeg-CustomUI", LabelAttributeName="output-ref", InputConfig={ "DataSource": {"S3DataSource": {"ManifestS3Uri": "INPUT_MANIFEST_IN_S3"}}, "DataAttributes": { "ContentClassifiers": [ "FreeOfPersonallyIdentifiableInformation", ] }, }, OutputConfig={"S3OutputPath": "S3_OUTPUT_PATH"}, RoleArn="IAM_ROLE_ARN", LabelCategoryConfigS3Uri="LABELS_JSON_FILE_IN_S3", StoppingConditions={"MaxPercentageOfInputDatasetLabeled": 100}, HumanTaskConfig={ "WorkteamArn": "WORKTEAM_ARN", "UiConfig": {"UiTemplateS3Uri": "HTML_TEMPLATE_IN_S3"}, "PreHumanTaskLambdaArn": "arn:aws:lambda:eu-west-1:111122223333:function:PRE-SemanticSegmentation", "TaskKeywords": [ "SemanticSegmentation", ], "TaskTitle": "Semantic Segmentation", "TaskDescription": "Draw around the specified labels using the tools", "NumberOfHumanWorkersPerDataObject": 1, "TaskTimeLimitInSeconds": 3600, "TaskAvailabilityLifetimeInSeconds": 1800, "MaxConcurrentTaskCount": 1, "AnnotationConsolidationConfig": { "AnnotationConsolidationLambdaArn": "arn:aws:lambda:eu-west-1:111122223333:function:ACS-SemanticSegmentation" }, }, Tags=[{"Key": "reason", "Value": "CustomUI"}], )
Gehe im vorherigen Beispiel wie folgt vor:
- Ersetze S3_OUTPUT_PATH durch den S3-Ausgabepfad.
- Ersetze IAM_ROLE_ARN durch den Rollen-ARN.
- Ersetze WORKTEAM_ARN durch den ARN des Arbeitsteams.
- Ersetze INPUT_MANIFEST_IN_S3 durch den Eingabe-Manifest-URI.
- Ersetze LABELS_JSON_IN_S3 durch den Beschriftungs-JSON-URI.
- Ersetze HTML_TEMPLATE_IN_S3 durch den HTML-Vorlagen-URI.
Ähnliche Informationen
- Themen
- Machine Learning & AI
- Tags
- Amazon SageMaker
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Jahren