Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Haluatko tehdä käsinkirjoitetun OCR:n? Tämä blogi on kattava katsaus uusimpiin käsinkirjoituksen tunnistusmenetelmiin syväoppimisen avulla. Olemme käyneet läpi uusimmat tutkimukset ja paperit ja rakentaneet myös käsinkirjoituksen lukijan tyhjästä.


Nanonetit OCR-sovellusliittymä on monia mielenkiintoisia Käytä koteloita. Keskustele Nanonets AI -asiantuntijan kanssa saadaksesi lisätietoja.


esittely

Optisen merkintunnistuksen (OCR) markkinoiden koon odotetaan olevan 13.38 miljardia dollaria vuoteen 2025 mennessä, ja vuosikasvu on 13.7 %. Kasvua vauhdittaa liiketoimintaprosessien nopea digitalisointi OCR:n avulla työvoimakustannusten alentamiseksi ja arvokkaiden työtuntien säästämiseksi. Vaikka tekstintunnistusta on pidetty ratkaistuna ongelmana, siinä on yksi avainkomponentti, käsinkirjoituksen tunnistus (Handwriting OCR) tai käsinkirjoitetun tekstin tunnistus (HTR), jota pidetään edelleen haastavana ongelmanratkaisuna. Ihmisten käsinkirjoitustyylien suuri vaihtelu ja käsinkirjoitetun tekstin huono laatu painettuun tekstiin verrattuna muodostavat merkittäviä esteitä sen muuntamisessa koneellisesti luettavaksi tekstiksi. Siitä huolimatta se on ratkaiseva ongelma useilla aloilla, kuten terveydenhuolto, vakuutus ja pankki.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla
Lähde :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Viimeaikaiset syvällisen oppimisen edistysaskeleet, kuten muuntajaarkkitehtuurien tulo, ovat edistyneet nopeasti käsinkirjoitetun tekstintunnistuksen murtamisessa. Käsinkirjoitetun tekstin tunnistamista kutsutaan älykkäksi merkintunnistukseksi (Intelligent Character Recognition, ICR), koska ICR: n ratkaisemiseen tarvittavat algoritmit tarvitsevat paljon enemmän älykkyyttä kuin yleisen OCR: n ratkaiseminen.

Tässä artikkelissa opimme käsinkirjoitetun tekstintunnistuksen tehtävästä, sen monimutkaisuuksista ja siitä, kuinka voimme ratkaista sen käyttämällä syvän oppimisen tekniikoita.


Haluatko poimia tietoja käsinkirjoitetuista lomakkeista? Suuntaa Nanonetit ja ala rakentaa käsinkirjoituksen OCR-malleja ilmaiseksi!


Käsinkirjoituksen tunnistamisen haasteet

  1. Valtava aivohalvausten vaihtelu ja epäselvyys henkilöstä toiseen
  2. Yksittäisen henkilön käsinkirjoitustyyli vaihtelee myös aika ajoin ja on epäjohdonmukainen
  3. Lähdeasiakirjan / kuvan heikko laatu johtuu ajan heikkenemisestä
  4. Painettujen asiakirjojen teksti istuu suoralla viivalla, kun taas ihmisten ei tarvitse kirjoittaa suoraa viivaa valkoiselle paperille
  5. Kursiivinen käsiala tekee hahmojen erottamisesta ja tunnistamisesta haastavaa
  6. Käsinkirjoitetun tekstin kääntö voi vaihdella oikealle, mikä on päinvastoin kuin painettu teksti, jossa kaikki teksti istuu suorana
  7. Hyvän leimatun tietojoukon kerääminen oppimista varten ei ole halpaa verrattuna synteettisiin tietoihin

Käyttötapaukset

Terveydenhuolto ja lääkkeet

Potilaiden reseptien digitointi on merkittävä kipu terveydenhuolto- ja lääketeollisuudessa. Esimerkiksi Roche käsittelee miljoonia petatavuja lääketieteellisiä PDF-tiedostoja päivittäin. Toinen alue, jolla käsinkirjoitetun tekstin havaitsemisella on keskeinen vaikutus, on potilaan ilmoittautuminen ja lomakkeen digitalisointi. Lisäämällä käsinkirjoituksen tunnistuksen palvelujen työkalupakettiin sairaalat / lääkkeet voivat parantaa merkittävästi käyttäjäkokemusta

Vakuutus

Suuri vakuutusala vastaanottaa yli 20 miljoonaa asiakirjaa päivässä, ja vahingonkorvauksen viivästyminen voi vaikuttaa yritykseen kauheasti. Vaatimusasiakirja voi sisältää useita erilaisia ​​käsinkirjoitustyylejä, ja puhdas manuaalinen käsittelyautomaatio hidastaa putkilinjaa kokonaan

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla
Lähde: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Pankkitoiminta

Ihmiset kirjoittavat sekkejä säännöllisesti, ja sekeillä on edelleen tärkeä rooli useimmissa muissa kuin käteisliiketoimissa. Monissa kehitysmaissa nykyinen sekkien käsittelymenettely vaatii pankin työntekijää lukemaan ja syöttämään sekissä olevat tiedot manuaalisesti ja vahvistamaan myös merkinnät, kuten allekirjoituksen ja päivämäärän. Koska pankissa on käsiteltävä päivittäin suuri määrä sekkejä, käsinkirjoitettu tekstintunnistusjärjestelmä voi säästää kustannuksia ja työtunteja

Online-kirjastot

Valtavia määriä historiallista tietämystä digitalisoidaan lataamalla kuvahakuja, jotta pääsy koko maailmaan. Mutta tämä työ ei ole kovin hyödyllistä, ennen kuin kuvien teksti voidaan tunnistaa, joka voidaan indeksoida, kysellä ja selata. Käsinkirjoituksen tunnistamisella on keskeinen rooli keskiajan ja 20-luvun asiakirjojen, postikorttien, tutkimustutkimusten jne. Elävöittämisessä.

Menetelmät

Käsinkirjoituksen tunnustamismenetelmät voidaan luokitella laajasti kahteen seuraavaan tyyppiin

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla
  1. Online-menetelmät : - Online-menetelmissä käytetään digitaalista kynää / kynää, ja niillä on pääsy aivohalvaustietoihin, kynän sijaintiin, kun tekstiä kirjoitetaan kuten yllä olevassa kuvassa näkyy. Koska heillä on yleensä paljon tietoa kirjoitettavan tekstin kulusta, ne voidaan luokitella melko suurella tarkkuudella ja tekstin eri merkkien välinen raja tulee selvästi selvemmäksi
  2. Offline-menetelmät :- Offline-menetelmiin kuuluu tekstin tunnistaminen sen jälkeen, kun se on kirjoitettu, eikä niillä näin ollen ole tietoa kirjoittamiseen liittyvistä viivoista/suunnista ja mahdollisesti taustamelua lisättynä lähteestä eli paperista.

Todellisessa maailmassa ei aina ole mahdollista/skaalautuvaa kantaa mukanaan digitaalista kynää, jossa on anturit lyöntitietojen tallentamiseksi, ja siksi tekstin tunnistaminen offline-tilassa on paljon tärkeämpi ongelma. Siksi nyt keskustelemme erilaisista tekniikoista offline-tekstin tunnistamisongelman ratkaisemiseksi.

Techniques

Käsinkirjoituksen tunnistuksen ratkaisun alkuvaiheessa käytettiin koneoppimismenetelmiä, kuten piilotettuja Markov-malleja (HMM), SVM:ää jne. Kun alkuperäinen teksti on esikäsitelty, ominaisuuspoimitaan tärkeimmät tiedot, kuten silmukat, käännepisteet, kuvasuhde jne. yksilöllistä luonnetta. Nämä luodut ominaisuudet syötetään nyt luokittimeen, sanotaan HMM, tulosten saamiseksi. Koneoppimismallien suorituskyky on melko rajallinen manuaalisen ominaisuuksien poimintavaiheen ja niiden rajallisen oppimiskyvyn vuoksi. Ominaisuuden poimintavaihe vaihtelee jokaisen yksittäisen kielen mukaan, joten se ei ole skaalattavissa. Syväoppimisen myötä käsinkirjoituksen tunnistuksen tarkkuus parani valtavia parannuksia. Keskustellaan muutamista merkittävistä tutkimuksista käsinkirjoituksen tunnistamisen syväoppimisen alalla

Moniulotteiset toistuvat hermoverkot

RNN/LSTM, kuten tiedämme, voi käsitellä peräkkäistä dataa tunnistaakseen ajallisia malleja ja tuottaakseen tuloksia. Mutta ne rajoittuvat käsittelemään 1D-dataa, joten niitä ei voida soveltaa suoraan kuvadataan. Tämän ongelman ratkaisemiseksi tämän artikkelin kirjoittajat ehdottivat moniulotteista RNN/LSTM-rakennetta, kuten alla olevasta kuvasta näkyy.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Seuraava on ero yleisen RNN: n ja moniulotteisen RNN: n välillä. Yleisessä RNN: ssä piilotettu kerros sanoo, että saan tilan edellisestä piilotetusta kerroksesta ajassa i-1. Esimerkiksi moniulotteisessa RNN: ssä, esimerkiksi 2-ulotteisessa RNN: ssä, piilotettu kerros (i, j) vastaanottaa tiloja useilta aikaisemmilta piilotetuilta kerroksilta eli (i-1, j) ja (i, j-1) ja sieppaa siten kontekstin molemmista korkeus ja leveys kuvassa, mikä on keskeistä, jotta verkko ymmärtää paikallisen alueen selkeästi. Tätä laajennetaan edelleen saamaan tietoja paitsi aiemmista tasoista myös tulevilta tasoilta samalla tavalla kuin BI-LSTM vastaanottaa tietoja t-1: stä ja t + 1: stä. Vastaavasti 2D MDRNN -piilotettu kerros i voi nyt vastaanottaa tietoa (i-1, j), (i, j-1), (i + 1, j), (i, j + 1) ja siepata siten kontekstin kaikkiin suuntiin

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Koko verkkorakenne on esitetty yllä. Käytetään MDLSTM: ää, joka ei ole muuta kuin RNN-lohkon korvaaminen LSTM-lohkolla edellisestä MDRNN-keskustelusta. Tulo on jaettu lohkoihin, joiden koko on 3 × 4 ja jotka syötetään nyt MDSTM-kerroksiin. Verkossa on hierarkkinen MDLSTM-tasojen rakenne, jota seuraavat eteenpäin suuntautuvat kerrokset (ANN). Sitten lopullinen lähtö muunnetaan 1D-vektoriksi ja annetaan CTC-toiminnolle tuotoksen tuottamiseksi

Connectionist-ajallinen luokitus (CTC) on algoritmi, jota käytetään käsittelemään tehtäviä, kuten puheentunnistusta, käsinkirjoituksen tunnistusta jne., joissa vain syöttötiedot ja tulostetranskriptio ovat saatavilla, mutta ei ole annettu kohdistustietoja, eli miten tietty alue puheessa tai tietty alue kuvissa käsinkirjoitettavaksi on kohdistettu tiettyyn merkkiin. Yksinkertainen heuristiikka, kuten saman alueen antaminen jokaiselle hahmolle, ei toimi, koska kunkin hahmon käyttämä tilan määrä vaihtelee käsialalla henkilöstä toiseen ja aika ajoin.

Käsinkirjoituksen tunnistamisen käyttötapauksessamme pidä tietyn lauseen syöttökuvan alueita syötteenä X=[x1,x2,…,x ** T], kun taas odotettu tuotos on Y=[y1,y2,…,y ** U] . Kun X on annettu, meidän pitäisi löytää tarkka Y. CTC-algoritmi toimii ottamalla syöte X ja antamalla jakauman kaikille mahdollisille Y:ille, jonka avulla voimme tehdä ennusteen lopullisesta tuotosta.

CTC käyttää perusmerkkiä, joka erottaa päällekkäiset merkit ja toistuvat merkit syöttöalueella. Esimerkiksi tietty merkki voi kattaa useita syötealueita ja siten CTC tulostaa saman merkin peräkkäin. Esimerkki: - Input james ja Output of CTC on jjaammmees. Lopullinen tulos saadaan tiivistämällä toistetut lähdöt ja siten saamme jameja. Mutta nyt, jotta voimme esittää päällekkäisiä merkkejä, jotka sanovat 'l':n hei, tarvitsemme erottelun, jolloin kaikki tulosteet erotetaan yhdysmerkillä (-). Nyt hellon lähtö voisi olla h-ee-ll-lll-oo, josta romahtaessaan tulee hello eikä helo. Lisätietoja CTC:n toiminnasta löytyy täältä CTC.

Kun dekoodaamme CTC:n lähtöä kunkin sijainnin suurimman todennäköisyyden yksinkertaisen heuristiikan perusteella, saatamme saada tuloksia, joilla ei ehkä ole mitään järkeä todellisessa maailmassa. Tämän ratkaisemiseksi saatamme käyttää toista dekooderia tulosten parantamiseksi. Keskustellaan erityyppisistä dekoodauksista

  1. Paras reitti -dekoodaus : - Tämä on yleinen dekoodaus, josta olemme keskustelleet tähän mennessä. Kussakin paikassa otamme mallin tuotoksen ja löydämme tuloksen suurimmalla todennäköisyydellä.
  2. Beam-haun dekoodaus : - Sen sijaan, että ottaisit yhden lähdön verkosta joka kerta, kun säteenhaku ehdottaa, pidetään useita ulostuloreittejä suurimmalla todennäköisyydellä ja laajennetaan ketjua uusilla lähdöillä ja pudotuspoluilla, joilla on pienempi todennäköisyys säteen koon pitämiseksi vakiona. Tämän lähestymistavan avulla saadut tulokset ovat tarkempia kuin ahneen lähestymistavan käyttäminen
  3. Palkkihaku kielimallilla :- Sädehaku tarjoaa tarkempia tuloksia kuin ruudukkohaku, mutta silti se ei ratkaise mielekkäiden tulosten ongelmaa. Tämän ratkaisemiseksi voimme käyttää kielimallia yhdessä sädehaun kanssa käyttämällä sekä mallin todennäköisyyksiä että kielimallia lopullisten tulosten luomiseen.

Tarkempia dekoodaustulosten tuottamisen yksityiskohtia voidaan tarkastella tässä artikkeli

Kooderi-dekooderi- ja huomioverkot

Encoder-dekooderiverkoilla varustetut Seq2Seq-mallit ovat viime aikoina olleet suosittuja puheentunnistuksen, konekääntämisen jne. tehtävien ratkaisemisessa, ja näin ollen niitä on laajennettu ratkaisemaan käsinkirjoituksen tunnistuksen käyttötapaukset ottamalla käyttöön ylimääräinen huomiomekanismi. Keskustellaanpa joistakin tämän alan tärkeimmistä tutkimuksista

Skannaa, osallistu ja lue

Kirjoittajat ehdottavat tässä keskeisessä teoksessa Scan, Attend and Read (SAR) huomion perustuvan mallin käyttöä päästä käsistä käsinkirjoituksen tunnistamiseen. Tutkimuksen tärkein panos on tekstin automaattinen transkriptio ilman segmentointia viivoiksi esikäsittelyvaiheena ja siten skannata koko sivun ja antaa tuloksia.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

SAR käyttää MDLSTM-pohjaista arkkitehtuuria, joka on samanlainen kuin edellä keskustelimme yhdellä pienellä muutoksella viimeisessä kerroksessa. Viimeisen lineaarisen kerroksen eli edellisen kuvan viimeisen summa-lohkon jälkeen piirustuskartat romahdetaan pystysuoraan ulottuvuuteen ja lopputulos softmax-funktiota käytetään lähtöjen saamiseksi.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

SAR-arkkitehtuuri koostuu MDLSTM-arkkitehtuurista, joka toimii ominaisuuksien poimijana. Lopullinen romahtava moduuli, jossa on softmax-lähtö ja CTC-häviö, korvataan huomiomoduulilla ja LSTM-dekooderilla. Käytetty huomiomalli on yhdistelmä sisältöpohjaista huomiota ja sijaintiin perustuvaa huomiota, joka selitetään tarkemmin seuraavassa artikkelissa. Dekooderin LSTM-moduulit ottavat edellisen tilan, edellisen tarkkailukartan ja enkooderin ominaisuudet lopullisen tulosmerkin ja tilavektorin muodostamiseksi seuraavaa ennustusta varten.

Keskustele, osallistu ja loitsu

Tässä artikkelissa ehdotetaan huomioperusteista sekvenssimallia käsinkirjoitetun sanan tunnistamiseksi. Ehdotetulla arkkitehtuurilla on kolme pääosaa: kooderi, joka koostuu CNN: stä ja kaksisuuntaisesta GRU: sta, huomion kiinnittämiseen tarkoitettu omistettu mekanismi ja yksisuuntaisen GRU: n muodostama dekooderi, joka kykenee kirjoittamaan vastaavan sanan, merkki hahmolta.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Enkooderi käyttää CNN-verkkoa visuaalisten ominaisuuksien poimimiseen. Esiopetettua VGG-19-BN-arkkitehtuuria käytetään ominaisuuksien poimijana. Syötekuva muunnetaan piirrekartaksi X, joka muotoillaan sitten uudelleen muotoon X' jakamalla kaikki kanavat sarakekohtaisesti ja yhdistämällä ne peräkkäisten tietojen saamiseksi. X' muunnetaan edelleen H:ksi käyttämällä kaksisuuntaista GRU:ta. GRU on luonteeltaan LSTM:n kaltainen hermoverkko, joka voi siepata ajallista tietoa.

Lisäksi käytetään huomiomallia ennustettaessa dekooderin lähtöä. Artikkelissa käsitellään kahta erityyppistä tarkkailumekanismia.

  1. Sisältöpohjainen huomio : - Tämän takana on löytää samankaltaisuus dekooderin nykyisen piilotetun tilan ja kooderin ominaisuuskartan välillä. Kooderin ominaisuuskartalta löytyy eniten korreloivat ominaisuusvektorit, joiden avulla voidaan ennustaa nykyinen merkki kulloisessakin ajankohdassa. Lisätietoja tarkkailumekanismin toiminnasta näkyy täältä Huomio
  2. Sijaintiin perustuva huomio :- Sisältöpohjaisten paikannusmekanismien suurin haittapuoli on, että oletetaan, että sijaintitiedot on upotettu kooderin ulostuloon. Muuten ei ole mahdollista erottaa dekooderista toistuvia merkkilähtöjä. Tarkastellaan esimerkiksi sanaa Charmander, jossa merkki a toistuu kahdesti ja ilman sijaintitietoja dekooderi ei pysty ennustamaan niitä erillisinä merkeinä. Tämän lieventämiseksi nykyinen merkki ja sen kohdistus ennustetaan käyttämällä sekä kooderin lähtöä että aikaisempaa kohdistusta. Tarkemmat tiedot sijaintiperusteisen osallistumisen toiminnasta löytyy tätä.

Dekooderi on yksisuuntainen monikerroksinen GRU. Kussakin vaiheessa t se vastaanottaa syötteen edellisestä aikavaiheesta ja kontekstivektorin tarkkailumoduulista. Monikokoinen dekoodaus ja tarran tasoitus tutkitaan koulutuksessa yleistysominaisuuksien parantamiseksi.

Muuntajamallit

Vaikka enkooderi-dekooderiverkot ovat saavuttaneet melko hyviä tuloksia käsinkirjoituksen tunnistamisessa, niillä on pullonkaula koulutuksessa mukana olevien LSTM-kerrosten vuoksi, eikä niitä siksi voida rinnastaa. Viime aikoina muuntajat ovat menestyneet melko hyvin ja korvanneet LSTM:n useiden kieliin liittyvien tehtävien ratkaisemisessa. Keskustellaan nyt siitä, kuinka muuntajapohjaisia ​​malleja voidaan soveltaa käsinkirjoituksen tunnistukseen.

Kiinnitä huomiota siihen, mitä luet

Tässä työssä kirjoittajat ehdottivat muuntajapohjaisen arkkitehtuurin käyttöä, jossa käytetään monipäisiä huomiota kiinnittäviä kerroksia sekä visuaalisessa että tekstivaiheessa, ja voivat siten oppia sekä merkkien tunnistamisen että dekoodattavien merkkijonojen kielikohtaiset riippuvuudet. Koska kielitaito on upotettu itse malliin, ei tarvita mitään ylimääräistä jälkikäsittelyvaihetta kielimallia käyttäen, ja sillä on siten kyky ennustaa ulostulot, jotka eivät ole osa sanastoa. Tämän saavuttamiseksi koodaus tapahtuu merkkitasolla eikä sanatasolla. Koska muuntajaarkkitehtuuri sallii mallin harjoittamisen samanaikaisesti jokaiselle alueelle tai merkille, harjoitusprosessi on paljon yksinkertaistettu.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Verkkoarkkitehtuuri koostuu seuraavista komponenteista

  1. Visuaalinen kooderi : - Pura merkitykselliset ominaisuudet ja soveltaa monipuolista visuaalista itsensä huomiota eri hahmopaikoissa
  2. Tekstin kirjoittaja : - Sen tehtävänä on ottaa tekstinsyöttö, koodata se, soveltaa monipäistä kieltä itseään ja soveltaa molemminpuolista huomiota sekä visuaalisiin että tekstiominaisuuksiin.
Visuaalinen kooderi

Resnet50-runkoverkkoa käytetään ominaisuuksien lisäämiseen, kuten yllä olevasta kuvasta näkyy. Resnet3 Fc:n 50-ulotteinen ominaisuuskarttalähtö välitetään Temporal Encoding -moduuliin, joka muotoutuu 2d:ksi säilyttämällä saman leveyden ja siten muodon (fxh, w). Tämä syötetään täysin yhdistettyyn kerrokseen muodon pienentämiseksi muotoon (f, w) ja tuloksena on Fc'. Lisäksi paikkakoodaus TE lisätään Fc':hen sijaintitiedon säilyttämiseksi, kuten on mainittu Vaswanin muuntajapaperissa. Lisätietoja muuntajan arkkitehtuurista on nähtävissä tätä. Lähtö johdetaan täysin yhdistetyn kerroksen läpi, jotta saadaan lopullinen ominaisuuskartta, jonka muoto on (f, w). Lopullinen tulos johdetaan monipäisen tarkkailumoduulin läpi, jossa on 8 päätä, jotta saadaan visuaalisesti rikas ominaisuuskartta

Tekstin kirjoittaja

Syötetty teksti kulkee kooderin läpi, joka tuottaa merkkitason upotuksia. Nämä upotukset yhdistetään ajalliseen sijaintiin, joka on samanlainen kuin Visual Encoderissa Temporal Encoder -moduulin avulla. Tämä tulos välitetään sitten Multi-Head Language Self-Attention -moduulille, joka on samanlainen kuin Visual Encoderin tarkkailumoduuli. Visuaalisen enkooderin visuaalisten ominaisuuksien mukana luodut tekstitoiminnot välitetään keskinäisen huomion moduulille, jonka tehtävänä on kohdistaa ja yhdistää sekä kuvista että tekstinsyötöistä opitut ominaisuudet. Lähtö johdetaan softmax-toiminnon läpi lopullisen tuloksen saamiseksi.

Testituloksia arvioitaessa transkriptiot eivät ole käytettävissä. Siten vain aloitustunnus <S> välitetään syötteenä ja ensimmäinen ennustettu merkki syötetään takaisin järjestelmään, joka antaa toisen ennustetun merkin. Tämä päättelyprosessi toistetaan silmukassa, kunnes tuotetaan sekvenssisymbolin <E> loppu tai kun suurin ulostulopituus N on saavutettu.

Käsinkirjoitetun tekstin luominen

Käsinkirjoituksen tekstin luominen on tehtävä aidon näköisen käsinkirjoitetun tekstin luomiseen, ja sitä voidaan siten käyttää olemassa olevien tietojoukkojen täydentämiseen. Kuten tiedämme, syväoppiminen vaatii paljon dataa harjoitteluun, kun taas valtavan käsinkirjoituskuvien saaminen eri kielille on työlästä. Tämän ratkaisemiseksi voimme käyttää Generative Adversarial Networks -verkkoja harjoitustietojen luomiseen. Keskustellaan yhdestä tällaisesta arkkitehtuurista täällä

ScrabbleGAN

ScrabbleGAN noudattaa puolivalvottua lähestymistapaa käsin kirjoitettujen tekstikuvien syntetisoimiseksi, jotka ovat monipuolisia sekä tyyliltään että sanastoiltaan. Se pystyy tuottamaan eripituisia kuvia. Generaattori voi myös manipuloida tuloksena olevaa tekstityyliä, jonka avulla voimme päättää, onko tekstin oltava kursiivinen, tai sanoa kuinka paksua / ohutta kynän viivan tulisi olla

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Arkkitehtuuri koostuu täysin konvoluutio-generaattorista, joka perustuu BigGAN: iin. Kutakin syötteen merkkiä varten valitaan vastaava suodatin ja kaikki arvot ketjutetaan yhteen, joka sitten kerrotaan kohinavektorilla z, joka ohjaa muodostettua tekstityyliä. Kuten yllä voidaan nähdä, kutakin yksittäistä merkkiä varten luodut alueet menevät päällekkäin, mikä auttaa luomaan yhdistettyä rekursiivista tekstiä ja mahdollistaa erilaisten merkkien koon joustavuuden. Esimerkiksi m vie suuren osan tilasta, kun taas e ja t vievät rajoitetun alueen. Jotta sama sana säilyy koko sanalle tai lauseelle, tyylivektori z pidetään vakiona kaikkien merkkien kohdalla.

BigGAN-arkkitehtuuriin perustuvaa konvoluutiodiskriminaattoria käytetään luokittelemaan, näyttääkö luodut kuvat vääriltä vai aidoilta. Diskriminaattori ei luota merkkitason huomautuksiin, eikä se siten perustu luokan ehdolliseen GAN:iin. Tämän etuna on se, että merkittyä dataa ei tarvita, ja siten näkymättömästä korpuksesta saatua dataa, joka ei ole osa opetusdataa, voidaan käyttää erottelijan kouluttamiseen. Erottajan ohella tekstintunnistin R koulutetaan luokittelemaan, onko tuotettu teksti todellista järkeä vai onko se hölynpölyä. Tunnistin perustuu CRNN-arkkitehtuureihin, joista toistuva pää on poistettu, jotta tunnistin olisi hieman heikompi eikä tunnista tekstiä, vaikka se olisi epäselvää. R:n ulostulossa generoitua tekstiä verrataan generaattorille annettuun syöttötekstiin ja häviöfunktioon lisätään vastaava sakko.

ScrabbleGANin tuottamat lähdöt on esitetty alla

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Aineistot: -

  1. IAM : - IAM-tietojoukko sisältää noin 100 657 kuvaa englanninkielisistä sanoista, joiden sanat ovat kirjoittaneet XNUMX eri kirjoittajaa. Juna-, testi- ja validointisarja sisältävät sanat, jotka ovat kirjoittaneet toisistaan ​​poissulkevat kirjoittajat http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - CVL-tietojoukko koostuu seitsemästä käsinkirjoitetusta asiakirjasta, jotka on kirjoittanut noin 310 osallistujaa. Tuloksena on noin 83 XNUMX sanasarjaa, jotka on jaettu juna- ja testisarjoihin. https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. RIMES : - Sisältää ranskan kielen sanoja noin 60 1300 kuvaa ja kirjoittanut 5 kirjoittajaa, mikä vastaa noin viittä henkilön kirjoittamaa sähköpostia. http://www.a2ialab.com/doku.php?id=rimes_database:start

Mittarit: -

Merkki virhesuhde : - Se lasketaan Levenshtein-etäisyydeksi, joka on merkkikorvausten (Sc), lisäysten (Ic) ja poistojen (Dc) summa, joita tarvitaan yhden merkkijonon muuttamiseksi toiseksi, jaettuna merkkien kokonaismäärällä. perustotuus (Nc)

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Sanavirhe : - Se lasketaan sanojen korvausten (Sw), lisäysten (Iw) ja poistojen (Dw) summana, jotka vaaditaan yhden merkkijonon muuntamiseksi toiseksi, jaettuna kenttätoden sanojen kokonaismäärällä (Nw).

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Kouluta oma käsinkirjoituksen tunnistusmallisi

Katsotaan nyt, kuinka voimme kouluttaa omaa käsinkirjoitetun tekstin tunnistusmallimme. Harjoittelemme IAM-tietojoukosta, mutta voit harjoitella mallia myös omalla tietojoukollasi. Keskustellaan tämän asennuksen vaiheista

Päiväys

Voit ladata IAM-tietojoukkorekisterin osoitteesta tätä. Kun olet rekisteröitynyt, lataa words.tgz osoitteesta tätä. Tämä sisältää tietoa käsinkirjoitetuista sanakuvista. Lataa myös huomautustiedosto words.txt osoitteesta tätä.

Jos haluat käyttää omaa tietojoukkoasi, sinun on noudatettava IAM-tietojoukon tietojen jäsentämistä.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Yllä oleva näyttää miltä AIM-tietojoukon kansiorakenne näyttää. Tässä a01, a02 jne. edustavat yläkansioita, joissa kussakin on datan alikansiot. Jokaisessa alikansiossa on joukko kuvia, joiden tiedostonimen etuliitteeksi on lisätty kansion nimi.

Lisäksi tarvitsemme huomautustiedoston, jossa mainitaan kuvatiedostojen polut ja vastaavat tekstitykset. Harkitse esimerkiksi yllä olevaa kuvaa tekstin nimeämisellä, alla oleva olisi kuvaus merkintätiedostossa words.txt

a01-000u-01-00 ok 156 VBG-nimitys

  1. a01-000u-01-00 -> sana id riville muodossa a01-000u
  2. ok / err -> Segmenttilähdön laadun indikaattori
  3. 156 -> harmaa taso tämän sanan sisältävän rivin binarisoimiseksi
  4. 395 932 -> rajoittava ruutu tämän sanan ympärille muodossa x, y, w, h
  5. VBG -> tämän sanan kielioppi. Tässä se on Verbi Gerund
  6. nimittäminen -> tämän sanan transkriptio

Arkkitehtuuri :-

Koulutamme CRNN-pohjaista arkkitehtuuria CTC-häviöllä. CNN: ää käytetään RNN: lle välitettävien visuaalisten ominaisuuksien purkamiseen ja CTC-häviö kohdistetaan loppuun ahneella dekooderilla tuotoksen saamiseksi.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

koulutus

Käytämme CRNN-koodia tätä kouluttaa malliamme. Noudata alla olevia ohjeita tietojen valmistelemiseksi

python checkDirs.py

Suorita komento yllä ja sinun pitäisi nähdä alla oleva kaltainen lähtö

[OK] sanat /
[OK] sanat / a01 / a01-000u /
[OK] sanat.txt
[OK] test.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Nyt olet valmis aloittamaan harjoittelun.

Siirry juurihakemistoon ja suorita

python main.py --train

tulokset

Noin 50 ajanjakson harjoittelun jälkeen merkkivirhesuhde (CER) on 10.72%, kun taas sanavirheiden määrä (WER) on 26.45% ja siten sanatarkkuus on 73.55%. Osa ennusteista näkyy alla olevassa kuvassa.

Kuinka tehdä käsinkirjoituksen tunnistus helposti koneoppimisen avulla

Malli pystyy ennustamaan hahmot tarkasti suuressa määrin, mutta se kärsii muutamissa tapauksissa, kuten kauhistavasti ennustetaan yhtä anonyyminä, tarinoita ennustetaan tähtinä. Nämä ongelmat voidaan ratkaista käyttämällä kielimallia jälkikäsittelyvaiheessa yhdessä dekooderin kanssa, joka voi tuottaa merkityksellisiä sanoja ja korjata yksinkertaiset virheet.

Yhteenveto

Vaikka tekniikassa on tapahtunut merkittävää kehitystä, joka auttaa käsinkirjoitetun tekstin paremmin tunnistamisessa, HTR ei ole kaukana ratkaistusta ongelmasta OCR: ään nähden, joten sitä ei vielä käytetä laajalti teollisuudessa. Siitä huolimatta tekniikan kehityksen tahdissa ja muuntajien kaltaisten mallien käyttöönoton myötä voimme odottaa, että HTR-malleista tulee pian yleisiä.

Voit saada lisää tutkimusta tästä aiheesta voit aloittaa tätä

Kirjallisuutta

Aikaleima:

Lisää aiheesta Tekoäly ja koneoppiminen