Anche dopo più di cento anni dalla sua introduzione, l'istologia rimane il gold standard nella diagnosi e nella prognosi dei tumori. I patologi anatomici valutano l'istologia per stratificare i pazienti oncologici in diversi gruppi a seconda dei loro genotipi e fenotipi tumorali e del loro esito clinico [1,2]. Tuttavia, la valutazione umana dei vetrini istologici è soggettiva e non ripetibile [3]. Inoltre, la valutazione istologica è un processo che richiede tempo e richiede professionisti altamente qualificati.
Con i significativi progressi tecnologici nell'ultimo decennio, tecniche come l'imaging a diapositiva intera (WSI) e l'apprendimento profondo (DL) sono ora ampiamente disponibili. WSI è la scansione di vetrini per microscopia convenzionali per produrre un'unica immagine ad alta risoluzione da quei vetrini. Ciò consente la digitalizzazione e la raccolta di grandi insiemi di immagini patologiche, che sarebbero state proibitive in termini di tempo e denaro. La disponibilità di tali set di dati crea modi nuovi e innovativi per accelerare la diagnosi utilizzando tecniche come l'apprendimento automatico (ML) per aiutare i patologi ad accelerare le diagnosi identificando rapidamente le caratteristiche di interesse.
In questo post, esploreremo come possono utilizzare gli sviluppatori senza precedente esperienza di ML Etichette personalizzate Amazon Rekognition per addestrare un modello che classifichi le caratteristiche cellulari. Le etichette personalizzate di Amazon Rekognition sono una funzionalità di Rekognition di Amazon che ti consente di creare le tue capacità di analisi delle immagini basate su ML specializzate per rilevare oggetti e scene unici che sono parte integrante del tuo caso d'uso specifico. In particolare, utilizziamo un set di dati contenente immagini di intere diapositive del carcinoma mammario canino [1] per dimostrare come elaborare queste immagini e addestrare un modello che rileva le figure mitotiche. Questo set di dati è stato utilizzato con il permesso del Prof. Dr. Marc Aubreville, che ha gentilmente acconsentito a consentirci di utilizzarlo per questo post. Per ulteriori informazioni, vedere la sezione Ringraziamenti alla fine di questo post.
Panoramica della soluzione
La soluzione è composta da due componenti:
- Un modello di etichette personalizzate Amazon Rekognition — Per consentire ad Amazon Rekognition di rilevare le figure mitotiche, completiamo i seguenti passaggi:
- Campionare il set di dati WSI per produrre immagini di dimensioni adeguate utilizzando Amazon Sage Maker Studio e un codice Python in esecuzione su un notebook Jupyter. Studio è un ambiente di sviluppo integrato (IDE) per ML basato sul Web che fornisce tutti gli strumenti necessari per portare i modelli dalla sperimentazione alla produzione, aumentando al contempo la produttività. Useremo Studio per dividere le immagini in immagini più piccole per addestrare il nostro modello.
- Addestra un modello Amazon Rekognition Custom Labels per riconoscere le figure mitotiche nei campioni di ematossilina-eosina utilizzando i dati preparati nel passaggio precedente.
- Un'applicazione front-end — Per dimostrare come utilizzare un modello come quello che abbiamo addestrato nel passaggio precedente, completiamo i seguenti passaggi:
Il diagramma seguente illustra l'architettura della soluzione.
Tutte le risorse necessarie per implementare l'implementazione discussa in questo post e il codice per l'intera sezione sono disponibili su GitHub. Puoi clonare o eseguire il fork del repository, apportare le modifiche desiderate ed eseguirlo tu stesso.
Nei passaggi successivi, esamineremo il codice per comprendere i diversi passaggi coinvolti nell'ottenimento e nella preparazione dei dati, nell'addestramento del modello e nell'utilizzo da un'applicazione di esempio.
Costi
Durante l'esecuzione dei passaggi di questa procedura dettagliata, l'utilizzo dei seguenti servizi AWS comporta piccoli costi:
- Rekognition di Amazon
- AWS Fargate
- Bilanciamento del carico dell'applicazione
- AWS Secrets Manager
Inoltre, se non rientri più nel periodo o nelle condizioni del piano gratuito, potresti dover sostenere costi per i seguenti servizi:
- Code Pipeline
- CodeBuild
- Amazon ECR
- Amazon Sage Maker
Se completi correttamente i passaggi di pulizia dopo aver terminato questa procedura dettagliata, potresti aspettarti costi inferiori a 10 USD, se il modello Amazon Rekognition Custom Labels e l'applicazione Web vengono eseguiti per un'ora o meno.
Prerequisiti
Per completare tutti i passaggi, è necessario quanto segue:
Formazione del modello di classificazione delle figure mitotiche
Eseguiamo tutti i passaggi necessari per addestrare il modello da un notebook Studio. Se non hai mai utilizzato Studio prima, potrebbe essere necessario a bordo primo. Per ulteriori informazioni, vedere Accedi rapidamente ad Amazon SageMaker Studio.
Alcuni dei seguenti passaggi richiedono più RAM di quella disponibile in un notebook ml.t3.medium standard. Assicurati di aver selezionato un notebook ml.m5.large. Dovresti vedere un'indicazione 2 vCPU + 8 GiB nell'angolo in alto a destra della pagina.
Il codice per questa sezione è disponibile come a File di quaderno Jupyter.
Dopo l'onboarding in Studio, segui queste istruzioni per concedere a Studio le autorizzazioni necessarie per chiamare Amazon Rekognition per tuo conto.
dipendenze
Per cominciare, dobbiamo completare i seguenti passaggi:
- Aggiorna i pacchetti Linux e installa le dipendenze richieste, come OpenSlide:
- Installa le librerie fastai e SlideRunner usando pip:
- Scarica il set di dati (forniamo uno script per farlo automaticamente):
Elabora il set di dati
Inizieremo importando alcuni dei pacchetti che utilizziamo durante la fase di preparazione dei dati. Quindi, scarichiamo e carichiamo il database delle annotazioni per questo set di dati. Questo database contiene le posizioni nell'intera diapositiva delle immagini delle figure mitotiche (le caratteristiche che vogliamo classificare). Vedere il codice seguente:
Poiché stiamo usando SageMaker, creiamo un nuovo SageMaker Sessione oggetto per facilitare attività come il caricamento del nostro set di dati su un Servizio di archiviazione semplice Amazon Secchio (Amazon S3). Utilizziamo anche il bucket S3 creato da SageMaker per impostazione predefinita per caricare i nostri file di immagine elaborati.
I slidelist_test
array contiene gli ID delle diapositive che utilizziamo come parte del set di dati di test per valutare le prestazioni del modello addestrato. Vedere il codice seguente:
Il passaggio successivo consiste nell'ottenere una serie di aree di addestramento e diapositive di prova, insieme alle etichette in esse contenute, da cui possiamo prendere aree più piccole da utilizzare per addestrare il nostro modello. Il codice per get_slides è nel file sampling.py in GitHub.
Vogliamo campionare casualmente dalle diapositive di addestramento e test. Utilizziamo gli elenchi di diapositive di addestramento e test e selezioniamo casualmente n_training_images
volte un file per la formazione, e n_test_images
volte un file per il test:
Successivamente, creiamo una directory per le immagini di training e una per le immagini di test:
Prima di produrre le immagini più piccole necessarie per addestrare il modello, abbiamo bisogno di un codice di supporto che produca i metadati necessari per descrivere i dati di addestramento e test. Il codice seguente si assicura che un determinato rettangolo di delimitazione che circonda le caratteristiche di interesse (figure mitotiche) sia ben all'interno della zona che stiamo tagliando e produce una riga di JSON che descrive l'immagine e le caratteristiche in essa Amazon SageMaker verità fondamentale formato, che è il formato richiesto da Amazon Rekognition Custom Labels. Per ulteriori informazioni su questo file manifest per il rilevamento degli oggetti, vedere Localizzazione degli oggetti nei file manifest.
Grazie alla generate_annotations
funzione in atto, possiamo scrivere il codice per produrre le immagini di addestramento e test:
L'ultimo passo per avere tutti i dati richiesti è scrivere a manifest.json
file per ciascuno dei set di dati:
Trasferisci i file su S3
Usiamo il upload_data
metodo esposto dall'oggetto sessione SageMaker per caricare le immagini e i file manifest nel bucket SageMaker S3 predefinito:
Addestra un modello di etichette personalizzate Amazon Rekognition
Con i dati già in Amazon S3, possiamo arrivare al training di un modello personalizzato. Utilizziamo la libreria Boto3 per creare un client Amazon Rekognition e creare un progetto:
Con il progetto pronto per l'uso, ora è necessaria una versione del progetto che punti ai set di dati di addestramento e test in Amazon S3. Ogni versione punta idealmente a set di dati diversi (o versioni diverse di esso). Questo ci consente di avere diverse versioni di un modello, confrontare le loro prestazioni e passare da una all'altra secondo necessità. Vedere il codice seguente:
Dopo aver creato la versione del progetto, Amazon Rekognition avvia automaticamente il processo di formazione. Il tempo di formazione dipende da diverse caratteristiche, come la dimensione delle immagini e il numero di esse, il numero di classi e così via. In questo caso, per 500 immagini, il completamento dell'allenamento richiede circa 90 minuti.
Prova il modello
Dopo l'addestramento, ogni modello in Amazon Rekognition Custom Labels è in STOPPED
stato. Per usarlo per l'inferenza, è necessario avviarlo. Otteniamo l'ARN della versione del progetto dalla descrizione della versione del progetto e lo passiamo a start_project_version
. Notare il MinInferenceUnits
parametro — iniziamo con un'unità di inferenza. Il numero massimo effettivo di transazioni al secondo (TPS) supportato da questa unità di inferenza dipende dalla complessità del modello. Per saperne di più su TPS, fare riferimento a questo post sul blog.
Quando la versione del tuo progetto è elencata come RUNNING
, puoi iniziare a inviare immagini ad Amazon Rekognition per l'inferenza.
Utilizziamo uno dei file nel set di dati di test per testare il modello appena avviato. Puoi invece utilizzare qualsiasi file PNG o JPEG adatto.
Applicazione semplificata
Per dimostrare l'integrazione con Amazon Rekognition, utilizziamo un'applicazione Python molto semplice. Noi usiamo il Snello libreria per creare un'interfaccia utente spartana, in cui chiediamo all'utente di caricare un file immagine.
Utilizziamo la libreria Boto3 e il detect_custom_labels
metodo, insieme all'ARN della versione del progetto, per richiamare l'endpoint di inferenza. La risposta è un documento JSON che contiene le posizioni e le classi dei diversi oggetti rilevati nell'immagine. Nel nostro caso, queste sono le figure mitotiche che l'algoritmo ha trovato nell'immagine che abbiamo inviato all'endpoint. Vedere il codice seguente:
Distribuisci l'applicazione in AWS
Per distribuire l'applicazione, utilizziamo uno script AWS CDK. L'intero progetto può essere trovato su GitHub . Diamo un'occhiata alle diverse risorse distribuite dallo script.
Crea un repository Amazon ECR
Come primo passo verso la configurazione della nostra distribuzione, creiamo un repository Amazon ECR, in cui possiamo archiviare le nostre immagini del container dell'applicazione:
Crea e archivia il tuo token GitHub in AWS Secrets Manager
CodePipeline ha bisogno di un token di accesso personale GitHub per monitorare il tuo repository GitHub per le modifiche e il codice pull. Per creare il token, segui le istruzioni in Documentazione GitHub. Il token richiede i seguenti ambiti GitHub:
- I
repo
scope, che viene utilizzato per il controllo completo per leggere ed eseguire il pull di artefatti da repository pubblici e privati in una pipeline. - I
admin:repo_hook
scope, che viene utilizzato per il controllo completo degli hook del repository.
Dopo aver creato il token, archivialo in un nuovo segreto in AWS Secrets Manager come segue:
Scrivi i parametri di configurazione in AWS Systems Manager Parameter Store
Lo script AWS CDK legge alcuni parametri di configurazione da Archivio parametri di AWS Systems Manager, come il nome e il proprietario del repository GitHub e l'account di destinazione e la regione. Prima di avviare lo script AWS CDK, devi creare questi parametri nel tuo account.
Puoi farlo utilizzando l'AWS CLI. Basta invocare il put-parameter
comando con un nome, un valore e il tipo del parametro:
Di seguito è riportato un elenco di tutti i parametri richiesti dallo script AWS CDK. Sono tutti di tipo String
:
- /rek_wsi/prod/accountId — L'ID dell'account in cui distribuiamo l'applicazione.
- /rek_wsi/prod/ecr_repo_name — Il nome del repository Amazon ECR in cui sono archiviate le immagini del container.
- /rek_wsi/prod/github/branch — Il ramo nel repository GitHub da cui CodePipeline deve estrarre il codice.
- /rek_wsi/prod/github/owner — Il proprietario del repository GitHub.
- /rek_wsi/prod/github/repo — Il nome del repository GitHub in cui è archiviato il nostro codice.
- /rek_wsi/prod/github/token — Il nome o l'ARN del segreto in Secrets Manager che contiene il token di autenticazione GitHub. Ciò è necessario affinché CodePipeline sia in grado di comunicare con GitHub.
- /rek_wsi/prod/region — La regione in cui distribuiremo l'applicazione.
Si noti la prod
segmento in tutti i nomi dei parametri. Sebbene non abbiamo bisogno di questo livello di dettaglio per un esempio così semplice, consentirà di riutilizzare questo approccio con altri progetti in cui potrebbero essere necessari ambienti diversi.
Risorse create dallo script AWS CDK
Abbiamo bisogno che la nostra applicazione, in esecuzione in un'attività Fargate, disponga delle autorizzazioni per invocare Amazon Rekognition. Quindi prima creiamo un Gestione dell'identità e dell'accesso di AWS (IAM) Ruolo di attività con il RekognitionReadOnlyPolicy
politica ad esso allegata. Si noti che il assumed_by
parametro nel codice seguente accetta il ecs-tasks.amazonaws.com
principale di servizio. Questo perché utilizziamo Amazon ECS come orchestratore, quindi abbiamo bisogno di Amazon ECS per assumere il ruolo e passare le credenziali all'attività Fargate.
Una volta creata, la nostra immagine del contenitore dell'applicazione si trova in un repository Amazon ECR privato. Abbiamo bisogno di un oggetto che lo descriva che possiamo passare durante la creazione del servizio Fargate:
Creiamo un nuovo VPC e un nuovo cluster per questa applicazione. Puoi modificare questa parte per utilizzare il tuo VPC utilizzando il file from_lookup
metodo del Vpc
classe:
Ora che abbiamo un VPC e un cluster su cui eseguire la distribuzione, creiamo il servizio Fargate. Utilizziamo 0.25 vCPU e 512 MB di RAM per questa attività e posizioniamo un Application Load Balancer (ALB) pubblico davanti ad esso. Una volta distribuito, utilizziamo l'ALB CNAME per accedere all'applicazione. Vedere il codice seguente:
Per creare e distribuire automaticamente una nuova immagine del contenitore ogni volta che inviamo il codice al nostro ramo principale, creiamo una semplice pipeline composta da un'azione sorgente GitHub e un passaggio di compilazione. Qui è dove utilizziamo i segreti che abbiamo archiviato in AWS Secrets Manager e in AWS Systems Manager Parameter Store nei passaggi precedenti.
CodeBuild necessita delle autorizzazioni per inviare le immagini del container ad Amazon ECR. Per concedere queste autorizzazioni, aggiungiamo il AmazonEC2ContainerRegistryFullAccess
policy a un ruolo IAM personalizzato che l'entità servizio CodeBuild può assumere:
Il progetto CodeBuild accede al repository Amazon ECR privato, crea l'immagine Docker con l'applicazione Streamlit e inserisce l'immagine nel repository insieme a un appspec.yaml
e imagedefinitions.json
file.
I appspec.yaml
descrive l'attività (porta, versione della piattaforma Fargate e così via), mentre il file imagedefinitions.json
file associa i nomi delle immagini del container al loro URI Amazon ECR corrispondente. Vedere il codice seguente:
Infine, mettiamo insieme le diverse fasi della pipeline. L'ultima azione è il EcsDeployAction
, che prende l'immagine del contenitore creata nella fase precedente ed esegue un aggiornamento continuo delle attività nel nostro cluster ECS:
Pulire
Per evitare di incorrere in costi futuri, ripulisci le risorse che hai creato come parte di questa soluzione.
Modello di etichette personalizzate Amazon Rekognition
Prima di spegnere il tuo notebook Studio, assicurati di interrompere il modello Amazon Rekognition Custom Labels. Se non lo fai, continua a comportare dei costi.
In alternativa, puoi utilizzare la console Amazon Rekognition per interrompere il servizio:
- Sulla console Amazon Rekognition, scegli Usa etichette personalizzate nel pannello di navigazione.
- Scegli Progetti nel pannello di navigazione.
- Scegli la versione 1 di
rek-mitotic-figures-workshop
progetto. - Sulla Usa modello scheda, scegliere Fermare.
Applicazione semplificata
Per distruggere tutte le risorse associate all'applicazione Streamlit, esegui il codice seguente dalla directory dell'applicazione AWS CDK:
AWS Secrets Manager
Per eliminare il token GitHub, segui le istruzioni in documentazione.
Conclusione
In questo post, abbiamo illustrato i passaggi necessari per addestrare un modello Amazon Rekognition Custom Labels per un'applicazione di patologia digitale utilizzando dati del mondo reale. Abbiamo quindi appreso come utilizzare il modello da una semplice applicazione distribuita da una pipeline CI/CD a Fargate.
Amazon Rekognition Custom Labels ti consente di creare applicazioni sanitarie abilitate al ML che puoi facilmente creare e distribuire utilizzando servizi come Fargate, CodeBuild e CodePipeline.
Riuscite a pensare a qualche applicazione per aiutare ricercatori, medici o i loro pazienti a semplificarsi la vita? In tal caso, utilizzare il codice in questa procedura dettagliata per creare l'applicazione successiva. E se hai domande, condividile nella sezione commenti.
Ringraziamenti
Vorremmo ringraziare il Prof. Dr. Marc Aubreville per averci gentilmente concesso il permesso di utilizzare il set di dati MITOS_WSI_CMC per questo post sul blog. Il set di dati può essere trovato su GitHub.
Riferimenti
[1] Aubreville, M., Bertram, CA, Donovan, TA et al. Un intero set di dati di immagini di diapositive completamente annotato sul cancro al seno canino per aiutare la ricerca sul cancro al seno umano. Dati scientifici 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et al. Un framework di deep learning generalizzato per la segmentazione e l'analisi dell'intera diapositiva. Sci Rep 11 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27 marzo 2018 115 (13) E2970-E2979; pubblicato per la prima volta il 12 marzo 2018; https://doi.org/10.1073/pnas.1717139115
L'autore
Pablo Nunez Polcher, MSc, è un Senior Solutions Architect che lavora per il team del settore pubblico con Amazon Web Services. Pablo si concentra sull'aiutare i clienti del settore pubblico sanitario a creare prodotti nuovi e innovativi su AWS in conformità con le migliori pratiche. Ha conseguito la laurea magistrale. in Scienze Biologiche presso l'Universidad de Buenos Aires. Nel tempo libero, gli piace andare in bicicletta e armeggiare con i dispositivi embedded abilitati al ML.
Razvan Ionasec, PhD, MBA, è il leader tecnico per l'assistenza sanitaria presso Amazon Web Services in Europa, Medio Oriente e Africa. Il suo lavoro si concentra sull'aiutare i clienti sanitari a risolvere i problemi aziendali sfruttando la tecnologia. In precedenza, Razvan è stato il responsabile globale dei prodotti di intelligenza artificiale (AI) presso Siemens Healthineers, responsabile di AI-Rad Companion, la famiglia di soluzioni di salute digitale per l'imaging basate su cloud e basate su intelligenza artificiale. Detiene oltre 30 brevetti in AI/ML per l'imaging medico e ha pubblicato oltre 70 pubblicazioni tecniche e cliniche internazionali sottoposte a revisione paritaria su computer vision, modellistica computazionale e analisi di immagini mediche. Razvan ha conseguito il dottorato di ricerca in Informatica presso l'Università Tecnica di Monaco e un MBA presso l'Università di Cambridge, Judge Business School.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Chi siamo
- accelerare
- accesso
- Il mio account
- Action
- Africa
- AI
- algoritmo
- Tutti
- già
- Sebbene il
- Amazon
- Rekognition di Amazon
- Amazon Sage Maker
- Amazon Web Services
- .
- Applicazioni
- applicazioni
- APT
- architettura
- artificiale
- intelligenza artificiale
- Intelligenza artificiale (AI)
- Attività
- Autenticazione
- disponibilità
- disponibile
- AWS
- equilibratore
- MIGLIORE
- best practice
- Blog
- potenziamento
- Scatola
- Cancro al seno
- costruire
- affari
- chiamata
- cambridge
- Può ottenere
- Cancro
- ricerca sul cancro
- carica
- classificazione
- codice
- collezione
- Commenti
- Informatica
- Visione computerizzata
- fiducia
- Configurazione
- consolle
- Contenitore
- Tecnologie Container
- contiene
- continua
- Costi
- Creazione
- Credenziali
- Clienti
- dati
- Banca Dati
- banche dati
- apprendimento profondo
- distruggere
- dettaglio
- rivelazione
- sviluppatori
- Mercato
- dispositivi
- diverso
- digitale
- Salute digitale
- digitalizzazione
- docker
- Dottori
- giù
- facilmente
- eco
- endpoint
- Ambiente
- Europa
- esempio
- esperienza
- export
- famiglia
- caratteristica
- Caratteristiche
- figura
- Nome
- seguire
- forcella
- formato
- essere trovato
- Contesto
- Gratis
- pieno
- function
- futuro
- generare
- geometria
- GitHub
- Dare
- globali
- Oro
- concedere
- borse di studio
- avendo
- capo
- Salute e benessere
- assistenza sanitaria
- Aiuto
- qui
- Come
- Tutorial
- HTTPS
- IAM
- Identità
- Immagine
- analisi dell'immagine
- segmentazione dell'immagine
- Imaging
- importazione
- informazioni
- creativi e originali
- integrale
- integrazione
- Intelligence
- interesse
- Internazionale
- coinvolto
- IT
- Notebook Jupyter
- per il tuo brand
- grandi
- con i più recenti
- lancio
- IMPARARE
- imparato
- apprendimento
- Livello
- Biblioteca
- linea
- linux
- Lista
- elenchi
- caricare
- Localizzazione
- machine learning
- Maps
- Marzo
- medicale
- imaging medicale
- medie
- Medio Oriente
- ML
- modello
- modellismo
- modelli
- Scopri di più
- Monaco
- nomi
- Navigazione
- di applicazione
- Rilevazione dell'oggetto
- Procedura di Onboarding
- Altro
- proprietario
- Brevetti
- patologia
- pazienti
- performance
- cronologia
- piattaforma
- politica
- Direttore
- un bagno
- processi
- Produzione
- della produttività
- Prodotti
- Scelto dai professionisti
- progetto
- progetti
- fornire
- fornisce
- la percezione
- settore pubblico
- pubblicazioni
- Python
- RAM
- riparazioni
- Risorse
- risposta
- Correre
- running
- sagemaker
- scansione
- di moto
- Scienze
- SCIENZE
- settore
- selezionato
- Servizi
- set
- regolazione
- Condividi
- Siemens
- significativa
- Un'espansione
- Taglia
- piccole
- So
- Soluzioni
- RISOLVERE
- lo spazio
- specializzata
- dividere
- Stage
- inizia a
- iniziato
- Regione / Stato
- Stato dei servizi
- conservazione
- Tornare al suo account
- studio
- supporti
- Interruttore
- SISTEMI DI TRATTAMENTO
- Target
- Consulenza
- tecniche
- Tecnologia
- test
- L’ORIGINE
- Attraverso
- tempo
- richiede tempo
- insieme
- token
- strumenti
- top
- Training
- Le transazioni
- unico
- Università
- Università di Cambridge
- Aggiornanento
- URI
- us
- USD
- APPREZZIAMO
- versione
- visione
- W
- sito web
- servizi web
- Web-basata
- Che
- Che cosa è l'
- OMS
- ampiamente
- entro
- senza
- Lavora
- lavoro
- sarebbe
- scrittura
- X
- anni
- youtube