Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

PaddleOCR aan boord met Amazon SageMaker Projects voor MLOps om optische tekenherkenning uit te voeren op identiteitsdocumenten

Optische tekenherkenning (OCR) is de taak om gedrukte of handgeschreven tekst om te zetten in machinegecodeerde tekst. OCR is op grote schaal gebruikt in verschillende scenario's, zoals documentelektronisatie en identiteitsverificatie. Omdat OCR de handmatige inspanning om belangrijke informatie te registreren aanzienlijk kan verminderen en als een eerste stap kan dienen voor het begrijpen van grote hoeveelheden documenten, speelt een nauwkeurig OCR-systeem een โ€‹โ€‹cruciale rol in het tijdperk van digitale transformatie.

De open-sourcegemeenschap en onderzoekers concentreren zich op het verbeteren van OCR-nauwkeurigheid, gebruiksgemak, integratie met vooraf opgeleide modellen, uitbreiding en flexibiliteit. Van de vele voorgestelde frameworks heeft PaddleOCR de laatste tijd steeds meer aandacht gekregen. Het voorgestelde raamwerk concentreert zich op het verkrijgen van een hoge nauwkeurigheid en het balanceren van rekenefficiรซntie. Bovendien maken de vooraf opgeleide modellen voor Chinees en Engels het populair in de Chinese taalgebaseerde markt. Zie de PaddleOCR GitHub-opslagplaats voor meer details.

Bij AWS hebben we ook geรฏntegreerde AI-services voorgesteld die klaar zijn voor gebruik zonder expertise op het gebied van machine learning (ML). Om tekst en gestructureerde gegevens zoals tabellen en formulieren uit documenten te extraheren, kunt u gebruik maken van Amazon T-extract. Het gebruikt ML-technieken om elk type document te lezen en te verwerken, waarbij tekst, handschrift, tabellen en andere gegevens nauwkeurig worden geรซxtraheerd zonder handmatige inspanning.

Voor de datawetenschappers die de flexibiliteit willen om een โ€‹โ€‹open-source framework te gebruiken om hun eigen OCR-model te ontwikkelen, bieden we ook de volledig beheerde ML-service aan Amazon Sage Maker. SageMaker stelt u in staat om MLOps best practices te implementeren gedurende de ML-levenscyclus, en biedt sjablonen en toolsets om het ongedifferentieerde zware werk te verminderen om ML-projecten in productie te nemen.

In deze post concentreren we ons op het ontwikkelen van aangepaste modellen binnen het PaddleOCR-framework op SageMaker. We doorlopen de ML-ontwikkelingslevenscyclus om te illustreren hoe SageMaker u kan helpen bij het bouwen en trainen van een model, en uiteindelijk om het model te implementeren als een webservice. Hoewel we deze oplossing illustreren met PaddleOCR, geldt de algemene richtlijn voor willekeurige frameworks die op SageMaker worden gebruikt. Om dit bericht te begeleiden, bieden we ook voorbeeldcode in de GitHub-repository.

PaddleOCR-framework

Als een algemeen geaccepteerd OCR-framework bevat PaddleOCR rich text-detectie, tekstherkenning en end-to-end-algoritmen. Het kiest Differentiable Binarization (DB) en Convolutional Recurrent Neural Network (CRNN) als de basismodellen voor detectie en herkenning, en stelt een reeks modellen voor, genaamd PP-OCR, voor industriรซle toepassingen na een reeks optimalisatiestrategieรซn.

Het PP-OCR-model is gericht op algemene scenario's en vormt een modelbibliotheek van verschillende talen. Het bestaat uit drie delen: tekstdetectie, boxdetectie en -rectificatie en tekstherkenning, geรฏllustreerd in de volgende afbeelding op de PaddleOCR officiรซle GitHub-opslagplaats. U kunt ook verwijzen naar de onderzoekspaper PP-OCR: een praktisch, ultralicht OCR-systeem voor meer informatie.

Om specifieker te zijn, PaddleOCR bestaat uit drie opeenvolgende taken:

  • Tekstdetectie โ€“ Het doel van tekstdetectie is om het tekstgebied in de afbeelding te lokaliseren. Dergelijke taken kunnen gebaseerd zijn op een eenvoudig segmentatienetwerk.
  • Box detectie en rectificatie โ€“ Elk tekstvak moet worden omgezet in een horizontaal rechthoekig vak voor latere tekstherkenning. Om dit te doen, stelt PaddleOCR voor om een โ€‹โ€‹tekstrichtingclassificator (beeldclassificatietaak) te trainen om de tekstrichting te bepalen.
  • Tekstherkenning โ€“ Nadat het tekstvak is gedetecteerd, voert het tekstherkenningsmodel inferentie uit op elk tekstvak en geeft het de resultaten weer op basis van de locatie van het tekstvak. PaddleOCR past de veelgebruikte methode CRNN toe.

PaddleOCR biedt vooraf getrainde modellen van hoge kwaliteit die vergelijkbaar zijn met commerciรซle effecten. U kunt het vooraf getrainde model gebruiken voor een detectiemodel, richtingclassificator of herkenningsmodel, of u kunt elk afzonderlijk model verfijnen en opnieuw trainen om uw gebruiksscenario te dienen. Om de efficiรซntie en effectiviteit van het detecteren van Traditioneel Chinees en Engels te vergroten, laten we zien hoe u het tekstherkenningsmodel kunt verfijnen. Het vooraf getrainde model dat we kiezen is: ch_ppocr_mobile_v2.0_rec_train, een lichtgewicht model dat Chinees, Engels en nummerherkenning ondersteunt. Het volgende is een voorbeeld van een gevolgtrekkingsresultaat met behulp van een Hong Kong-identiteitskaart.

Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

In de volgende paragrafen laten we zien hoe u het vooraf getrainde model kunt verfijnen met SageMaker.

MLOps best practices met SageMaker

SageMaker is een volledig beheerde ML-service. Met SageMaker kunnen datawetenschappers en ontwikkelaars snel en eenvoudig ML-modellen bouwen en trainen, en deze vervolgens direct implementeren in een beheerde omgeving die klaar is voor productie.

Veel datawetenschappers gebruiken SageMaker om de ML-levenscyclus te versnellen. In deze sectie laten we zien hoe SageMaker u kan helpen bij het experimenteren tot het maken van ML. Door de standaardstappen van een ML-project te volgen, van de experimentele zin (code-ontwikkeling en experimenten) tot de operationele zin (automatisering van de modelbouwworkflow en implementatiepijplijnen), kan SageMaker efficiรซntie brengen in de volgende stappen:

  1. Verken de gegevens en bouw de ML-code met Amazon SageMaker Studio notitieboekjes.
  2. Train en stem het model af met een SageMaker-trainingsopdracht.
  3. Implementeer het model met een SageMaker-eindpunt voor modelserving.
  4. Organiseer de workflow met Amazon SageMaker-pijpleidingen.

Het volgende diagram illustreert deze architectuur en workflow.

Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het is belangrijk op te merken dat u SageMaker modulair kunt gebruiken. U kunt bijvoorbeeld uw code bouwen met een lokale geรฏntegreerde ontwikkelomgeving (IDE) en uw model trainen en implementeren op SageMaker, of u kunt uw model ontwikkelen en trainen in uw eigen clustercomputerbronnen en een SageMaker-pijplijn gebruiken voor workflow-orkestratie en implementeren op een SageMaker-eindpunt. Dit betekent dat SageMaker een open platform biedt dat u kunt aanpassen aan uw eigen vereisten.

Zie de code in onze GitHub-repository en README om de codestructuur te begrijpen.

Een SageMaker-project inrichten

Je kunt gebruiken Amazon SageMaker-projecten om uw reis te beginnen. Met een SageMaker-project kunt u de versies voor uw Git-repositories beheren, zodat u efficiรซnter met teams kunt samenwerken, codeconsistentie kunt garanderen en continue integratie en continue levering (CI/CD) mogelijk maakt. Hoewel notebooks nuttig zijn voor het bouwen van modellen en experimenteren, heb je een meer schaalbare manier nodig om de consistentie van de code te behouden en strenger versiebeheer te hebben als je een team van datawetenschappers en ML-engineers hebt die aan een ML-probleem werken.

SageMaker-projecten creรซren een vooraf geconfigureerde MLOps-sjabloon, die de essentiรซle componenten bevat voor het vereenvoudigen van de PaddleOCR-integratie:

  • Een coderepository om aangepaste containerafbeeldingen te bouwen voor verwerking, training en inferentie, geรฏntegreerd met CI/CD-tools. Dit stelt ons in staat om onze aangepaste Docker-image te configureren en te pushen naar Amazon Elastic Container-register (Amazon ECR) klaar voor gebruik.
  • Een SageMaker-pijplijn die stappen definieert voor gegevensvoorbereiding, training, modelevaluatie en modelregistratie. Dit bereidt ons voor om MLOps-klaar te zijn wanneer het ML-project in productie gaat.
  • Andere nuttige bronnen, zoals een Git-opslagplaats voor codeversiebeheer, een modelgroep die modelversies bevat, een codewijzigingstrigger voor de modelbouwpijplijn en een op gebeurtenissen gebaseerde trigger voor de modelimplementatiepijplijn.

U kunt SageMaker-seedcode gebruiken om standaard SageMaker-projecten te maken, of een specifieke sjabloon die uw organisatie voor teamleden heeft gemaakt. In dit bericht gebruiken we de standaard MLOps-sjabloon voor het bouwen van afbeeldingen, modelbouw en modelimplementatie. Voor meer informatie over het maken van een project in Studio, zie: Maak een MLOps-project met Amazon SageMaker Studio.

Verken gegevens en bouw ML-code met SageMaker Studio Notebooks

SageMaker Studio-notebooks zijn gezamenlijke notebooks die u snel kunt starten omdat u vooraf geen rekeninstanties en bestandsopslag hoeft in te stellen. Veel datawetenschappers geven er de voorkeur aan deze webgebaseerde IDE te gebruiken voor het ontwikkelen van de ML-code, het snel opsporen van fouten in de bibliotheek-API en het aan de gang krijgen met een kleine hoeveelheid gegevens om het trainingsscript te valideren.

In Studio-notebooks kunt u een vooraf gebouwde omgeving gebruiken voor algemene frameworks zoals TensorFlow, PyTorch, Pandas en Scikit-Learn. Je kunt de afhankelijkheden installeren op de vooraf gebouwde kernel, of je eigen persistente kernel-image opbouwen. Voor meer informatie, zie: Externe bibliotheken en kernels installeren in Amazon SageMaker Studio. Studio-notebooks bieden ook een Python-omgeving om SageMaker-trainingstaken, -implementaties of andere AWS-services te activeren. In de volgende secties laten we zien hoe u Studio-notebooks kunt gebruiken als een omgeving om trainings- en implementatietaken te activeren.

SageMaker biedt een krachtige IDE; het is een open ML-platform waar datawetenschappers de flexibiliteit hebben om hun favoriete ontwikkelomgeving te gebruiken. Voor datawetenschappers die de voorkeur geven aan een lokale IDE zoals PyCharm of Visual Studio Code, kunt u de lokale Python-omgeving gebruiken om uw ML-code te ontwikkelen en SageMaker gebruiken voor training in een beheerde schaalbare omgeving. Voor meer informatie, zie Voer uw TensorFlow-taak uit op Amazon SageMaker met een PyCharm IDE. Nadat u een solide model hebt, kunt u de best practices van MLOps toepassen met SageMaker.

Momenteel biedt SageMaker ook: SageMaker-notebookinstanties als onze legacy-oplossing voor de Jupyter Notebook-omgeving. U hebt de flexibiliteit om het Docker build-commando uit te voeren en gebruik de lokale modus van SageMaker om te trainen op uw notebook-instantie. We bieden ook voorbeeldcode voor PaddleOCR in onze coderepository: ./train_and_deploy/notebook.ipynb.

Bouw een aangepaste afbeelding met een SageMaker-projectsjabloon

SageMaker maakt uitgebreid gebruik van Docker-containers voor build- en runtime-taken. U kunt eenvoudig uw eigen container draaien met SageMaker. Zie meer technische details op Gebruik uw eigen trainingsalgoritmen.

Als datawetenschapper is het bouwen van een container echter misschien niet eenvoudig. SageMaker-projecten bieden u een eenvoudige manier om aangepaste afhankelijkheden te beheren via een CI/CD-pijplijn voor het bouwen van afbeeldingen. Wanneer u een SageMaker-project gebruikt, kunt u de trainingsinstallatiekopie bijwerken met uw aangepaste container Dockerfile. Raadpleeg voor stapsgewijze instructies: Creรซer Amazon SageMaker-projecten met CI/CD-pijplijnen voor het bouwen van afbeeldingen. Met de structuur die in de sjabloon wordt gegeven, kun je de verstrekte code in deze repository wijzigen om een โ€‹โ€‹PaddleOCR-trainingscontainer te bouwen.

Voor dit bericht laten we de eenvoud zien van het bouwen van een aangepaste afbeelding voor verwerking, training en gevolgtrekking. De GitHub-repo bevat drie mappen:

Deze projecten volgen een gelijkaardige structuur. Neem de afbeelding van de trainingscontainer als voorbeeld; de image-build-train/ repository bevat de volgende bestanden:

  • Het bestand codebuild-buildspec.yml, dat wordt gebruikt om te configureren AWS CodeBuild zodat de afbeelding kan worden opgebouwd en naar Amazon ECR kan worden gepusht.
  • De Dockerfile die wordt gebruikt voor de Docker-build, die alle afhankelijkheden en de trainingscode bevat.
  • Het train.py-ingangspunt voor trainingsscript, met alle hyperparameters (zoals leersnelheid en batchgrootte) die als argument kunnen worden geconfigureerd. Deze argumenten worden opgegeven wanneer u de trainingstaak start.
  • De afhankelijkheden.

Wanneer u de code in de corresponderende repository pusht, wordt deze geactiveerd AWS CodePipeline om een โ€‹โ€‹trainingscontainer voor u te bouwen. De aangepaste containerafbeelding wordt opgeslagen in een Amazon ECR-repository, zoals geรฏllustreerd in de vorige afbeelding. Een soortgelijke procedure wordt toegepast voor het genereren van het gevolgtrekkingsbeeld.

Train het model met de SageMaker-training SDK

Nadat uw algoritmecode is gevalideerd en in een container is verpakt, kunt u een SageMaker-trainingstaak gebruiken om een โ€‹โ€‹beheerde omgeving in te richten om het model te trainen. Deze omgeving is kortstondig, wat betekent dat u afzonderlijke, veilige computerbronnen (zoals GPU) of een gedistribueerde omgeving met meerdere GPU's kunt hebben om uw code uit te voeren. Wanneer de training is voltooid, slaat SageMaker de resulterende modelartefacten op in een Amazon eenvoudige opslagservice (Amazon S3) locatie die u opgeeft. Alle loggegevens en metagegevens blijven op de AWS-beheerconsole, Studio, en Amazon Cloud Watch.

De trainingstaak bevat verschillende belangrijke informatie:

  • De URL van de S3-bucket waar je de trainingsgegevens hebt opgeslagen
  • De URL van de S3-bucket waar u de uitvoer van de taak wilt opslaan
  • De beheerde computerbronnen die u door SageMaker wilt laten gebruiken voor modeltraining
  • Het Amazon ECR-pad waar de trainingscontainer is opgeslagen

Voor meer informatie over opleidingstaken, zie Train modellen. De voorbeeldcode voor de trainingstaak is beschikbaar op: experimenten-trein-notebook.ipynb.

SageMaker maakt de hyperparameters in a CreateTrainingJob aanvraag beschikbaar in de Docker-container in de /opt/ml/input/config/hyperparameters.json bestand.

We gebruiken de aangepaste trainingscontainer als ingangspunt en specificeren een GPU-omgeving voor de infrastructuur. Alle relevante hyperparameters worden gedetailleerd als parameters, waardoor we elke individuele taakconfiguratie kunnen volgen en deze kunnen vergelijken met het volgen van het experiment.

Omdat het data science-proces erg onderzoeksgericht is, is het gebruikelijk dat meerdere experimenten parallel lopen. Dit vereist een aanpak die alle verschillende experimenten, verschillende algoritmen en mogelijk verschillende datasets en hyperparameters bijhoudt. Met Amazon SageMaker Experiments kun je je ML-experimenten organiseren, volgen, vergelijken en evalueren. Dit demonstreren we ook in experimenten-trein-notebook.ipynb. Voor meer details, zie: Beheer Machine Learning met Amazon SageMaker Experiments.

Het model implementeren voor modelweergave

Wat betreft implementatie, vooral voor realtime modelserving, vinden veel datawetenschappers het misschien moeilijk om te doen zonder de hulp van operationele teams. SageMaker maakt het eenvoudig om uw getrainde model in productie te nemen met de SageMaker Python-SDK. U kunt uw model implementeren op SageMaker-hostingservices en een eindpunt krijgen om te gebruiken voor realtime gevolgtrekking.

In veel organisaties zijn datawetenschappers mogelijk niet verantwoordelijk voor het onderhoud van de eindpuntinfrastructuur. Het testen van uw model als eindpunt en het garanderen van het juiste voorspellingsgedrag is echter inderdaad de verantwoordelijkheid van datawetenschappers. Daarom heeft SageMaker de implementatietaken vereenvoudigd door hiervoor een set tools en SDK toe te voegen.

Voor de use-case in de post willen we realtime, interactieve, low-latency-mogelijkheden hebben. Real-time gevolgtrekking is ideaal voor deze werkbelasting voor gevolgtrekkingen. Er zijn echter veel opties die kunnen worden aangepast aan elke specifieke behoefte. Voor meer informatie, zie: Modellen voor gevolgtrekking implementeren.

Om de aangepaste afbeelding te implementeren, kunnen gegevenswetenschappers de SageMaker SDK gebruiken, geรฏllustreerd op:

experimenten-deploy-notebook.ipynb.

In het create_model verzoek bevat de containerdefinitie de ModelDataUrl parameter, die de Amazon S3-locatie identificeert waar modelartefacten worden opgeslagen. SageMaker gebruikt deze informatie om te bepalen waar de modelartefacten moeten worden gekopieerd. Het kopieert de artefacten naar de /opt/ml/model directory voor gebruik door uw inferentiecode. De serve en predictor.py is het toegangspunt voor het serveren, met het modelartefact dat wordt geladen wanneer u de implementatie start. Voor meer informatie, zie Gebruik uw eigen inferentiecode met hostingservices.

Organiseer uw workflow met SageMaker Pipelines

De laatste stap is om uw code in te pakken als end-to-end ML-workflows en om MLOps-best practices toe te passen. In SageMaker wordt de werklast voor modelbouw, een gerichte acyclische grafiek (DAG), beheerd door SageMaker Pipelines. Pipelines is een volledig beheerde service die orkestratie en het volgen van gegevenslijnen ondersteunt. Omdat Pipelines is geรฏntegreerd met de SageMaker Python SDK, kunt u bovendien uw pijplijnen programmatisch maken met behulp van een Python-interface op hoog niveau die we eerder tijdens de trainingsstap hebben gebruikt.

We bieden een voorbeeld van pijplijncode om de implementatie te illustreren op: pijplijn.py.

De pijplijn omvat een voorbewerkingsstap voor het genereren van gegevenssets, een trainingsstap, een voorwaardestap en een modelregistratiestap. Aan het einde van elke pijplijnrun willen datawetenschappers hun model registreren voor versiebeheer en het best presterende model implementeren. Het SageMaker-modelregister biedt een centrale plek om modelversies en catalogusmodellen te beheren en geautomatiseerde modelimplementatie te activeren met de goedkeuringsstatus van een specifiek model. Voor meer details, zie: Registreer en implementeer modellen met modelregister.

In een ML-systeem helpt geautomatiseerde workflow-orkestratie verslechtering van de modelprestaties, met andere woorden modeldrift, te voorkomen. Vroege en proactieve detectie van gegevensafwijkingen stelt u in staat corrigerende maatregelen te nemen, zoals het bijscholen van modellen. U kunt de SageMaker-pijplijn activeren om een โ€‹โ€‹nieuwe versie van het model opnieuw te trainen nadat er afwijkingen zijn gedetecteerd. De trigger van een pijplijn kan ook worden bepaald door: Amazon SageMaker-modelmonitor, die continu de kwaliteit van modellen in productie bewaakt. Met de mogelijkheid om gegevens vast te leggen om informatie vast te leggen, ondersteunt Model Monitor gegevens- en modelkwaliteitsbewaking, vooringenomenheid en bewaking van functietoeschrijvingsdrift. Voor meer details, zie Modellen bewaken op gegevens en modelkwaliteit, vooringenomenheid en verklaarbaarheid.

Conclusie

In dit bericht hebben we geรฏllustreerd hoe het framework PaddleOCR op SageMaker voor OCR-taken kan worden uitgevoerd. Om datawetenschappers gemakkelijk aan boord van SageMaker te helpen, hebben we de ML-ontwikkelingslevenscyclus doorlopen, van het bouwen van algoritmen tot training tot het hosten van het model als een webservice voor realtime gevolgtrekking. U kunt de door ons verstrekte sjablooncode gebruiken om een โ€‹โ€‹willekeurig raamwerk naar het SageMaker-platform te migreren. Probeer het uit voor uw ML-project en laat ons uw succesverhalen weten.


Over de auteurs

Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Junyi (Jackie) LIU is Senior Applied Scientist bij AWS. Ze heeft jarenlange werkervaring op het gebied van machine learning. Ze heeft een rijke praktische ervaring in de ontwikkeling en implementatie van oplossingen voor de constructie van machine learning-modellen in supply chain-voorspellingsalgoritmen, advertentie-aanbevelingssystemen, OCR en NLP-gebied.

Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Yanwei Cui, PhD, is een Machine Learning Specialist Solutions Architect bij AWS. Hij begon met machine learning-onderzoek bij IRISA (Research Institute of Computer Science and Random Systems), en heeft meerdere jaren ervaring met het bouwen van door kunstmatige intelligentie aangedreven industriรซle toepassingen in computervisie, natuurlijke taalverwerking en online voorspelling van gebruikersgedrag. Bij AWS deelt hij de domeinexpertise en helpt hij klanten om zakelijke mogelijkheden te ontsluiten en bruikbare resultaten te behalen met machine learning op schaal. Naast zijn werk houdt hij van lezen en reizen.

Aan boord van PaddleOCR met Amazon SageMaker Projects voor MLOps om optische karakterherkenning uit te voeren op identiteitsdocumenten PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Yi-An CHEN is een softwareontwikkelaar bij Amazon Lab 126. Ze heeft meer dan 10 jaar ervaring in het ontwikkelen van door machine learning aangedreven producten in verschillende disciplines, waaronder personalisatie, natuurlijke taalverwerking en computervisie. Naast haar werk doet ze graag aan hardlopen en fietsen.

Tijdstempel:

Meer van AWS-machine learning