Etichettatura dei dati di addestramento per il machine learning

TUTORIAL

Panoramica

In questo tutorial imparerai come etichettare un processo in Amazon SageMaker Ground Truth per annotare i dati di addestramento per il tuo modello di machine learning (ML). 

Un set di dati etichettato è fondamentale per l'addestramento supervisionato di un modello di ML. Numerose organizzazioni dispongono di enormi set di dati, ma mancano di etichette associate ai dati. Grazie ad Amazon SageMaker Ground Truth puoi facilmente etichettare i dati con l'opzione di utilizzo di annotazioni umane tramite Amazon Mechanical Turk, fornitori di terze parti o la tua forza lavoro privata. 

Per questo tutorial utilizzerai SageMaker Ground Truth per etichettare un set di immagini di veicoli come aeroplani, automobili, traghetti, elicotteri e motociclette. Poiché questo tutorial utilizza un set di dati non sensibile, utilizzerai l'opzione Amazon Mechanical Turk.

Obiettivi

Con questa guida, imparerai a:

  • Creare e configurare un processo di etichettatura dei dati
  • Rivedere i risultati del processo di etichettatura

Prerequisiti

Prima di iniziare questa guida, avrai bisogno di:

 Esperienza AWS

Principiante

 Tempo per il completamento

30 minuti

 Costo richiesto per il completamento

Per una stima dei costi di questo tutorial, consulta Prezzi di SageMaker.

 Requisiti

Devi aver effettuato l'accesso con un account AWS.

 Servizi utilizzati

Amazon SageMaker Ground Truth

 Ultimo aggiornamento

6 luglio 2022

Implementazione

Fase 1: Configurazione di un'istanza del notebook Amazon SageMaker

Nella barra di ricerca della Console AWS, digita SageMaker, quindi seleziona Amazon SageMaker per aprire la console SageMaker.

Nel riquadro di navigazione sulla sinistra, fai clic su "Notebook".  Scegli Notebook instances (Istanze notebook), quindi seleziona Create notebook instance (Crea istanza notebook).

Sulla pagina Create notebook instance (Crea istanza notebook), nella casella Notebook instance settings (Impostazioni dell'istanza notebook), per Notebook instance name (Nome dell'istanza notebook), immetti SageMaker-Ground-Truth-Tutorial. Per Notebook instance type (Tipo di istanza notebook), seleziona ml.t2.medium

Nella sezione Permissions and encryption (Autorizzazioni e crittografia), per IAM role (Ruolo IAM), scegli Create a new role (Crea un nuovo ruolo). Nella finestra di dialogo Create an IAM role (Crea un ruolo IAM), seleziona Any S3 bucket (Qualsiasi bucket S3) e scegli Create role (Crea ruolo). Come best practice, limita l'accesso al bucket S3 a un ruolo IAM specifico con le autorizzazioni minime richieste negli ambienti di produzione. Prendi nota del nome di questo ruolo in modo da poterlo eliminare alla fine.

SageMaker crea il ruolo AmazonSageMaker-ExecutionRole-<id-ruolo>. Mantieni le impostazioni predefinite per le opzioni rimanenti e scegli Create notebook instance (Crea istanza notebook).

Nella sezione Notebook instances (Istanze notebook), l'istanza del notebook SageMaker-Ground-Truth-Tutorial appena creata viene visualizzata con lo stato Pending (In sospeso). Il notebook sarà pronto quando lo stato diventa InService.

Fase 2: Creazione di un processo di etichettatura

Le immagini di esempio da etichettare in questo tutorial vengono estratte dal set di dati Caltech 101 pubblicamente disponibile (Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P. (2022). Caltech 101 (versione 1.0) [Set di dati]. CaltechDATA), che contiene le immagini i 101 categorie di oggetti. Per ridurre al minimo il costo di questo tutorial, utilizzi un set di esempio di 10 immagini, due per ciascuna delle seguenti categorie: aeroplani, automobili, traghetti, elicotteri e moto. Ma i passaggi per avviare un processo di etichettatura per un set di dati più ampio sono gli stessi di questo tutorial. Il set di esempio di 10 immagini è già disponibile nel bucket Amazon S3 sagemaker-sample-files.

In questa fase, utilizzerai l'istanza del notebook SageMaker per scrivere il codice Python che carica le immagini dal bucket S3 sagemaker-sample-files nel bucket S3 predefinito sagemaker-<regione>-<id-account-aws>. Dopo che lo stato dell'istanza del notebook SageMaker-Ground-Truth-Tutorial è passato a InService, scegli Open Jupyter (Apri Jupyter).

Nel notebook Jupyter, per New (Nuovo), seleziona conda_python3.

Fai clic su Untitled.ipynb per aprire il notebook. In una nuova cella di codice nel notebook Jupyter, copia e incolla il codice seguente ed esegui la cella.

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

Una volta eseguito il codice, apri la console Amazon S3 e passa a sagemaker-<regione>-<id-account-aws>/ground-truth-demo/images per verificare che le dieci immagini sono state caricate.

Apri la console SageMaker. Nel pannello di navigazione sulla sinistra, seleziona Ground Truth, Labeling jobs (Processi di etichettatura). Quindi, scegli Create labeling job (Crea processo di etichettatura).

Nella pagina Specify job details (Specifica dettagli processo), in Job overview (Panoramica del processo), immetti vehicle-labeling-demo nella casella Job name (Nome processo). In Input data setup (Configurazione dati di input), seleziona Automated data setup (Configurazione automatica dei dati). 

Puoi utilizzare la configurazione automatica dei dati per creare file manifesto per i tuoi processi di etichettatura nella console SageMaker Ground Truth utilizzando immagini, video, fotogrammi video, file di testo (.txt) e file con valori separati da virgole (.csv) archiviati in Amazon S3. Quando utilizzi la configurazione automatizzata dei dati, specifichi una posizione Amazon S3 in cui sono archiviati i dati di input e specifichi il tipo di dati di input e SageMaker Ground Truth cerca i file che corrispondono a quel tipo nella posizione specificata.

Nella sezione Data setup (Configurazione dei dati), per S3 location for input datasets (Posizione S3 per i set di dati di input), scegli Browse S3 (Sfoglia S3), quindi seleziona la posizione S3 s3://sagemaker-<regione>-<id-account-aws>/ground-truth-demo/images/ (questo è il percorso in cui sono state caricate le immagini in una fase precedente). Per S3 location for output datasets (Posizione S3 per i set di dati di output), seleziona Specify a new location (Specifica una nuova posizione). Quindi, specifica il percorso in cui archiviare le immagini etichettate: s3://sagemaker-<regione>-<id-account-aws>/ground-truth-demo/labeled-data/. Per Data type (Tipo di dati), seleziona Image (Immagine). Per IAM Role (Ruolo IAM), seleziona Create a new role (Crea un nuovo ruolo). In alternativa, puoi utilizzare i valori corrispondenti dall'istruzione di stampa nel notebook Jupyter eseguita in precedenza.

Nella finestra a comparsa Create an IAM role (Crea un ruolo IAM), seleziona Any S3 bucket (Qualsiasi bucket S3), quindi scegli Create (Crea). 

SageMaker Ground Truth crea il ruolo IAM automaticamente e lo inserisce nella casella IAM Role (Ruolo IAM). Scegli Complete data setup (Completa configurazione dei dati). Verrà visualizzato il messaggio di conferma Input data connection was successful (Connessione ai dati di input riuscita correttamente).

Nella sezione Task type (Tipo di attività), per Task category (Categoria attività), seleziona Image (Immagine). Per Task selection (Selezione attività), seleziona Image Classification (Single Label) (Classificazione immagine [etichetta singola]), quindi scegli Next (Successivo).

Nella sezione Select workers and configure tool (Seleziona worker e configura strumento), per Worker types (Tipi di worker), seleziona Amazon Mechanical Turk.

Seleziona The dataset does not contain adult content (Il set di dati non contiene contenuti per adulti). 

Seleziona You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce (Comprendo e accetto che la forza lavoro di Amazon Mechanical Turk è composta da appaltatori indipendenti dislocati in tutto il mondo e che non devo condividere informazioni riservate, informazioni personali o informazioni sanitarie protette con questa forza lavoro).

 

Nella sezione Image classification (Single Label) labeling tool (Strumento di etichettatura per la classificazione delle immagini (etichetta singola), immetti le seguenti informazioni:

Come descrizione breve dell'attività, immetti Please select the label that best matches the image below (Seleziona l'etichetta che più corrisponde all'immagine di seguito). Puoi scegliere una sola etichetta per immagine.

Per Select an option (Seleziona un'opzione), immetti le seguenti etichette in caselle separate: Airplane (Aeroplano), Car (Automobile), Ferry (Traghetto), Helicopter (Elicottero), Motorbike (Moto).

Espandi Additional instructions (Istruzioni aggiuntive), quindi aggiungi il seguente testo alla fase 3: If there are multiple vehicles in a single image, choose the most prominent vehicle in the image (Se ci sono più veicoli in una singola immagine, scegli il veicolo più in evidenza).

Per vedere come lo strumento di etichettatura appare agli etichettatori, scegli Preview (Anteprima). 

Scegli Create (Crea).

Il nuovo processo di etichettatura vehicle-labeling-demo sarà riportato nella sezione Labeling jobs (Processi di etichettatura) nella console SageMaker con stato uguale a In progress (In corso) e tipo di attività pari a Image Classification (Single Label) (Classificazione delle immagini [etichetta singola]). Il completamento del processo di etichettatura richiede diversi minuti. Dopo che i dati sono stati pubblicati dalla forza lavoro pubblica di Amazon Mechanical Turk, lo Status diventerà Complete (Completato).

Fase 3: Revisione dei risultati del processo di etichettatura

Rivedere i risultati del lavoro di etichettatura è importante per valutare la qualità dell'etichettatura e identificare se è necessario migliorare le istruzioni e i dati.

Nel riquadro di navigazione sinistro della console SageMaker, scegli Labeling jobs (Processi di etichettatura), quindi scegli vehicle-labeling-demo.

 

Sulla pagina dei dettagli di vehicle-labeling-demo, la sezione Labeled dataset objects (Oggetti del set di dati etichettato) mostra le miniature delle immagini dal set di dati con le etichette corrispondenti come didascalie.

 

Per accedere ai risultati completi del processo di etichettatura, nella sezione Labeling job summary (Riepilogo processo di etichettatura), seleziona il link Output dataset location (Posizione set di dati di output).

Scegli manifests, output, output.manifest.

 

Scegli Open (Apri) per scaricare i risultati dell'etichettatura in formato JSON Lines. JSON Lines è un formato delimitato da una nuova riga per archiviare dati strutturati in cui ogni riga è un valore JSON valido.

 

Il file output.manifest include i seguenti dati: 

source-ref: specifica la posizione della voce dell'immagine nel file manifesto di input. Poiché nella fase 2 hai selezionato Automated data setup (Configurazione automatica dei dati), Amazon SageMaker Ground Truth ha creato automaticamente queste voci e il file manifesto di input.

vehicle-labeling-demo: specifica l'etichetta di destinazione come valore numerico indicizzato a zero. Per le cinque classi di immagini in questo esempio, le etichette sono 0, 1, 2, 3 e 4.

vehicle-labeling-demo-metadata: specifica i metadati di etichettatura, come il punteggio di affidabilità, il nome del processo, il nome della stringa dell'etichetta (ad esempio, aeroplano, automobile, traghetto, elicottero e moto) e annotazioni umane o automatiche (apprendimento attivo).

Puoi analizzare il file output.manifest per creare un set di dati etichettato per applicazioni downstream come la classificazione delle immagini. Per ulteriori informazioni su come utilizzare il file output.manifest con Amazon SageMaker per addestrare i modelli, consulta il post sul blog Easily train models using datasets labeled by Amazon SageMaker Ground Truth (Addestra modelli facilmente utilizzando i set di dati etichettati da Amazon SageMaker Ground Truth).

Fase 4: Eliminazione delle risorse

Per evitare di ricevere addebiti non desiderati, una best practice consigliata consiste nell'eliminare le risorse non più utilizzate.

Per eliminare il bucket S3, completa le seguenti operazioni: 

  • Apri la console Amazon S3. Sulla barra di navigazione, scegli Buckets, sagemaker-<regione>-<id-account->, quindi seleziona la casella di controllo accanto a ground-truth-demo. Quindi, seleziona Elimina
  • Nella finestra di dialogo Delete objects (Elimina oggetti), verifica di aver selezionato l'oggetto corretto da eliminare, quindi digita permanently delete nella casella di conferma Permanently delete objects (Elimina definitivamente gli oggetti). 

Apri la console AWS IAM digitando IAM nella barra di ricerca della console AWS e selezionando IAM. Nel pannello di navigazione sulla sinistra della console IAM, scegli Roles (Ruoli). Per cercare il ruolo IAM utilizzato per questo tutorial, immetti Amazon nella barra di ricerca. In Role name (Nome ruolo), seleziona il ruolo quindi scegli Delete (Elimina). Tieni presente che questa azione richiede i privilegi di amministratore associati al tuo account.

Per aprire la console SageMaker, immetti SageMaker nella barra di ricerca della console AWS, quindi scegli Amazon SageMaker tra i risultati. Nel riquadro sinistro della console SageMaker, scegli Notebook instances (Istanze notebook), quindi seleziona SageMaker-Ground-Truth-Tutorial. Per Actions (Operazioni), seleziona Stop (Arresta).

Quando lo stato dell'istanza cambia in Stopped (Arrestato), scegli Actions (Operazioni), quindi seleziona Delete (Elimina). Nella finestra di conferma a comparsa, seleziona Delete (Elimina).

Conclusioni

Congratulazioni! Hai terminato il tutorial Etichettatura dei dati di addestramento per il machine learning

In questo tutorial, hai utilizzato Amazon SageMaker Ground Truth e Amazon Mechanical Turk per creare un set di dati di addestramento per il machine learning. 

Puoi continuare il tuo percorso verso il machine learning con Amazon SageMaker completando le fasi successive riportate di seguito.

Questa pagina è stata utile?

Creazione automatica di un modello di ML

Scopri come utilizzare AutoML per sviluppare i modelli di ML senza scrivere codice.
Successivo »

Implementazione di un modello addestrato

Scopri come implementare un modello di ML addestrato per l'inferenza.
Successivo »

Trova altri tutorial pratici

Esplora altri tutorial di machine learning per approfondire.
Successivo »