Settori come la sanità, i media e le piattaforme di social media utilizzano flussi di lavoro di analisi delle immagini per identificare oggetti ed entità all'interno delle immagini per comprendere l'intera immagine. Ad esempio, un sito Web di e-commerce potrebbe utilizzare oggetti presenti in un'immagine per mostrare risultati di ricerca pertinenti. A volte l'analisi delle immagini può essere difficile quando le immagini sono sfocate o più sfumate. In questi casi, potresti aver bisogno di un essere umano per completare il ciclo di machine learning (ML) e consigliarti sull'immagine usando il loro giudizio umano.
In questo post, usiamo Amazon Sage Maker per costruire, addestrare e distribuire un modello ML per il rilevamento e l'uso degli oggetti AI aumentata di Amazon (Amazon A2I) per creare e rendere un modello di lavoro personalizzato che consente ai revisori di identificare o rivedere gli oggetti trovati in un'immagine. Amazon SageMaker è un servizio completamente gestito che offre agli sviluppatori e ai data scientist la capacità di creare, formare e distribuire rapidamente modelli ML. Amazon SageMaker rimuove il sollevamento pesante da ogni fase del processo ML per facilitare lo sviluppo di modelli di alta qualità. Amazon A2I è un servizio completamente gestito che ti aiuta a creare flussi di lavoro di revisione umani per rivedere e convalidare le previsioni dei modelli ML.
È inoltre possibile utilizzare Rekognition di Amazon per il rilevamento di oggetti per identificare oggetti da un insieme predefinito di classi o utilizzare Etichette personalizzate Amazon Rekogition per formare il tuo modello personalizzato per rilevare oggetti e scene in immagini specifiche per le tue esigenze aziendali, semplicemente portando i tuoi dati.
Alcuni altri casi d'uso comuni che potrebbero richiedere flussi di lavoro umani sono la moderazione dei contenuti in immagini e video, l'estrazione di testo ed entità da documenti, traduzioni e analisi dei sentimenti. Sebbene sia possibile utilizzare modelli ML per identificare contenuti inappropriati o estrarre entità, gli esseri umani potrebbero dover convalidare le previsioni del modello in base al caso d'uso. Amazon A2I ti aiuta a creare rapidamente questi flussi di lavoro umani.
Puoi anche utilizzare Amazon A2I per inviare un campione casuale di previsioni ML ai revisori umani. È possibile utilizzare questi risultati per informare le parti interessate sulle prestazioni del modello e per controllare le previsioni del modello.
Prerequisiti
Questo post richiede di avere i seguenti prerequisiti:
- Un ruolo IAM - Per creare un flusso di lavoro di revisione umana, è necessario fornire un Gestione dell'identità e dell'accesso di AWS (IAM) che concede l'autorizzazione ad accedere ad Amazon A2I Servizio di archiviazione semplice Amazon (Amazon S3) per la lettura di oggetti da renderizzare nell'interfaccia utente di un'attività umana e per la scrittura dei risultati. Questo ruolo richiede anche una politica di fiducia allegata per autorizzare Amazon SageMaker ad assumere il ruolo. Ciò consente ad Amazon A2I di eseguire azioni in conformità con le autorizzazioni associate al ruolo. Per ulteriori informazioni e politiche di esempio, vedere Aggiungi autorizzazioni al ruolo IAM utilizzato per creare una definizione di flusso.
- Quaderno di addestramento sul rilevamento degli oggetti di accompagnamento - Questo post fornisce un quaderno di accompagnamento per questa procedura dettagliata. Per questo post, ci concentriamo sull'utilizzo di Amazon A2I e sull'importanza di portare i revisori umani nel ciclo. Pertanto, prendiamo un modello di rilevamento oggetti addestrato da un bucket S3 e ospitarlo su un endpoint ospitato da Amazon SageMaker per la previsione in tempo reale. Per ulteriori informazioni sull'addestramento di un modello di rilevamento di oggetti utilizzando Amazon SageMaker integrato Rilevatore multibox a colpo singolo (SSD) algoritmo con Set di dati VOC PASCAL e hosting per la previsione in tempo reale, vedere il Repository GitHub. Se sei interessato a costruire il tuo modello, segui il quaderno di formazione sul rilevamento degli oggetti. Se si dispone di un set di dati di grandi dimensioni senza Amazon SageMaker verità fondamentale etichette, puoi usare Ground Truth per etichettare in modo efficiente le tue immagini su larga scala.
Panoramica della procedura dettagliata
Per implementare questa soluzione, completare i seguenti passi:
- Ospita un modello di rilevamento di oggetti su Amazon SageMaker.
- Creare un modello di attività di lavoro.
- Crea un team di lavoro privato.
- Creare un flusso di lavoro di revisione umano.
- Chiama l'endpoint di Amazon SageMaker.
- Completa la recensione umana.
- Elaborare l'output JSON per la formazione incrementale.
Per questo post, abbiamo esaminato la procedura dettagliata us-east-1
, ma Amazon A2I è disponibile in molte regioni. Per ulteriori informazioni, vedere Tabella delle regioni.
Passaggio 1: ospitare un modello di rilevamento degli oggetti su Amazon SageMaker
Questo passaggio è disponibile in quaderno di accompagnamento di Jupyter. Per impostare il tuo endpoint, inserisci il seguente codice Python (l'operazione potrebbe richiedere alcuni minuti):
Quando l'endpoint è attivo e funzionante, dovresti vedere il InService
stato sul Console di Amazon SageMaker. (Nota che l'URL ti porta alla console in us-east-1 che è dove abbiamo fatto la demo, ma Amazon A2I è disponibile in molti altri Regioni. Assicurati di passare alla tua regione.)
Per vedere come appare il rilevamento degli oggetti, inserisci il seguente codice. Vengono visualizzate la classe prevista e la probabilità di previsione, insieme al riquadro di selezione utilizzando le funzioni di supporto visualize_detection
ed load_and_predict
definito in quaderno di accompagnamento di Jupyter.
La seguente schermata mostra l'output di un'immagine con un'etichetta e un riquadro di selezione.
Abbiamo sotto-addestrato questo modello SSD a scopo dimostrativo in quaderno di addestramento per il rilevamento di oggetti. Sebbene il modello identifichi una bicicletta nell'immagine, una probabilità di 0.245 è considerata bassa come una previsione attendibile nella moderna visione computerizzata. Inoltre, la localizzazione dell'oggetto non è abbastanza accurata; il rettangolo di selezione non copre la ruota anteriore e la sella. Tuttavia, questo modello mal addestrato serve come esempio perfetto per portare revisori umani quando un modello non fa una previsione con elevata sicurezza.
Passaggio 2: creare un modello di attività di lavoro
Puoi utilizzare Amazon A2I per incorporare una recensione umana in qualsiasi flusso di lavoro ML. In questo post, per integrare Amazon A2I con l'endpoint ospitato Amazon SageMaker, è necessario creare un'attività personalizzata. Quando si utilizza un tipo di attività personalizzato, si crea e si avvia un ciclo umano utilizzando l'API runtime Amazon A2I per inviare i dati che richiedono la revisione utilizzando un modello di attività di lavoro. Per ulteriori informazioni, vedere Usa Amazon Augmented AI con tipi di attività personalizzate.
Folla di elementi HTML sono componenti Web che forniscono diversi widget di attività ed elementi di progettazione che è possibile personalizzare in base alla domanda che si desidera porre. Puoi utilizzare questi elementi folla per creare un modello di lavoratore personalizzato e integrarlo con un flusso di lavoro di revisione umana Amazon A2I per personalizzare la console di lavoro e le istruzioni. Forniamo oltre 60 modelli di attività personalizzate di esempio in Repository GitHub che puoi utilizzare così com'è o come punto di partenza per personalizzare i tuoi modelli. Per un caso d'uso del rilevamento di oggetti, il revisore deve in genere selezionare etichette e disegnare riquadri di delimitazione. Per questo post, usi uno dei modelli di attività di esempio, delimitazione-box.liquid.html, dal repository e apportare alcune personalizzazioni. Questo modello include istruzioni di etichettatura, funzionalità di etichettatura (disegno, ingrandimento e riduzione e ricerca di etichette) e legge un'immagine da un determinato percorso Amazon S3. Puoi anche personalizzare il modello in mostra i rettangoli con initial-value
in modo che i lavoratori possano iniziare con un rettangolo di selezione previsto dal modello ML anziché estrarre da zero il rettangolo di selezione.
Questo passaggio è disponibile in quaderno di accompagnamento di Jupyter. Per creare un modello di lavoratore personalizzato sulla console Amazon A2I, completare i seguenti passi:
- Spostarsi Modelli di attività del lavoratore.
- Scegli Crea modello.
- Nel Nome modello, inserisci un nome univoco all'interno della Regione nel tuo account; per esempio,
a2i-demo-object-detection-ui
. - Nel Tipo di modelloscegli Custom.
- Nel Editor di modelli, inserisci i modelli HTML dell'attività di esempio da delimitazione-box.liquid.html.
- modificare la
labels
variabile nell'editor in base alle classi incluse nel set di dati VAS PASCAL e nel modello di rilevamento oggetti:['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat','chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person','pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
- modificare la
- Scegli Creare.
Passaggio 3: creare un team di lavoro privato
Puoi inoltrare facilmente le recensioni alla tua forza lavoro privata con Amazon A2I. È inoltre possibile accedere a una forza lavoro di oltre 500,000 appaltatori indipendenti che stanno già svolgendo attività relative alla ML Amazon Mechanical Turk. In alternativa, se i tuoi dati richiedono riservatezza o competenze speciali, puoi utilizzare i fornitori di forza lavoro che hanno esperienza con progetti di revisione e sottoposti a screening da AWS per procedure di qualità e sicurezza.
Qualunque sia il tipo di forza lavoro che scegli, Amazon A2I si occupa di inviare compiti ai lavoratori. Per questo post, crei un team di lavoro utilizzando una forza lavoro privata e ti aggiungi al team per visualizzare in anteprima il flusso di lavoro di Amazon A2I.
Crea e gestisci la tua forza lavoro privata in Pagina della forza lavoro per l'etichettatura sulla console di Amazon SageMaker. Seguendo le istruzioni, è possibile creare una forza lavoro privata inserendo le e-mail dei lavoratori o importando una forza lavoro preesistente da un Amazzonia Cognito pool di utenti.
Se hai già un team di lavoro creato per Amazon SageMaker Ground Truth, puoi utilizzare lo stesso team di lavoro con Amazon A2I e passare alla sezione seguente.
Questo passaggio non è disponibile nel notebook Jupyter in dotazione.
Per creare il tuo team di lavoro privato, completa i seguenti passaggi:
- Sulla console di Amazon SageMaker, accedere a Etichettatura delle forze di lavoro
- Sulla Privata scheda, scegliere Crea team privato.
- Scegli Invita nuovi lavoratori via e-mail.
- Per questo post, inserisci il tuo indirizzo email per lavorare sulle tue attività di elaborazione dei documenti.
È possibile inserire un elenco di massimo 50 indirizzi e-mail, separati da virgole, nel campo Indirizzi e-mail scatola.
- Inserisci il nome di un'organizzazione e contatta l'e-mail.
- Scegli Crea team privato.
Dopo aver creato il team privato, ricevi un invito via e-mail. La seguente schermata mostra un esempio di email.
Dopo aver fatto clic sul collegamento e aver modificato la password, si è registrati come lavoratore verificato per questo team. La seguente schermata mostra le informazioni aggiornate sul Privata scheda.
Il tuo team composto da una sola persona è ora pronto e puoi creare un flusso di lavoro per la revisione umana.
sostituire 'IL TUO_TEAM_LAVORO_ARN' nel quaderno di accompagnamento di Jupyter con l'ARN del team di lavoro creato:
Passaggio 4: creare un flusso di lavoro di revisione umana
Un flusso di lavoro di revisione umana viene anche chiamato a definizione del flusso. Si utilizza la definizione del flusso per configurare il proprio team di lavoro umano e fornire informazioni su come eseguire l'attività di revisione. È possibile utilizzare una definizione di flusso per creare più loop umani.
Questo passaggio è disponibile in quaderno di accompagnamento di Jupyter. Per fare ciò sulla console Amazon A2I, completare i seguenti passi:
- Navigare Vai all’email Flussi di lavoro di revisione umana
- Scegli Creare un flusso di lavoro di revisione umano.
- Nel Impostazioni del flusso di lavoro sezione, per Nome, inserisci un nome univoco per il flusso di lavoro; per esempio,
a21-demo-1
. - Nel Benna S3, inserisci il bucket S3 in cui desideri memorizzare i risultati della revisione umana.
Il bucket deve trovarsi nella stessa area del flusso di lavoro. Ad esempio, se si crea un bucket chiamato a2i-demos
, inserisci il percorso s3://a2i-demos/
.
- Nel Ruolo IAMscegli Crea un nuovo ruolo Dal menu a discesa.
Amazon A2I può creare automaticamente un ruolo per te.
- Nel Benne S3 specificate, selezionare Benne specifiche S3.
- Immettere il bucket S3 specificato in precedenza; ad esempio, a2i-demos.
- Scegli Creare.
Viene visualizzata una conferma quando la creazione del ruolo è completa e il tuo ruolo è ora precompilato in Ruolo IAM menu a discesa.
- Nel Tipo di attività, selezionare Custom.
Nei passaggi successivi, selezionare il modello di interfaccia utente creato in precedenza.
- Nel Modello di attività del lavoratore sezione, selezionare Usa il tuo modello.
- Nel Modello, scegli il modello che hai creato.
- Nel Descrizione del compito, inserisci una breve descrizione dell'attività.
- Nel Lavoratori sezione, selezionare Privato.
- Nel Squadre private, scegli il team di lavoro che hai creato in precedenza.
- Scegli Creare.
Si viene reindirizzati al Flussi di lavoro di revisione umana pagina e vedere un messaggio di conferma simile al seguente screenshot.
Registrare il nuovo ARN del flusso di lavoro di revisione umana, che verrà utilizzato per configurare il ciclo umano nella sezione successiva.
Passaggio 5: chiamare l'endpoint Amazon SageMaker
Ora che hai impostato il flusso di lavoro di revisione umana Amazon A2I, sei pronto a chiamare il tuo endpoint di rilevamento oggetti su Amazon SageMaker e avviare i tuoi loop umani. Per questo caso d'uso, si desidera avviare un ciclo umano solo se il punteggio di probabilità di previsione più elevato restituito dal modello per gli oggetti rilevati è inferiore al 50% (SCORE_THREHOLD
). Con un po 'di logica (vedi il codice seguente), puoi controllare la risposta per ogni chiamata all'endpoint di Amazon SageMaker usando il load_and_predict
funzione di supporto e se il punteggio di probabilità di previsione più elevato è inferiore al 50%, si crea un ciclo umano.
Si utilizza un ciclo umano per avviare il flusso di lavoro di revisione umana. Quando viene attivato un ciclo umano, le attività di revisione umana vengono inviate ai lavoratori come specificato nella definizione del flusso.
Questo passaggio è disponibile in quaderno di accompagnamento di Jupyter.
Il codice precedente utilizza una semplice istruzione if-else, ma per condizioni dinamiche è anche possibile utilizzare AWS Lambda per valutare se un oggetto necessita di una revisione umana. Quando decidi che è necessaria una revisione umana, puoi creare un ciclo umano usando a2i.start_human_loop
.
Passaggio 6: completamento di una revisione umana
Dopo aver inviato le immagini con bassa probabilità di previsione ad Amazon A2I tramite start_human_loop
chiama, tu o la persona assegnata come revisore potete accedere al portale delle etichette per rivedere le immagini. Puoi trovare l'URL sulla console di Amazon SageMaker, su Privata scheda del Etichettatura della forza lavoro pagina. Puoi anche recuperare a livello di codice l'URL con il seguente codice:
Per questo post, Nome del gruppo di lavoro is a2i-demo-1
.
Per completare una revisione umana, completare i seguenti passi:
- Quando si accede al portale, viene richiesto di accedere con nome utente e password (se è la prima volta che si visita il portale, è necessario creare una nuova password).
Puoi vedere un nuovo lavoro per te in Offerte di lavoro .
- Scegli Demo di rilevamento oggetti a2i.
- Scegli Iniziare a lavorare.
La pagina contiene un pannello di istruzioni personalizzabile, l'immagine e le etichette disponibili.
- Dalla barra degli strumenti, selezionare Scatola .
- Sotto per il tuo brandscegli bicicletta.
- Disegna il rettangolo di selezione attorno all'oggetto.
- Scegli Invio.
Dopo aver completato tutte le recensioni delle immagini, è possibile analizzare l'output del ciclo umano. Amazon A2I memorizza i risultati nel tuo bucket S3 e ti invia un Amazon Cloud Watch evento.
I risultati dovrebbero essere disponibili nel percorso di output di Amazon S3 specificato nella definizione del flusso di lavoro di revisione umana al termine di tutto il lavoro. La risposta umana, l'etichetta e il rettangolo di selezione vengono restituiti e salvati nel file JSON. Il codice seguente mostra un file JSON di output Amazon A2I di esempio:
È possibile recuperare queste informazioni e analizzarle per ulteriori analisi. Nel passaggio successivo, ti mostreremo come utilizzare questi dati rivisti dall'uomo per la successiva iterazione di riqualificazione del tuo modello.
Passaggio 7: elaborazione dell'output JSON per la formazione incrementale
Nel quaderno di addestramento per il rilevamento di oggetti, hai utilizzato l'algoritmo di rilevamento degli oggetti integrato di Amazon SageMaker per addestrare la prima versione del modello. Hai utilizzato il modello per generare previsioni su alcune immagini casuali fuori campione e hai ottenuto una previsione non soddisfacente (bassa probabilità). Hai anche utilizzato Amazon A2I per esaminare ed etichettare l'immagine in base ai tuoi criteri personalizzati (soglia del punteggio di affidabilità <50%). Il passaggio successivo in un tipico ciclo di vita ML consiste nell'includere i casi in cui il modello ha avuto problemi nel successivo batch di dati di addestramento a scopo di riqualificazione. In questo modo, il modello può apprendere da una serie di nuovi dati di addestramento per il miglioramento continuo. In ML, questo si chiama allenamento incrementale.
Questo passaggio è disponibile in quaderno di accompagnamento di Jupyter.
È possibile fornire i dati dell'immagine e l'annotazione all'algoritmo di rilevamento degli oggetti in tre modi diversi. Per ulteriori informazioni, vedere Interfaccia di input / output per l'algoritmo di rilevamento degli oggetti. Per questo post, abbiamo formato il nostro modello originale con Formato RecordIO perché abbiamo convertito le immagini e le annotazioni VOC PASCAL in formato RecordIO. Per istruzioni sulla creazione di dati RecordIO personalizzati, vedere Preparare set di dati personalizzati per il rilevamento di oggetti.
In alternativa, l'algoritmo di rilevamento degli oggetti accetta anche un file JSON come input. È possibile creare un file JSON per immagine o trarne vantaggio Modalità pipe usando un manifest aumentato file come formato di input. La modalità pipe accelera il tempo complessivo di training del modello fino al 35% trasmettendo i dati in streaming all'algoritmo di training mentre è in esecuzione invece di copiare i dati nel Negozio di blocchi elastici di Amazon Volume (Amazon EBS) allegato all'istanza di formazione. Puoi costruire un file manifest aumentato dall'output Amazon A2I con il seguente codice:
Ciò si traduce in un oggetto JSON come il seguente codice, che è compatibile con il modo in cui Ground Truth genera il risultato e in che modo l'algoritmo di rilevamento oggetti incorporato di SageMaker prevede l'input:
Il codice precedente è solo un'immagine. Per creare una coorte di immagini di allenamento da tutte le immagini rietichettate dai revisori umani sulla console Amazon A2I, è possibile eseguire il ciclo di tutto l'output di Amazon A2I, convertire il file JSON e concatenarli in un file JSON Lines, con ogni riga rappresenta i risultati di un'immagine. Vedi il seguente codice:
Dopo aver raccolto abbastanza punti dati, puoi costruirne uno nuovo Estimator
per allenamento incrementale. Per ulteriori informazioni, vedere Addestra facilmente i modelli utilizzando i set di dati etichettati da Amazon SageMaker Ground Truth. In questo blog usiamo gli iperparametri esattamente come il modo in cui il primo modello è stato addestrato quaderno di addestramento per il rilevamento di oggetti, ad eccezione dell'utilizzo dei pesi dal modello addestrato anziché dei pesi predefiniti forniti con l'algoritmo (use_pretrained_model=0
).
L'esempio di codice seguente mostra un addestramento incrementale con uno o due nuovi campioni. Poiché abbiamo esaminato solo due immagini in questo post, ciò non produce un modello con miglioramenti significativi.
Dopo l'allenamento, ottieni un nuovo modello in s3_output_location
. È quindi possibile distribuire questo modello su un nuovo endpoint di inferenza o aggiornare un endpoint esistente. Non si verifica alcuna perdita di disponibilità quando si aggiorna un endpoint esistente. Per aggiornare un endpoint, è necessario fornire una nuova configurazione dell'endpoint. Per ulteriori informazioni, vedere Aggiorna Endpoint.
Pulire
Per evitare spese future, elimina risorse come l'endpoint Amazon SageMaker, l'istanza del notebook e gli artefatti del modello in Amazon S3 quando non in uso.
Conclusione
Questo post ha semplicemente graffiato la superficie di ciò che Amazon A2I può fare in un tipico ciclo di vita ML. Abbiamo dimostrato come impostare tutto ciò di cui hai bisogno per avere un essere umano funzionante nel framework del loop: un'interfaccia del modello di attività del lavoratore Amazon A2I, un flusso di lavoro di revisione umana e un team di lavoro. Abbiamo anche mostrato come innescare un loop umano Amazon A2I a livello di codice dopo che un endpoint di rilevamento oggetti ospitato da Amazon SageMaker restituisce una bassa inferenza di confidenza. Infine, ti abbiamo spiegato come lavorare con il file JSON di output Amazon A2I per creare un nuovo batch di dati di allenamento in un formato manifest aumentato per l'addestramento incrementale utilizzando l'algoritmo di rilevamento oggetti incorporato di Amazon SageMaker.
Per presentazioni video, quaderni di esempio Jupyter o ulteriori informazioni su casi d'uso come elaborazione di documenti, moderazione dei contenuti, analisi dei sentimenti, traduzione di testi e altro, vedere Amazon Risorse Aumentate AI.
Riferimenti
- Everingham, Mark, et al. "La sfida delle classi di oggetti visivi pascal: una retrospettiva." Rivista internazionale di visione artificiale 111.1 (2015): 98-136.
- Liu, Wei, et al. "SSD: rilevatore multibox single shot." Conferenza europea sulla visione artificiale. Springer, Cam, 2016.
Circa gli autori
Michael Hsieh è Senior AI / ML Specialist Solutions Architect. Lavora con i clienti per avanzare nel loro viaggio ML con una combinazione di offerte AWS ML e la sua conoscenza del dominio ML. Come trapianto di Seattle, adora esplorare la grande madre natura che la città ha da offrire, come i sentieri escursionistici, i paesaggi in kayak nello SLU e il tramonto nella Baia di Shilshole.
Anuj Gupta è Senior Product Manager per Amazon Augmented AI. Si concentra sulla fornitura di prodotti che semplificano l'adozione dell'apprendimento automatico da parte dei clienti. Nel suo tempo libero, ama i viaggi su strada e guardare la Formula 1.