Selv etter mer enn hundre år etter introduksjonen er histologi fortsatt gullstandarden i tumordiagnose og prognose. Anatomiske patologer evaluerer histologi for å stratifisere kreftpasienter i forskjellige grupper avhengig av deres tumorgenotyper og -fenotyper, og deres kliniske utfall [1,2]. Imidlertid er menneskelig evaluering av histologiske lysbilder subjektiv og ikke repeterbar [3]. Videre er histologisk vurdering en tidkrevende prosess som krever høyt kvalifiserte fagfolk.
Med betydelige teknologiske fremskritt det siste tiåret, er teknikker som hele lysbildeavbildning (WSI) og dyp læring (DL) nå allment tilgjengelig. WSI er skanning av konvensjonelle mikroskopiglass for å produsere et enkelt bilde med høy oppløsning fra disse lysbildene. Dette gir mulighet for digitalisering og innsamling av store sett med patologibilder, noe som ville ha vært uoverkommelig tidkrevende og kostbart. Tilgjengeligheten av slike datasett skaper nye og innovative måter å akselerere diagnose ved å bruke teknikker som maskinlæring (ML) for å hjelpe patologer med å akselerere diagnoser ved raskt å identifisere funksjoner av interesse.
I dette innlegget skal vi utforske hvordan utviklere uten tidligere ML-erfaring kan bruke Amazon Rekognition Egendefinerte etiketter å trene en modell som klassifiserer mobilfunksjoner. Amazon Rekognition Custom Labels er en funksjon av Amazon-anerkjennelse som lar deg bygge dine egne spesialiserte ML-baserte bildeanalysefunksjoner for å oppdage unike objekter og scener som er integrert i ditt spesifikke bruksområde. Spesielt bruker vi et datasett som inneholder hele lysbildebilder av brystkreft hos hunder [1] for å demonstrere hvordan man behandler disse bildene og trener en modell som oppdager mitotiske figurer. Dette datasettet har blitt brukt med tillatelse fra prof. Dr. Marc Aubreville, som har godtatt å la oss bruke det til dette innlegget. For mer informasjon, se Acknowledgements-delen på slutten av dette innlegget.
Løsningsoversikt
Løsningen består av to komponenter:
- En Amazon Rekognition Custom Labels-modell — For å gjøre det mulig for Amazon Rekognition å oppdage mitotiske figurer, fullfører vi følgende trinn:
- Prøve WSI-datasettet for å produsere bilder med tilstrekkelig størrelse ved å bruke Amazon SageMaker Studio og en Python-kode som kjører på en Jupyter-notisbok. Studio er et nettbasert, integrert utviklingsmiljø (IDE) for ML som gir alle verktøyene du trenger for å ta modellene dine fra eksperimentering til produksjon samtidig som du øker produktiviteten. Vi vil bruke Studio til å dele bildene i mindre for å trene opp modellen vår.
- Tren en Amazon Rekognition Custom Labels-modell for å gjenkjenne mitotiske figurer i hematoxylin-eosin-prøver ved å bruke dataene utarbeidet i forrige trinn.
- En frontend-applikasjon — For å demonstrere hvordan du bruker en modell som den vi trente i forrige trinn, fullfører vi følgende trinn:
Følgende diagram illustrerer løsningsarkitekturen.
Alle nødvendige ressurser for å distribuere implementeringen diskutert i dette innlegget og koden for hele delen er tilgjengelig på GitHub. Du kan klone eller splitte depotet, gjøre endringer du ønsker, og kjøre det selv.
I de neste trinnene går vi gjennom koden for å forstå de forskjellige trinnene som er involvert i å innhente og forberede dataene, trene modellen og bruke den fra en eksempelapplikasjon.
Kostnader
Når du kjører trinnene i denne gjennomgangen, pådrar du deg små kostnader ved å bruke følgende AWS-tjenester:
- Amazon-anerkjennelse
- AWS Fargate
- Lastbalanse for applikasjon
- AWS Secrets Manager
I tillegg, hvis du ikke lenger er innenfor Free Tier-perioden eller betingelsene, kan du pådra deg kostnader fra følgende tjenester:
- CodePipeline
- CodeBuild
- Amazon ECR
- Amazon SageMaker
Hvis du fullfører oppryddingstrinnene riktig etter å ha fullført denne gjennomgangen, kan du forvente at kostnadene vil være mindre enn 10 USD hvis Amazon Rekognition Custom Labels-modellen og nettapplikasjonen kjører i én time eller mindre.
Forutsetninger
For å fullføre alle trinnene trenger du følgende:
Trening av klassifiseringsmodellen for mitotiske figurer
Vi kjører alle trinnene som kreves for å trene modellen fra en Studio-notisbok. Hvis du aldri har brukt Studio før, kan det hende du må om bord først. For mer informasjon, se Ombord raskt til Amazon SageMaker Studio.
Noen av de følgende trinnene krever mer RAM enn det som er tilgjengelig i en standard ml.t3.medium bærbar PC. Pass på at du har valgt en ml.m5.large notisbok. Du bør se en 2 vCPU + 8 GiB indikasjon øverst til høyre på siden.
Koden for denne delen er tilgjengelig som en Jupyter notisbokfil.
Etter ombordstigning til Studio, følg disse instruksjonene å gi Studio de nødvendige tillatelsene til å ringe Amazon Rekognition på dine vegne.
avhengig
Til å begynne med må vi fullføre følgende trinn:
- Oppdater Linux-pakker og installer de nødvendige avhengighetene, for eksempel OpenSlide:
- Installer fastai- og SlideRunner-bibliotekene ved å bruke pip:
- Last ned datasettet (vi gir et skript for å gjøre dette automatisk):
Behandle datasettet
Vi vil begynne med å importere noen av pakkene som vi bruker gjennom hele dataforberedelsesstadiet. Deretter laster vi ned og laster merknadsdatabasen for dette datasettet. Denne databasen inneholder posisjonene i hele lysbildebildene til de mitotiske figurene (trekkene vi ønsker å klassifisere). Se følgende kode:
Fordi vi bruker SageMaker, oppretter vi en ny SageMaker Session objekt for å lette oppgaver som å laste opp datasettet vårt til en Amazon enkel lagringstjeneste (Amazon S3) bøtte. Vi bruker også S3-bøtten som SageMaker oppretter som standard for å laste opp våre behandlede bildefiler.
De slidelist_test
array inneholder ID-ene til lysbildene som vi bruker som en del av testdatasettet for å evaluere ytelsen til den trente modellen. Se følgende kode:
Det neste trinnet er å skaffe et sett med treningsområder og testbilder, sammen med etikettene på dem, hvorfra vi kan ta mindre områder for å trene modellen vår. Koden for get_slides finnes i sampling.py-filen i GitHub.
Vi ønsker å ta stikkprøver fra trenings- og testbilder. Vi bruker listene over trenings- og testbilder og velger tilfeldig n_training_images
ganger en fil for trening, og n_test_images
ganger en fil for test:
Deretter lager vi en katalog for treningsbilder og en for testbilder:
Før vi produserer de mindre bildene som trengs for å trene modellen, trenger vi litt hjelpekode som produserer metadataene som trengs for å beskrive trenings- og testdataene. Følgende kode sørger for at en gitt grenseramme rundt funksjonene av interesse (mitotiske figurer) er godt innenfor sonen vi klipper, og produserer en linje med JSON som beskriver bildet og funksjonene i det i Amazon SageMaker Ground Truth format, som er formatet Amazon Rekognition Custom Labels krever. For mer informasjon om denne manifestfilen for objektdeteksjon, se Objektlokalisering i manifestfiler.
Med generate_annotations
funksjon på plass, kan vi skrive koden for å produsere trenings- og testbildene:
Det siste trinnet mot å ha alle nødvendige data er å skrive en manifest.json
fil for hvert av datasettene:
Overfør filene til S3
Vi bruker upload_data
metode som SageMaker-sesjonsobjektet eksponerer for å laste opp bildene og manifestfilene til standard SageMaker S3-bøtte:
Tren en Amazon Rekognition Custom Labels-modell
Med dataene allerede i Amazon S3, kan vi trene en tilpasset modell. Vi bruker Boto3-biblioteket til å lage en Amazon Rekognition-klient og lage et prosjekt:
Med prosjektet klart til bruk trenger du nå en prosjektversjon som peker på opplærings- og testdatasettene i Amazon S3. Hver versjon peker ideelt sett til forskjellige datasett (eller forskjellige versjoner av det). Dette gjør oss i stand til å ha forskjellige versjoner av en modell, sammenligne ytelsen deres og bytte mellom dem etter behov. Se følgende kode:
Etter at vi har opprettet prosjektversjonen, starter Amazon Rekognition automatisk opplæringsprosessen. Treningstiden avhenger av flere funksjoner, som størrelsen på bildene og antallet av dem, antall klasser og så videre. I dette tilfellet, for 500 bilder, tar treningen omtrent 90 minutter å fullføre.
Test modellen
Etter trening er hver modell i Amazon Rekognition Custom Labels i STOPPED
stat. For å bruke det for å slutningsføre, må du starte det. Vi henter prosjektversjonen ARN fra prosjektversjonsbeskrivelsen og sender den over til start_project_version
. Legg merke til MinInferenceUnits
parameter – vi starter med én inferensenhet. Det faktiske maksimale antallet transaksjoner per sekund (TPS) som denne slutningsenheten støtter, avhenger av kompleksiteten til modellen din. For å lære mer om TPS, se dette blogginnlegg.
Når prosjektversjonen din er oppført som RUNNING
, kan du begynne å sende bilder til Amazon Rekognition for slutning.
Vi bruker en av filene i testdatasettet til å teste den nystartede modellen. Du kan bruke hvilken som helst passende PNG- eller JPEG-fil i stedet.
Strømbelyst applikasjon
For å demonstrere integrasjonen med Amazon Rekognition bruker vi en veldig enkel Python-applikasjon. Vi bruker Strømbelyst biblioteket for å bygge et spartansk brukergrensesnitt, der vi ber brukeren laste opp en bildefil.
Vi bruker Boto3-biblioteket og detect_custom_labels
metode, sammen med prosjektversjonen ARN, for å påkalle inferensendepunktet. Svaret er et JSON-dokument som inneholder posisjonene og klassene til de forskjellige objektene som er oppdaget i bildet. I vårt tilfelle er dette de mitotiske figurene som algoritmen har funnet i bildet vi sendte til endepunktet. Se følgende kode:
Distribuer applikasjonen til AWS
For å distribuere applikasjonen bruker vi et AWS CDK-skript. Hele prosjektet finner du på GitHub . La oss se på de forskjellige ressursene som brukes av skriptet.
Opprett et Amazon ECR-depot
Som det første trinnet mot å sette opp distribusjonen vår, oppretter vi et Amazon ECR-lager, der vi kan lagre applikasjonsbeholderbildene våre:
Lag og lagre GitHub-tokenet ditt i AWS Secrets Manager
CodePipeline trenger et GitHub Personal Access Token for å overvåke GitHub-depotet ditt for endringer og pull-kode. For å opprette tokenet, følg instruksjonene i GitHub-dokumentasjon. Tokenet krever følgende GitHub-omfang:
- De
repo
scope, som brukes for full kontroll for å lese og trekke artefakter fra offentlige og private depoter inn i en rørledning. - De
admin:repo_hook
scope, som brukes for full kontroll av depotkroker.
Etter å ha opprettet tokenet, lagre det i en ny hemmelighet i AWS Secrets Manager som følger:
Skriv konfigurasjonsparametere til AWS Systems Manager Parameter Store
AWS CDK-skriptet leser noen konfigurasjonsparametere fra AWS Systems Manager Parameter Store, for eksempel navnet og eieren av GitHub-depotet, og målkontoen og regionen. Før du starter AWS CDK-skriptet, må du opprette disse parameterne i din egen konto.
Du kan gjøre det ved å bruke AWS CLI. Bare påkalle put-parameter
kommando med et navn, en verdi og parametertypen:
Følgende er en liste over alle parametere som kreves av AWS CDK-skriptet. Alle er av typen String
:
- /rek_wsi/prod/accountId — IDen til kontoen der vi distribuerer applikasjonen.
- /rek_wsi/prod/ecr_repo_name — Navnet på Amazon ECR-depotet der beholderbildene er lagret.
- /rek_wsi/prod/github/branch — Grenen i GitHub-depotet som CodePipeline trenger for å hente koden fra.
- /rek_wsi/prod/github/owner — Eieren av GitHub-depotet.
- /rek_wsi/prod/github/repo — Navnet på GitHub-depotet der koden vår er lagret.
- /rek_wsi/prod/github/token — Navnet eller ARN til hemmeligheten i Secrets Manager som inneholder GitHub-autentiseringstokenet ditt. Dette er nødvendig for at CodePipeline skal kunne kommunisere med GitHub.
- /rek_wsi/prod/region — Regionen der vi skal distribuere applikasjonen.
Legg merke til prod
segment i alle parameternavn. Selv om vi ikke trenger dette detaljnivået for et så enkelt eksempel, vil det gjøre det mulig å gjenbruke denne tilnærmingen med andre prosjekter der ulike miljøer kan være nødvendige.
Ressurser opprettet av AWS CDK-skriptet
Vi trenger applikasjonen vår, som kjører i en Fargate-oppgave, for å ha tillatelser til å påkalle Amazon Rekognition. Så vi oppretter først en AWS identitets- og tilgangsadministrasjon (IAM) Oppgaverolle med RekognitionReadOnlyPolicy
politikk knyttet til den. Legg merke til at assumed_by
parameter i følgende kode tar ecs-tasks.amazonaws.com
tjeneste rektor. Dette er fordi vi bruker Amazon ECS som orkestrator, så vi trenger Amazon ECS for å påta seg rollen og overføre legitimasjonen til Fargate-oppgaven.
Når applikasjonsbeholderbildet vårt er bygget, ligger det i et privat Amazon ECR-lager. Vi trenger et objekt som beskriver det som vi kan sende når vi oppretter Fargate-tjenesten:
Vi oppretter en ny VPC og klynge for denne applikasjonen. Du kan endre denne delen for å bruke din egen VPC ved å bruke from_lookup
metode av Vpc
klasse:
Nå som vi har en VPC og klynge å distribuere til, oppretter vi Fargate-tjenesten. Vi bruker 0.25 vCPU og 512 MB RAM til denne oppgaven, og vi plasserer en offentlig Application Load Balancer (ALB) foran den. Når den er distribuert, bruker vi ALB CNAME for å få tilgang til applikasjonen. Se følgende kode:
For å automatisk bygge og distribuere et nytt containerbilde hver gang vi skyver kode til hovedgrenen vår, lager vi en enkel pipeline som består av en GitHub-kildehandling og et byggetrinn. Det er her vi bruker hemmelighetene vi lagret i AWS Secrets Manager og AWS Systems Manager Parameter Store i de forrige trinnene.
CodeBuild trenger tillatelser for å sende containerbilder til Amazon ECR. For å gi disse tillatelsene legger vi til AmazonEC2ContainerRegistryFullAccess
policy til en skreddersydd IAM-rolle som CodeBuild-tjenestens rektor kan påta seg:
CodeBuild-prosjektet logger på det private Amazon ECR-depotet, bygger Docker-bildet med Streamlit-applikasjonen og skyver bildet inn i depotet sammen med en appspec.yaml
og en imagedefinitions.json
filen.
De appspec.yaml
filen beskriver oppgaven (port, Fargate-plattformversjon og så videre), mens imagedefinitions.json
filen tilordner navnene på beholderbildene til deres tilsvarende Amazon ECR URI. Se følgende kode:
Til slutt setter vi de forskjellige rørledningstrinnene sammen. Den siste handlingen er EcsDeployAction
, som tar beholderbildet bygget i forrige trinn og gjør en rullende oppdatering av oppgavene i ECS-klyngen vår:
Opprydding
For å unngå å pådra seg fremtidige kostnader, ryd opp i ressursene du opprettet som en del av denne løsningen.
Amazon Rekognition Custom Labels-modell
Før du slår av Studio-notisboken, sørg for at du stopper Amazon Rekognition Custom Labels-modellen. Hvis du ikke gjør det, fortsetter det å pådra seg kostnader.
Alternativt kan du bruke Amazon Rekognition-konsollen for å stoppe tjenesten:
- Velg på Amazon Rekognition-konsollen Bruk egendefinerte etiketter i navigasjonsruten.
- Velg Prosjekter i navigasjonsruten.
- Velg versjon 1 av
rek-mitotic-figures-workshop
prosjekt. - På Bruk modell kategorien, velg Stopp.
Strømbelyst applikasjon
For å ødelegge alle ressurser knyttet til Streamlit-applikasjonen, kjør følgende kode fra AWS CDK-applikasjonskatalogen:
AWS Secrets Manager
For å slette GitHub-tokenet, følg instruksjonene i dokumentasjon.
konklusjonen
I dette innlegget gikk vi gjennom de nødvendige trinnene for å trene en Amazon Rekognition Custom Labels-modell for en digital patologiapplikasjon ved bruk av data fra den virkelige verden. Deretter lærte vi hvordan vi bruker modellen fra en enkel applikasjon distribuert fra en CI/CD-pipeline til Fargate.
Amazon Rekognition Custom Labels lar deg bygge ML-aktiverte helsetjenester som du enkelt kan bygge og distribuere ved hjelp av tjenester som Fargate, CodeBuild og CodePipeline.
Kan du tenke deg noen applikasjoner for å hjelpe forskere, leger eller deres pasienter med å gjøre livet enklere? I så fall, bruk koden i denne gjennomgangen for å bygge din neste applikasjon. Og hvis du har spørsmål, vennligst del dem i kommentarfeltet.
Erkjennelsene
Vi vil gjerne takke prof. Dr. Marc Aubreville for vennlig å gi oss tillatelse til å bruke MITOS_WSI_CMC-datasettet for dette blogginnlegget. Datasettet finnes på GitHub.
Referanser
[1] Aubreville, M., Bertram, C.A., Donovan, T.A. et al. Et fullstendig kommentert hel lysbildedatasett av brystkreft hos hunder for å hjelpe menneskelig brystkreftforskning. Sci Data 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et al. Et generalisert rammeverk for dyp læring for bildesegmentering og analyse av hele lysbilder. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27. mars 2018 115 (13) E2970-E2979; første gang publisert 12. mars 2018; https://doi.org/10.1073/pnas.1717139115
om forfatteren
Pablo Nuñez Pölcher, MSc, er en senior løsningsarkitekt som jobber for teamet i offentlig sektor med Amazon Web Services. Pablo fokuserer på å hjelpe offentlige helsetjenester med å bygge nye, innovative produkter på AWS i samsvar med beste praksis. Han fikk sin M.Sc. i biologiske vitenskaper fra Universidad de Buenos Aires. På fritiden liker han å sykle og tukle med ML-aktiverte innebygde enheter.
Razvan Ionasec, PhD, MBA, er teknisk leder for helsetjenester hos Amazon Web Services i Europa, Midtøsten og Afrika. Arbeidet hans fokuserer på å hjelpe helsekunder med å løse forretningsproblemer ved å utnytte teknologi. Tidligere var Razvan global leder for kunstig intelligens (AI)-produkter hos Siemens Healthineers med ansvar for AI-Rad Companion, familien av AI-drevne og skybaserte digitale helseløsninger for bildebehandling. Han har 30+ patenter innen AI/ML for medisinsk bildebehandling og har publisert 70+ internasjonale fagfellevurderte tekniske og kliniske publikasjoner om datasyn, beregningsmodellering og medisinsk bildeanalyse. Razvan fikk sin doktorgrad i informatikk fra Technical University München og MBA fra University of Cambridge, Judge Business School.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Om oss
- akselerere
- adgang
- Logg inn
- Handling
- afrika
- AI
- algoritme
- Alle
- allerede
- Selv
- Amazon
- Amazon-anerkjennelse
- Amazon SageMaker
- Amazon Web Services
- analyse
- Søknad
- søknader
- APT
- arkitektur
- kunstig
- kunstig intelligens
- Kunstig intelligens (AI)
- Eiendeler
- Autentisering
- tilgjengelighet
- tilgjengelig
- AWS
- swing
- BEST
- beste praksis
- Blogg
- øke
- Eske
- Brystkreft
- bygge
- virksomhet
- ring
- cambridge
- Kan få
- Kreft
- kreftforskning
- kostnad
- klassifisering
- kode
- samling
- kommentarer
- informatikk
- Datamaskin syn
- selvtillit
- Konfigurasjon
- Konsoll
- Container
- Containere
- inneholder
- fortsetter
- Kostnader
- Opprette
- Credentials
- Kunder
- dato
- Database
- databaser
- dyp læring
- ødelegge
- detalj
- Gjenkjenning
- utviklere
- Utvikling
- Enheter
- forskjellig
- digitalt
- Digital helse
- digitalisering
- Docker
- leger
- ned
- lett
- savner
- Endpoint
- Miljø
- Europa
- eksempel
- erfaring
- eksportere
- familie
- Trekk
- Egenskaper
- Figur
- Først
- følge
- gaffel
- format
- funnet
- Rammeverk
- Gratis
- fullt
- funksjon
- framtid
- generere
- geometri
- GitHub
- Giving
- Global
- Gull
- innvilge
- tilskudd
- å ha
- hode
- Helse
- helsetjenester
- hjelpe
- her.
- Hvordan
- Hvordan
- HTTPS
- IAM
- Identitet
- bilde
- bildeanalyse
- bildesegmentering
- Imaging
- importere
- informasjon
- innovative
- integrert
- integrering
- Intelligens
- interesse
- internasjonalt
- involvert
- IT
- Jupyter Notebook
- etiketter
- stor
- siste
- lansere
- LÆRE
- lært
- læring
- Nivå
- Bibliotek
- linje
- linux
- Liste
- lister
- laste
- Lokalisering
- maskinlæring
- Kart
- Mars
- medisinsk
- medisinsk bildebehandling
- medium
- Midtøsten
- ML
- modell
- modellering
- modeller
- mer
- München
- navn
- Navigasjon
- nødvendig
- Objektdeteksjon
- onboarding
- Annen
- eieren
- Patenter
- patologi
- pasienter
- ytelse
- personlig
- plattform
- politikk
- Principal
- privat
- prosess
- Produksjon
- produktivitet
- Produkter
- fagfolk
- prosjekt
- prosjekter
- gi
- gir
- offentlig
- offentlig sektor
- publikasjoner
- Python
- RAM
- forskning
- Ressurser
- svar
- Kjør
- rennende
- sagemaker
- skanning
- Skole
- Vitenskap
- VITENSKAPER
- sektor
- valgt
- Tjenester
- sett
- innstilling
- Del
- Siemens
- signifikant
- Enkelt
- Størrelse
- liten
- So
- Solutions
- LØSE
- Rom
- spesialisert
- splittet
- Scene
- Begynn
- startet
- Tilstand
- status
- lagring
- oppbevare
- studio
- Støtter
- Bytte om
- Systemer
- Target
- Teknisk
- teknikker
- Teknologi
- test
- Kilden
- Gjennom
- tid
- tidkrevende
- sammen
- token
- verktøy
- topp
- Kurs
- Transaksjoner
- unik
- universitet
- University of Cambridge
- Oppdater
- URI
- us
- USD
- verdi
- versjon
- syn
- W
- web
- webtjenester
- Web-basert
- Hva
- Hva er
- HVEM
- allment
- innenfor
- uten
- Arbeid
- arbeid
- ville
- skriving
- X
- år
- youtube