53
1/53 Recunoaşterea şirurilor numerice scrise de mână Dan Cireşan Conducător de doctorat: Prof. Dr. Ing. Ştefan Holban octombrie 2008 Universitatea “Politehnica” din Timişoara Facultatea de Automatică şi Calculatoare Departamentul de Calculatoare

Recunoa şterea şirurilor numerice scrise de mână

  • Upload
    salome

  • View
    53

  • Download
    5

Embed Size (px)

DESCRIPTION

Universitatea “Politehnica” din Timi ş oara Facultatea de Automatică şi Calculatoare Departamentul de Calculatoare. Recunoa şterea şirurilor numerice scrise de mână. Dan Cireşan Conducător de doctorat: Prof. Dr. Ing. Ştefan Holban octombrie 2008. Obiectiv. - PowerPoint PPT Presentation

Citation preview

Page 1: Recunoa şterea şirurilor numerice scrise de mână

1/53

Recunoaşterea şirurilor numerice scrise de mână

Dan Cireşan

Conducător de doctorat: Prof. Dr. Ing. Ştefan Holban

octombrie 2008

Universitatea “Politehnica” din TimişoaraFacultatea de Automatică şi CalculatoareDepartamentul de Calculatoare

Page 2: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 2/53

Obiectiv• crearea unei metode eficiente de recunoaştere a şirurilor numerice

scrise de mână, compuse dintr-un număr nedefinit de cifre izolate sau parţial suprapuse

Ideea• Utilizarea unui clasificator pentru recunoaşterea perechilor de cifre

parţial suprapuse, în scopul evitării problemelor generate de segmentare. Implementarea clasificatorului utilizând reţele neuronale cu hărţi de convoluţie (se elimină necesitatea extragerii de caracteristici => simplitate)

Page 3: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 3/53

Conţinutul prezentării• Introducere

• Stadiul actual

• Aspecte teoretice

• Baze de date cu cifre şi şiruri de cifre

• Experimente

• Optimizări ale algoritmului de propagare înainte

• Concluzii şi continuări

Page 4: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 4/53

Recunoaşterea scrisului de mână

• unul din subiectele nerezolvate ale Inteligenţei Artificiale

• natura acestei probleme impune o abordare euristică în rezolvarea ei, astfel că multe din părţile procesului de recunoaştere sunt şi probabil vor rămâne perfectibile

• în acest domeniu nu există soluţii definitive

Introducere

Page 5: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 5/53

Motivaţie

• Filozofică– La modul general, îmbunătăţirea ratei de recunoaştere este importantă

în întreg domeniul recunoaşterii formelor şi la dezvoltarea inteligenţei artificiale

• Practică– recunoaşterea codurilor poştale de pe plicuri

• Parascript – Total Recognition Company: produsele acestei firme sortează zilnic peste un sfert de miliard de plicuri în SUA

– Recunoaşterea informaţiilor din diverse formulare: cecuri bancare, formulare medicale, fiscale etc

Introducere

Page 6: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 6/53

Recunoaşterea şirurilor numerice• mult mai complicată decât cea a recunoaşterii cifrelor deoarece

apar probleme suplimentare:– lungimea necunoscută a şirului (spre deosebire de: cifre - 1, cuvinte -

extrasă din dicţionare din care se poate afla lungimea)– segmentarea– suprapuneri parţiale

• rata de recunoaştere actuală este de aproximativ 96-97%– studiu de caz:

• 250 milione de plicuri ce trebuie sortate• 10% scrise de mână: 25 de milioane• 4% rată de eroare: un milion de plicuri ce trebuie sortate manual

• orice îmbunătăţire a ratei de recunoaştere este importantă

Introducere

Page 7: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 7/53

Stadiul actual – cele mai bune rezultate

• cifre izolate– Simard, Steinkraus, Platt [63] 2003 – 0.4% eroare– Marc’Aurelio, Poultney, Chopra, LeCun [47] 2006 – 0.39% eroare

• şiruri de cifre– metode holistice: număr redus de articole

• Wang, Govindaraju, Srihari [66]: 86.8%• Behnke [8]: ?• LeCun et al. [38]: 66%

– metode ce utilizează segmentare: număr ridicat de articole• Liu, Sako, Fujisawa [43] 2004 – 96-97%

Concluzii:• metodele holistice sunt mult mai puţin studiate, iar ratele de

recunoaştere sunt mult mai mici decât cele ale metodelor ce utilizează segmentarea

• reţelele neuronale cu hărţi de convoluţie sunt foarte bune pentru recunoaşterea cifrelor izolate

Stadiul actual

Page 8: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 8/53

Aspecte teoretice

• Transformata Hough• Reţele neuronale artificiale (RNA)• RNA cu hărţi de convoluţie (RNC)

Aspecte teoretice

Page 9: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 9/53

Transformata Hough pentru detecţia de linii

Aspecte teoretice

Page 10: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 10/53

Reţele neuronale artificiale (RNA)• alcătuite din unităti de procesare numite neuroni

• neuronul artificial este un model matematic simplist al neuronului biologic

• neuronii unei RNA sunt, de obicei, dispuşi pe mai multe straturi

• RNA pot fi împărţite în două mari categorii: RNA cu propagare înainte şi RNA recurente (nu fac subiectul tezei)

• într-o RNA cu propagare înainte există conexiuni numai între neuroni de pe straturi consecutive, informaţia de la intrare propagându-se secvenţial prin fiecare strat până la ieşire

• dacă fiecare neuron de pe un strat este conectat cu toţi neuronii de pe stratul anterior, stratul se numeşte complet conectat

Aspecte teoretice

Page 11: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 11/53

Reţele neuronale artificiale cu hărţi de convoluţie (RNC)

• un strat de convoluţie conţine una sau mai multe hărţi de convoluţie• neuronii din aceste hărţi sunt conectaţi numai cu o parte a

neuronilor de pe stratul anterior• se folosesc tipare de conectare pentru a imita funcţionarea

sistemului vizual uman• o reţea neuronală poate conţine atât straturi complet conectate, cât

şi straturi de convoluţie

Y. LeCun [36]Aspecte teoretice

Page 12: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 12/53

Deplasarea nucleului de convoluţie

Aspecte teoretice

• utilizată pentru a micşora progresiv dimensiunile straturilor

• după un nivel de convoluţie dimensiunile hărţii se reduc la (n-3)/2 pentru nuclee de 5x5

• neuronii de pe stratul următor sunt conectaţi fiecare la unul sau mai multe nuclee de convoluţie

Nuclee de convoluţie

Page 13: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 13/53

Conectarea straturilor de convoluţie

Aspecte teoretice

Page 14: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 14/53

Baze de date cu cifre şi şiruri de cifre

Baze de date

Page 15: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 15/53

Formular NIST SD 19

Baze de date

Page 16: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 16/53

Seturi de cifre• MNIST

– creat de Yann LeCun şi Corina Cortez, 1998 [39]

– antrenare: 60000 imagini – test: 10000 imagini

• LNIST– antrenare: 66214– test: 45398

• centrare în centrul de masă

• 29 x 29 pixeli

• subseturi ale NIST SD 19: 128 x 128 pixeli

Baze de date

Page 17: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 17/53

TDNS (Two-digit Numeral Strings)• pentru antrenarea clasificatorului

pentru perechi de cifre parţial suprapuse (2RNC)

• conţine perechi de cifre parţial suprapuse

• formularele NIST conţin prea puţine imagini cu perechi de cifre => generare automată:

– extragere cifre din NIST SD 19: 2 x 10000

– curăţare semiautomată, centrare, scalare la 20 x 20, unire, deplasare, redimensionare la 40 x 28

Baze de date

Page 18: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 18/53

TDNS (Two-digit Numeral Strings)

Baze de date

Page 19: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 19/53

TDNS – metoda de unire

Baze de date

• generare automată a perechilor de cifre– centrare– scalare la 20 x 20 pixeli– unire– deplasări pe orizontală şi pe verticală– redimensionare la 40 x 28 pixeli

• 200000 imagini pentru setul de antrenare

• 200000 imagini pentru setul de test

Page 20: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 20/53

Seturile de test 3DNS, 6DNS şi 10DNS

• pentru a putea compara rezultatele cu cele mai bune existente în domeniu

• extrase din 296 de formulare NIST– detectare rânduri

• Transformata Hough• Identificare discontinuităţi• Identificare şi eliminare linii

multiple– identificare câmpuri

• detecţie discontinuităţi• comparare linii paralele

– extragere câmpuri

Baze de date

Page 21: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 21/53

Structura seturilor de test• 3DNS

– 1476 de imagini– 4 imagini greşite

• 6DNS– 1471 de imagini– 9 imagini greşite

• 10DNS– 878 de imagini– 10 imagini greşite

Baze de date

Page 22: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 22/53

Contribuţii• extragerea şi crearea seturilor LNIST• crearea seturilor TDNS (400000 de imagini)• dezvoltarea unei metode de generare automată a perechilor de cifre parţial

suprapuse• conceperea unei metode pentru extragerea câmpurilor din formulare• crearea unei metode de curăţare semiautomată a imaginilor• crearea seturilor de test 3DNS, 6DNS, 10DNS

Baze de date

Page 23: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 23/53

Experimente• Experimente cu cifre individuale

– Reţele neuronale de tip perceptron– Reţele neuronale cu extractori de trăsături

• Experimente cu şiruri compuse din două cifre parţial suprapuse– Reţele neuronale de tip perceptron– Reţele neuronale cu extractori de trăsături

• Experimente cu şiruri de cifre din baza de date NIST SD 19– Sistemul de recunoaştere– Analizorul de componente conexe– Componenta de clusterizare (agregare)– Clasificatorul– Experimente cu setul 3DNS– Experimente cu setul 6DNS– Experimente cu setul 10DNS

Experimente

Page 24: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 24/53

Experimente cu cifre individuale• Reţele neuronale de tip perceptron

– un strat ascuns– maxim 600s / epocă– fără distorsiuni– cu distorsiuni: 2.88%, dar timpul creşte cu

100s / epocă• Reţele neuronale cu extractori de trăsături

– trei straturi ascunse– cu distorsiuni– timp rulare: 210-620s/epocă (2 thread-uri)– timp total de antrenare (o reţea): 24 h– mult mai performante decât perceptronul

multistrat– cea mai performantă: 6 hărţi de convoluţie

pe stratul L1, 50 de hărţi de convoluţie pe stratul L2 şi 60 de neuroni pe stratul L3

Experimente cu cifre individuale

Page 25: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 25/53

Experimente cu şiruri compuse din două cifre parţial suprapuse

• două tipuri de reţele– reţele neuronale de tip perceptron– reţele neuronale cu extractori de trăsături (hărţi de convoluţie)

• antrenare şi testare cu seturile TDNS• scalarea imaginilor de la 40x28 la 21x13 (pentru a limita timpul de

antrenare la 24h, în cazul utilizării a două thread-uri)• imaginile sunt mici, în unele cazuri fiind dificil de distins chiar şi pentru

om

Experimente cu perechi de cifre

Page 26: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 26/53

Arhitectura reţelelor de convoluţie (RNC)

Experimente cu perechi de cifre

Page 27: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 27/53

Experimente cu RNC

• 77 de reţele de convoluţie antrenate şi testate

• timp de antrenare limitat la 24h, în cazul utilizării a două thread-uri

• 60-670s / epocă• 15 calculatoare Core2 Duo

2.4GHz pentru două săptămâni• cea mai bună RNC: 10 hărţi 9x5

pe L1, 100 de hărţi 3x1 pe L2, 100 de neuroni pe L3

• eroare test: 5.35%• deformările nu sunt utile pentru

cifre parţial suprapuse

Experimente cu perechi de cifre

Page 28: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 28/53

Erori pentru RNC cu 8 hărţi de convoluţie pe stratul L1

Experimente cu perechi de cifre

Page 29: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 29/53

Analiza rezultatelor celei mai bune RNC – concluzii şi contribuţii

• cea mai bună reţea are zece hărţi ce convoluţie a 9×5 neuroni pe stratul L1, o sută de hărţi de convoluţie a 3×1 neuroni pe stratul L2 şi o sută de neuroni pe stratul L3

• eroare de 5.35% pe setul de test• 10708 imagini din 200000 au fost clasificate greşit• doar în 663 (0.33%) de cazuri ambele cifre au fost clasificate defectuos

– cifra zecilor: 5239 de cazuri– cifra unităţilor: 6123 de cazuri

• distribuţia erorilor pe clase arată că clasele 67, 64 şi 69 au fost mai dificil de recunoscut, generând 253 (2.36%), 219 (2.04%), respectiv 212 (1.98%) erori de clasificare

• RNC sunt mult mai performante decât perceptronul cu un strat ascuns• deformările nu sunt utile pentru cifre parţial suprapuse• eroarea este puţin influenţată de rejecţie => clasificator robust• rezultatele au fost publicate în [19] şi au fost prezentate la ICCP 2008

Experimente cu perechi de cifreN(C1) −N(C2) < T

Page 30: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 30/53

Experimente pe seturile de test 3DNS, 6DNS şi 10DNS

Experimente pe şiruri numerice

Page 31: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 31/53

Arhitectura sistemului de recunoaştere

• ambii clasificatori sunt implementaţi cu RNC• antrenarea a fost efectuată numai cu exemple pozitive• utilizarea RNC pentru perechi de cifre elimină necesitatea segmentării• prin compararea rezultatelor celor doua RNC se decide dacă imaginea

conţine o cifră sau două• evaluarea pe NIST SD 19 arată că metoda are rezultate comparabile cu

cele mai bune existente, chiar dacă acelea folosesc antrenare cu exemple negative şi un proces complicat de segmentare

293854

Experimente pe şiruri numerice

Page 32: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 32/53

Analizorul de componente conexe (CCA)

• se extrag toate componentele conexe ale imaginii folosind un algoritm de căutare în patru direcţii: orizontală şi verticală

• fiecărei componente conexe i se calculează diverse atribute: dimensiune, dreptunghi delimitator, lăţime, înălţime, aspect (lăţime / înălţime), distanţe faţă de alte componente, culoare

• NU se efectuează segmentare; nicio imagine nu este împărţită în părţi, extrăgându-se componente deja separate

Experimente pe şiruri numerice

Page 33: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 33/53

Etapa de agregarese execută secvenţial următoarele

operaţii:1. toate componentele mici,

depărtate de alte componente sunt şterse

2. oricare două componente separate de un singur pixel sunt concatenate dacă respectă câteva condiţii. Acest pas se repetă pentru componente separate de 2 şi apoi de 3 pixeli

3. reconectarea cifrei 54. oricare două componente ale

căror proiecţii pe orizontală se suprapun complet sunt concatenate

rezultatul final al agregării

reconectarea cifrei 5

Experimente pe şiruri numerice

Page 34: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 34/53

Sistem de recunoaştere bazat pe scor maxim

• fiecare componentă este prezentată ambilor clasificatori

• clasificatorul cu scor maxim determină clasa şi numărul de cifre

• din 1476 de imagini a trei cifre (setul 3DNS), 126 au fost incorect recunoscute: rată de recunoaştere 91.46%

• observaţii:– deoarece am antrenat ambele RNC fără exemple negative, nu putem

să le utilizăm în mod direct pentru a decide dacă o componentă conţine una, două sau mai multe cifre

– o RNA antrenată numai cu exemple pozitive atribuie oricărei imagini de intrare, chiar incorectă, clasa cea mai apropiată (asemănătoare)

– multe imagini conţinând cifrele 0, 1, 3, 4, 7, 8 sau 9 au fost recunoscute de 2RNC ca fiind 01, 11, 31, 41, 71, 81, respectiv 91. Problema se datorează modului de de generare automată a perechilor de cifre. Aceste cazuri vor fi denumite X1

Experimente pe şiruri numerice

Page 35: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 35/53

Translatarea imagini în câmpul de intrare al clasificatorilor

• imaginile pentru 2RNC au 21x13 pixels şi sunt centrate în dreptunghiul delimitator => sensibile la translaţii

• poziţionarea perfectă în câmpul de intrare oferă recunoaştere mai sigură

• am deplasat imaginile în câmpurile de intrare ale RNC• 1RCN a fost antrenat cu imagini centrate în centrul de masă. 1RCN

este aplicată repetat pe imaginiea translatată cu ±1 pixel relativ la centrul de masă. Se păstrează scorul maxim din cele 3×3 = 9 teste

• considerând modul de generare al imaginilor pentru 2RCN imaginile de 18x10 pixeli au fost amplasate în toate poziţiile posibile ale câmpului de intrare de 21x13 neuroni. Există (21 − 18 + 1) × (13 − 10 + 1) = 16 posibilităţi

• rata de recunoaştere a scăzut la 71.54%

Experimente pe şiruri numerice

Page 36: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 36/53

Sistem de recunoaştere bazat pe diferenţa de scoruri

• am încercat să evit antrenarea cu exemple negative a RNC prin utilizarea faptului că în cazul unei recunoaşteri corecte diferenţa dintre cele mai bune două scoruri este foarte mare

• pentru cazurile X1 şi 1X condiţia este întărită

• rata de recunoaştere este de doar 76.49%

• în cazul aplicării translaţiilor pentru ambele RNC rata de recunoaştere creşte până la 93.36%

Experimente pe şiruri numerice

Page 37: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 37/53

Sistem de recunoaştere bazat pe scor maxim şi pe diferenţe de

scoruri• o combinaţie a metodelor anterioare

• pentru fiecare clasificator adunăm cel mai bun scor cu diferenţa dintre cele mai bune două scoruri

• pentru cazurile X1 şi 1X condiţia este întărită

• rata de recunoaştere, 83.40%, este între valorile celor două rate de recunoaştere ale sistemelor anterioare

• aplicarea translaţiilor pentru ambele RNC duce la creşterea ratei de recunoaştere până la 93.77%

Experimente pe şiruri numerice

Page 38: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 38/53

Experimente pe setul 6DNS

Experimente pe setul 10DNS

Experimente pe şiruri numerice

Page 39: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 39/53

Concluziile experimentelor• utilizarea celei de-a doua RNC permite eliminarea procesului de

segmentare

• antrenarea cu exemple negative a fost evitată prin implementarea unor reguli simple de selecţie a clasificatorului corespunzător

• ratele de recunoaştere obţinute sunt mai bune cu până la 30% decât toate rezultatele anterioare (Liu, Sako and Fujisawa [12]) obţinute cu RNA antrenare fără exemple negative, şi apropiate (3%) de cele mai bune rezultate [12], chiar dacă nu am utilizat nici segmentare, nici antrenare cu exemple negative

• adăugarea 2RNC la sistemul de recunoaştere a crescut rata de recunoaştere cu 0.61 - 4.47% până la 93.77%

Experimente

Page 40: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 40/53

Optimizări ale algoritmilor• necesare pentru a putea antrena RNA mai mari => creşterea ratei

de recunoaştere• programul open source care a fost adaptat şi cu care s-au efectuat

parte din experimentele anterioare este scris didactic, nu în ideea de viteză maximă. Nu permite antrenarea unor reţele de dimensiuni mult mai mari. Utilizează multe clase şi vectori STL => viteză scăzută

• imaginile pentru 2RNC au doar 21x13 pixeli din motivele de mai sus• este necesară o creştere a dimensiunii la 41x29 pixeli. Cu

programul actual, în cazul în care ar funcţiona, antrenarea ar dura două săptămâni

• pentru evaluarea performanţelor am ales o parte reprezentativă a RNA: calcularea celui mai mare strat al reţelelor, L3 de la 1RNC

• testarea se face cu 10000 de imagini

Optimizări

Page 41: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 41/53

Variante pentru CPU• open source modificată

– cea mai lentă: multe clase, vectori STL– 11.67s– muti-thread-ing

• C++– o singură clasă, alocare cu malloc()– 4.39s– rearanjarea datelor în memorie pentru creşterea vitezei de citire/scriere

• SSE3– instrucţiuni ASM pentru calcul vectorial: movaps, mulpd, haddpd– 3.37s– dificil de scris

Optimizări

Page 42: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 42/53

Graphics Processing Unit

Adaptare după: NVIDIA. Cuda compute unified device architecture - programming guide. www.nvidia.com.

Optimizări

Page 43: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 43/53

Comparaţie între arhitecturile CPU şi GPU

Optimizări

Sursa: www.nvidia.com

Page 44: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 44/53

Varianta BROOK+• pentru plăci AMD-ATI• limbajul de programare este de nivel prea înalt, pentru cazul

particular al RNA fiind nepotrivit• derivat din limbajul BROOK• similar ca sintaxa cu limbajul C• varianta cea mai generală de kernel: 15s• depanare dificilă• în 10 septembrie 2008 a apărut noul SDK: trebuie reîncercate

programele

Optimizări GPU BROOK+

Page 45: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 45/53

Limbajul CUDA• CUDA (Compute Unified Device Architecture)• pentru plăcile din seriile GeForce 8 şi GTX 200 (100 milioane)• mult mai dezvoltat decât limbajul BROOK+• permite şi acces de nivel scăzut la hardware• este o extensie a C/C++• cuvinte cheie pentru

– accesarea facilităţilor procesorului grafic: kernel, device, global etc– noi tipuri de date: float2, float3, int4 etc– funcţii API: cudaMalloc(), cudaMemset() etc

• multithreading masiv– mii de fire de execuţie– schimbarea firelor de execuţie se face fără întârzieri de timp

• thread-urile sunt partiţionate în blocuri care la rândul loc alcătuiesc un grid

Optimizări GPU CUDA

Page 46: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 46/53

Arhitectura GTX 280• 1.4 miliarde de tranzistoare• 30 multiprocesoare (MP) a 8 procesoare fiecare• 933 GFLOPS• 141GB/s lăţime de bandă la memorie (1GB)• fiecare multiprocesor are memorie partajată, rapidă, accesibilă în paralel prin opt porturi a 32 biţi fiecare• magistrala memoriei globale este de 512 biţi• există memorii pentru texturi şi pentru constante, fiecare fiind accesabile prin intermediul unor cache-uri

Optimizări GPU CUDA

Sursa: www.nvidia.com

Page 47: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 47/53

Variantele CUDA

Optimizări GPU CUDA

• două variante de optimizare– V1: 1.6 s– V2: 0.2 s

• tipuri de optimizări:– accese consecutive la

memoria globală– utilizarea memoriei cache a

MP– accesarea memoriilor cache

evitând conflictele de banc– distribuirea thread-urilor în

blocuri în mod cât mai optim– desfăşurarea buclelor– eliminarea instrucţiunilor

condiţionale

Page 48: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 48/53

Comparaţie între ratele de accelerare

Optimizări

Accelerare

Page 49: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 49/53

Contribuţii• crearea unui clasificator pentru perechi de cifre parţial suprapuse şi

demonstrarea eficienţei acestuia [19]. Acest clasificator pune bazele construirii unui sistem de recunoaştere a şirurilor numerice cu număr nedefinit de cifre, unite sau nu

• crearea unui nou sistem de recunoaştere [17] a şirurilor numerice scrise de mână. Metoda propusă evită folosirea segmentării prin utilizarea a doi clasificatori, unul la nivel de cifră şi unul la nivel de două cifre parţial suprapuse. Ratele de recunoaştere obţinute (92.52-93.77%) sunt foarte apropiate de cele mai bune existente în domeniu, cu toate că metoda nu foloseşte nici segmentare, nici antrenare cu exemple negative. Pentru evitarea antrenării cu exemple negative, au fost concepuţi trei algoritmi simpli şi eficienţi de selecţie a clasificatorului potrivit conţinutului imaginii

• accelerarea pasului de propagare înainte a reţelelor neuronale de peste 20 de ori folosind arhitecturi GPU, cu perspectiva de mărire a acestui factor pentru reţele şi mai mari. Punerea bazelor creării unui algoritm de antrenare pe GPU pentru reţele neuronale practic imposibil de antrenat pe CPU

Page 50: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 50/53

Contribuţii (continuare)

• crearea unui metode ce generează automat perechi de cifre parţial suprapuse

• dezvoltarea unui algoritm de extragere automată a câmpurilor din formulare. Algoritmul poate fi adaptat pentru a extrage câmpuri rectangulare din orice tip de formular

• extragerea şi crearea seturilor de date LNIST, TDNS, 3DNS, 6DNS, 10DNS

• crearea unui program de curăţare semiautomată a imaginilor

• conceperea unui algoritm de clusterizare (concatenare) a imaginilor cu părţi de cifre în imagini de cifre sau de perechi de cifre

Page 51: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 51/53

Continuări posibile• Clasificatorul pentru cifre

– adăugarea în setul de antrenare de exemplare ale cifrei 1 cu linie orizontală în partea de jos. În prezent, setul de antrenare nu conţine niciun astfel de exemplar şi toate cifrele 1 scrise în acest mod sunt recunoscute ca fiind 2. Verificarea existenţei a suficiente exemplare din fiecare stil de scriere a cifrelor [41] şi completarea setului de antrenare, dacă este cazul

– generarea sau colectarea de exemple negative– reantrenarea clasificatorului

• Clasificatorul pentru perechi de cifre parţial suprapuse– mărirea dimensiunii imaginilor setului de antrenare de la 21 × 13 pixeli la 41 × 29

pixeli– rafinarea algoritmului de formare automată a perechilor de cifre parţial suprapuse

prin implementarea cazurilor particulare 1X şi X1– studierea efectului aplicării deformărilor înaintea procesului de unire a cifrelor– generarea sau colectarea de exemple negative– reantrenarea clasificatorului

• Implementarea pe GPU a algoritmului de antrenare

Page 52: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 52/53

Publicaţii şi granturi• publicaţii în domeniul tezei:

– Dan Ciresan. Avoiding segmentation in multi-digit numeral string recognition by combining single and two-digit classifiers trained without negative examples . Proc. of 10th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, pages 197–203, 2008

– Dan Ciresan and Dan Pescaru. Off-line recognition of handwritten numeral strings composed from two-digits partially overlapped using convolutional neural networks . Proc. of IEEE 4th International Conference on Intelligent Computer Communication and Processing, pages 53–60, 2008

– Dan Ciresan and Dan Pescaru. Using character moment based invariant features to improve off-line handwriting recognition. Proc. of the 8th International Conference on Development and Application Systems, pages 471–476, 2006

– Dan Ciresan. Image segmentation methods based on natural clustering algorithms, usable for unconstrained handwriting recognition. Proc. of the 6th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, pages 131–140, 2004

– Dan Ciresan and Cosmin Cernazanu. Linguistic modelling for automatic speech recognition in romanian language. Proc. of the 7th International Conference on Development and Application Systems, pages 490–497, 2004

• granturi în domeniul tezei:– CNCSIS TD 2006-2007 nr. 58GR / 2006, cu titlul "Recunoaşterea textelor scrise de

mână în limba română“ (director de grant)

Page 53: Recunoa şterea şirurilor numerice scrise de mână

Dan Cireşan – Recunoaşterea şirurilor numerice scrise de mână 53/53

Vă mulţumesc