Identificare i contenuti delle immagini utilizzando la segmentazione semantica
Per identificare il contenuto di un'immagine a livello di pixel, utilizza un'attività di etichettatura di segmentazione semantica Amazon SageMaker Ground Truth. Quando viene assegnato un processo di etichettatura di segmentazione semantica, i worker classificano i pixel nell'immagine in un set di etichette o classi predefinite. Ground Truth supporta processi di etichettatura a segmentazione semantica singola e multi-classe. È possibile creare un processo di etichettatura per la segmentazione semantica utilizzando la sezione Ground Truth della console di Amazon SageMaker AI o l’operazione CreateLabelingJob.
Le immagini che contengono un numero elevato di oggetti che devono essere segmentati richiedono più tempo. Per aiutare i worker (provenienti da una forza lavoro privata o di un fornitore) a etichettare questi oggetti in meno tempo e con maggiore precisione, Ground Truth fornisce uno strumento di segmentazione automatica assistito dall'IA. Per informazioni, consultare Strumento di auto-segmentazione.
Importante
Per questo tipo di attività, se si crea un file manifest personalizzato, utilizza "source-ref" per identificare la posizione di ciascun file immagine in Amazon S3 che desideri etichettare. Per ulteriori informazioni, consulta Dati di input.
Creazione di un processo di etichettatura di segmentazione semantica (console)
Puoi seguire le istruzioni in Creare un processo di etichettatura (console) per creare un processo di etichettatura per la segmentazione semantica nella console SageMaker AI. Nella fase 10, scegli Immagine dal menu a discesa della categoria Attività e scegli Segmentazione semantica come tipo di attività.
Ground Truth fornisce un'interfaccia utente di lavoro simile alla seguente per le attività di etichettatura. Quando si crea il processo di etichettatura con la console, si specificano le istruzioni per consentire ai worker di completare il processo e le etichette tra cui i worker possono scegliere.
Creare un processo di etichettatura di segmentazione semantica (API)
Per creare un processo di etichettatura di segmentazione semantica, utilizzare l'operazione API SageMaker CreateLabelingJob. Questa API definisce l'operazione per tutti gli SDK AWS. Per visualizzare l'elenco degli SDK specifici del linguaggio supportati per questa operazione, consulta la sezione See Also di CreateLabelingJob.
Segui queste istruzioni su Creare un processo di etichettatura (API) ed effettua le seguenti operazioni durante la configurazione della richiesta:
-
Le funzioni Lambda di pre-annotazione per questo tipo di attività terminano con
PRE-SemanticSegmentation. Per trovare l'ARN Lamda di pre-annotazione per la Regione, consulta PreHumanTaskLambdaArn. -
Le funzioni Lambda di consolidamento delle annotazioni per questo tipo di attività terminano con
ACS-SemanticSegmentation. Per trovare l'ARN Lamda di consolidamento delle annotazioni per la Regione, consulta AnnotationConsolidationLambdaArn.
Di seguito è riportato un esempio di richiesta AWS Python SDK (Boto3)
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'}, ] )
Fornire un modello per i processi di etichettatura della segmentazione semantica
Se stai creando un'attività di etichettatura utilizzando l'API, devi fornire un modello di attività del worker in UiTemplateS3Uri. Copia e modifica il modello seguente. Modifica solo short-instructions, full-instructions e header.
Carica questo modello in S3 e fornisci l'URI S3 per questo file in 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>
Dati di output di segmentazione semantica
Dopo aver creato un processo di etichettatura di segmentazione semantica, i dati di output si troveranno nel bucket Amazon S3 specificato nel parametro S3OutputPath quando si utilizza l'API o nel campo Posizione del set di dati di output della sezione Panoramica processo della console.
Per ulteriori informazioni sul file manifest di output generato da Ground Truth e sulla struttura di file utilizzata da Ground Truth per archiviare i dati di output, consulta Etichettatura dei dati di output di un processo.
Per visualizzare un esempio di file manifesto di output per un processo di etichettatura di segmentazione semantica, vedere Output della segmentazione semantica in una nuvola di punti 3D.