Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Classificare gli oggetti dell'immagine utilizzando un riquadro di delimitazione
Le immagini utilizzate per addestrare un modello di machine learning spesso contengono più di un oggetto. Per classificare e localizzare uno o più oggetti all'interno delle immagini, usa il tipo di attività di etichettatura del bounding box di Amazon SageMaker Ground Truth. In questo contesto, la localizzazione indica la posizione pixel del riquadro di delimitazione. Puoi creare un lavoro di etichettatura dei bounding box utilizzando la sezione Ground Truth della SageMaker console Amazon o l'CreateLabelingJob
operazione.
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 del rettangolo di selezione (console)
Puoi seguire le istruzioni Creazione di un processo di etichettatura (console) per imparare a creare un processo di etichettatura dei bounding box nella console. SageMaker Nella fase 10, scegli Immagine dal menu a discesa della categoria Attività e scegli Riquadro di delimitazione 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 un massimo di 50 etichette tra cui i worker possono scegliere.
Crea un processo di etichettatura del bounding box () API
Per creare un lavoro di etichettatura dei riquadri delimitatori, utilizzate l'operazione. SageMaker API CreateLabelingJob
Questo API definisce questa operazione per tutti. AWS SDKs Per visualizzare un elenco delle lingue specifiche SDKs supportate per questa operazione, consultate la sezione Vedere anche di. CreateLabelingJob
Segui queste istruzioni su Creazione di 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-BoundingBox
. Per trovare la pre-annotazione Lambda ARN per la tua regione, consulta. PreHumanTaskLambdaArn -
Le funzioni Lambda di consolidamento delle annotazioni per questo tipo di attività terminano con
ACS-BoundingBox
. Per trovare la ARN Lambda di consolidamento delle annotazioni per la tua regione, consulta. AnnotationConsolidationLambdaArn
Di seguito è riportato un esempio di richiesta AWS Python SDK (Boto3)
response = client.create_labeling_job( LabelingJobName=
'example-bounding-box-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-BoundingBox', 'TaskKeywords': ['Bounding Box'
, ], 'TaskTitle':'Bounding Box task'
, 'TaskDescription':'Draw bounding boxes around objects in an image'
, 'NumberOfHumanWorkersPerDataObject':123
, 'TaskTimeLimitInSeconds':123
, 'TaskAvailabilityLifetimeInSeconds':123
, 'MaxConcurrentTaskCount':123
, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:us-east-1:432418664414
:function:ACS-BoundingBox' } }, Tags=[ { 'Key':'string'
, 'Value':'string'
}, ] )
Fornire un modello per i processi di etichettatura dei riquadri di delimitazione
Se si crea un lavoro di etichettatura utilizzando ilAPI, è necessario fornire un modello di attività di lavoro in. UiTemplateS3Uri
Copia e modifica il modello seguente. Modifica solo short-instructions
, full-instructions
e header
. Carica questo modello su S3 e fornisci l'S3 URI per questo file. UiTemplateS3Uri
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-bounding-box name="boundingBox" src="{{ task.input.taskObject | grant_read_access }}" header="please draw box" labels="{{ task.input.labels | to_json | escape }}" > <full-instructions header="Bounding box instructions"> <ol><li><strong>Inspect</strong> the image</li><li><strong>Determine</strong> if the specified label is/are visible in the picture.</li> <li><strong>Outline</strong> each instance of the specified label in the image using the provided “Box” tool.</li></ol> <ul><li>Boxes should fit tight around each object</li> <li>Do not include parts of the object are overlapping or that cannot be seen, even though you think you can interpolate the whole shape.</li> <li>Avoid including shadows.</li> <li>If the target is off screen, draw the box up to the edge of the image.</li> </full-instructions> <short-instructions> <h3><span style="color: rgb(0, 138, 0);">Good example</span></h3> <p>Enter description of a correct bounding box label and add images</p> <h3><span style="color: rgb(230, 0, 0);">Bad example</span></h3> <p>Enter description of an incorrect bounding box label and add images</p> </short-instructions> </crowd-bounding-box> </crowd-form>
Dati di output del riquadro di delimitazione
Dopo aver creato un processo di etichettatura bounding box, i dati di output si troveranno nel bucket Amazon S3 specificato nel parametro quando si utilizza S3OutputPath
API il campo Output dataset location della sezione Job overview della console.
Ad esempio, il file manifest di output di un'attività del riquadro di delimitazione a classe singola completato correttamente conterrà quanto segue:
[ { "boundingBox": { "boundingBoxes": [ { "height": 2832, "label": "bird", "left": 681, "top": 599, "width": 1364 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]
Il parametro boundingBoxes
identifica la posizione del riquadro di delimitazione disegnato attorno a un oggetto identificato come «uccello» rispetto all'angolo in alto a sinistra dell'immagine che viene considerata la coordinata pixel (0,0). Nell'esempio precedente, left
e top
identifica la posizione del pixel nell'angolo in alto a sinistra del riquadro di delimitazione rispetto all'angolo in alto a sinistra dell'immagine. Le dimensioni del riquadro di delimitazione sono identificate con height
e width
. Il parametro inputImageProperties
fornisce le dimensioni in pixel dell'immagine di input originale.
Quando utilizzi il tipo di attività di etichettatura del riquadro di delimitazione, puoi creare attività di etichettatura del riquadro di delimitazione a classe singola e multiclasse. Il file manifest di output di un riquadro di delimitazione multi-classe completato correttamente conterrà quanto segue:
[ { "boundingBox": { "boundingBoxes": [ { "height": 938, "label": "squirrel", "left": 316, "top": 218, "width": 785 }, { "height": 825, "label": "rabbit", "left": 1930, "top": 2265, "width": 540 }, { "height": 1174, "label": "bird", "left": 748, "top": 2113, "width": 927 }, { "height": 893, "label": "bird", "left": 1333, "top": 847, "width": 736 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]
Per ulteriori informazioni sul file manifest di output risultante da un processo di etichettatura del riquadro di delimitazione, consulta Output del lavoro Bounding Box.
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 del lavoro.