Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument

Optisk teckenigenkänning (OCR) är uppgiften att konvertera tryckt eller handskriven text till maskinkodad text. OCR har använts i stor utsträckning i olika scenarier, såsom dokumentelektronisering och identitetsautentisering. Eftersom OCR avsevärt kan minska den manuella ansträngningen att registrera nyckelinformation och fungera som ett ingångssteg för att förstå stora volymer dokument, spelar ett korrekt OCR-system en avgörande roll i den digitala transformationens era.

Gemenskapen med öppen källkod och forskare koncentrerar sig på hur man kan förbättra OCR-noggrannhet, användarvänlighet, integration med förutbildade modeller, förlängning och flexibilitet. Bland många föreslagna ramverk har PaddleOCR fått ökad uppmärksamhet nyligen. Det föreslagna ramverket koncentrerar sig på att uppnå hög noggrannhet samtidigt som beräkningseffektiviteten balanseras. Dessutom gör de förtränade modellerna för kinesiska och engelska det populärt på den kinesiska språkbaserade marknaden. Se den PaddleOCR GitHub repo för mer detaljer.

På AWS har vi också föreslagit integrerade AI-tjänster som är redo att användas utan expertis inom maskininlärning (ML). För att extrahera text och strukturerad data som tabeller och formulär från dokument kan du använda amazontext. Den använder ML-tekniker för att läsa och bearbeta alla typer av dokument, exakt extrahera text, handstil, tabeller och andra data utan manuell ansträngning.

För de datavetare som vill ha flexibiliteten att använda ett ramverk med öppen källkod för att utveckla din egen OCR-modell, erbjuder vi också den fullt hanterade ML-tjänsten Amazon SageMaker. SageMaker gör det möjligt för dig att implementera MLOps bästa praxis under hela ML-livscykeln och tillhandahåller mallar och verktygsuppsättningar för att minska de odifferentierade tunga lyften för att sätta ML-projekt i produktion.

I det här inlägget koncentrerar vi oss på att utveckla skräddarsydda modeller inom PaddleOCR-ramverket på SageMaker. Vi går igenom MLs utvecklingslivscykel för att illustrera hur SageMaker kan hjälpa dig att bygga och träna en modell, och så småningom distribuera modellen som en webbtjänst. Även om vi illustrerar denna lösning med PaddleOCR, gäller den allmänna vägledningen för godtyckliga ramverk som ska användas på SageMaker. Till detta inlägg tillhandahåller vi också exempelkod i GitHub repository.

PaddleOCR ramverk

Som ett allmänt antaget OCR-ramverk innehåller PaddleOCR rich text-detektering, textigenkänning och end-to-end-algoritmer. Den väljer Differentiable Binarization (DB) och Convolutional Recurrent Neural Network (CRNN) som de grundläggande detekterings- och igenkänningsmodellerna, och föreslår en serie modeller, kallade PP-OCR, för industriella tillämpningar efter en serie optimeringsstrategier.

PP-OCR-modellen är inriktad på allmänna scenarier och bildar ett modellbibliotek av olika språk. Den består av tre delar: textidentifiering, boxdetektering och korrigering och textigenkänning, illustrerade i följande figur på PaddleOCR officiella GitHub-förvaret. Du kan också hänvisa till forskningsrapporten PP-OCR: Ett praktiskt ultralätt OCR-system för mer information.

För att vara mer specifik består PaddleOCR av tre på varandra följande uppgifter:

  • Textavkänning – Syftet med textdetektering är att lokalisera textområdet i bilden. Sådana uppgifter kan baseras på ett enkelt segmenteringsnätverk.
  • Boxdetektering och rättelse – Varje textruta måste omvandlas till en horisontell rektangelruta för efterföljande textigenkänning. För att göra detta föreslår PaddleOCR att träna en textriktningsklassificerare (bildklassificeringsuppgift) för att bestämma textriktningen.
  • Textigenkänning – Efter att textrutan har upptäckts, utför textigenkänningsmodellen slutledning på varje textruta och matar ut resultaten enligt textrutans plats. PaddleOCR använder den mycket använda metoden CRNN.

PaddleOCR tillhandahåller högkvalitativa förtränade modeller som är jämförbara med kommersiella effekter. Du kan antingen använda den förtränade modellen för en detektionsmodell, riktningsklassificerare eller igenkänningsmodell, eller så kan du finjustera och omskola varje enskild modell för att tjäna ditt användningsfall. För att öka effektiviteten och effektiviteten i att upptäcka traditionell kinesiska och engelska illustrerar vi hur man finjusterar textigenkänningsmodellen. Den förtränade modellen vi väljer är ch_ppocr_mobile_v2.0_rec_train, som är en lättviktsmodell som stöder kinesiska, engelska och nummerigenkänning. Följande är ett exempel på slutledningsresultat med hjälp av ett Hong Kong-id-kort.

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

I följande avsnitt går vi igenom hur man finjusterar den förtränade modellen med SageMaker.

MLOps bästa praxis med SageMaker

SageMaker är en helt hanterad ML-tjänst. Med SageMaker kan datavetare och utvecklare snabbt och enkelt bygga och träna ML-modeller och sedan direkt distribuera dem i en produktionsklar hanterad miljö.

Många dataforskare använder SageMaker för att påskynda ML-livscykeln. I det här avsnittet illustrerar vi hur SageMaker kan hjälpa dig från experiment till produktionsalisering av ML. Genom att följa standardstegen i ett ML-projekt, från den experimentella frasen (kodutveckling och experiment), till den operativa frasen (automatisering av arbetsflödet för modellbygget och distributionspipelines), kan SageMaker skapa effektivitet i följande steg:

  1. Utforska data och bygg ML-koden med Amazon SageMaker Studio bärbara datorer.
  2. Träna och trimma modellen med ett SageMaker träningsjobb.
  3. Distribuera modellen med en SageMaker-slutpunkt för modellvisning.
  4. Ordna arbetsflödet med Amazon SageMaker-rörledningar.

Följande diagram illustrerar denna arkitektur och arbetsflöde.

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Det är viktigt att notera att du kan använda SageMaker på ett modulärt sätt. Du kan till exempel bygga din kod med en lokal integrerad utvecklingsmiljö (IDE) och träna och distribuera din modell på SageMaker, eller så kan du utveckla och träna din modell i dina egna klusterberäkningskällor och använda en SageMaker-pipeline för arbetsflödesorkestrering och distribuera på en SageMaker-slutpunkt. Detta innebär att SageMaker tillhandahåller en öppen plattform för att anpassa efter dina egna krav.

Se koden i vår GitHub repository och README för att förstå kodstrukturen.

Tillhandahålla ett SageMaker-projekt

Du kan använda Amazon SageMaker-projekt att börja din resa. Med ett SageMaker-projekt kan du hantera versionerna för dina Git-förråd så att du kan samarbeta mellan team mer effektivt, säkerställa kodkonsistens och möjliggöra kontinuerlig integration och kontinuerlig leverans (CI/CD). Även om bärbara datorer är användbara för modellbyggande och experimenterande, när du har ett team av datavetare och ML-ingenjörer som arbetar med ett ML-problem, behöver du ett mer skalbart sätt att upprätthålla kodkonsistens och ha strängare versionskontroll.

SageMaker-projekt skapar en förkonfigurerad MLOps-mall, som innehåller de väsentliga komponenterna för att förenkla PaddleOCR-integrationen:

  • Ett kodlager för att bygga anpassade behållarbilder för bearbetning, utbildning och slutledning, integrerat med CI/CD-verktyg. Detta gör att vi kan konfigurera vår anpassade Docker-bild och trycka till Amazon Elastic Container Registry (Amazon ECR) för att vara redo att användas.
  • En SageMaker-pipeline som definierar steg för dataförberedelse, utbildning, modellutvärdering och modellregistrering. Detta förbereder oss för att vara MLOps redo när ML-projektet går i produktion.
  • Andra användbara resurser, såsom ett Git-förråd för kodversionskontroll, modellgrupp som innehåller modellversioner, kodändringstrigger för modellbyggets pipeline och händelsebaserad trigger för modelldistributionspipelinen.

Du kan använda SageMaker-frökod för att skapa standard SageMaker-projekt, eller en specifik mall som din organisation skapat för teammedlemmar. I det här inlägget använder vi standarden MLOps-mall för bildbyggande, modellbyggnad och modelldistribution. För mer information om att skapa ett projekt i Studio, se Skapa ett MLOps-projekt med Amazon SageMaker Studio.

Utforska data och bygg ML-kod med SageMaker Studio Notebooks

SageMaker Studio-anteckningsböcker är samarbetsbara anteckningsböcker som du kan starta snabbt eftersom du inte behöver ställa in beräkningsinstanser och fillagring i förväg. Många datavetare föredrar att använda denna webbaserade IDE för att utveckla ML-koden, snabbt felsöka bibliotekets API och få saker att fungera med ett litet urval av data för att validera träningsskriptet.

I Studio-anteckningsböcker kan du använda en förbyggd miljö för vanliga ramverk som TensorFlow, PyTorch, Pandas och Scikit-Learn. Du kan installera beroenden till den förbyggda kärnan, eller bygga upp din egen beständiga kärnavbildning. För mer information, se Installera externa bibliotek och kärnor i Amazon SageMaker Studio. Studio-anteckningsböcker tillhandahåller också en Python-miljö för att utlösa SageMaker-utbildningsjobb, distribution eller andra AWS-tjänster. I följande avsnitt illustrerar vi hur du använder Studio-anteckningsböcker som en miljö för att utlösa utbildnings- och distributionsjobb.

SageMaker ger en kraftfull IDE; det är en öppen ML-plattform där datavetare har flexibiliteten att använda sin föredragna utvecklingsmiljö. För datavetare som föredrar en lokal IDE som PyCharm eller Visual Studio Code kan du använda den lokala Python-miljön för att utveckla din ML-kod och använda SageMaker för utbildning i en hanterad skalbar miljö. För mer information, se Kör ditt TensorFlow -jobb på Amazon SageMaker med en PyCharm IDE. När du har en solid modell kan du använda MLOps bästa praxis med SageMaker.

För närvarande tillhandahåller SageMaker också SageMaker notebook-instanser som vår äldre lösning för Jupyter Notebook-miljön. Du har flexibiliteten att köra Docker build-kommandot och använd SageMaker lokalt läge för att träna på din notebook-instans. Vi tillhandahåller även exempelkod för PaddleOCR i vårt kodlager: ./train_and_deploy/notebook.ipynb.

Bygg en anpassad bild med en SageMaker-projektmall

SageMaker använder i stor utsträckning Docker-behållare för bygg- och körningsuppgifter. Du kan enkelt köra din egen container med SageMaker. Se mer tekniska detaljer på Använd dina egna träningsalgoritmer.

Men som dataforskare kanske det inte är enkelt att bygga en container. SageMaker-projekt ger dig ett enkelt sätt att hantera anpassade beroenden genom en bildbyggande CI/CD-pipeline. När du använder ett SageMaker-projekt kan du göra uppdateringar av träningsbilden med din anpassade container Dockerfile. För steg-för-steg-instruktioner, se Skapa Amazon SageMaker-projekt med bildbyggande CI/CD-pipelines. Med strukturen i mallen kan du modifiera den tillhandahållna koden i detta förråd för att bygga en PaddleOCR-utbildningsbehållare.

För det här inlägget visar vi upp enkelheten i att bygga en anpassad bild för bearbetning, utbildning och slutledning. GitHub-repoet innehåller tre mappar:

Dessa projekt följer en liknande struktur. Ta utbildningsbehållarens bild som ett exempel; de image-build-train/ arkivet innehåller följande filer:

  • Filen codebuild-buildspec.yml, som används för att konfigurera AWS CodeBuild så att bilden kan byggas och skjutas till Amazon ECR.
  • Dockerfilen som används för Docker-bygget, som innehåller alla beroenden och träningskoden.
  • Train.py-ingångspunkten för träningsskript, med alla hyperparametrar (som inlärningshastighet och batchstorlek) som kan konfigureras som ett argument. Dessa argument anges när du påbörjar utbildningsjobbet.
  • Beroendena.

När du trycker in koden i motsvarande arkiv utlöses den AWS CodePipeline att bygga en träningscontainer åt dig. Den anpassade behållarbilden lagras i ett Amazon ECR-förråd, som illustreras i föregående figur. En liknande procedur används för att generera slutledningsbilden.

Träna modellen med SageMaker tränings-SDK

Efter att din algoritmkod har validerats och paketerats i en behållare kan du använda ett SageMaker-utbildningsjobb för att tillhandahålla en hanterad miljö för att träna modellen. Den här miljön är tillfällig, vilket innebär att du kan ha separata, säkra beräkningsresurser (som GPU) eller en distribuerad multi-GPU-miljö för att köra din kod. När utbildningen är klar sparar SageMaker de resulterande modellartefakterna till en Amazon enkel lagringstjänst (Amazon S3) plats som du anger. Alla loggdata och metadata finns kvar på AWS Management Console, Studio och amazoncloudwatch.

Utbildningsjobbet innehåller flera viktiga uppgifter:

  • URL:en till S3-skopan där du lagrade träningsdata
  • URL:en till S3-skopan där du vill lagra utdata från jobbet
  • De hanterade beräkningsresurserna som du vill att SageMaker ska använda för modellträning
  • Amazon ECR-vägen där träningsbehållaren förvaras

För mer information om utbildningsjobb, se Tågmodeller. Exempelkoden för utbildningsjobbet finns på experiments-train-notebook.ipynb.

SageMaker gör hyperparametrarna i en CreateTrainingJob begäran tillgänglig i Docker-behållaren i /opt/ml/input/config/hyperparameters.json fil.

Vi använder den anpassade utbildningsbehållaren som ingångspunkt och anger en GPU-miljö för infrastrukturen. Alla relevanta hyperparametrar är detaljerade som parametrar, vilket gör att vi kan spåra varje enskild jobbkonfiguration och jämföra dem med experimentspårningen.

Eftersom datavetenskapsprocessen är mycket forskningsorienterad är det vanligt att flera experiment körs parallellt. Detta kräver ett tillvägagångssätt som håller reda på alla olika experiment, olika algoritmer och potentiellt olika datamängder och hyperparametrar som försökts. Amazon SageMaker Experiments låter dig organisera, spåra, jämföra och utvärdera dina ML-experiment. Det visar vi också i experiments-train-notebook.ipynb. För mer information, se Hantera maskininlärning med Amazon SageMaker-experiment.

Distribuera modellen för modellvisning

När det gäller driftsättning, särskilt för realtidsmodellservering, kan många dataforskare ha svårt att klara sig utan hjälp från operationsteam. SageMaker gör det enkelt att distribuera din tränade modell i produktion med SageMaker Python SDK. Du kan distribuera din modell till SageMakers värdtjänster och få en slutpunkt att använda för realtidsslutning.

I många organisationer är det inte säkert att datavetare är ansvariga för att underhålla endpoint-infrastrukturen. Men att testa din modell som en slutpunkt och garantera korrekt förutsägelsebeteende är verkligen datavetarnas ansvar. Därför förenklade SageMaker uppgifterna för driftsättning genom att lägga till en uppsättning verktyg och SDK för detta.

För användningsfallet i inlägget vill vi ha interaktiva realtidsfunktioner med låg latens. Inferens i realtid är idealisk för denna slutledningsarbetsbelastning. Det finns dock många alternativ som anpassar sig till varje specifikt krav. För mer information, se Distribuera modeller för slutledning.

För att distribuera den anpassade bilden kan datavetare använda SageMaker SDK, illustrerad på

experiments-deploy-notebook.ipynb.

I create_model begäran, innehåller behållardefinitionen ModelDataUrl parameter, som identifierar Amazon S3-platsen där modellartefakter lagras. SageMaker använder denna information för att avgöra varifrån modellartefakterna ska kopieras. Den kopierar artefakterna till /opt/ml/model katalog för användning av din slutledningskod. De serve och predictor.py är startpunkten för visning, med modellartefakten som laddas när du startar distributionen. För mer information, se Använd din egen slutledningskod med värdtjänster.

Ordna ditt arbetsflöde med SageMaker Pipelines

Det sista steget är att slå in din kod som end-to-end ML-arbetsflöden och att tillämpa MLOps bästa praxis. I SageMaker hanteras arbetsbelastningen för modellbyggande, en riktad acyklisk graf (DAG), av SageMaker Pipelines. Pipelines är en helt hanterad tjänst som stödjer orkestrering och spårning av datalinje. Dessutom, eftersom Pipelines är integrerat med SageMaker Python SDK, kan du skapa dina pipelines programmatiskt med hjälp av ett högnivå Python-gränssnitt som vi använde tidigare under utbildningssteget.

Vi ger ett exempel på pipeline-kod för att illustrera implementeringen på pipeline.py.

Pipelinen inkluderar ett förbearbetningssteg för datauppsättningsgenerering, träningssteg, tillståndssteg och modellregistreringssteg. I slutet av varje pipelinekörning kanske dataforskare vill registrera sin modell för versionskontroller och distribuera den som ger bäst resultat. SageMaker-modellregistret tillhandahåller en central plats för att hantera modellversioner, katalogmodeller och utlösa automatisk modelldistribution med godkännandestatus för en specifik modell. För mer information, se Registrera och distribuera modeller med Model Registry.

I ett ML-system hjälper automatiserad arbetsflödesorkestrering till att förhindra modellförsämring, med andra ord modelldrift. Tidig och proaktiv upptäckt av dataavvikelser gör det möjligt för dig att vidta korrigerande åtgärder, såsom omskolningsmodeller. Du kan trigga SageMaker-pipelinen för att träna om en ny version av modellen efter att avvikelser har upptäckts. Utlösaren av en pipeline kan också bestämmas av Amazon SageMaker modellmonitor, som kontinuerligt övervakar kvaliteten på modeller i produktionen. Med datainsamlingsförmågan för att registrera information, stöder Model Monitor data- och modellkvalitetsövervakning, bias och funktionsattributionsdriftövervakning. För mer information, se Övervaka modeller för data- och modellkvalitet, partiskhet och förklarabarhet.

Slutsats

I det här inlägget illustrerade vi hur man kör ramverket PaddleOCR på SageMaker för OCR-uppgifter. För att hjälpa datavetare att enkelt gå ombord på SageMaker gick vi igenom ML-utvecklingslivscykeln, från att bygga algoritmer, till utbildning, till att vara värd för modellen som en webbtjänst för realtidsinferens. Du kan använda mallkoden vi tillhandahållit för att migrera ett godtyckligt ramverk till SageMaker-plattformen. Prova det för ditt ML-projekt och låt oss veta dina framgångshistorier.


Om författarna

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Junyi(Jackie) LIU är senior tillämpad forskare vid AWS. Hon har många års arbetslivserfarenhet inom området maskininlärning. Hon har rik praktisk erfarenhet av utveckling och implementering av lösningar inom konstruktion av maskininlärningsmodeller inom försörjningskedjans prediktionsalgoritmer, rekommendationssystem för reklam, OCR och NLP-området.

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yanwei Cui, PhD, är en maskininlärningsspecialistlösningsarkitekt på AWS. Han startade maskininlärningsforskning vid IRISA (Research Institute of Computer Science and Random Systems) och har flera års erfarenhet av att bygga artificiell intelligensdrivna industriella applikationer inom datorsyn, bearbetning av naturligt språk och online -beteendeprognoser. På AWS delar han domänkompetensen och hjälper kunderna att låsa upp affärspotentialer och driva användbara resultat med maskininlärning i stor skala. Utanför jobbet tycker han om att läsa och resa.

Inbyggd PaddleOCR med Amazon SageMaker Projects för MLOps för att utföra optisk teckenigenkänning på identitetsdokument PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yi-An CHEN är en mjukvaruutvecklare på Amazon Lab 126. Hon har mer än 10 års erfarenhet av att utveckla maskininlärningsdrivna produkter inom olika discipliner, inklusive personalisering, naturlig språkbehandling och datorseende. Utanför jobbet gillar hon att springa och cykla.

Tidsstämpel:

Mer från AWS maskininlärning