For semantic segmentation jobs, set the name variable to crowd-semantic-segmentation, as shown in the following example. For bounding box jobs, set the name variable to boundingBox. For a full list of enhanced HTML elements for custom templates, see Crowd HTML elements reference.
<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>
Upload the HTML, manifest, and JSON files to Amazon Simple Storage Service (Amazon S3). Example:
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')
To create the labeling job, use an AWS SDK, such as boto3:
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"}],
)