Chiar și după mai bine de o sută de ani de la introducerea sa, histologia rămâne standardul de aur în diagnosticul și prognosticul tumorii. Anatomopatologii evaluează histologia pentru a stratifica pacienții cu cancer în diferite grupuri, în funcție de genotipurile și fenotipurile lor tumorale și de rezultatul lor clinic [1,2]. Cu toate acestea, evaluarea umană a lamelor histologice este subiectivă și nu este repetabilă [3]. În plus, evaluarea histologică este un proces consumator de timp care necesită profesioniști înalt pregătiți.
Cu progresele tehnologice semnificative din ultimul deceniu, tehnici precum imagistica integrală cu diapozitive (WSI) și învățarea profundă (DL) sunt acum disponibile pe scară largă. WSI este scanarea diapozitivelor convenționale de sticlă pentru microscopie pentru a produce o singură imagine de înaltă rezoluție din acele diapozitive. Acest lucru permite digitizarea și colectarea de seturi mari de imagini patologice, care ar fi fost prohibitiv de consumatoare de timp și de costisitoare. Disponibilitatea unor astfel de seturi de date creează modalități noi și inovatoare de a accelera diagnosticarea prin utilizarea tehnicilor precum învățarea automată (ML) pentru a ajuta patologii să accelereze diagnosticele prin identificarea rapidă a caracteristicilor de interes.
În această postare, vom explora modul în care dezvoltatorii fără experiență anterioară ML pot folosi Etichete personalizate Amazon Rekognition pentru a antrena un model care clasifică caracteristicile celulare. Amazon Rekognition Custom Labels este o caracteristică a Amazon Rekognition care vă permite să vă construiți propriile capacități specializate de analiză a imaginilor bazate pe ML pentru a detecta obiecte și scene unice care sunt integrante în cazul dumneavoastră de utilizare specific. În special, folosim un set de date care conține imagini întregi de diapozitive ale carcinomului mamar canin [1] pentru a demonstra cum să procesăm aceste imagini și să antrenăm un model care detectează figuri mitotice. Acest set de date a fost folosit cu permisiunea Prof. Dr. Marc Aubreville, care a fost de acord să ne permită să-l folosim pentru această postare. Pentru mai multe informații, consultați secțiunea Mulțumiri de la sfârșitul acestei postări.
Prezentare generală a soluției
Soluția constă din două componente:
- Un model Amazon Rekognition Custom Labels — Pentru a permite Amazon Rekognition să detecteze figuri mitotice, parcurgem următorii pași:
- Eșantionați setul de date WSI pentru a produce imagini de dimensiuni adecvate folosind Amazon SageMaker Studio și un cod Python care rulează pe un notebook Jupyter. Studio este un mediu de dezvoltare integrat (IDE) bazat pe web pentru ML, care oferă toate instrumentele de care aveți nevoie pentru a vă duce modelele de la experimentare la producție, sporind în același timp productivitatea. Vom folosi Studio pentru a împărți imaginile în altele mai mici pentru a ne antrena modelul.
- Antrenați un model Amazon Rekognition Custom Labels pentru a recunoaște figurile mitotice din probele de hematoxilină-eozină folosind datele pregătite în pasul anterior.
- O aplicație frontend — Pentru a demonstra cum să folosiți un model precum cel pe care l-am antrenat în pasul anterior, parcurgem următorii pași:
Următoarea diagramă ilustrează arhitectura soluției.
Toate resursele necesare pentru implementarea implementării discutate în acest post și codul pentru întreaga secțiune sunt disponibile pe GitHub. Puteți să clonați sau să bifurcați depozitul, să faceți orice modificări doriți și să îl rulați singur.
În următorii pași, parcurgem codul pentru a înțelege diferiții pași implicați în obținerea și pregătirea datelor, antrenarea modelului și utilizarea acestuia dintr-o aplicație exemplu.
Cheltuieli
Când rulați pașii din această explicație, suportați costuri mici din utilizarea următoarelor servicii AWS:
- Amazon Rekognition
- AWS Fargate
- Aplicație Load Balancer
- Manager de secrete AWS
În plus, dacă nu mai este în perioada sau în condițiile Nivelului gratuit, este posibil să suportați costuri pentru următoarele servicii:
- CodePipeline
- CodeBuild
- Amazon ECR
- Amazon SageMaker
Dacă finalizați corect pașii de curățare după terminarea acestei proceduri, vă puteți aștepta ca costurile să fie mai mici de 10 USD, dacă modelul Amazon Rekognition Custom Labels și aplicația web rulează timp de o oră sau mai puțin.
Cerințe preliminare
Pentru a parcurge toți pașii, aveți nevoie de următoarele:
Antrenarea modelului de clasificare a figurii mitotice
Executăm toți pașii necesari pentru a antrena modelul dintr-un notebook Studio. Dacă nu ați mai folosit Studio până acum, poate fi necesar la bord primul. Pentru mai multe informații, vezi Incorporați rapid la Amazon SageMaker Studio.
Unii dintre următorii pași necesită mai multă memorie RAM decât ceea ce este disponibil într-un notebook standard ml.t3.medium. Asigurați-vă că ați selectat un caiet ml.m5.large. Ar trebui să vedeți o indicație 2 vCPU + 8 GiB în colțul din dreapta sus al paginii.
Codul pentru această secțiune este disponibil ca a Fișier caietul Jupyter.
După înscrierea la Studio, urmează aceste instrucțiuni pentru a acorda Studioului permisiunile necesare pentru a apela Amazon Rekognition în numele dvs.
dependenţe
Pentru început, trebuie să parcurgem următorii pași:
- Actualizați pachetele Linux și instalați dependențele necesare, cum ar fi OpenSlide:
- Instalați bibliotecile fastai și SlideRunner folosind pip:
- Descărcați setul de date (oferim un script pentru a face acest lucru automat):
Procesați setul de date
Vom începe prin a importa unele dintre pachetele pe care le folosim pe parcursul etapei de pregătire a datelor. Apoi, descarcăm și încărcăm baza de date de adnotări pentru acest set de date. Această bază de date conține pozițiile din toate imaginile diapozitive ale figurilor mitotice (trăsăturile pe care dorim să le clasificăm). Vezi următorul cod:
Deoarece folosim SageMaker, creăm un nou SageMaker sesiune obiect pentru a ușura sarcini precum încărcarea setului nostru de date într-un Serviciul Amazon de stocare simplă (Amazon S3) găleată. De asemenea, folosim găleata S3 pe care SageMaker o creează în mod implicit pentru a încărca fișierele noastre de imagine procesate.
slidelist_test
matricea conține ID-urile diapozitivelor pe care le folosim ca parte a setului de date de testare pentru a evalua performanța modelului antrenat. Vezi următorul cod:
Următorul pas este să obținem un set de zone de antrenament și diapozitive de testare, împreună cu etichetele din acestea, din care să putem lua zone mai mici pentru a le folosi pentru a ne antrena modelul. Codul pentru get_slides se află în fișierul sampling.py în GitHub.
Vrem să eșantionăm aleatoriu din diapozitivele de antrenament și test. Folosim listele de diapozitive de antrenament și test și selectăm aleatoriu n_training_images
ori un dosar pentru antrenament și n_test_images
ori un fișier pentru testare:
Apoi, creăm un director pentru imaginile de antrenament și unul pentru imaginile de testare:
Înainte de a produce imaginile mai mici necesare pentru a antrena modelul, avem nevoie de un cod de ajutor care să producă metadatele necesare pentru a descrie datele de antrenament și de testare. Următorul cod se asigură că o anumită casetă de delimitare care înconjoară caracteristicile de interes (figuri mitotice) se află bine în zona pe care o tăiem și produce o linie de JSON care descrie imaginea și caracteristicile din ea în Amazon SageMaker Ground Adevăr format, care este formatul cerut de Amazon Rekognition Custom Labels. Pentru mai multe informații despre acest fișier manifest pentru detectarea obiectelor, consultați Localizarea obiectelor în fișiere manifest.
Cu generate_annotations
funcția în loc, putem scrie codul pentru a produce imaginile de antrenament și de testare:
Ultimul pas pentru a avea toate datele necesare este să scrieți a manifest.json
fișier pentru fiecare dintre seturile de date:
Transferați fișierele pe S3
Noi folosim upload_data
metoda pe care obiectul de sesiune SageMaker o expune pentru a încărca imaginile și fișierele manifest în compartimentul implicit SageMaker S3:
Antrenați un model Amazon Rekognition Custom Labels
Cu datele deja în Amazon S3, putem ajunge la antrenarea unui model personalizat. Folosim biblioteca Boto3 pentru a crea un client Amazon Rekognition și pentru a crea un proiect:
Cu proiectul gata de utilizare, acum aveți nevoie de o versiune de proiect care să trimită la seturile de date de instruire și testare din Amazon S3. În mod ideal, fiecare versiune indică seturi de date diferite (sau versiuni diferite ale acesteia). Acest lucru ne permite să avem diferite versiuni ale unui model, să le comparăm performanța și să comutăm între ele după cum este necesar. Vezi următorul cod:
După ce creăm versiunea proiectului, Amazon Rekognition începe automat procesul de instruire. Timpul de antrenament depinde de mai multe caracteristici, cum ar fi dimensiunea imaginilor și numărul acestora, numărul de clase și așa mai departe. În acest caz, pentru 500 de imagini, antrenamentul durează aproximativ 90 de minute.
Testați modelul
După antrenament, fiecare model din Amazon Rekognition Custom Labels este în STOPPED
stat. Pentru a-l folosi pentru deducere, trebuie să îl porniți. Obținem versiunea ARN a proiectului din descrierea versiunii proiectului și o transmitem către start_project_version
. Observați MinInferenceUnits
parametru — începem cu o unitate de inferență. Numărul maxim real de tranzacții pe secundă (TPS) pe care le acceptă această unitate de inferență depinde de complexitatea modelului dvs. Pentru a afla mai multe despre TPS, consultați aceasta blog.
Când versiunea proiectului dvs. este listată ca RUNNING
, puteți începe să trimiteți imagini către Amazon Rekognition pentru deducere.
Folosim unul dintre fișierele din setul de date de testare pentru a testa modelul nou început. În schimb, puteți utiliza orice fișier PNG sau JPEG potrivit.
Aplicație simplificată
Pentru a demonstra integrarea cu Amazon Rekognition, folosim o aplicație Python foarte simplă. Noi folosim Iluminat în flux bibliotecă pentru a construi o interfață de utilizator spartană, în care solicităm utilizatorului să încarce un fișier imagine.
Folosim biblioteca Boto3 și detect_custom_labels
metoda, împreună cu versiunea de proiect ARN, pentru a invoca punctul final de inferență. Răspunsul este un document JSON care conține pozițiile și clasele diferitelor obiecte detectate în imagine. În cazul nostru, acestea sunt figurile mitotice pe care algoritmul le-a găsit în imaginea pe care am trimis-o la punctul final. Vezi următorul cod:
Implementați aplicația pe AWS
Pentru a implementa aplicația, folosim un script AWS CDK. Întregul proiect poate fi găsit pe GitHub . Să ne uităm la diferitele resurse implementate de script.
Creați un depozit Amazon ECR
Ca prim pas către configurarea implementării noastre, creăm un depozit Amazon ECR, unde putem stoca imaginile containerului nostru de aplicații:
Creați și stocați tokenul dvs. GitHub în AWS Secrets Manager
CodePipeline are nevoie de un Token de acces personal GitHub pentru a vă monitoriza depozitul GitHub pentru modificări și codul de extragere. Pentru a crea simbolul, urmați instrucțiunile din Documentația GitHub. Tokenul necesită următoarele domenii GitHub:
-
repo
scope, care este folosit pentru control deplin pentru a citi și extrage artefacte din depozitele publice și private într-o conductă. -
admin:repo_hook
scope, care este utilizat pentru controlul complet al cârligelor de depozit.
După crearea jetonului, stocați-l într-un nou secret în Manager de secrete AWS după cum urmează:
Scrieți parametrii de configurare în AWS Systems Manager Parameter Store
Scriptul AWS CDK citește câțiva parametri de configurare din Magazin de parametri AWS Systems Manager, cum ar fi numele și proprietarul depozitului GitHub și contul și regiunea țintă. Înainte de a lansa scriptul AWS CDK, trebuie să creați acești parametri în propriul cont.
Puteți face acest lucru utilizând AWS CLI. Pur și simplu invocați put-parameter
comandă cu un nume, o valoare și tipul parametrului:
Următoarea este o listă a tuturor parametrilor solicitați de scriptul AWS CDK. Toate sunt de tip String
:
- /rek_wsi/prod/accountId — ID-ul contului în care implementăm aplicația.
- /rek_wsi/prod/ecr_repo_name — Numele depozitului Amazon ECR în care sunt stocate imaginile containerului.
- /rek_wsi/prod/github/branch — Ramura din depozitul GitHub din care CodePipeline trebuie să extragă codul.
- /rek_wsi/prod/github/owner — Proprietarul depozitului GitHub.
- /rek_wsi/prod/github/repo — Numele depozitului GitHub unde este stocat codul nostru.
- /rek_wsi/prod/github/token — Numele sau ARN-ul secretului din Secrets Manager care conține indicativul de autentificare GitHub. Acest lucru este necesar pentru ca CodePipeline să poată comunica cu GitHub.
- /rek_wsi/prod/region — Regiunea în care vom implementa aplicația.
Observați prod
segment în toate numele parametrilor. Deși nu avem nevoie de acest nivel de detaliu pentru un exemplu atât de simplu, acesta va permite reutilizarea acestei abordări cu alte proiecte în care ar putea fi necesare medii diferite.
Resurse create de scriptul AWS CDK
Avem nevoie de aplicația noastră, care rulează într-o sarcină Fargate, să aibă permisiuni pentru a invoca Amazon Rekognition. Așa că mai întâi creăm un Gestionarea identității și accesului AWS (IAM) Rol de sarcină cu RekognitionReadOnlyPolicy
politică atașată acestuia. Observați că assumed_by
parametrul din codul următor ia ecs-tasks.amazonaws.com
principalul serviciului. Acest lucru se datorează faptului că folosim Amazon ECS ca orchestrator, așa că avem nevoie de Amazon ECS să își asume rolul și să transmită acreditările sarcinii Fargate.
Odată construită, imaginea containerului nostru de aplicații se află într-un depozit privat Amazon ECR. Avem nevoie de un obiect care să-l descrie pe care să îl putem transmite atunci când creăm serviciul Fargate:
Creăm un nou VPC și un cluster pentru această aplicație. Puteți modifica această parte pentru a vă folosi propriul VPC utilizând from_lookup
metodă a Vpc
clasă:
Acum că avem un VPC și un cluster pe care să le implementăm, creăm serviciul Fargate. Folosim 0.25 vCPU și 512 MB RAM pentru această sarcină și plasăm un Application Load Balancer (ALB) public în fața acestuia. Odată implementat, folosim ALB CNAME pentru a accesa aplicația. Vezi următorul cod:
Pentru a construi și a implementa automat o nouă imagine de container de fiecare dată când împingem codul în ramura noastră principală, creăm o conductă simplă constând dintr-o acțiune sursă GitHub și un pas de construire. Aici folosim secretele pe care le-am stocat în AWS Secrets Manager și AWS Systems Manager Parameter Store în pașii anteriori.
CodeBuild are nevoie de permisiuni pentru a trimite imaginile containerului către Amazon ECR. Pentru a acorda aceste permisiuni, adăugăm AmazonEC2ContainerRegistryFullAccess
politică la un rol IAM personalizat pe care principalul serviciului CodeBuild îl poate asuma:
Proiectul CodeBuild se conectează în depozitul privat Amazon ECR, construiește imaginea Docker cu aplicația Streamlit și împinge imaginea în depozit împreună cu un appspec.yaml
si un imagedefinitions.json
fișier.
appspec.yaml
fișierul descrie sarcina (portul, versiunea platformei Fargate și așa mai departe), în timp ce imagedefinitions.json
fișierul mapează numele imaginilor containerului la URI-ul Amazon ECR corespunzător. Vezi următorul cod:
În cele din urmă, am pus împreună diferitele etape ale conductei. Ultima acțiune este EcsDeployAction
, care preia imaginea containerului construită în etapa anterioară și face o actualizare continuă a sarcinilor din clusterul nostru ECS:
A curăța
Pentru a evita costurile viitoare, curățați resursele pe care le-ați creat ca parte a acestei soluții.
Modelul de etichete personalizate Amazon Rekognition
Înainte de a închide notebook-ul Studio, asigurați-vă că opriți modelul Amazon Rekognition Custom Labels. Dacă nu o faceți, va continua să suporte costuri.
Alternativ, puteți utiliza consola Amazon Rekognition pentru a opri serviciul:
- Pe consola Amazon Rekognition, alegeți Utilizați etichete personalizate în panoul de navigare.
- Alege Proiecte în panoul de navigare.
- Alegeți versiunea 1 a
rek-mitotic-figures-workshop
proiect. - Pe Utilizați modelul fila, alegeți Stop.
Aplicație simplificată
Pentru a distruge toate resursele asociate aplicației Streamlit, rulați următorul cod din directorul aplicației AWS CDK:
Manager de secrete AWS
Pentru a șterge simbolul GitHub, urmați instrucțiunile din documentaţie.
Concluzie
În această postare, am parcurs pașii necesari pentru a pregăti un model Amazon Rekognition Custom Labels pentru o aplicație de patologie digitală folosind date din lumea reală. Apoi am învățat cum să folosim modelul dintr-o aplicație simplă implementată dintr-o conductă CI/CD către Fargate.
Amazon Rekognition Custom Labels vă permite să creați aplicații de asistență medicală activate ML pe care le puteți crea și implementa cu ușurință folosind servicii precum Fargate, CodeBuild și CodePipeline.
Vă puteți gândi la vreo aplicație care să-i ajute pe cercetători, medici sau pacienții lor să-și facă viața mai ușoară? Dacă da, utilizați codul din acest tutorial pentru a crea următoarea aplicație. Și dacă aveți întrebări, vă rugăm să le împărtășiți în secțiunea de comentarii.
recunoasteri
Dorim să-i mulțumim Prof. Dr. Marc Aubreville pentru că ne-a acordat permisiunea de a folosi setul de date MITOS_WSI_CMC pentru această postare de blog. Setul de date poate fi găsit pe GitHub.
Referinte
[1] Aubreville, M., Bertram, CA, Donovan, TA și colab. Un set de date complet adnotat cu imagini de diapozitive despre cancerul de sân canin pentru a ajuta cercetarea cancerului de sân uman. Sci Data 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et al. Un cadru generalizat de învățare profundă pentru segmentarea și analiza întregii imagini a diapozitivei. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27 martie 2018 115 (13) E2970-E2979; publicat prima dată 12 martie 2018; https://doi.org/10.1073/pnas.1717139115
Despre autor
Pablo Nuñez Pölcher, MSc, este un arhitect senior de soluții care lucrează pentru echipa din sectorul public cu Amazon Web Services. Pablo se concentrează pe a ajuta clienții din sectorul public din domeniul sănătății să construiască produse noi și inovatoare pe AWS, în conformitate cu cele mai bune practici. A primit M.Sc. în Științe Biologice de la Universidad de Buenos Aires. În timpul liber, îi place să meargă cu bicicleta și să joace dispozitive încorporate cu ML.
Razvan Ionasec, PhD, MBA, este liderul tehnic pentru asistența medicală la Amazon Web Services în Europa, Orientul Mijlociu și Africa. Munca sa se concentrează pe a ajuta clienții din domeniul sănătății să rezolve problemele de afaceri prin valorificarea tehnologiei. Anterior, Razvan a fost șeful global al produselor de inteligență artificială (AI) la Siemens Healthineers, responsabil de AI-Rad Companion, familia de soluții de sănătate digitală bazate pe AI și bazate pe cloud pentru imagistica. El deține peste 30 de brevete în AI/ML pentru imagistica medicală și a publicat peste 70 de publicații internaționale tehnice și clinice, revizuite de colegi, despre viziunea computerizată, modelarea computațională și analiza imaginilor medicale. Razvan și-a luat doctoratul în informatică la Universitatea Tehnică din München și MBA de la Universitatea din Cambridge, Judge Business School.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Despre Noi
- accelera
- acces
- Cont
- Acțiune
- Africa
- AI
- Algoritmul
- TOATE
- deja
- Cu toate ca
- Amazon
- Amazon Rekognition
- Amazon SageMaker
- Amazon Web Services
- analiză
- aplicație
- aplicatii
- APT
- arhitectură
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- Bunuri
- Autentificare
- disponibilitate
- disponibil
- AWS
- echilibrist
- CEL MAI BUN
- Cele mai bune practici
- Blog
- stimularea
- Cutie
- Cancer mamar
- construi
- afaceri
- apel
- Cambridge
- Poate obține
- Rac
- cancer de cercetare
- taxă
- clasificare
- cod
- colectare
- comentarii
- Informatică
- Computer Vision
- încredere
- Configuraţie
- Consoleze
- Recipient
- Containere
- conține
- continuă
- Cheltuieli
- Crearea
- scrisori de acreditare
- clienţii care
- de date
- Baza de date
- baze de date
- învățare profundă
- distruge
- detaliu
- Detectare
- Dezvoltatorii
- Dezvoltare
- Dispozitive
- diferit
- digital
- Sănătate digitală
- digitizare
- Docher
- Medici
- jos
- cu ușurință
- ecou
- Punct final
- Mediu inconjurator
- Europa
- exemplu
- experienţă
- exporturile
- familie
- Caracteristică
- DESCRIERE
- Figura
- First
- urma
- furculiţă
- format
- găsit
- Cadru
- Gratuit
- Complet
- funcţie
- viitor
- genera
- geometrie
- GitHub
- Oferirea
- Caritate
- Aur
- acordarea
- subvenții
- având în
- cap
- Sănătate
- de asistență medicală
- ajutor
- aici
- Cum
- Cum Pentru a
- HTTPS
- IAM
- Identitate
- imagine
- analiza imaginii
- segmentarea imaginii
- Imaging
- importatoare
- informații
- inovatoare
- integrală
- integrare
- Inteligență
- interes
- Internațional
- implicat
- IT
- Jupiter Notebook
- etichete
- mare
- Ultimele
- lansare
- AFLAȚI
- învățat
- învăţare
- Nivel
- Bibliotecă
- Linie
- linux
- Listă
- liste
- încărca
- Localizare
- masina de învățare
- Harta
- Martie
- medical
- imagistica medicala
- mediu
- Orientul Mijlociu
- ML
- model
- modelare
- Modele
- mai mult
- Munchen
- nume
- Navigare
- necesar
- Detectarea obiectelor
- La imbarcare
- Altele
- proprietar
- Brevete de inventie
- patologie
- pacientes
- performanță
- personal
- platformă
- Politica
- Principal
- privat
- proces
- producere
- productivitate
- Produse
- profesioniști
- proiect
- Proiecte
- furniza
- furnizează
- public
- sector public
- Publicații
- Piton
- RAM
- cercetare
- Resurse
- răspuns
- Alerga
- funcţionare
- sagemaker
- scanare
- Şcoală
- Ştiinţă
- ȘTIINȚE
- sector
- selectate
- Servicii
- set
- instalare
- Distribuie
- Siemens
- semnificativ
- simplu
- Mărimea
- mic
- So
- soluţii
- REZOLVAREA
- Spaţiu
- de specialitate
- împărţi
- Etapă
- Începe
- început
- Stat
- Stare
- depozitare
- stoca
- studio
- Sprijină
- Intrerupator
- sisteme
- Ţintă
- Tehnic
- tehnici de
- Tehnologia
- test
- Sursa
- Prin
- timp
- consumă timp
- împreună
- semn
- Unelte
- top
- Pregătire
- Tranzacții
- unic
- universitate
- Universitatea Cambridge
- Actualizează
- URI
- us
- USD
- valoare
- versiune
- viziune
- W
- web
- servicii web
- bazat pe web
- Ce
- Ce este
- OMS
- pe larg
- în
- fără
- Apartamente
- de lucru
- ar
- scris
- X
- ani
- youtube