Selv efter mere end hundrede år efter introduktionen er histologi stadig guldstandarden inden for tumordiagnose og -prognose. Anatomiske patologer evaluerer histologi for at stratificere cancerpatienter i forskellige grupper afhængigt af deres tumorgenotyper og fænotyper og deres kliniske resultat [1,2]. Imidlertid er menneskelig evaluering af histologiske objektglas subjektiv og ikke gentagelig [3]. Ydermere er histologisk vurdering en tidskrævende proces, der kræver højt uddannede fagfolk.
Med betydelige teknologiske fremskridt i det sidste årti, er teknikker som hele diasbilleddannelse (WSI) og deep learning (DL) nu bredt tilgængelige. WSI er scanning af konventionelle mikroskopiglasobjektglas for at producere et enkelt billede i høj opløsning fra disse objektglas. Dette giver mulighed for digitalisering og indsamling af store sæt af patologibilleder, hvilket ville have været uoverkommeligt tidskrævende og dyrt. Tilgængeligheden af sådanne datasæt skaber nye og innovative måder at fremskynde diagnosticering ved at bruge teknikker såsom machine learning (ML) til at hjælpe patologer med at fremskynde diagnoser ved hurtigt at identificere funktioner af interesse.
I dette indlæg vil vi undersøge, hvordan udviklere uden tidligere ML-erfaring kan bruge Tilpassede etiketter til Amazon-genkendelse at træne en model, der klassificerer cellulære funktioner. Amazon Rekognition Custom Labels er en funktion af Amazon-anerkendelse der giver dig mulighed for at bygge dine egne specialiserede ML-baserede billedanalysefunktioner for at detektere unikke objekter og scener, der er integreret i din specifikke brugssituation. Især bruger vi et datasæt, der indeholder hele diasbilleder af hunde brystcarcinom [1] til at demonstrere, hvordan man behandler disse billeder og træner en model, der detekterer mitotiske figurer. Dette datasæt er blevet brugt med tilladelse fra prof. Dr. Marc Aubreville, som venligt har indvilliget i at tillade os at bruge det til dette indlæg. For mere information, se afsnittet Anerkendelser i slutningen af dette indlæg.
Løsningsoversigt
Løsningen består af to komponenter:
- En Amazon Rekognition Custom Labels-model — For at gøre det muligt for Amazon Rekognition at detektere mitotiske figurer, fuldfører vi følgende trin:
- Prøve WSI-datasættet for at producere billeder i tilstrækkelig størrelse ved hjælp af Amazon SageMaker Studio og en Python-kode, der kører på en Jupyter-notebook. Studio er et webbaseret, integreret udviklingsmiljø (IDE) til ML, der giver alle de værktøjer, du skal bruge for at tage dine modeller fra eksperimentering til produktion, mens du øger din produktivitet. Vi vil bruge Studio til at opdele billederne i mindre for at træne vores model.
- Træn en Amazon Rekognition Custom Labels-model til at genkende mitotiske figurer i hæmatoxylin-eosin-prøver ved hjælp af de data, der er udarbejdet i det foregående trin.
- En frontend-applikation — For at demonstrere, hvordan man bruger en model som den, vi trænede i det foregående trin, fuldfører vi følgende trin:
Følgende diagram illustrerer løsningsarkitekturen.
Alle de nødvendige ressourcer til at implementere implementeringen diskuteret i dette indlæg og koden for hele afsnittet er tilgængelige på GitHub. Du kan klone eller forgrene depotet, foretage de ændringer, du ønsker, og køre det selv.
I de næste trin gennemgår vi koden for at forstå de forskellige trin, der er involveret i at indhente og forberede dataene, træne modellen og bruge den fra en prøveapplikation.
Omkostninger
Når du kører trinene i denne gennemgang, pådrager du dig små omkostninger ved at bruge følgende AWS-tjenester:
- Amazon-anerkendelse
- AWS Fargate
- Application Load Balancer
- AWS Secrets Manager
Derudover, hvis du ikke længere er inden for Free Tier-perioden eller -betingelserne, kan du pådrage dig omkostninger fra følgende tjenester:
- CodePipeline
- CodeBuild
- Amazon ECR
- Amazon SageMaker
Hvis du fuldfører oprydningstrinene korrekt efter at have afsluttet denne gennemgang, kan du forvente, at omkostningerne er mindre end 10 USD, hvis Amazon Rekognition Custom Labels-modellen og webapplikationen kører i en time eller mindre.
Forudsætninger
For at fuldføre alle trin skal du bruge følgende:
Træning af den mitotiske figurklassifikationsmodel
Vi kører alle de nødvendige trin for at træne modellen fra en Studio-notesbog. Hvis du aldrig har brugt Studio før, skal du muligvis ombord først. For mere information, se Kom hurtigt ombord til Amazon SageMaker Studio.
Nogle af de følgende trin kræver mere RAM end hvad der er tilgængeligt i en standard ml.t3.medium notebook. Sørg for, at du har valgt en ml.m5.large notesbog. Du bør se en 2 vCPU + 8 GiB indikation i øverste højre hjørne af siden.
Koden til dette afsnit er tilgængelig som en Jupyter notesbog fil.
Efter onboarding til Studio, følg disse instruktioner at give Studio de nødvendige tilladelser til at ringe til Amazon Rekognition på dine vegne.
Afhængigheder
Til at begynde med skal vi udføre følgende trin:
- Opdater Linux-pakker og installer de nødvendige afhængigheder, såsom OpenSlide:
- Installer fastai- og SlideRunner-bibliotekerne ved hjælp af pip:
- Download datasættet (vi leverer et script til at gøre dette automatisk):
Bearbejd datasættet
Vi vil begynde med at importere nogle af de pakker, som vi bruger i hele dataforberedelsesfasen. Derefter downloader og indlæser vi annotationsdatabasen for dette datasæt. Denne database indeholder positionerne i hele diasbillederne af de mitotiske figurer (de funktioner, vi ønsker at klassificere). Se følgende kode:
Fordi vi bruger SageMaker, opretter vi en ny SageMaker Session objekt for at lette opgaver såsom at uploade vores datasæt til en Amazon Simple Storage Service (Amazon S3) spand. Vi bruger også S3-bøtten, som SageMaker opretter som standard til at uploade vores behandlede billedfiler.
slidelist_test
array indeholder ID'erne for de slides, som vi bruger som en del af testdatasættet til at evaluere ydeevnen af den trænede model. Se følgende kode:
Det næste trin er at få et sæt trænings- og testslides sammen med etiketterne på dem, hvorfra vi kan tage mindre områder til at bruge til at træne vores model. Koden til get_slides er i filen sampling.py i GitHub.
Vi ønsker at tage stikprøver fra trænings- og testslides. Vi bruger listerne med trænings- og testslides og vælger tilfældigt n_training_images
gange en fil til træning, og n_test_images
gange en fil til test:
Dernæst opretter vi en mappe til træningsbilleder og en til testbilleder:
Før vi producerer de mindre billeder, der skal til for at træne modellen, har vi brug for noget hjælpekode, der producerer de metadata, der skal til for at beskrive trænings- og testdata. Den følgende kode sikrer, at en given afgrænsningsramme, der omgiver de interessante træk (mitotiske figurer) er godt inden for den zone, vi skærer, og producerer en linje af JSON, der beskriver billedet og funktionerne i det i Amazon SageMaker Ground Truth format, som er det format, Amazon Rekognition Custom Labels kræver. For mere information om denne manifestfil til objektdetektering, se Objektlokalisering i manifestfiler.
Med generate_annotations
funktion på plads, kan vi skrive koden til at producere trænings- og testbillederne:
Det sidste skridt mod at have alle de nødvendige data er at skrive en manifest.json
fil for hvert af datasættene:
Overfør filerne til S3
Vi bruger upload_data
metode, som SageMaker-sessionsobjektet eksponerer for at uploade billederne og manifestfilerne til standard SageMaker S3-bøtten:
Træn en Amazon Rekognition Custom Labels-model
Med dataene allerede i Amazon S3, kan vi komme til at træne en tilpasset model. Vi bruger Boto3-biblioteket til at oprette en Amazon Rekognition-klient og oprette et projekt:
Med projektet klar til brug, har du nu brug for en projektversion, der peger på trænings- og testdatasættene i Amazon S3. Hver version peger ideelt set på forskellige datasæt (eller forskellige versioner af det). Dette gør det muligt for os at have forskellige versioner af en model, sammenligne deres ydeevne og skifte mellem dem efter behov. Se følgende kode:
Efter at vi har oprettet projektversionen, starter Amazon Rekognition automatisk træningsprocessen. Træningstiden afhænger af flere funktioner, såsom størrelsen på billederne og antallet af dem, antallet af klasser og så videre. I dette tilfælde, for 500 billeder, tager træningen omkring 90 minutter at afslutte.
Test modellen
Efter træning er hver model i Amazon Rekognition Custom Labels i STOPPED
stat. For at bruge det til slutninger, skal du starte det. Vi henter projektversionen ARN fra projektversionsbeskrivelsen og videregiver den til start_project_version
. Læg mærke til MinInferenceUnits
parameter — vi starter med en inferensenhed. Det faktiske maksimale antal transaktioner pr. sekund (TPS), som denne slutningsenhed understøtter, afhænger af kompleksiteten af din model. For at lære mere om TPS, se dette blogindlæg.
Når din projektversion er angivet som RUNNING
, kan du begynde at sende billeder til Amazon Rekognition til slutning.
Vi bruger en af filerne i testdatasættet til at teste den nystartede model. Du kan bruge enhver passende PNG- eller JPEG-fil i stedet for.
Strømbelyst applikation
For at demonstrere integrationen med Amazon Rekognition bruger vi en meget simpel Python-applikation. Vi bruger Strømbelyst bibliotek til at bygge en spartansk brugergrænseflade, hvor vi beder brugeren om at uploade en billedfil.
Vi bruger Boto3-biblioteket og detect_custom_labels
metode, sammen med projektversionen ARN, til at påkalde inferensendepunktet. Svaret er et JSON-dokument, der indeholder positionerne og klasserne for de forskellige objekter, der er registreret i billedet. I vores tilfælde er det de mitotiske figurer, som algoritmen har fundet i det billede, vi sendte til slutpunktet. Se følgende kode:
Implementer applikationen til AWS
For at implementere applikationen bruger vi et AWS CDK-script. Hele projektet kan findes på GitHub . Lad os se på de forskellige ressourcer, der er implementeret af scriptet.
Opret et Amazon ECR-lager
Som det første skridt i retning af opsætning af vores implementering opretter vi et Amazon ECR-lager, hvor vi kan gemme vores applikationscontainerbilleder:
Opret og gem dit GitHub-token i AWS Secrets Manager
CodePipeline har brug for et GitHub Personal Access Token for at overvåge dit GitHub-lager for ændringer og pull-kode. For at oprette tokenet skal du følge instruktionerne i GitHub dokumentation. Tokenet kræver følgende GitHub-omfang:
-
repo
scope, som bruges til fuld kontrol til at læse og trække artefakter fra offentlige og private depoter ind i en pipeline. -
admin:repo_hook
scope, som bruges til fuld kontrol af depotkroge.
Når du har oprettet tokenet, skal du gemme det i en ny hemmelighed i AWS Secrets Manager som følger:
Skriv konfigurationsparametre til AWS Systems Manager Parameter Store
AWS CDK-scriptet læser nogle konfigurationsparametre fra AWS Systems Manager Parameter Store, såsom navn og ejer af GitHub-lageret, og målkonto og region. Før du starter AWS CDK-scriptet, skal du oprette disse parametre på din egen konto.
Du kan gøre det ved at bruge AWS CLI. Du skal blot påberåbe put-parameter
kommando med et navn, en værdi og typen af parameteren:
Det følgende er en liste over alle parametre, der kræves af AWS CDK-scriptet. Alle af dem er af typen String
:
- /rek_wsi/prod/accountId — ID'et på den konto, hvor vi implementerer applikationen.
- /rek_wsi/prod/ecr_repo_name — Navnet på Amazon ECR-lageret, hvor containerbillederne er gemt.
- /rek_wsi/prod/github/branch — Den gren i GitHub-lageret, hvorfra CodePipeline skal trække koden.
- /rek_wsi/prod/github/owner — Ejeren af GitHub-lageret.
- /rek_wsi/prod/github/repo — Navnet på GitHub-lageret, hvor vores kode er gemt.
- /rek_wsi/prod/github/token — Navnet eller ARN på hemmeligheden i Secrets Manager, der indeholder dit GitHub-godkendelsestoken. Dette er nødvendigt for at CodePipeline kan kommunikere med GitHub.
- /rek_wsi/prod/region — Den region, hvor vi vil implementere applikationen.
Læg mærke til prod
segment i alle parameternavne. Selvom vi ikke har brug for denne detaljeringsgrad for et så simpelt eksempel, vil det gøre det muligt at genbruge denne tilgang med andre projekter, hvor forskellige miljøer kan være nødvendige.
Ressourcer oprettet af AWS CDK-scriptet
Vi skal bruge vores applikation, der kører i en Fargate-opgave, for at have tilladelser til at påberåbe sig Amazon Rekognition. Så vi opretter først en AWS identitets- og adgangsstyring (IAM) Opgaverolle med RekognitionReadOnlyPolicy
politik knyttet til det. Bemærk, at assumed_by
parameter i følgende kode tager ecs-tasks.amazonaws.com
serviceleder. Dette skyldes, at vi bruger Amazon ECS som orkestrator, så vi har brug for Amazon ECS til at påtage sig rollen og videregive legitimationsoplysningerne til Fargate-opgaven.
Når vores applikationscontainerbillede er bygget, ligger det i et privat Amazon ECR-lager. Vi har brug for et objekt, der beskriver det, som vi kan passere, når vi opretter Fargate-tjenesten:
Vi opretter en ny VPC og klynge til denne applikation. Du kan ændre denne del til at bruge din egen VPC ved at bruge from_lookup
metode af Vpc
klasse:
Nu hvor vi har en VPC og klynge at implementere til, opretter vi Fargate-tjenesten. Vi bruger 0.25 vCPU og 512 MB RAM til denne opgave, og vi placerer en offentlig Application Load Balancer (ALB) foran den. Når den er implementeret, bruger vi ALB CNAME til at få adgang til applikationen. Se følgende kode:
For automatisk at bygge og implementere et nyt containerbillede, hver gang vi skubber kode til vores hovedgren, opretter vi en simpel pipeline bestående af en GitHub-kildehandling og et byggetrin. Det er her, vi bruger de hemmeligheder, vi gemte i AWS Secrets Manager og AWS Systems Manager Parameter Store i de foregående trin.
CodeBuild har brug for tilladelser til at skubbe containerbilleder til Amazon ECR. For at give disse tilladelser tilføjer vi AmazonEC2ContainerRegistryFullAccess
politik til en skræddersyet IAM-rolle, som CodeBuild-tjenestens principal kan påtage sig:
CodeBuild-projektet logger ind på det private Amazon ECR-lager, bygger Docker-billedet med Streamlit-applikationen og skubber billedet ind i depotet sammen med en appspec.yaml
og en imagedefinitions.json
fil.
appspec.yaml
fil beskriver opgaven (port, Fargate platform version, og så videre), mens imagedefinitions.json
fil kortlægger navnene på containerbillederne til deres tilsvarende Amazon ECR URI. Se følgende kode:
Til sidst sætter vi de forskellige pipeline-faser sammen. Den sidste handling er EcsDeployAction
, som tager containerbilledet bygget i det foregående trin og laver en løbende opdatering af opgaverne i vores ECS-klynge:
Ryd op
For at undgå fremtidige omkostninger skal du rydde op i de ressourcer, du har oprettet som en del af denne løsning.
Amazon Rekognition Custom Labels model
Før du lukker ned for din Studio-notebook, skal du sørge for at stoppe Amazon Rekognition Custom Labels-modellen. Hvis du ikke gør det, fortsætter det med at medføre omkostninger.
Alternativt kan du bruge Amazon Rekognition-konsollen til at stoppe tjenesten:
- På Amazon Rekognition-konsollen skal du vælge Brug tilpassede etiketter i navigationsruden.
- Vælg Projekter i navigationsruden.
- Vælg version 1 af
rek-mitotic-figures-workshop
projekt. - På Brug model fanebladet, vælg Stands.
Strømbelyst applikation
For at ødelægge alle ressourcer, der er knyttet til Streamlit-applikationen, skal du køre følgende kode fra AWS CDK-applikationsmappen:
AWS Secrets Manager
For at slette GitHub-tokenet skal du følge instruktionerne i dokumentation.
Konklusion
I dette indlæg gennemgik vi de nødvendige trin for at træne en Amazon Rekognition Custom Labels-model til en digital patologiapplikation ved hjælp af data fra den virkelige verden. Vi lærte derefter, hvordan man bruger modellen fra en simpel applikation implementeret fra en CI/CD-pipeline til Fargate.
Amazon Rekognition Custom Labels giver dig mulighed for at bygge ML-aktiverede sundhedsapplikationer, som du nemt kan bygge og implementere ved hjælp af tjenester som Fargate, CodeBuild og CodePipeline.
Kan du komme i tanke om applikationer til at hjælpe forskere, læger eller deres patienter med at gøre deres liv lettere? Hvis ja, brug koden i denne gennemgang til at bygge din næste applikation. Og hvis du har spørgsmål, så del dem i kommentarfeltet.
Tak
Vi vil gerne takke prof. Dr. Marc Aubreville for venligt at give os tilladelse til at bruge MITOS_WSI_CMC-datasættet til dette blogindlæg. Datasættet kan findes på GitHub.
Referencer
[1] Aubreville, M., Bertram, CA, Donovan, TA et al. Et fuldstændigt kommenteret hele diasbilleddatasæt af brystkræft hos hunde til støtte for forskning i brystkræft hos mennesker. Sci Data 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et al. En generaliseret deep learning-ramme for segmentering og analyse af hele diasbilleder. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27. marts 2018 115 (13) E2970-E2979; første gang udgivet 12. marts 2018; https://doi.org/10.1073/pnas.1717139115
Om forfatteren
Pablo Nuñez Pölcher, MSc, er en Senior Solutions Architect, der arbejder for teamet i den offentlige sektor med Amazon Web Services. Pablo fokuserer på at hjælpe kunder i sundhedssektoren med at bygge nye, innovative produkter på AWS i overensstemmelse med bedste praksis. Han fik sin M.Sc. i biologiske videnskaber fra Universidad de Buenos Aires. I sin fritid nyder han at cykle og pille ved ML-aktiverede indlejrede enheder.
Razvan Ionasec, PhD, MBA, er teknisk leder for sundhedspleje hos Amazon Web Services i Europa, Mellemøsten og Afrika. Hans arbejde fokuserer på at hjælpe sundhedskunder med at løse forretningsproblemer ved at udnytte teknologi. Tidligere var Razvan den globale leder af kunstig intelligens (AI)-produkter hos Siemens Healthineers med ansvar for AI-Rad Companion, familien af AI-drevne og cloud-baserede digitale sundhedsløsninger til billeddannelse. Han har mere end 30 patenter inden for AI/ML til medicinsk billeddannelse og har udgivet mere end 70 internationale peer-reviewede tekniske og kliniske publikationer om computersyn, beregningsmodellering og medicinsk billedanalyse. Razvan modtog sin ph.d. i datalogi fra Technical University München og MBA fra University of Cambridge, Judge Business School.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Om
- fremskynde
- adgang
- Konto
- Handling
- afrika
- AI
- algoritme
- Alle
- allerede
- Skønt
- Amazon
- Amazon-anerkendelse
- Amazon SageMaker
- Amazon Web Services
- analyse
- Anvendelse
- applikationer
- APT
- arkitektur
- kunstig
- kunstig intelligens
- Kunstig intelligens (AI)
- Aktiver
- Godkendelse
- tilgængelighed
- til rådighed
- AWS
- swing
- BEDSTE
- bedste praksis
- Blog
- fremme
- Boks
- Brystkræft
- bygge
- virksomhed
- ringe
- Cambridge
- Kan få
- Kræft
- kræftforskning
- afgift
- klassificering
- kode
- samling
- kommentarer
- Datalogi
- Computer Vision
- tillid
- Konfiguration
- Konsol
- Container
- Beholdere
- indeholder
- fortsætter
- Omkostninger
- Oprettelse af
- Legitimationsoplysninger
- Kunder
- data
- Database
- databaser
- dyb læring
- ødelægge
- detail
- Detektion
- udviklere
- Udvikling
- Enheder
- forskellige
- digital
- Digital sundhed
- digitalisering
- Docker
- Læger
- ned
- nemt
- ekko
- Endpoint
- Miljø
- Europa
- eksempel
- erfaring
- eksport
- familie
- Feature
- Funktionalitet
- Figur
- Fornavn
- følger
- gaffel
- format
- fundet
- Framework
- Gratis
- fuld
- funktion
- fremtiden
- generere
- geometri
- GitHub
- Give
- Global
- Guld
- indrømme
- tilskud
- have
- hoved
- Helse
- sundhedspleje
- hjælpe
- link.
- Hvordan
- How To
- HTTPS
- IAM
- Identity
- billede
- billedanalyse
- billedsegmentering
- Imaging
- importere
- oplysninger
- innovativ
- integral
- integration
- Intelligens
- interesse
- internationalt
- involverede
- IT
- Jupyter Notebook
- Etiketter
- stor
- seneste
- lancering
- LÆR
- lærte
- læring
- Niveau
- Bibliotek
- Line (linje)
- linux
- Liste
- Lister
- belastning
- Lokalisering
- machine learning
- Maps
- Marts
- medicinsk
- medicinsk billeddannelse
- medium
- Middle East
- ML
- model
- modellering
- modeller
- mere
- München
- navne
- Navigation
- behov
- Objektdetektion
- onboarding
- Andet
- ejer
- Patenter
- patologi
- patienter
- ydeevne
- personale
- perron
- politik
- Main
- private
- behandle
- produktion
- produktivitet
- Produkter
- professionelle partnere
- projekt
- projekter
- give
- giver
- offentlige
- offentlige sektor
- publikationer
- Python
- RAM
- forskning
- Ressourcer
- svar
- Kør
- kører
- sagemaker
- scanning
- Skole
- Videnskab
- VIDENSKABER
- sektor
- valgt
- Tjenester
- sæt
- indstilling
- Del
- Siemens
- signifikant
- Simpelt
- Størrelse
- lille
- So
- Løsninger
- SOLVE
- Space
- specialiserede
- delt
- Stage
- starte
- påbegyndt
- Tilstand
- Status
- opbevaring
- butik
- Studio
- Understøtter
- Kontakt
- Systemer
- mål
- Teknisk
- teknikker
- Teknologier
- prøve
- The Source
- Gennem
- tid
- tidskrævende
- sammen
- token
- værktøjer
- top
- Kurser
- Transaktioner
- enestående
- universitet
- University of Cambridge
- Opdatering
- URI
- us
- USD
- værdi
- udgave
- vision
- W
- web
- webservices
- web-baseret
- Hvad
- Hvad er
- WHO
- bredt
- inden for
- uden
- Arbejde
- arbejder
- ville
- skrivning
- X
- år
- youtube