En este artículo, veremos cómo puede usar una plantilla de interfaz de usuario personalizada con funciones de AWS Lambda en Amazon Sagemaker.
Aquí usaremos un cuaderno Jupyter para crear un trabajo de etiquetado de datos reales usando una plantilla de interfaz de usuario personalizada con funciones lambda proporcionadas por AWS usando un SDK de AWS como boto3. Para hacerlo, siga los siguientes pasos:
Paso 1: primero cree un archivo de plantilla de interfaz de usuario personalizado llamado customui.html para crear un trabajo de segmentación semántica. A continuación se proporciona un código de muestra:
HTML
<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>Inspect the Image</li> <li>Add appropriate label for 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>
Paso 2: ahora cree un archivo JSON llamado testlabels.json para las etiquetas y un archivo de manifiesto de entrada llamado input.manifest para las imágenes en Amazon Simple Storage Service.
Paso 3: Cargue los archivos HTML, de manifiesto y JSON en el servicio de almacenamiento simple de Amazon ejecutando este código de Python:
Python3
import boto3 import os bucket = 'labelingjobdemoinputz' prefix ='GroundTruthCustom' 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')
Paso 4: recupere los nombres de recursos de Amazon (ARN) para las funciones de Lambda de consolidación de anotaciones y preprocesamiento proporcionadas por AWS. Por ejemplo, aquí están los ARN de segmentación semántica:
Paso 5: ahora cree un trabajo de etiquetado con un SDK de AWS. Asegúrese de reemplazar las variables predeterminadas en el script con las rutas de archivo y los ARN de Amazon S3 correspondientes.
Python3
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' : 'YOUR_ARNs_HERE', 'TaskKeywords': [ 'SemanticSegmentation', ], 'TaskTitle': 'Semantic Segmentation', 'TaskDescription': 'Draw around the specified labels using the tools', 'NumberOfHumanWorkersPerDataObject': 1, 'TaskTimeLimitInSeconds': 3600, 'TaskAvailabilityLifetimeInSeconds': 1800, 'MaxConcurrentTaskCount': 1, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': 'YOUR_ARNs_HERE } }, Tags=[ { 'Key': 'reason', 'Value': 'CustomUI' } ])
Esto dará como resultado lo siguiente:
Paso 6: ahora navegue a la consola de verdad del terreno para ver el trabajo de etiquetado recién creado.
Ahora sabe cómo usar una plantilla de interfaz de usuario personalizada con funciones lambda proporcionadas por AWS en la realidad.
Publicación traducida automáticamente
Artículo escrito por ddeevviissaavviittaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA