Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bygg en lösning för en klassificering av hudskador med datorseende med Amazon SageMaker Pipelines

Amazon SageMaker-rörledningar är en tjänst för kontinuerlig integration och kontinuerlig leverans (CI/CD) designad för användningsfall för maskininlärning (ML). Du kan använda den för att skapa, automatisera och hantera end-to-end ML-arbetsflöden. Den tar sig an utmaningen att orkestrera varje steg i en ML-process, vilket kräver tid, ansträngning och resurser. För att underlätta användningen finns flera mallar tillgängliga som du kan anpassa efter dina behov.

Fullt hanterade bild- och videoanalystjänster har också påskyndat införandet av datorvisionslösningar. AWS erbjuder en förutbildad och fullt hanterad AWS AI-tjänst som heter Amazon-erkännande som kan integreras i datorvisionsapplikationer med API-anrop och kräver ingen ML-erfarenhet. Du behöver bara ge en bild till API för Amazon Rekognition och den kan identifiera de nödvändiga objekten enligt fördefinierade etiketter. Det är också möjligt att tillhandahålla skräddarsydda etiketter som är specifika för ditt användningsfall och bygga en skräddarsydd datorseendemodell med litet eller inget behov av ML-expertis.

I det här inlägget tar vi upp ett specifikt problem med datorseende: klassificering av hudskador och använder Pipelines genom att anpassa en befintlig mall och skräddarsy den för denna uppgift. Noggrann klassificering av hudskador kan hjälpa till med tidig diagnos av cancersjukdomar. Det är dock en utmanande uppgift inom det medicinska området, eftersom det finns en stor likhet mellan olika typer av hudskador. Pipelines gör att vi kan dra nytta av en mängd olika befintliga modeller och algoritmer, och etablera en end-to-end-producerad pipeline med minimal ansträngning och tid.

Lösningsöversikt

I det här inlägget bygger vi en end-to-end pipeline med hjälp av Pipelines för att klassificera dermatoskopiska bilder av vanliga pigmenterade hudskador. Vi använder Amazon SageMaker Studio projektmall MLOps-mall för att bygga, utbilda och distribuera modeller och koden i följande GitHub repository. Den resulterande arkitekturen visas i följande figur.

För denna pipeline använder vi datauppsättningen HAM10000 ("Human Against Machine with 10000 training images"), som består av 10,015 XNUMX dermatoskopiska bilder. Uppgiften är en klassificering i flera klasser inom området datorseende. Denna datauppsättning visar sex av de viktigaste diagnostiska kategorierna inom området för pigmenterade lesioner: aktiniska keratoser och intraepitelial karcinom eller Bowens sjukdom (akiec), basalcellscancer (bcc), benigna keratosliknande lesioner (sollentiginer eller seborroiska keratoser och lichen-planus som keratoser, bkl), dermatofibrom (df), melanom (mel), melanocytiska nevi (nv), och vaskulära lesioner (angiom, angiokeratom, pyogena granulom och blödningar, vasc).

För formatet på modellens indata använder vi RecordIO formatera. Detta är ett kompakt format som lagrar bilddata tillsammans för kontinuerlig läsning och därför snabbare och effektivare träning. Dessutom är en av utmaningarna med att använda HAM10000-datauppsättningen klassobalansen. Följande tabell illustrerar klassfördelningen.

Klass akiec bcc bkl df mel nv mistel
Antal bilder 327 514 1099 115 1113 6705 142
Totalt 10015

För att lösa detta problem utökar vi datasetet med slumpmässiga transformationer (som beskärning, vändning, spegling och rotering) för att få alla klasser med ungefär samma antal bilder.

Detta förbearbetningssteg använder MXNet och OpenCV, därför använder det en förbyggd MXNet-containerbild. Resten av beroenden installeras med hjälp av en requirements.txt fil. Om du vill skapa och använda en anpassad bild, se Skapa Amazon SageMaker-projekt med bildbyggande CI/CD-pipelines.

För träningssteget använder vi estimatorn som är tillgänglig från SageMaker inbyggda Scikit Docker-bild för bildklassificering och ställer in parametrarna enligt följande:

hyperparameters = {
        "num_layers": 18,
        "use_pretrained_model": 1,
        "augmentation_type": 'crop_color_transform',
        "image_shape": '3,224,224', 
        "num_classes": 7,
        "num_training_samples": 29311, 
        "mini_batch_size": 8,
        "epochs": 5, 
        "learning_rate": 0.00001,
        "precision_dtype": 'float32'
    }

    estimator_config = {
        "hyperparameters": hyperparameters,
        "image_uri": training_image,
        "role": role,
        "instance_count": 1,
        "instance_type": "ml.p3.2xlarge",
        "volume_size": 100,
        "max_run": 360000,
        "output_path": "s3://{bucket}/{base_job_prefix}/training_jobs",
    }
    
    image_classifier = sagemaker.estimator.Estimator(**estimator_config)

För ytterligare information om behållarbilden, se Bildklassificeringsalgoritm.

Skapa ett Studio-projekt

För detaljerade instruktioner om hur du ställer in Studio, se Ombord på Amazon SageMaker Domain med snabbinställning. För att skapa ditt projekt, slutför följande steg:

  1. I Studio väljer du Projekt menyn på SageMaker-resurser meny.
    Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    På projektsidan kan du lansera en förkonfigurerad SageMaker MLOps-mall.
  2. Välja MLOps-mall för modellbyggnad, utbildning och distribution.
  3. Välja Välj projektmall.
    Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  4. Ange ett projektnamn och en kort beskrivning.
  5. Välja Skapa projekt.

Projektet tar några minuter att skapa.

Förbered datasetet

Utför följande steg för att förbereda datamängden:

  1. Gå till Harvard DataVerse.
  2. Välja Få tillgång till datauppsättning, och granska licensen Creative Commons Attribution-NonCommercial 4.0 International Public License.
  3. Om du accepterar licensen, välj Zip i originalformat och ladda ner ZIP-filen.
  4. Skapa ett Amazon enkel lagringstjänst (Amazon S3) hink och välj ett namn som börjar med sagemaker (detta tillåter SageMaker att komma åt hinken utan några extra behörigheter).
  5. Du kan aktivera åtkomstloggning och kryptering för bästa säkerhetspraxis.
  6. Ladda dataverse_files.zip till hinken.
  7. Spara S3-skopbanan för senare användning.
  8. Anteckna namnet på hinken du har lagrat data i, och namnen på eventuella efterföljande mappar, för att använda senare.

Förbered för dataförbehandling

Eftersom vi använder MXNet och OpenCV i vårt förbearbetningssteg använder vi en förbyggd MXNet Docker-avbildning och installerar de återstående beroenden med hjälp av requirements.txt fil. För att göra det måste du kopiera den och klistra in den under pipelines/skin i sagemaker--modelbuild förvaret. Lägg dessutom till MANIFEST.in fil på samma nivå som setup.py, för att berätta för Python att inkludera requirements.txt fil. För mer information om MANIFEST.in, hänvisa till Inkluderar filer i källdistributioner med MANIFEST.in. Båda filerna finns i GitHub repository.

Ändra mallen Pipelines

För att uppdatera Pipelines-mallen, utför följande steg:

  1. Skapa en mapp i standardhinken.
  2. Se till att Studio-exekveringsrollen har tillgång till standardbucket såväl som hinken som innehåller datamängden.
  3. Från listan över projekt väljer du det du just skapade.
  4. arkiv fliken väljer du hyperlänkarna för att lokalt klona AWS CodeCommit arkiv till din lokala Studio-instans.
    Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Navigera till pipelines katalog inuti sagemaker--modelbuild katalog och byt namn på abalone katalog till skin.
  6. Öppna codebuild-buildspec.yml fil i sagemaker--modelbuild katalogen och ändra sökvägen för körledningen från run-pipeline —module-name pipelines.abalone.pipeline (rad 15) till följande:
    run-pipeline --module-name pipelines.skin.pipeline 

  7. Spara filen.
  8. Byt ut filerna pipelines.py, preprocess.pyoch evaluate.py i pipelines-katalogen med filerna från GitHub repository.
    Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  9. Uppdatera preprocess.py fil (rad 183-186) med S3-platsen (SKIN_CANCER_BUCKET) och mappnamn (SKIN_CANCER_BUCKET_PATH) där du laddade upp dataverse_files.zip arkiv:
    1. skin_cancer_bucket=””
    2. skin_cancer_bucket_path=””
    3. skin_cancer_files=””
    4. skin_cancer_files_ext=””

I det föregående exemplet skulle datauppsättningen lagras under s3://monai-bucket-skin-cancer/skin_cancer_bucket_prefix/dataverse_files.zip.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Utlösa en pipelinekörning

Genom att skjuta in bekräftade ändringar till CodeCommit-förvaret (gjort på fliken Studio källkontroll) utlöses en ny pipelinekörning, eftersom en Amazon EventBridge händelseövervakare för åtaganden. Vi kan övervaka körningen genom att välja pipeline i SageMaker-projektet. Följande skärmdump visar ett exempel på en pipeline som kördes framgångsrikt.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  1. För att genomföra ändringarna, navigera till Git-sektionen i den vänstra rutan.
  2. Iscensätt alla relevanta ändringar. Du behöver inte hålla reda på -checkpoint fil. Du kan lägga till en post i .gitignore fil med *checkpoint.* att ignorera dem.
  3. Genomför ändringarna genom att ange en sammanfattning samt ditt namn och en e-postadress.
  4. Tryck på ändringarna.
  5. Navigera tillbaka till projektet och välj Rörledningar sektion.
  6. Om du väljer pipelines som pågår visas stegen i pipeline.
    Detta låter dig övervaka steget som för närvarande körs. Det kan ta ett par minuter innan pipelinen visas. För att pipelinen ska börja köra, stegen definierade i CI/CD codebuild-buildspec.yml måste köras framgångsrikt. För att kontrollera statusen för dessa steg kan du använda AWS CodeBuild. För mer information, se AWS CodeBuild (AMS SSPS).
  7. När pipelinen är klar, gå tillbaka till projektsidan och välj Modellgrupper fliken för att inspektera metadata som är kopplade till modellartefakterna.
  8. Om allt ser bra ut, välj det Uppdatera status och godkänn modellen manuellt. Standard ModelApprovalStatus är inställd på PendingManualApproval. Om vår modell har mer än 60% noggrannhet läggs den till i modellregistret, men distribueras inte förrän det manuella godkännandet är klart.
  9. Navigera till endpoints sida på SageMaker-konsolen, där du kan se en iscensättningsändpunkt skapas. Efter några minuter listas slutpunkten med InService status.
  10. För att distribuera slutpunkten i produktion, på CodePipeline konsolen, välj sagemaker--modeldeploy pipeline som för närvarande pågår.
  11. I slutet av DeployStaging fas måste du godkänna distributionen manuellt.

Efter detta steg kan du se produktionsslutpunkten distribueras på SageMaker endpoints sida. Efter ett tag visas slutpunkten som InService.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Städa upp

Du kan enkelt rensa upp alla resurser som skapats av SageMaker-projektet.

  1. Välj i navigeringsfönstret i Studio SageMaker-resurser.
  2. Välja Projekt från rullgardinsmenyn och välj ditt projekt.
  3. Handlingar meny, välj Radera för att ta bort alla relaterade resurser.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Resultat och nästa steg

Vi använde framgångsrikt Pipelines för att skapa ett heltäckande MLOps-ramverk för klassificering av hudskador med hjälp av en inbyggd modell på HAM10000-datauppsättningen. För parametrarna som tillhandahålls i förvaret fick vi följande resultat på testsetet.

metrisk Precision Recall F1-poäng
Värde 0.643 0.8 0.713

Du kan arbeta vidare med att förbättra modellens prestanda genom att finjustera dess hyperparametrar, lägga till fler transformationer för dataökning eller använda andra metoder, såsom Synthetic Minority Oversampling Technique (SMOTE) eller Generative Adversarial Networks (GAN). Dessutom kan du använda din egen modell eller algoritm för träning genom att använda inbyggda SageMaker Docker-bilder eller anpassa din egen container för att fungera på SageMaker. För ytterligare information, se Använda Docker -behållare med SageMaker.

Du kan också lägga till ytterligare funktioner till din pipeline. Om du vill inkludera övervakning kan du välja MLOps mall för modellbygge, utbildning, driftsättning och övervakning mall när du skapar SageMaker-projektet. Den resulterande arkitekturen har ett extra övervakningssteg. Eller om du har ett befintligt Git-förråd från tredje part kan du använda det genom att välja MLOps-mall för modellbyggande, utbildning och distribution med tredjeparts Git-förråd med Jenkins projekt och tillhandahåller information för både modellbyggande och modellinstallationsförråd. Detta gör att du kan använda vilken befintlig kod som helst och sparar tid eller ansträngning på integration mellan SageMaker och Git. Men för detta alternativ, a AWS CodeStar anslutning krävs.

Slutsats

I det här inlägget visade vi hur man skapar ett end-to-end ML-arbetsflöde med Studio och automatiserade pipelines. Arbetsflödet inkluderar att hämta datauppsättningen, lagra den på en plats som är tillgänglig för ML-modellen, konfigurera en containerbild för förbearbetning och sedan modifiera boilerplate-koden för att passa en sådan bild. Sedan visade vi hur man triggar pipelinen, stegen som pipelinen följer och hur de fungerar. Vi diskuterade också hur man övervakar modellens prestanda och distribuerar modellen till en slutpunkt.

Vi utförde de flesta av dessa uppgifter inom Studio, som fungerar som en allomfattande ML IDE, och påskyndar utvecklingen och driftsättningen av sådana modeller.

Denna lösning är inte bunden till hudklassificeringsuppgiften. Du kan utöka den till valfri klassificerings- eller regressionsuppgift med någon av SageMakers inbyggda algoritmer eller förtränade modeller.


Om författarna

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Mariem Kthiri är AI/ML-konsult på AWS Professional Services Globals och ingår i teamet Health Care and Life Science (HCLS). Hon brinner för att bygga ML-lösningar för olika problem och alltid sugen på att hoppa på nya möjligheter och initiativ. Hon bor i München, Tyskland och är sugen på att resa och upptäcka andra delar av världen.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yassine Zaafouri är AI/ML-konsult inom Professional Services på AWS. Han gör det möjligt för globala företagskunder att bygga och distribuera AI/ML-lösningar i molnet för att övervinna sina affärsutmaningar. På fritiden tycker han om att spela och titta på sport och att resa runt i världen.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Fotinos Kyriakides är en AI/ML-ingenjör inom Professional Services i AWS. Han brinner för att använda tekniken för att ge kunderna värde och uppnå affärsresultat. Bas i London, på fritiden tycker han om att springa och utforska.

Bygg en lösning för en klassificerare av hudskador med datorseende med hjälp av Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Anna Zapaishchykova var en ProServe-konsult inom AI/ML och medlem i Amazon Healthcare TFC. Hon brinner för teknik och den inverkan den kan ha på vården. Hennes bakgrund är att bygga MLOps och AI-drivna lösningar på kundproblem inom en mängd olika domäner som försäkring, fordon och sjukvård.

Tidsstämpel:

Mer från AWS maskininlärning