Sunteți pe pagina 1din 105

Cuprins

1 Introducere 1.1 Motivaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t 1.2 Organizarea tezei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Descrierea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Stadiul actual al domeniului 2.1 Stadiul actual al recunoa terii cifrelor . . . . . . s 2.2 Stadiul actual al recunoa terii sirurilor numerice s 2.2.1 Recunoa terea holistica . . . . . . . . . s 2.2.2 Recunoa terea cu segmentare . . . . . s 2.3 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 3 3 5 6 7 7 8 10 11 11 11 12 13 14 15 15 16 18 19 19 21 22 23 24 24 25 26 27 30 30 31

3 Aspecte teoretice 3.1 Noiuni de prelucrarea imaginilor . . . . . . . . . . . . . . . . . t 3.1.1 Centrul de masa al unei imagini . . . . . . . . . . . . . 3.1.2 Distorsiuni . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Transformata Hough . . . . . . . . . . . . . . . . . . . . 3.2 Reele neuronale articiale . . . . . . . . . . . . . . . . . . . . t 3.2.1 Perceptronul . . . . . . . . . . . . . . . . . . . . . . . . t 3.2.2 Reele neuronale articiale cu hari de convoluie (RNC) t t 3.2.3 Metode de antrenare a reelelor neuronale . . . . . . . . t 4 Baze de date cu cifre si siruri de cifre 4.1 NIST SD 19 . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Structura NIST SD 19 . . . . . . . . . . . . . . 4.1.2 Coninutul NIST SD 19 . . . . . . . . . . . . . t 4.1.3 Ierarhizarea datelor . . . . . . . . . . . . . . . 4.1.4 Formatul ierelor NIST . . . . . . . . . . . . . s 4.1.5 Programe utilitare ale NIST SD 19 . . . . . . . 4.2 MNIST . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 LNIST - Liu-NIST . . . . . . . . . . . . . . . . . . . . 4.4 TDNS (Two-digit Numeral Strings) . . . . . . . . . . . 4.4.1 Setul de antrenare . . . . . . . . . . . . . . . . 4.4.2 Setul de test . . . . . . . . . . . . . . . . . . . 4.5 Seturile de test 3DNS, 6DNS si 10DNS . . . . . . . . 4.5.1 Metoda de extragere a cmpurilor din formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5.2 Setul de test 3DNS 4.5.3 Setul de test 6DNS 4.5.4 Setul de test 10DNS 4.6 Concluzii . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

36 37 38 38 40 40 41 41 43 43 44 49 49 49 49 50 52 57 58 58 60 61 61 62 63 65 68 71 79 82 82 83 85

5 Experimente 5.1 Experimente cu cifre individuale . . . . . . . . . . . . . . . . . 5.1.1 Reele neuronale de tip perceptron . . . . . . . . . . . . t 5.1.2 Reele neuronale cu extractori de trasaturi . . . . . . . . t 5.2 Experimente cu siruri compuse din doua cifre parial suprapuse t 5.2.1 Reele neuronale de tip perceptron . . . . . . . . . . . . t 5.2.2 Reele neuronale cu extractori de trasaturi . . . . . . . . t 5.2.3 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Experimente cu siruri de cifre din NIST SD 19 . . . . . . . . . . 5.3.1 Sistemul de recunoa tere . . . . . . . . . . . . . . . . . s 5.3.2 Analizorul de componente conexe . . . . . . . . . . . . 5.3.3 Componenta de clusterizare (agregare) . . . . . . . . . 5.3.4 Clasicatorul . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Experimente pe setul 6DNS . . . . . . . . . . . . . . . . . . . 5.5 Experimente pe setul 10DNS . . . . . . . . . . . . . . . . . . . 5.6 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Optimizarea vitezei de execuie t 6.1 Variante CPU ale optimizarii algoritmului de propagare nainte 6.1.1 Varianta open source modicata . . . . . . . . . . . . 6.1.2 Varianta C++ fara vectori STL . . . . . . . . . . . . . 6.1.3 Varianta SSE2 . . . . . . . . . . . . . . . . . . . . . . 6.2 Variante GPU ale optimizarii algoritmului de propagare nainte 6.2.1 Varianta BROOK+ . . . . . . . . . . . . . . . . . . . . 6.2.2 Variantele CUDA . . . . . . . . . . . . . . . . . . . . 6.3 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 Concluzii 7.1 Contribuii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t 7.2 Sumarul tezei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Continuari posibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ii

Lista gurilor
2.1 Ratele de recunoa tere pentru siruri din NIST SD 19. Preluare din [44]. [35] s reprezinta [30], [36] reprezinta [9], iar [14] reprezinta [58]. . . . . . . . . . . . 3.1 Transformata Hough pentru detecia de linii. Fiecarei linii d din spaiul imagine t t i corespunde un punct n spaiul parametric Hough. . . . . . . . . . . . . . . t 3.2 Exemplu de matrice de acumulare rezultata n urma aplicarii transformatei Hough. Cercurile marcheaza maximele corespunzatoare celor sase linii detec tate. A area graca folose te negru pentru elemente nule si tonuri de gri cu s s iluminare proporionala cu valoarea respectivului element pentru valori nenule. t Albul se folose te pentru elementul sau elementele cu numar maxim de puncte. s 3.3 RNC pentru recunoa terea caracterelor. Preluare din [37]. . . . . . . . . . . . s 3.4 Modul de deplasare a nucleului de convoluie. . . . . . . . . . . . . . . . . . . t 3.5 Modul de conectare a neuronilor de pe straturile de convoluie. . . . . . . . . t 4.1 Ierarhia seturilor de test si de antrenare. . . . . . . . . . . . . . . . . . . . . . 4.2 Exemplu de formular din NIST SD 19 (formularul f1816_24). A se vedea si Figura 4.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Arborele aferent ierarhizarii formularelor n partiii. . . . . . . . . . . . . . . . t 4.4 Arborele aferent ierarhizarii imaginilor de caractere dupa partiii si persoane. . t 4.5 Comparaie ntre centrarea n centrul de masa (stnga) si centrarea n drept tunghiul delimitator (dreapta). Punctul ro u reprezinta centrul de masa al imags inii. Pe ultimul rnd se aa suprapunerea celor doua imagini de pe coloana corespunzatoare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Primul rnd - exemple de artefacte n imagini 128 128 pixeli din NIST SD 19; rndul al doilea - imaginile rezultate n urma procesului de corecie semiaut tomata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Primul rnd - imagini defectuos segmentate sau deformate din baza NIST SD 19; rndul al doilea - imagini rezultate n urma coreciei manuale. . . . . . . . t 4.8 Primul rnd - imagini 128 128 pixeli din NIST SD 19; rndul al doilea - imagini 20 20 pixeli rezultate dupa taiere relativa la dreptunghiul delimitator, centrare si redimensionare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Interfaa programului de corectare semiautomata. . . . . . . . . . . . . . . . . t 4.10 Cifrele a noua persoane dupa etapele de taiere dupa dreptunghiul delimitator, centrare si redimensionare la 20 20 pixeli. . . . . . . . . . . . . . . . . . . . 10

13

14 15 16 17 18 20 23 23

26

27 28

28 29 30

4.11 Procesul de suprapunere pariala: primul rnd - imaginile originale; rndul al t doilea - imagini deplasate pe verticala; al treilea rnd - imaginea nala dupa deplasarea pe orizontala cu 13 pixeli (distana minima dintre imagini) + 3 (dist tana de suprapunere) pixeli. . . . . . . . . . . . . . . . . . . . . . . . . . . . t 4.12 Limitarea variaiei parametrului r. . . . . . . . . . . . . . . . . . . . . . . . . . t 4.13 Imagini obinute n urma procesului de extragere a cmpurilor din formulare. t t Primul rnd - imagini brute, al doilea rnd - imagini dupa faza de curaare t automata, rndul al treilea - imagini dupa faza de curaare manuala. . . . . . . 4.14 Imaginile cu numere de trei cifre care au fost scrise eronat de subiecii din NIST t SD 19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.15 Imagini cu numere de sase cifre, eronat scrise de subiecii NIST SD 19. . . . . t 4.16 Imagini cu numere de zece cifre, eronat scrise de subiecii NIST SD 19 (toate t ar trebui sa conina sirul 0123456789). . . . . . . . . . . . . . . . . . . . . . . t Exemple de imagini din ierul de antrenare. . . . . . . . . . . . . . . . . . . s t Arhitectura reelei neuronale cu hari de convoluie. . . . . . . . . . . . . . . . t t t Suprafeele erorilor reelelor cu 8 hari de convoluie pe stratul L1 . . . . . . . . t t t Arhitectura sistemului de recunoa tere a sirurilor de cifre. . . . . . . . . . . . s Componentele conexe nainte (sus) si dupa (jos) faza de agregare. Fiecare componenta este colorata distinct si este desenat si dreptunghiul delimitator. . 5.6 Reconectarea cifrei 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Cazurile de unire defectuoasa de tipul X1. . . . . . . . . . . . . . . . . . . . 6.1 Codul sursa al algoritmului de propagare nainte pentru varianta C++ cu vectori STL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Codul sursa al algoritmului de propagare nainte pentru varianta C++. . . . . . 6.3 Codul sursa al algoritmului de propagare nainte pentru varianta C++ cu SSE II. 6.4 Evoluia performanelor procesoarelor si a placilor grace. Preluare dupa [54]. t t t 6.5 Comparaie ntre evoluiile laimii de banda pentru memoria sistem (RAM) si t t pentru memoria globala a placilor grace. Adaptare dupa [54]. . . . . . . . . . 6.6 Comparaie ntre alocarea tranzistoarelor pe suprafaa de siliciu pentru GPU si t t CPU. Preluare dupa [54]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Codul sursa al algoritmului de propagare nainte pentru varianta BROOK+. . . 6.8 Arhitectura GPU-urilor de la NVIDIA (seriile GeForce 8 si 200). Preluare dupa [65]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Organizarea thread-urilor. Adaptare dupa [56]. . . . . . . . . . . . . . . . . . 6.10 Kernel-urile pentru straturile de convoluie. . . . . . . . . . . . . . . . . . . . t 6.11 Kernel-urile pentru straturile complet conectate. . . . . . . . . . . . . . . . . . 6.12 Kernel-urile pentru stratul L3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13 Gradul de accelerare a diferitelor variante de kernel pentru stratul L3. Referina t este considerata varianta C++ optimizata, fara vectori STL. . . . . . . . . . . 5.1 5.2 5.3 5.4 5.5

31 33

36 37 37 38 43 45 48 50 51 51 53 62 63 64 66 67 68 69 71 73 75 76 78 80

iv

Lista tabelelor
4.1 Coninutul si modul de utilizare ale seturilor de date. . . . . . . . . . . . . . . t 4.2 Versiuni anterioare ale bazei de date NIST cu imagini de caractere scrise de mna. (dupa [4]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Bazele de date n care au fost publicate partiiile. - cmpuri completate, dar t neprocesate. - cmpuri necompletate. (dupa [4]) . . . . . . . . . . . . . . . 4.4 Exemplu de ier cu referine (hsf_page/truerefs/ref_24.txt). A se vedea si s t Figura 4.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Numarul de exemplare din ecare clasa. . . . . . . . . . . . . . . . . . . . . . Rezultate obinute cu perceptronul cu un strat ascuns. . . . . . . . . . . . . . t t Rezultate obinute cu reele neuronale cu hari de convoluie. . . . . . . . . . t t t Rezultate obinute cu perceptronul cu un strat ascuns. . . . . . . . . . . . . . t t Rezultate obinute cu reele neuronale cu hari de convoluie. . . . . . . . . . t t t Inuena strategiei de rejecie asupra ratei de recunoa tere (forat = fara rejecie). t t s t t Rate de recunoa tere pentru setul de test 3DNS (1C - cu deplasarea RN C1 s deasupra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea ambelor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Rate de recunoa tere pentru setul de test 6DNS (1C - cu deplasarea RN C1 s deasupra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea ambelor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8 Rate de recunoa tere pentru setul de test 10DNS (1C - cu deplasarea RN C1 s deasupra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea ambelor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 5.3 5.4 5.5 5.6 19 19 21 22 22 41 42 44 46 49

54

57

58

Capitolul 1

Introducere
1.1 Motivaie t
De ce recunoa terea scrisului de mna? Deoarece scrisul a reprezentat, de la inventarea s sa si pna n prezent, modalitatea cea mai facila si sigura de stocare si de transmitere a informaiilor. Din punct de vedere evolutiv, caracterul social al omului a fost generat de necet sitatea cre terii sansei de supravieuire. La rndul lui, caracterul social a favorizat prin selecie s t t apariia mijloacelor de comunicare din care a emers limbajul n forma orala, pentru ca apoi t sa apara si scrisul. Acesta reprezinta poate cea mai importanta invenie a omului, dar trebuie t sa admitem ca inventarea sa a fost constrnsa de evoluie. t Scrisul a generat o revoluie n civilizaia umana prin cele doua avantaje majore pe care t t le are faa de comunicarea orala. Primul este capacitatea de stocare sigura a informaiei, t t nealterata de transmiterea acesteia pe cale orala. Al doilea avantaj este reprezentat de faptul ca permite transferul cuno tinelor de la o generaie la alta, facilitnd acumularea acestora si s t t impulsionnd progresul. Daca scrisul nu ar existat, avnd n vedere lipsa memoriei genetice si a duratei limitate de viaa a oamenilor, atunci probabil ca omul ar ramas ntr-un stadiu t incipient de civilizaie. t Ali pa i importani n evoluia scrisului au fost reprezentai de inventarea hrtiei si a t s t t t tiparniei. Aceste doua invenii au facut accesibila informaia unui numar mult mai mare de oat t t t meni, att prin scaderea costului carilor, ct si prin multiplicarea facila a acestora. Inventarea calculatoarelor electronice n secolul trecut a generat o noua revoluie n stiina, aparnd noi t t t modalitai de stocare, transmitere si prelucrare a informaiei. Din acel moment, informaia a t t nceput sa e scrisa n doua forme: cea uzuala, utiliznd hrtie, si cea noua, utiliznd supor turi electronice si optice. A devenit necesara conversia informaiei dintr-un format ntr-altul. t Daca transformarea din format electronic n format tiparit este banala, conversia inversa s-a dovedit a att complexa, ct si complicata. Conversia unor cazuri particulare de scris, cum ar cel tiparit pe hrtie, este rezolvata acceptabil, n schimb conversia scrisului de mna, mai ales n forma cursiva, este ntr-o faza incipienta, departe de nalizare, rezultatele ind, n t general, mult sub necesitaile impuse de utilizarea practica. Problema recunoa terii scrisului de mna este unul din subiectele nerezolvate ale Ins teligenei Articiale. Natura acestei probleme impune o abordare euristica n rezolvarea ei, t t astfel ca multe din parile procesului de recunoa tere sunt si probabil vor ramne perfectibile. s

1. INTRODUCERE

n acest domeniu nu exista soluii denitive. t Teza abordeaza o problema particulara a recunoa terii scrisului de mna, cea a res cunoa terii sirurilor numerice alcatuite dintr-un numar nedenit de cifre. Recunoa terea s s sirurilor numerice prezinta att avantaje, ct si dezavantaje faa de recunoa terea textelor, t s propoziiilor etc. Dintre avantaje se pot aminti varietatea mai mica a simbolurilor (nu exista t variante minuscule si majuscule) precum si numarul mai mic al acestora. n schimb, exista un dezavantaj major: la recunoa terea sirurilor numerice nu se pot aplica modele lingvistice s [18]. Un exemplu de aplicaie practica a recunoa terii sirurilor numerice este recunoa terea cot s s durilor po tale de pe plicuri, a cecurilor bancare. Pe plan mondial exista multe rme ce au ca s domeniu de activitate producerea de echipamente pentru recunoa terea scrisului. Una dintre s cele mai importante, Parascript - Total Recognition Company, are n portofoliul de produse aplicaii pentru domeniul nanciar (recunoa terea scrisului de pe cecuri, precum si autentit s carea de semnaturi), domeniul po tal (recunoa terea adreselor), procesarea formularelor cu s s diverse tipuri de date. Faptul ca produsele acestei rme sorteaza zilnic peste un sfert de mi liard de plicuri n Statele Unite ale Americii demonstreaza utilitatea si necesitatea cercetarilor n acest domeniu. Recunoa terea sirurilor numerice este mult mai complicata dect cea a recunoa terii cis s frelor deoarece apar probleme suplimentare: lungimea necunoscuta a sirului (spre deosebire de cifre sau litere [19], unde este unu, si de cuvinte, unde poate extrasa din dicionare), t segmentarea, suprapuneri pariale etc. t Dupa cum se va vedea n capitolul urmator, Starea actuala a domeniului, rata de recu noa tere actuala este de aproximativ 96%. Avnd n vedere ca precizam anterior ca zilnic s peste un sfert de miliard de plicuri sunt sortate automat n SUA, 4% rata de eroare nseamna extrem de mult, chiar daca presupunem ca 90% din plicuri sunt tiparite, iar n acest caz rata de recunoa tere este de aproape 100%. Ar ramne aproximativ un milion de plicuri ce trebuie s t sortate manual, astfel ca orice mbunataire a ratei de recunoa tere este importanta. s t La modul general, mbunatairea ratei de recunoa tere este importanta n ntreg domeniul s recunoa terii formelor si la dezvoltarea inteligenei articiale. s t ntr-un domeniu matur din prisma numarului de metode care sunt folosite pentru re zolvarea sa, nu este loc de lozoe. Din acest motiv, aceasta teza va adera cu strictee t la cuvintele lui Sir William Thompson, Lord Kelvin (1824-1907): When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge of it is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely, in your thoughts, advanced it to the stage of science. dedicnd cea mai mare parte a ei experimentelor si compararii rezultatelor acestora. Teza de doctorat a fost susinuta de grantul CNCSIS TD 2006-2007 nr. 58GR / 2006, cu t titlul "Recunoa terea textelor scrise de mna n limba romna". s

1.2. ORGANIZAREA TEZEI

1.2 Organizarea tezei


Aceasta teza este organizata dupa cum urmeaza: Capitolul 2. Capitolul urmator descrie stadiul actual al domeniului, ncepnd cu clasicatorii pentru cifre izolate si naliznd cu clasicatorii pentru siruri de cifre. n cazul celor din urma se prezinta cele doua abordari existente: holistica si cea care implica segmentarea. Capitolul 3. Acest capitol prezinta succint aspecte teoretice ce vor folosite n partea exper imentala a tezei. ntruct nu se dore te ncarcarea inutila a lucrarii cu informaii care s t t exista prezentate n multe alte cari si articole, aspectele teoretice vor doar schiate t si apoi se vor oferi referine pentru detalii suplimentare. Prima parte a capitolului pre t zinta aspecte legate de procesarea imaginii, iar a doua ofera detalii despre arhitectura reelelor neuronale utilizate. t Capitolul 4. Bazele de date cu cifre si cu siruri de cifre sunt detaliate n Capitolul 4. Sunt descrise modurile n care acestea sunt construite, relaionarea si alcatuirea lor. Se stat bilesc seturile de date pentru antrenare si pentru testare. Seturile sunt astfel construite nct sa poata efectuata o comparaie riguroasa si sistematica cu rezultatele existente t deja n domeniul recunoa terii cifrelor si a siruruilor de cifre scrise de mna. s Capitolul 5. Folosind seturile de antrenare si de test create, n Capitolul 5 sunt oferite rezul tatele experimentelor efectuate. nti sunt antrenai si testai clasicatorii pentru cifre t t izolate si pentru perechi cifre parial suprapuse, folosind doua tipuri de reele neuronale: t t t perceptronul multistrat si reele neuronale cu hari de trasaturi. Cei mai performani t t clasicatori sunt apoi folosii la crearea sistemului de recunoa tere pentru siruri cu t s numar nedenit de cifre. Sunt propuse si evaluate trei metode de selecie a clasi t catorului corespunzator coninutului imaginii: o cifra sau o pereche de cifre. t Capitolul 6. Ca urmare a concluziilor capitolului anterior, penultimul capitol are ca scop studierea accelerarii antrenarii reelelor neuronale. Sunt studiate sase variante pentru t doua arhitecturi distincte. Primele trei sunt concepute pentru arhitectura x86, folosind diverse optimizari ale codului C++, precum si aranjarea ct mai favorabila a datelor n memorie. Una din variante apeleaza chiar la limbajul de asamblare si la instruc iunile SIMD SSE3. Urmatoarele trei sunt proiectate pentru arhitecturi masiv paralele t t ce folosesc capacitaile de calcul ale procesoarelor placilor grace (GPU). Prima este dezvoltata n BROOK+ pentru placi AMD-ATI, iar urmatoarele doua - n CUDA pentru placi NVIDIA. Capitolul 7. Teza se ncheie cu o analiza a rezultatelor si cu evaluarea posibilelor dezvoltari ulterioare.

1.3 Descrierea metodei


Obiectivul tezei este de a oferi o metoda ecienta de recunoastere a sirurilor numerice scrise de mna, compuse dintr-un numar nedenit de cifre izolate sau parial suprat puse. ntruct marea majoritate a metodelor au ca pas anterior recunoa terii un proces de s

1. INTRODUCERE

segmentare care poate afecta negativ clasicarea, metoda pe care o propun nu utilizeaza segmentarea. Pentru a rezolva cazurile de cifre alipite sau parial suprapuse am folosit pe t lnga clasicatorul uzual, la nivel de cifra, un clasicator antrenat cu perechi de cifre parial t suprapuse. n Figura 5.4 se poate observa calea parcursa de o imagine pna cnd este recunoscut sirul numeric pe care l conine. Blocul CCA extrage componentele conexe ale imaginii, t t separnd cifrele izolate si toate celelalte pari de cifre. Etapa de clusterizare se ocupa cu t concatenarea parilor de cifre extrase n faza precedenta. Am creat un set de reguli care sunt aplicate iterativ asupra componentelor extrase. La nalul etapei se obin componente care t reprezinta cifre si grupuri de cifre unite. Clasicatorul folose te rezultatele obinute de cei doi clasicatori (pentru cifre si pentru s t perechi de cifre parial suprapuse) pentru a determina ce se aa n imaginea componentei t de la intrarea sa. Am implementat trei algoritmi simpli si ecieni care decid rezultatul caruia t dintre cei doi clasicatori este corect. Algoritmii au un rol foarte important deoarece nu se cunoa te a priori cte cifre se aa n componenta analizata. Alte metode din literatura folos sesc pentru aceasta operaie antrenarea clasicatorilor cu exemple negative, ceea ce este t destul de dicil deoarece exemplele negative trebuie extrase manual sau generate automat. n plus, cre te dimensiunea setului de antrenare, ceea ce conduce la marirea timpului neces sar antrenarii. ntregul sistem de recunoa tere a fost testat cu seturi de imagini din NIST SD 19 [4]. s Aceste seturile de imagini sunt folosite si de ali cercetatori [44], cea mai buna rata de recu t noa tere ind de aproximativ 96%. Sistemul pe care l-am creat atinge o rata de recunoa tere s s de 93.77%, n condiiile n care nu folose te nici segmentare, nici antrenare cu exemple net s gative. Analiza erorilor arata ca daca seturile de antrenare ar conine si exemple negative, t rata de recunoa tere ar la nivelul celor mai bune rezultate existente. Din acest motiv, n s viitor setul de antrenare va augumentat cu exemple negative. Rezultatele au fost publicate n [17]. t Ultima parte a tezei este dedicata analizei posibilitailor de a cre te viteza de execuie a s t algoritmului de antrenare a reelelor neuronale. Acest lucru este necesar deoarece ar permite t antrenarea unor reele neuronale mai mari, obinndu-se n acest mod rate de recunoa tere t t s mai bune. Am ncercat variante de optimizare pe CPU folosind inclusiv limbajul de asamblare si instruciuni SSE3. De asemenea, am efectuat teste de performana folosind procesoare t t grace (GPU) n BROOK+ si CUDA. Rezultatele preliminare sunt promiatoare, obinndu-se t t o accelerare de peste 20 de ori faa de varianta scrisa pentru CPU. t

Pentru ca am evoluat ca specie de la homo habilis la homo sapiens sapiens, aceasta teza va ncerca sa prezinte ct mai mult din procentul de inspiraie si, de multe ori fara succes, ct t mai puin din restul de 99% de munca istovitoare si de multe ori plictisitoare. t

Capitolul 2

Stadiul actual al domeniului


Domeniul recunoa terii scrisului de mna si, n particular, cel al recunoa terii cifrelor si a s s sirurilor numerice, sunt cercetate intensiv de cteva decade. Din acest motiv, numarul de articole care trateaza aceasta problema este destul de mare. O cautare n IEEE Xplore returneaza 608 articole ce conin sirul digit recognition. Numat rul acestora cre te la 1304 daca nu impunem prezena alaturata a celor doi termeni. Avnd s t n vedere ca exista articole care sunt indexate n alte baze de date cu articole, numarul lor este si mai mare de att. Daca efectuam o cautare dupa digit, recognition, numeral (termeni care e foarte pro babil sa apara ntr-un articol avnd ca tema recunoa terea sirurilor numerice), obinem nus t mai 60 de rezultate. Studiind anii n care au fost publicate aceste articole se observa ca majoritatea au fost scrise n ultimii zece ani si niciunul nu e mai vechi de 1982. Aceste obser vaii arata ca: t recunoa terea cifrelor este o problema unde este foarte dicil de a mai propune metode s noi care sa e mai eciente dect cele deja existente (se va arata n continuare ca rata s de recunoa tere a depa it 99.6%) s problema recunoa terii cifrelor a fost abordata naintea celei a recunoa terii sirurilor de s s cifre. Evident, unul din motive a fost si puterea scazuta de calcul a calculatoarelor n momentul n care recunoa terea cifrelor a nceput sa ajunga aproape de limita mas xima de recunoa tere si odata cu cre terea performanelor calculatoarelor, atenia a s s t t fost ndreptata asupra problemei mult mai complicata a recunoa terii sirurilor numerice s nainte de a prezenta cele mai importante realizari din domeniu se impune o explicaie. t Exista multe articole care prezinta metode ce sunt vericate experimental pe seturi de test limitate (numarul de exemplare este prea redus pentru a avea nsemnatate statistica) sau nedocumentate / private (deci imposibil de reprodus). Unele dintre aceste articole pretind rate de recunoa tere foarte mari, chiar de 100%. ntruct nu exista posibilitatea de a verica rezuls tatele pretinse (dect, eventual, prin reimplementarea metodelor si vericarea lor cu alte seturi de test), am decis sa consider aceste rezultate ca avnd o relevana scazuta. Am considerat t ca ind relevante doar rezultatele articolelor care erau obinute folosind seturi de antrenare si t de test accesibile (gratuit sau nu) si care, mai important, erau folosite de ct mai muli ali au t t tori. Un alt mod de a aprecia nsemnatatea rezultatelor unui articol a fost si rangul conferinei t

2. STADIUL ACTUAL AL DOMENIULUI

sau al jurnalului unde a fost prezentat / publicat respectivul articol. Sumariznd, rezultatele pe care le-am considerat a relevante au fost obinute cu baze de date publice, folosite de t ct mai muli cercetatori din domeniu, si au fost publicate la conferine renumite (ex: NIPS, t t ICDAR, CVPR, IPCV, AAAI, ICPR etc). Bineneles, acesta nu este un mod infailibil de a aa t care sunt cele mai bune rezultate n domeniu, dar consider ca este o soluie cu probabilitate t mare de a oferi rezultate relevante fara a examina exhaustiv toate articolele existente, ceea ce este practic imposibil (http://www.visionbib.com/bibliography/contentschar.html# Numbers, Digits, Zip (Postal) Codes). Nefolosirea acelora i seturi de test de catre toate articolele este o problema ce afecteaza s tot domeniul recunoa terii scrisului de mna. Exista cteva baze de date standard si voi s considera numai rezultatele obinute folosind seturile de test din aceste baze de date. Doua t din aceste baze de date sunt disponibile contra cost: NIST SD 19 [4] si CEDAR [22], iar una este oferita gratuit: MNIST [40].

2.1 Stadiul actual al recunoasterii cifrelor


ntruct este foarte puin probabila conceperea unui sistem de recunoa tere a sirurilor nut s merice ce nu ncorporeaza un clasicator pentru cifre, vor prezentate cele mai importante realizari n acest domeniu. Experimentele sunt efectuate ndeosebi cu seturi extrase din NIST SD 19 [4] sau cu seturile MNIST [40]. Detalii despre aceste baze de date se gasesc n Capitolul 4. Jie Zhou [70] propune un model de reea neuronala cuantica. Este detaliat algoritmul de t antrenare si sunt oferite rezultatele experimentelor asupra unui set de 2000 de cifre din baza de date CENPARMI (http://www.cenparmi.concordia.ca/). Rata maxima de recunoa tere este s de 95.65%. Nishiwaki [53] propune o metoda de recunoa tere a sirurilor numerice care verica exiss tena cifrelor care se ating. Sunt propuse sase tipuri de atingere ntre cifre. De i acea ta t s s metoda verica perechi de cifre, ea este dezvoltata n ideea de a folosita pentru recunoa s terea cifrelor izolate, n scopul rejectarii imaginilor care conin mai mult de un caracter. Nu t sunt oferite date referitoare la ratele de recunoa tere. s Yann LeCun a creat baza de date MNIST ca subset al NIST SD 19 pentru a oferi un s punct comun tuturor celor care doreau sa- i verice metodele de recunoa tere. Faa de NIST s t SD 19 care este foarte generala si ofera date brute, lasnd la latitudinea utilizatorului modul de alcatuire al seturilor de antrenare si de test, MNIST propune doua seturi, unul pentru antrenare si unul pentru test, ce conin 60000, respectiv 10000 de imagini de cifre. Ratele de t eroare raportate pentru MNIST variaza de la 12% pentru un perceptron fara straturi ascunse [38], deci un clasicator liniar, pna la 0.39% pentru reele neuronale de convoluie [48]. t t t t Franke [27] prezinta o metoda de mbunataire a clasicatorilor polinomiali prin nvaare iterativa. Rezultatul cel mai bun obinut pe setul MNIST este de 1.13% rata de eroare. t Lauer et al. [36] a creat un sistem de recunoa tere ce folo te vectori suport. Rezultatele s s sunt foarte bune (eroare 0.54%), dar sunt necesare resurse computaionale mari. t

2.2. STADIUL ACTUAL AL RECUNOASTERII SIRURILOR NUMERICE

Cele mai multe ncercari de rezolvare a acestei probleme folosesc reele neuronale. t t Simard, Steinkraus si Platt [64] demonstreaza ca reelele neuronale ofera cea mai buna rata de recunoa tere pe setul de test MNIST. Rezultatele prezentate de LeCun, Simard si Ranzato s sunt la fel de bune, oferind o rata de eroare de 0.39% [60, 12]. Performane foarte bune au t fost obinute si prin combinarea clasicatorilor [13]. t Pe pagina MNIST (http://yann.lecun.com/exdb/mnist/) exista cteva zeci de articole ale caror metode au fost validate cu seturile de date din MNIST. Avnd n vedere rezultatele foarte bune obinute pentru recunoasterea de cifre cu t reele neuronale de convoluie, am ales drept metoda pentru propriul clasicator la t t nivel de cifra utilizarea reelelor neuronale de convoluie (RNC). t t

2.2 Stadiul actual al recunoasterii sirurilor numerice


A a cum aratam n Capitolul 1, recunoa terea sirurilor numerice ce conin cifre care se supras s t pun este foarte importanta deoarece este utila ntr-un numar mare de aplicaii practice: recut noa terea codurilor po tale [24], procesarea documentelor complexe [34]. s s

2.2.1

Recunoasterea holistica

Recunoa terea holistica ncearca sa evite procesul de segmentare prin implementarea de s clasicatori care primesc la intrare toata informaia. Facnd o paralela cu recunoa terea t s textelor, un clasicator holistic nu segmenteaza un cuvnt n litere urmnd sa recunoasca literele, ci recunoa te tot cuvntul dintr-odata. La recunoa terea cuvintelor acest lucru este s s posibil deoarece numarul de cuvinte, chiar daca este foarte mare, este limitat. n schimb, la recunoa terea holistica a sirurilor numerice numarul claselor este mult mai mare, ind s imposibila crearea unei metode de acest fel pentru cazul general. Din acest motiv clasicatorii holistici se rezuma la siruri numerice de doua, maxim trei cifre. n [67] este descrisa o metoda de recunoa tere a cifrelor care se ating. Acest articol s folose te ca seturi de antrenare si de test imagini de coduri po tale provenite de pe coress s pondena. Nu se da niciun alt detaliu asupra datelor folosite, deci experimentele nu pot t vericate. Oricum, autorii pretind o rata de recunoa tere de 86.8% pe setul limitat pe care s l-au folosit (291 de imagini de test). Sunt oferite si rezultate (86.5%) pe un set neprecizat nici macar ca numar de imagini din CEDAR [22]. Se arma ca pe acela i set de test o metoda s care implica segmentarea ofera rate de recunoa tere cu pna la 6.1% mai mici. Clasicatorul s t utilizat analizeaza structura imaginilor, cautnd concavitai, masurnd gradieni etc, informaii t t cu care apoi construie te un scor ce caracterizeaza imaginea. O observaie interesanta a s t articolului este ca din cele 500 de coduri po tale analizate, 20% conin cifre unite, 16% ind s t perechi de cifre, iar restul de 4% ind alcatuite din trei sau mai mai multe cifre unite. n [35] aceia i autori prezinta un sistem multiexpert pentru recunoa terea sirurilor numerice cu cifre s s care se ating. De aceasta data setul folosit este mult mai mare, 28464 de exemplare cu cifre unite ind colectate manual. Si acest set este privat. Cea mai buna rata de recunoa tere este s de 91.1%. Behnke [8] (Capitolul 7.4) a creat un sistem de recunoa tere pentru marci po tale (timbre s s

2. STADIUL ACTUAL AL DOMENIULUI

valorice imprimate pe plicuri) care utilizeaza un clasicator convoluional pentru a recunoa te t s perechi de cifre tiparite. Chiar daca este o aplicaie OCR (Optical Character Recognition t = recunoa terea caracterelor tiparite) si nu a recunoa terii scrisului de mna, am amintit si s s acest sistem de recunoa tere deoarece abordeaza problema n mod holistic. s LeCun et al. [39] propun o metoda de recunoa tere a codurilor po tale folosind reele s s t neuronale de convoluie. Ideea este dezvoltata mai departe de grupul sau n [49, 50]. Pentru t a evita segmentarea se construie te o reea neuronala extinsa pe orizontala n ideea de a s t ncapea n cmpul de intrare si contextul cifrei ce se dore te a recunoscuta. Reeaua este s t antrenata cu triplete de cifre suprapuse sau nu, generate automat. Acest clasicator este aplicat n ecare poziie a imaginii pentru a detecta cifrele. Deoarece se fac multe aplicari ale t clasicatorului, metoda este destul de lenta (ntre timp puterea de calcul a crescut de cteva zeci de ori, aceast aspect ne mai constituind o problema). Testele pe care le-au efectuat asupra codurilor po tale de cinci cifre au aratat o rata destul de redusa de recunoa tere: s s 70% pentru setul de antrenare si 66% pentru cel de test.

2.2.2

Recunoasterea cu segmentare

Multe din soluiile propuse n literatura de specialitate combina procesele de segmentare si t recunoa tere. Avnd n vedere ca multe cifre se pot atinge sau pot chiar parial suprapuse, s t efectuarea unei segmentari corecte care sa nu ina cont de coninutul imaginii este foarte t t dicila [69]. Daca se cunoa te coninutul imaginii, nseamna ca deja etapa de clasicare a s t avut loc. Casey si Lecolinet [11] prezinta o abordare care integreaza segmentarea si recunoa terea s folosind o strategie ipoteza-test (recunoa tere bazata pe segmentare). Cordella si Vento [21] s analizeaza n detaliu aceasta metoda. Shi, Wakabayashi et al. [47] propun o metoda de a cre te gradul de recunoa tere cnd s s numarul de imagini din setul de antrenare este redus. Algoritmul genereaza o imagine n oglinda a imaginii unei clase care aparine unei perechi de clase foarte apropiate. Imaginea t rezultata este adaugata setului de imagini al celeilalte clase. Au fost implementate numeroase metode care folosesc segmentarea si o extragere com plicata de caracteristici pentru a obine cifre din sirul iniial [45]. Aceste cifre sunt recunoscute t t folosind un clasicator la nivel de cifra. Procesul de segmentare este aplicat n doua moduri distincte [59]. n primul, modulul de segmentare transfera secvenele de cifre izolate la clasit cator [63]. Oliveira et al. [58] au ranat acest concept propunnd o vericare efectuata prin suprasegmentare si prin subsegmentare. Aceia i autori au construit un sistem de recunoa s s tere folosind o metoda euristica de suprasegmentare bazata pe clasicatori cu vectori suport [57]. Al doilea mod utilizeaza ipoteze motivate probabilistic, iar decizia nala este data de cel mai bun scor segmentare-recunoa tere obinut pentru imaginea de intrare [29]. Acest pros t cedeu este utilizat de Cheong et al. [14] pentru a genera mai multe ipoteze de segmentare bazate pe secvena de tu e ce formeaza o posibila cifra. t s t Autorii din [32] propun o metoda de preprocesare a segmentarii cu scopul mbunatairii ratei de recunoa tere pentru cifrele care se ating. Experimentele sunt efectuate pe NIST SD s 19. Rata de recunoa tere este de 96.4%. Seturile de test sunt similare cu cele pe care le-am s

2.2. STADIUL ACTUAL AL RECUNOASTERII SIRURILOR NUMERICE

utilizat, dar mai mici, doar 1000 de imagini, n loc de aproape 1500 ct au seturile 3DNS si 6DNS. Oricum, rezultatele pot folosite pentru comparaii. Aceia i autori au dezvoltat o t s metoda de recunoa tere [33] care folose te segmentarea simpla si segmentarea combinata s s cu recunoa terea. nti (segmentare fara recunoa tere) sunt separate cifrele izolate de cifrele s s care se ating. Apoi sunt examinate si segmentate cifrele care se ating. Se folosesc 1500 de imagini din NIST SD 19, dar nu se specica indicii lor. Rata de recunoa tere este de 91.8%. s Cel mai important articol recent din domeniul recunoasterii sirurilor numerice scrise de mna este [44]. A aparut n anul 2004 si sumarizeaza cele mai performante metode aparute anterior. De asemenea, ofera o modalitate clara de comparare a rezultatelor, speci cnd cu exactitate proveniena si alcatuirea seturilor de test. Am reconstruit aceste seturi t de test pentru propriile experimente (Seciunile 4.5.2 si 4.5.3). Autorii folosesc abordarea t t clasica a problemei: segmentare n ct mai multe pari posibile, urmata de o concatenare ce are ca scop obinerea de cifre singulare. Etapa de concatenare este combinata cu cea de t recunoa tere, analizndu-se toate modurile de concatenare. Se obine un graf orientat, ce s t t are doua noduri importante ntre care se alfa toate modurile n care pot asamblate parile de imagine. Pentru reducerea numarului de drumuri dintre cele doua noduri se impun res t tricii geometrice, cea mai importanta dintre ele ind gradul de proximitate a doua pari de t simboluri. Fiecare astfel de drum este apoi analizat si n urma clasicarii prime te un scor s obinut ca suma a scorurilor oferite de clasicatorul la nivel de cifra. Drumul cu cel mai mare t scor este ales ca ind cel mai probabil a corect. Existnd mai multe drumuri, este u or de s implementat un algoritm de rejecie care respinge un anumit rezultat ca probabil incorect n t momentul n care diferena de scor dintre cele mai bune doua drumuri este sub un anumit t prag. n articol sunt analizate mai multe metode de clasicare pentru cifre: trei clasicatori neuronali, doi cu densitate discriminativa si doi care folosesc vectori suport. Un alt aspect important al articolului este antrenarea cu exemple negative (imagini care nu conin cifre) a clasicatorilor pentru recunoa terea de cifre. Se face o comparaie ntre t s t rezultatele obinute utiliznd seturi de antrenare ce conin sau nu exemple negative. Prezena t t t t s non-cifrelor n setul de antrenare mbunatae te rata de recunoa tere cu pna la 30% pentru s unele metode (reele neuronale si clasicatori cu vector suport). t La nivel de cifra, rata maxima de recunoa tere este de 99.26%, obinuta cu un clasicator s t cu vectori suport ce folose te funcii radiale. Adaugarea de exemple negative n setul de s t antrenare produce o scadere a ratei de recunoa tere la 99.24%. La nivel de sir numeric, s ratele maxime de recunoa tere se situeaza la 96.82% pentru siruri de trei cifre si la 96.74% s pentru siruri de sase cifre (Figura 2.1). Toate rezultatele sunt obinute folosind clasicatori t antrenai cu exemple negative. Acela i autor propune o metoda combinata de recunoa tere t s s [43] folosind att segmentarea, ct si recunoa terea holistica. Utiliznd o metoda adaptata s din recunoa terea vorbirii, obine o rata de recunoa tere de 97.42%. s t s Figura 2.1 sumarizeaza cele mai bune rezultate obinute n domeniul recunoa terii sirurilor t s de cifre scrise de mna. Coloana marcata forced conine ratele de recunoa tere cu rejecie t s t nula. RBF nseamna funcii radiale, PC - clasicator polinomial, DLQDF - clasicator cu t t funcii discriminante cuadratice, bazat pe nvaare discriminativa, SVC-rbf - clasicator cu t vectori suport si funcii radiale. Detalii despre implementarea clasicatorilor pot gasite n t [44].

10

2. STADIUL ACTUAL AL DOMENIULUI

Figura 2.1: Ratele de recunoa tere pentru siruri din NIST SD 19. Preluare din [44]. [35] s reprezinta [30], [36] reprezinta [9], iar [14] reprezinta [58].

2.3 Concluzii
t Sistemul propriu de recunoa tere a sirurilor de numere conine pari care exista si n alte s t sisteme de recunoa tere. Mai exact, este vorba de clasicatorul la nivel de cifra. ntruct s ideea tezei nu este de a concepe un nou clasicator (eventual, mai bun) pentru cifre, am decis sa folosesc cea mai buna metoda existenta pentru recunoa terea de cifre n propriul s sistem de recunoa tere a sirurilor numerice. Astfel, am ales reelele neuronale de convoluie. s t t De asemenea, pentru acest clasicator am extins setul de antrenare folosind deformari ane si elastice, a a cum au facut si ali autori (Simard [64] a introdus aceste deformari, aplicndu s t le pe setul MNIST). Primul pas n construirea unui clasicator pentru recunoa terea sirurilor numerice cu cifre s ce se ating sau se suprapun parial este reprezentat de rezolvarea cazului cel mai simplu de t suprapunere, cel dintre doua cifre. Avnd n vedere ca majoritatea cercetatorilor folosesc metode ce implica segmentarea si ca ratele de recunoa tere sunt deja foarte mari (peste 96%), iar recunoa terea holistica este s s mult mai puin studiata, am hotart sa aplic o metoda holistica pentru perechile de cifre parial t t suprapuse, n ideea evitarii segmentarii. Deoarece reelele neuronale de convoluie s-au dovedit a foarte bune pentru recunoa t t s terea de cifre, le-am folosit si pentru construirea unui clasicator la nivel de perechi de cifre parial suprapuse. Reelele neuronale s-au dovedit a eciente n foarte multe domenii, ind t t si foarte rapide n procesul de clasicare, aspect care este important n aplicaii ce trebuie sa t ruleze n timp real sau ct mai repede posibil (de exemplu un sortator de corespondena). t

Capitolul 3

Aspecte teoretice
3.1 Noiuni de prelucrarea imaginilor t
n aceasta teza, imaginile vor abstractizate n felul urmator: o colecie de pixeli structurai t t ntr-un tabel bidimensional, accesibili prin indicele liniei (coordonata y) si cel al coloanei (or donata x). Indicii sunt valori ntregi nenegative. Fiecare pixel are o anumita culoare, pentru experimentele efectuate ind sucient a considera cazul tonurilor de gri cu 256 valori discrete, 0 nsemnnd alb si 255 - negru. Daca pixelii pot avea doar doua valori, atunci 0 repezinta alb si 1 - negru. n cazul n care se face excepie de la aceste reguli, se precizeaza n text. t Pentru imagini color se aplica o transformare n tonuri de gri folosind, de exemplu, metoda n [15] la pagina 9 sau n [16]. prezentata

3.1.1

Centrul de masa al unei imagini

Din zica se cunoa te ca pentru sistem de n particule punctiforme, ecare ind caracterizata s prin masa m si prin coordonatele xi ntr-un spaiu euclidian p-dimensional (i {1, . . . , p}), t coordonatele centrului de masa pot calculate cu formula:

xCM = i

n j j=1 mj xi n j=1 mj

(3.1)

n cazul unei imagini bidimensionale cu n m pixeli (n linii si m coloane), intensitatea ecarui pixel ind reprezentata prin pxy , cu x {0, . . . , m 1} si y {0, . . . , n 1}, putem adapta formula de calcul a coordonatelor centrului de masa n felul urmator:

xCM = y
CM

m1 x=0 m1 x=0 m1 x=0 m1 x=0

n1 y=0 pxy x n1 y=0 pxy n1 y=0 pxy y n1 y=0 pxy

(3.2)

(3.3)

12

3. ASPECTE TEORETICE

3.1.2

Distorsiuni

n experimentele efectuate cu imagini de cifre am folosit augumentarea setului de antrenare prin aplicarea de distorsiuni asupra imaginilor sale. Transformarile efectuate sunt similare cu cele aplicate de Simard [64]. Lauer et al. [36] detaliaza aceste transformari. Distorsiunile au constat n mai multe transformari liniare: rotaii, scalari si deformari elastice. t

Transformari ane Intuitiv, transformarile ane ntr-un spaiu euclidian bidimensional pot privite ca transformari t geometrice n urma carora se pastreaza coliniaritatea punctelor si proporiile segmentelor. t Transformarile ane aplicate asupra imaginilor de antrenare sunt de doua feluri: rotaii si t scalari. Se calculeaza cte un cmp de deplasare pentru ecare direcie: orizontala (X ) si t verticala (Y ). Astfel, pentru punctul de coordonate (x, y) vom avea deplasarile X(x, y) si Y (x, y). Scalarile pot reprezentate matricial n felul urmator:

x y

x y

(3.4)

unde reprezinta coecientul de scalare pe orizontala si reprezinta coecientul de scalare pe verticala. Rotaiile n forma matriciala se calculeaza cu formula: t

x y

cos cos

sin sin

x y

(3.5)

unde reprezinta unghiul de rotaie a imaginii. t

Transformari elastice n [64] transformarile elastice sunt obinute prin prelucrarea unor cmpuri de deplasare alet atoare. Astfel, se iniializeaza un cmp de deplasare cu valori reale aleatoare din [1, 1]. t Distribuia valorilor se considera a uniforma. Asupra acestui cmp se aplica o convoluie cu t t un nucleu gaussian cu deviaia standard . t Pentru doua dimensiuni, nucleul gaussian normalizat are urmatoarea formula:

G (x, y, ) =

x2 +y 2 1 e 22 2 2

(3.6)

t Laimea nucleului este data de valoarea lui . Rezultatul acestor operaii este un cmp de deplasare care aplicat unei imagini produce t o deformare elastica n cazul n care are valori mici. Daca are valori mari, deformarea devine transformare ana, iar pentru foarte mare se ajunge la translaie [64]. Se folose te t s un coecient cu care sunt multiplicate valorile nucleului pentru a controla intensitatea locala a deformarii.

3.1. NO TIUNI DE PRELUCRAREA IMAGINILOR

13

3.1.3

Transformata Hough

Transformata Hough a fost inventata de Paul Hough n 1962 si patentata de IBM. Utilizarea iniiala a constat n detectatea traiectoriilor particulelor ncarcate electric din experimentele t efectuate n camera cu bule. Richard Duda si Peter Hart ([23]) au creat transformata Hough generalizata n 1972. Daca metoda iniiala detecta numai linii, transformata generalizata t poate detecta orice fel de forme [62] (pag. 382-383), n particular segmente de dreapta, arce de cerc si de elipsa. Se va prezenta succint transformata Hough pentru detectarea de linii dintr-o imagine. Problema poate formalizata astfel: ind data o mulime de puncte prin coordonatele x si y t dintr-un spaiu euclidian bidimensional, se cere sa se determine care din aceste puncte sunt t coliniare si care nu. Pentru aceasta, se aplica o transformare a spaiului euclidian la spaiul t t Hough, utiliznd ecuaia 3.7. t

y + sin (y tan ) = x sin + y cos (3.7) cos n ecuaia de mai sus, reprezinta unghiul dreptei cu axa Ox, iar r este distana de la t t originea sistemului de coordonate la dreapta (Figura 3.1). Deoarece pentru ecare punct exista o innitate de perechi n spaiul parametric (r, ), trebuie gasita o modalitate de ret t ducere a dimensionalitaii problemei pentru a putea aplicata practic. Pentru aceasta, se discretizeaza problema prin discretizarea valorilor parametrilor. Astfel, daca imaginea iniiala, t n forma discreta, avea N M pixeli, putem discretiza spaiul parametrilor alegnd, de exemt plu, r = 1pixel si = 1 . Discretizarea se face n funcie de problema. t r = r 1 + r2 =
Spaiul imagine O r1 r r2 P(x,y) O' r r y
Figura 3.1: Transformata Hough pentru detecia de linii. Fiecarei linii d din spaiul imagine i t t corespunde un punct n spaiul parametric Hough. t Pasul urmator rezida n construirea unei matrici cu 180 elemente, unde linia r reprezinta distana, iar coloana reprezinta unghiul. Elementele matricei sunt iniial nule. Pent t tru toate valorile discrete posibile ale lui r si , se construiesc dreptele corespunzatoare si se numara prin cte din punctele imaginii trec. Acest numar reprezinta valoarea celulei respec tive. Matricea mai poarta numele de acumulator Hough. Un exemplu de astfel de matrice este prezentat n Figura 3.2. Folosind acest algoritm, la sfrsit, n matrice se vor aa numere
x+

x d - posibil linie Spaiul parametric Hough H(r,)

x2 +y 2

14

3. ASPECTE TEORETICE

ntregi nenegative care reprezinta numarul de puncte prin care trece ecare dreapta. Cer curile marcheaza punctele de maxim ale matricei, puncte care reprezinta drepte cu numar maxim de puncte.

Figura 3.2: Exemplu de matrice de acumulare rezultata n urma aplicarii transformatei Hough. Cercurile marcheaza maximele corespunzatoare celor sase linii detectate. A area graca s folose te negru pentru elemente nule si tonuri de gri cu iluminare proporionala cu valoarea s t respectivului element pentru valori nenule. Albul se folose te pentru elementul sau eles mentele cu numar maxim de puncte.

3.2 Reele neuronale articiale t


t Reelele neuronale articiale (RNA) fac parte din subdomeniul Machine Learning (nvaare t automata) al Inteligenei Articiale. RNA sunt metode statistice de clasicare, cea mai imt t portanta aplicaie a lor ind n recunoa terea formelor. Exista multe cari care trateaza acest t s domeniu, unele din cele mai importante ind [10] (abordeaza ntreg domeniul recunoa terii s formelor) si [9] (dedicata exclusiv reelelor neuronale articiale). Pentru o introducere concisa t si clara se poate utiliza [51] (Capitolul 6). t RNA sunt alcatuite din unitai de procesare numite neuroni. Neuronul articial este un model matematic simplist al neuronului biologic. Neuronii unei RNA sunt, de obicei, dispu i s pe mai multe straturi. t RNA pot mparite n doua mari categorii: RNA cu propagare nainte si RNA recurente. Prima categorie este de departe mult mai studiata, RNA cu propagare nainte ind mult mai bine nelese si din punct de vedere teoretic. RNA utilizate n aceasta teza sunt de tipul RNA t cu propagare nainte. ntr-o RNA cu propagare nainte exista conexiuni numai ntre neuroni de pe straturi con secutive, informaia de la intrare propagndu-se secvenial prin ecare strat pna la ie ire. t t s n scopul evitarii confuziilor, n aceasta teza am considerat ca strat al reelei neuronale int clusiv stratul de intrare, strat necomputaional. Astfel, pentru o reea cu trei straturi, stratul L0 t t este stratul de intrare, iar straturile L1 si L2 sunt straturi computaionale. Straturile interioare, t n acest caz stratul L1 , se numesc straturi ascunse.

3.2. RETELE NEURONALE ARTIFICIALE

15

3.2.1

Perceptronul

Perceptronul [46] (pagina 458) este un model simplu de reea neuronala cu propagare nainte. t Are doua straturi, unul ind de intrare si unul de ie ire. Stratul de ie ire este unicul strat s s computaional. ntruct nu poate rezolva dect probleme liniar separabile, are o arie redusa t de aplicabilitate. Perceptronul multistrat este o varianta mai complexa de perceptron, putnd avea unul t sau mai multe straturi ascunse. Prezena straturilor ascunse elimina limitarea aplicabilitaii la t probleme liniar separabile.

3.2.2

t Reele neuronale articiale cu hari de convoluie (RNC) t t

Avnd n vedere modul de funcionare al percepiei vizuale [8] (Capitolul 2), s-a ncercat t t t modelarea acestuia folosind reele neuronale. Unul din aceste modele folose te hari de t s convoluie. RNC sunt tot RNA multistrat cu propagare nainte, unica diferena ind arhitectura t t reelei, mai exact, modul de conectare a neuronilor. Evident, RNC sunt concepute pentru t recunoa terea de caracteristici ale imaginilor. s t n 1979 Fukushima [28] a propus o reea neuronala cu hari de convoluie, numita Neocogt t nitron, care se putea adapta la deplasarea caracterelor n cmpul de intrare. Detalii pot gasite la http://www4.ocn.ne.jp/fuku_k/les/research-e.html#neocog. LeCun a folosit n 1995 o reea de convoluie pentru recunoa terea de caractere. n Figura t t s 3.3 este prezentata arhitectura acestei reele. n [38] arhitectura este dezvoltata si mai mult, t prin adaugarea de noi straturi.

Figura 3.3: RNC pentru recunoa terea caracterelor. Preluare din [37]. s Spre deosebire de perceptron, unde ecare neuron al unui strat era conectat cu toi neut ronii stratului anterior, la RNC ecare neuron este conectat numai la o parte a neuronilor stratului anterior. Pentru a imita funcionarea sistemului vizual uman, neuronii cu care este t t conectat se aa toi n aceea i zona. O reea neuronala poate conine att straturi complet s t t conectate, ct si straturi de convoluie. Straturile de convoluie sunt, uzual, alcatuite din mai t t t multe hari de convoluie. t n RNC utilizate n Capitolul 5 exista doua moduri de conectare a neuronilor de pe straturile de convoluie, al doilea mod ind o extindere a primului [64, 38]. t Primul mod de conectare (stratul L1 din Figura 3.5) consta n a conecta ecare neuron al t t unei hari la un nucleu de neuroni ai stratului anterior. Toi neuronii unei hari mpart acelea i t s

16

3. ASPECTE TEORETICE

ponderi, astfel numarul de ponderi ind mult redus faa de cazul unui strat complet conectat. t Nucleul de convoluie este deplasat asupra stratului anterior din doi n doi neuroni, att pe t orizontala, ct si pe verticala (Figura 3.4). Dimensiunea uzuala [64] pentru nucleu este de 5 5 neuroni. Aceasta trebuie sa e impara pentru ca nucleul sa poata centrat ntr-un pixel. Simard [64] a aratat ca o dimensiune mai mica, 3 3 neuroni, este prea redusa pentru a detecta caracteristici primare (coluri, intersectii, capete de linie) n imagine, iar 7 7 neuroni t t s este deja prea mult, depa ind dimensiunea caracteristicilor primare.

Figura 3.4: Modul de deplasare a nucleului de convoluie. t Al doilea mod de conectare poate observat ntre straturile L1 si L2 din Figura 3.5. Si n acest caz neuronii dintr-o harta mpart acela i set de ponderi, dar ecare neuron de s pe stratul L2 este conectat cu neuroni din nuclee de convoluie din ecare harta a stratului t anterior.

3.2.3

Metode de antrenare a reelelor neuronale t

t Antrenarea reelelor cu propagare nainte se face de obicei cu algoritmul de nvaare cu t t propagare napoi a erorii (backpropagation learning). Acesta este prezentat n toate carile t ce trateaza reelele neuronale, astfel ca nu va mai expus n aceasta lucrare. Programul de antrenare a reelelor neuronale pe care le-am folosit n cadrul experimentelor este conceput t dupa explicaiile din [61](Capitolul 20.5). Am ales aceasta carte deoarece expune ntr-un mod t matematic riguros si detaliat algoritmul de antrenare. n cazul algoritmilor ce au ca principiu minimizarea erorii medii patratice, se poate folosi o tehnica de accelerare a antrenarii. Algoritmul Levenberg-Marquardt [41] (o descriere a sa pentru RNA este data de Bishop n [9], Capitolul 7.11) poate aplicat pentru minimizarea funciei de eroare. t

3.2. RETELE NEURONALE ARTIFICIALE

17

harta 0 harta 0

harta 1 harta 1

harta k-1

harta p-1 strat de convoluie L2

strat de intrare L0

strat de convoluie L1

Figura 3.5: Modul de conectare a neuronilor de pe straturile de convoluie. t

Capitolul 4

Baze de date cu cifre si siruri de cifre


Acest capitol prezinta bazele de date cu cifre si cu siruri de cifre care au fost folosite pentru obinerea seturilor de antrenare si de test. Cu aceste seturi au fost apoi efectuate experit mentele din capitolele ce urmeaza. Prima baza de date, NIST SD 19 ([4]), este si cea mai mare dintre toate. Celelalte trei, MNIST ([40]), LNIST si baza de date la nivel de doua cifre parial suprapuse sunt derivate t din aceasta. Seturile de test 3DNS, 6DNS si 10DNS sunt obinute tot din NIST SD 19, prin t extragerea cmpurilor numerice de 3, 6, respectiv 10 cifre. Figura 4.1 prezinta modul n care relaioneaza seturile de antrenare si de test, iar Tabelul 4.1 - coninutul si modul de utilizare t t al seturilor. n Figura 4.1 am evideniat si clasicatorii la nivel de cifra si de doua cifre parial t t suprapuse ce vor folosii n sistemul de clasicare general (Figura 5.4). t

NIST SD 19
9 partiii: hsf_0 - hsf_8 4170 formulare 814255 imagini caractere

MNIST
ANTRENARE 60000 cifre din hsf_0 - hsf_4 TEST 10000 cifre din hsf_0 - hsf_4

LNIST
ANTRENARE 66214 cifre TEST 45398 cifre

TDNS
ANTRENARE 200000 numere de dou cifre TEST 200000 numere de dou cifre

3DNS set test 1476 numere de trei cifre

6DNS set test 1471 numere de trei cifre

10DNS set test 878 numere de trei cifre

Clasificator pentru cifre

Clasificator pentru perechi de cifre

Figura 4.1: Ierarhia seturilor de test si de antrenare.

4.1. NIST SD 19

19

Tabelul 4.1: Coninutul si modul de utilizare ale seturilor de date. t

nume NIST SD 19 MNIST TRAIN MNIST TEST LNIST TRAIN LNIST TEST TDNS TRAIN TDNS TEST 3DNS 6DNS 10DNS

numar de imagini 814255 + 4170 60000 10000 66214 45398 200000 200000 1476 1471 878

tip imagini variat cifre cifre cifre cifre numere a 2 cifre numere a 2 cifre numere a 3 cifre numere a 6 cifre numere a 10 cifre

utilizare variata antrenare test antrenare test antrenare test test test test

nr. persoane 4170 necunoscut 600 400 1000 1000 296 296 296

500

4.1 NIST SD 19
Baza de date NIST SD 19 ([4]) conine imagini de formulare scanate scrise de 4170 de t persoane. Un exemplu de astfel de formular este dat n Figura 4.2. Formularele vor referite n text prin HSF (Handwriting Sample Form). n continuare vor prezentate numai informaiile t s necesare nelegerii desfa urarii experimentelor. t CD-ul cu baza de date conine gata extrase, eventual segmentate, cifrele si literele din t aceste formulare, n total 814255 de imagini. Pe lnga imagini, baza de date conine detalii t privind originea, organizarea, data publicarii respectivelor imagini, precum si modul recoman dat de utilizare a imaginilor. Caracterele segmentate sunt memorate n imagini de 128 128 pixeli si sunt etichetate folosind codurile ASCII corespunzatoare caracterelor 0-9, a-z, A-Z. Autorii NIST SD 19 arma ca etichetarea imaginilor a fost vericata manual, iar eroarea care mai exista este de aproximativ 0.1%. NIST SD 19 conine toate imaginile din versiunile anterioare, SD3 si SD7 (Tabelul 4.2), t plus multe altele. Imaginile segmentate sunt organizate n diverse ierarhii pentru a facilita mo duri variate de utilizare a lor. Astfel, exista referine pentru ierarhizarea imaginilor n funcie t t de persoana, clasa, clasa fara informaie de specicare a tipului literei (majuscula sau minust cula), cmpul din formularul HSF. Tabelul 4.2: Versiuni anterioare ale bazei de date NIST cu imagini de caractere scrise de mna. (dupa [4])
nume Special Database 1 Special Database 3 Special Database 7 data mai 1990 februarie 1992 aprilie 1992 versiune HWDB Release 1-1.1 HWSC Release 4-1.1 TST1 Release 6-1.1 coninut t formulare si cmpuri caractere caractere observaii t

Test Data 1.

4.1.1

Structura NIST SD 19

NIST CD 19 conine opt partiii de imagini HSF, numerotate hsf_{0,1,2,3,4,6,7,8}. HSF-urile t t au fost scanate la 300dpi si, a a cum se poate observa si n Figura 4.2, conin 34 de cmpuri s t

20

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Figura 4.2: Exemplu de formular din NIST SD 19 (formularul f1816_24). A se vedea si Figura 4.4.

4.1. NIST SD 19

21

Tabelul 4.3: Bazele de date n care au fost publicate partiiile. - cmpuri completate, dar t neprocesate. - cmpuri necompletate. (dupa [4])
partiia t hsf_0 hsf_1 hsf_2 hsf_3 hsf_4 hsf_5 hsf_6 hsf_7 hsf_8 persoane 0000-0499 0500-0999 1000-1499 1500-2099 2100-2599 2600-3099 3100-3599 3600-4099 4100-4169 formulare cifre majuscule minuscule SD1 SD3 SD3 SD3 SD1 SD3 SD3 SD3 SD1 SD3 SD3 SD3 SD1 SD3 SD3 SD3 SD19 SD7 SD7 SD7 pastrate de NIST pentru teste viitoare SD19 SD19 SD19 SD19 SD19 SD19 SD19 SD19 SD19 constituia t SD19 SD19 SD19 originea persoanelor Census Field Census Field Census Field Census Field High School High School Census MD Census MD Census MD

cu informaii diverse. n aceasta lucrare au fost utilizate doar cmpurile numerice. t n Tabelul 4.3 este data alcatuirea NIST SD 19, precum si coninutul SD1, SD3 si SD7. t Primele 429 de formulare din hsf_5 au fost scrise de elevi de liceu, iar ultimele 71, precum si toate formularele din partiiile hsf_{6,7,8} au fost scrise de angajai ai biroului de recen t t samnt din Suitland, Maryland. Informaiile acestea se vor dovedi utile la construirea seturilor t de antrenare si de test, precum si la evaluarea rezultatelor.

4.1.2

Coninutul NIST SD 19 t

Datele ecarei persoane se aa n directoare cu nume de forma fyyyy_zz, unde yyyy repre zinta codul persoanei, putnd lua valori ntre 0000 si 4099, iar zz este un cod prin care se precizeaza tipul formularului completat de persoana respectiva. Toate formularele au acela i s numar de cmpuri, cmpurile cu acela i numar avnd aceea i dimensiune. Variaza numai ors s dinea cifrelor, respectiv a caracterelor, din interiorul cmpului. Acest cod poate utilizat pentru a accesa formularul corespunzator persoanei respective, n directorul data/hsf_pages/truerefs. Coninutul (Tabelul 4.4) acestor iere poate utilizat pentru a aa ce ar trebuit sa scrie pert s soana n cmpurile formularului. Am folosit aceste informatii la construirea seturilor de test t cu numere formate din 3, 6 si 10 cifre. n Figura 4.4 este descris coninutul cmpurilor din t formularul din Figura 4.2. Formularele exista si n varianta necompletata, pentru a putea utilizate la colectari suplimentare de date. Cmpurile de la 3 pna la 31 conin cifre si numere formate din mai multe cifre. Coninutul t t cmpurilor a fost extras si e gata segmentat la nivel de caracter (cifra sau litera) n baza NIST SD 19. Toate caracterele au fost etichetate automat folosind ierele cu referine, si s t apoi vericate manual ([68]) de doua ori de catre persoane distincte. n urma segmentarii imaginiile au fost stocate ntr-o ierarhie de iere. Pentru a aa exact proveniena si coninutul s t t unei imagini se folose te numarul partiiei, numarul persoanei si tipul formularului. s t Formularele au fost concepute astfel nct pentru ecare clasa sa existe acela i numar s de exemplare. Dupa operaiile de extragere si de segmentare, aceste numere nu mai sunt t egale, dar sunt destul de apropiate (Tabelul 4.5). Din pacate, baza de date nu conine si imaginile cu sirurile de cifre extrase din cmpurile t formularelor, ci numai cu cifrele gata segmentate din aceste imagini. Din acest motiv, pentru experimentele asupra sirurilor de cifre a fost necesara dezvoltarea unei metode de extragere a acestor siruri de cifre.

22

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Tabelul 4.4: Exemplu de ier cu referine (hsf_page/truerefs/ref_24.txt). A se vedea si Figura s t 4.2. d_1 d_0 d_2 d_3 0123456789 d_5 0123456789 d_4 0123456789 d_7 395 d_6 08 d_9 49171 d_8 5268 d_11 111 d_10 235969 d_13 81207 d_12 2956 d_15 90 d_14 758298 d_17 34560 d_16 4671 d_18 368704 d_19 27 d_21 75434 d_20 493 d_23 02 d_22 281512 d_25 3000 d_24 564 d_27 48 d_26 335706 d_29 4699 d_28 863 d_31 languoybxqdtpemchrvsjzwk d_30 82771 d_32 MOFWTUIXYHSDZKEBQRLPGCVNJA d_33 Tabelul 4.5: Numarul de exemplare din ecare clasa.
Clasa Exemplare 0 40363 1 44704 2 40072 3 41112 4 39154 5 36606 6 39937 7 41893 8 39579 9 39533

4.1.3

Ierarhizarea datelor

Datele sunt ierarhizate dupa: formulare si partiii, autor, cmp, numarul clasei n hexa, nu t marul clasei unite (fara discriminare ntre literele minuscule si cele majuscule). Din aceste ierarhii prezinta interes pentru lucrarea de faa numai cele la nivel de formular si partiie, t t precum si cea la nivel de autor. Formatul ierelor este detaliat n [4]. NIST SD 19 conine patru tipuri de iere, tipul lor s t s ind determinat de extensie: .mis ier ce conine (mai multe) imagini de caractere. De obicei este comprimat. s t .pct ier ce conine imaginea unui formular. Exista cte un astfel de ier pentru ecare s t s din cele 3669 de persoane. .cls ier ce conine clasele (etichetele) imaginilor din ierul .mis cu acela i nume. s t s s .mit ier ce conine un pointer la un ier .mis. Conine identitatea persoanei, precum si s t s t calea si numele ierului cu imagini segmentate ale acelei persoane. Deoarece exista s mai multe ierarhii de date, imaginile ar trebuit multiplicate pentru ecare ierarhie, ceea ce ar consumat inutil spaiu. Pentru a evita acest lucru, si pentru a permite stocarea t ntregii baze de date pe un singur CD, imaginile apar o singura data -n iere .mis-, iar s n rest doar se face referire la ele folosind iere .mit. s

4.1. NIST SD 19

23

hsf_page | | hsf_0 ... hsf_8 | | f0000_14.pct ... f0499_10.pct

truerefs | | ref_00.txt ... ref_99.txt

template | | ref_00.ps ... ref_99.ps

Figura 4.3: Arborele aferent ierarhizarii formularelor n partiii. t

Ierarhizare dupa partiii si formulare t Imaginile formularelor sunt structurate ntr-un arbore (Figura 4.3) ce are pe primul nivel par tiiile hsf_{0,1,2,3,4,6,7,8} si directorul pentru referine truerefs. De asemenea, mai exista si t t directorul pentru formularele necompletate (template). Ierarhizare dupa persoane Acest arbore (Figura 4.4) conine caracterele organizate dupa partiie si apoi dupa persoana t t care le-a scris. Datele din acesta ierarhie reprezinta datete prime obinute dupa procesul t de segmentare, celelalte ierarhii ind doar reorganizari ale datelor din aceasta. n directorul ecarei persoane se aa patru perechi de iere .mis si .cls, cte una pentru cifre, litere s minuscule, litere majuscule, caractere din cmpul Constituie. Fi iere .mit nu sunt necesare t s deoarece toate datele se aa n directorul curent.

4.1.4

Formatul sierelor NIST

Imaginile sunt stocate n format binar, alb-negru. Dimensiunea unei imagini ce reprezinta un simbol este de 128 128 pixeli. Informaia de culoare a pixelilor este memorata la nivel t de bit, astfel ca o imagine necesita 128 128/8 = 2048 octei. Imaginile simbolurilor sunt t stocate una dupa celalalta, iar blocul rezultat este comprimat cu o varianta a algoritmului CCITT Group 4. Toate ierele care conin imagini au un antet de tip IHEAD ata at blocului s t s ce conine imaginile comprimate. Informaii detaliate despre modul de codicare pot gasite t t n [4]. Tipul acesta de codicare se folose te la ierele .mis, ele ind unicele care conin s s t imagini de caractere. Fi ierele care conin imaginea unui formular ntreg sunt de tipul .pct. s t
by_write | | hsf_0 ... hsf_7 | | f0000_14 f0001_41 ... f0499_10 | | d0000_14.mis u0000_14.mis l0000_14.mis c0000_14.mis d0000_14.cls u0000_14.cls l0000_14.cls c0000_14.cls

Figura 4.4: Arborele aferent ierarhizarii imaginilor de caractere dupa partiii si persoane. t

24

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Fiecarui caracter segmentat din formulare i este atribuita o eticheta prin care se specica din ce clasa face parte. Aceasta eticheta reprezinta chiar codul ASCII al caracterului, n cazul cifrelor avnd valori ntre 30(16) si 3916 . Etichetele cifrelor dintr-un ier .mis se aa memorate s ntr-un ier .cls corespunzator. Acesta este un ier text ce are pe prima linie numarul de s s cifre care se aa att n .mis ct si n .cls. Pe rndurile urmatoare se aa cte o eticheta.

4.1.5

Programe utilitare ale NIST SD 19

Pe lnga imaginile din baza de date mai exista si utilitare pentru comprimarea si decompri marea imaginilor. Deoarece aceste utilitare sunt scrise n C pentru UNIX, a fost necesara modicarea lor pentru arhitectura x86. ntruct numarul funciilor ce au trebuit adaptate este t de peste o suta si se aa n cteva zeci de iere (peste 300kB de surse C), portarea utilis tarelor pe arhitectura 80x86 nu a fost deloc facila. Din multele utilitare ale NIST SD 19, am modicat utilitarul normmis care normalizeaza imaginile dintr-un ier .mis la dimensiunea de s 32 32 pixeli. Pentru a face aceasta normalizare -care era nedorita pentru modul n care doream sa folosesc imaginile din .mis- normmis nti decomprima ierul .mis. Am folosit s acest lucru si am modicat programul astfel nct sa salveze imaginile n format .bmp, cte un ier pentru ecare imagine din .mis. Am obinut peste o suta de mii de iere .bmp, s t s ecare coninnd o imagine de 128 128 pixeli. La salvarea ecarui ier .bmp am avut grija t s ca numele sa conina toate datele de identicare a imaginii: formular, persoana, eticheta. t Pentru crearea ulterioara a seturilor de antrenare si de test am scris un utilitar care pe baza unui ier de congurare alege doar anumite imagini din cele peste 100000 de bmp-uri. s

4.2 MNIST
Baza de date MNIST (Modied NIST) [40] a fost creata de Corinna Cortez si apoi modicata de Yann LeCun prin centrarea imaginilor n centrul de masa. Conine doua seturi de imagini etichetate, unul pentru antrenare alcatuit din 60000 de t imagini de cifre, si unul pentru testare alcatuit din 10000 de imagini. A a cum i spune si s numele, este o modicare a NIST SD 19. Imaginile n format alb negru din NIST au fost redi mensionate la 20 20 pixeli cu pastrarea aspectului. n urma procesului de redimensionare, imaginile sunt reprezentate n tonuri de gri. Imaginea de 20 20 pixeli este apoi poziionata t ntr-una de 28 28 pixeli, prin suprapunerea centrului de masa al primeia cu centrul imaginii mari. Baza de date MNIST conine imagini de cifre scrise de mna din NIST SD 3 si din NIST t SD 1. n urma multor experimente cu aceste baze de date, Yann LeCun a constatat ca SD 3 este mult mai u or de recunoscut dect SD 1 deoarece conine imagini scrise de personal de s t la biroul de recensamnt al populaiei, iar SD1 conine imagini cu cifre scrise de elevi de liceu. t t Deoarece a dorit ca rezultatele sistemului de clasicare sa nu e inuenate de persoanele t care au scris respectivele cifre, a hotart sa creeze o noua baza de date prin amestecarea datelor din SD 1 si SD 3. Pentru aceasta, a construit setul de antrenare folosind 30000 de imagini din SD 1 si 30000 de imagini din SD 3. Pentru setul de test a folosit cte 5000 de imagini att din SD 1, ct si din SD 3. Setul de antrenare conine date de la aproximativ t 500 de persoane, iar mulimile de persoane ale caror imagini de cifre au fost folosite pentru t construirea seturilor de antrenare si de test au fost disjuncte.

4.3. LNIST - LIU-NIST

25

ntruct n SD 1 imaginile cifrelor pentru ecare persoana nu se aa la un loc, au fost folosite informaiile din ierele "cls" (care conin date despre proveniena ecarei imagini a t s t t unei cifre) pentru rearanjarea cifrelor n funcie de persoana care le-a scris. Detaliile procet durii pot urmarite n [40]. Baza de date este structurata n patru iere: s

train-images-idx3-ubyte: imaginile setului de antrenare, train-labels-idx1-ubyte: etichetele setului de antrenare, t10k-images-idx3-ubyte: imaginile setului de test, t10k-labels-idx1-ubyte: etichetele setului de test.

n Anexa 7.3 este prezentat modul de codicare a informaiilor din iere. t s

4.3 LNIST - Liu-NIST


Aceste seturi de antrenare si de test au fost construite pentru a putea face o comparaie ct t mai echitabila ntre metoda propusa n aceasta lucrare si metodele din [44]. Ele conin exact t acelea i imagini ca seturile folosite n [44]. Setul de test este compus din 66214 cifre extrase s din 600 de formulare NIST: 0-399 si 2100-2299. Pentru extragerea acestor cifre am folosit unele din utilitarele mentionate n Seciunea 4.1. Dupa extragerea imaginilor comprimate din t ierele .mis, acestea au fost decomprimate si s-au obinut imagini alb-negru cu dimensius t nea de 128 128 pixeli. Cifrele din aceste imagini au fost ncadrate n dreptunghiul ce le delimiteaza, rezultatul ind redimensionat cu pastrarea aspectului la 20 20 pixeli. n urma redimensionarii, imaginile au fost transformate din imagini binare (0/1) n imagini cu tonuri de gri (0 255). Apoi s-a calculat centrul de masa al ecarei imagini si bitmap-ul de 20 20 a fost poziionat ntr-unul de 29 29 prin suprapunerea centrului de masa cu centrul imaginii t de 29 29 (Figura 4.5). Toate aceste prelucrari au fost efectuate cu un program C++ care s are ca rezultat nal doua iere de tip .idx (a se vedea Anexa 7.3), unul coninnd cele 66214 t imagini, iar celalalt etichetele corespunzatoare, etichete care au fost obinute din ierele .cls t s corespunzatoare ierelor .mis. s Setul de test a fost obinut n acela i mod, dar folosind imaginile cu cifre din 400 de t s formulare: 500-699 si 2400-2599. n total sunt 45398 de imagini. t t Niciuna din cele 111612 imagini nu a fost curaata sau mbunataita n niciun fel. t Avantajul folosirii centrarii n centrul de masa faa de metoda dreptunghiului delimitator rezida n sensibilitatea scazuta la zgomotele ce ar putea aparea n imagine. La metoda dreptunghiului delimitator e sucient ca un singur pixel de zgomot sa se ae la distana de t imaginea cifrei pentu ca imaginea sa apara translatata puternic la intrarea clasicatorului. Centrarea n centrul de masa atenueaza foarte mult acest efect al zgomotelor exterioare cifrei propriu-zise, pastrnd toate imaginile n aproximativ aceea i poziie a cmpului de intrare al s t clasicatorului. n Figura 4.5 este evideniat un caz de zgomot care translateaza orizontal t imaginea n cazul utilizarii metodei dreptunghiului delimitator (imaginile din dreapta). Ultimul rnd de imagini arata mai clar efectul centrarii n centrul de masa, prin suprapunerea imagi nilor de pe coloanele corespunzatoare. Se observa ca n cazul centrarii n centrul de masa t imaginea obinuta prin suprapunere arata mult mai puin distorsionata faa de imaginea obt t inuta prin suprapunerea imaginilor centrate folosind metoda dreptunghiului delimitator. Cel t mai bine este evideniata diferena pentru golul cifrei noua, gol care este mult diminuat n t t cazul din dreapta. Daca ar existat si un exemplar al cifrei noua cu zgomot n partea opusa

26

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Figura 4.5: Comparaie ntre centrarea n centrul de masa (stnga) si centrarea n drept tunghiul delimitator (dreapta). Punctul ro u reprezinta centrul de masa al imaginii. Pe ultimul s rnd se aa suprapunerea celor doua imagini de pe coloana corespunzatoare. -n dreapta-, iar la un set de antrenare format din zeci de mii de imagini aproape sigur exista si astfel de exemplare, atunci golul cifrei noua pna la urma ar disparut daca nu s-ar folosit metoda centrarii n centrul de masa.

4.4 TDNS (Two-digit Numeral Strings)


Aceasta baza de date am creat-o pentru antrenarea unui clasicator care sa recunoasca siruri de doua cifre parial suprapuse. NIST SD 19 conine cmpuri cu numere formate din t t doua cifre, dar numarul lor este relativ redus deoarece exista numai 4170 de persoane si pentru ecare persoana sunt cte 4 cmpuri de doua cifre. Dar extragerea acestor informaii t din formulare nu este facila deoarece trebuia implementat un program care sa detecteze si sa extraga imaginile din formular. Programul a fost implementat deoarece am avut nevoie si de imaginile cu numere de trei sau mai multe cifre. nsa, multe din imagini cu doua cifre nu conin cifre parial suprapuse, astfel ca numarul nal de imagini pentru antrenarea reelei ar t t t insucient deoarece antrenarea necesita o cantitate considerabila de date. Considernd numerele formate din doua cifre, exista 100 de clase, de la 00 la 99. Pentru ecare clasa sunt necesare cel puin cteva sute de exemplare pentru ca antrenarea sa t reu easca. Colectarea manuala, urmata de procesare si etichetare a att de multor date este s aproape imposibila, oricum, foarte indelungata si plictisitoare. n consecina, sunt necesare t metode alternative. Am prezentat anterior mai multe baze de date care conin imagini cu t cifre etichetate. Metoda alternativa aleasa consta n conceperea unei metode de generare automata a imaginilor cu doua cifre parial suprapuse. Pentru intrare am folosit imagini din t NIST SD 19 ([4]) si nu din MNIST, deoarece n MNIST imaginile au fost deja prelucrate n diverse moduri si am dorit sa nu inuenez n niciun fel rezultatele procesului de recunoa tere. t s

4.4. TDNS (TWO-DIGIT NUMERAL STRINGS)

27

NIST SD 19 conine noua partiii, de la hsf0 la hsf8 . Am folosit partiiile hsf0 hsf3 t t t care conin imagini de la 2100 de persoane. Din aceste date am generat automat att setul t de antrenare, ct si cel de test. n NIST SD 19 se specica a se folosi partiiile hsf0 hsf3 t pentru antrenare, dar aceste specicaii sunt date n ideea procesului de recunoa tere la nivel t s de cifra, neaplicndu-se si pentru siruri de cifre. Un alt motiv pentru care nu am respectat ndrumarile din NIST este acela ca partiia hsf4 care este menionata a se folosi ca set de t t test conine numai 500 de persoane, si am dorit sa creez seturi de test ct mai diverse si ct t mai mari. n consecina, am utilizat imaginile primelor 1000 de persoane pentru antrenare, si t imaginile urmatoarelor 1000 de persoane pentru test. Detaliile vor prezentate n seciunile t dedicate setului de antrenare, respectiv celui de test.

4.4.1

Setul de antrenare

Acest set conine primele 1000 de persoane, exceptndu-le pe cele cu indicii: 48, 52, 741, t 785, 802, 825 si 848. Nu s-au utilizat datele de la aceste persoane deoarece erau incomplete n baza de date NIST SD 19. Lipsea unul din ierele cu imagini sau cel cu etichete, sau nu s existau cifre pentru unele clase. Rezultatul este format din 1000 de grupuri a zece imagini de cifre. Rezoluia n NIST SD 19 este 128128 pixeli, si imaginile sunt codicate alb-negru. Am t efectuat iniial experimente direct cu aceste imagini fara a le corecta n vreun fel, dar erorile t au fost semnicative, indiferent de complexitatea reelei neuronale utilizate. Era evident ca t imaginile au probleme, astfel ca le-am studiat mai n amanunt si am observat ca multe conin t pixeli disparai sau artefacte generate de preprocesarea NIST. (Figura 4.6) t

Figura 4.6: Primul rnd - exemple de artefacte n imagini 128 128 pixeli din NIST SD 19; rndul al doilea - imaginile rezultate n urma procesului de corecie semiautomata. t Ace ti pixeli si artefacte nu afecteaza direct capacitatea de recunoa tere a reelei neus s t ronale. Daca imaginile sunt utilizate pentru un clasicator la nivel de cifra, nu este necesara nicio corectare a lor. Demonstraia acestui fapt este prezentata n Capitolul 5 la experimentele t efectuate cu cifre singulare. Aceste artefacte afecteaza negativ procesul de unire a cifrelor. Problema majora rezida n calcularea poziiei de suprapunere, cauznd generarea de imat gini nerealiste. Pentru a evita astfel de erori am hotart sa elimin artefactele si pixelii eronai. t Am folosit o metoda parial automata prin scrierea unui program care detecteaza numarul t componentelor conexe din imagine. Daca acesta este mai mare dect unu, imaginea este prezentata operatorului uman si ecare componenta conexa este marcata cu o alta culoare

28

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

(Figura 4.9). n majoritatea cazurilor eliminarea tuturor componentelor exceptnd-o pe cea mai mare a fost sucienta pentru corecie. A existat un numar redus de cazuri de cifre cu linii t ntrerupte. Soluia aleasa pentru corectarea lor a fost stergerea manuala a componentelor t care ar afectat procesul de suprapunere. ntr-un numar foarte redus au existat cazuri de imagini foarte deformate rezultate n urma unui proces defectuos de extragere cnd baza de date NIST SD 19 a fost colectata si procesata. Aceste cazuri au fost corectate manual. Cteva exemple pot observate n Figura 4.7.

Figura 4.7: Primul rnd - imagini defectuos segmentate sau deformate din baza NIST SD 19; rndul al doilea - imagini rezultate n urma coreciei manuale. t Fiecare imagine de 128 128 pixeli conine un caracter care poate avea dimensiuni foarte t diferite. A fost necesara o redimensionare pentru normalizarea cifrelor din setul de imagini. S-a detectat dreptunghiul delimitator al cifrei si apoi coninutul acestuia a fost scalat pro t porional pna la dimensiunea de 20 20 pixeli (4.8). Rezultatul scalarii este o imagine cu t tonuri de gri afectata de aliasing. Am ales aceasta dimensiune deoarece este sucient de mare pentru a reprezenta complet si n detaliu un caracter, si este mai mica dect marea ma joritatea a imaginilor din baza de date NIST. De asemenea, si baza de date MNIST folose te s aceea i dimensiune pentru redimensionare si am dorit o tratare unitara pentru toate experis mentele urmatoare.

Figura 4.8: Primul rnd - imagini 128128 pixeli din NIST SD 19; rndul al doilea - imagini 20 20 pixeli rezultate dupa taiere relativa la dreptunghiul delimitator, centrare si redimensionare. Am pornit de la ierele cu imagini comprimate .mis si de la ierele cu etichete .cls s s utilizate n NIST SD 19 si dupa ce am extras datele de care am avut nevoie, le-am salvat n formatul .idx care are avantajul ca este un format necomprimat care poate utilizat n mod

4.4. TDNS (TWO-DIGIT NUMERAL STRINGS)

29

direct. De asemenea, poate conine tonuri de gri, neind limitat doar la alb sau negru. Acest t tip de iere e folosit si de Yann LeCun ([40]) si am dorit sa tratam unitar toate ierele cu s s imagini si etichete. Tipul ierelor .idx este prezentat n Anexele 1 si 2. s

Figura 4.9: Interfaa programului de corectare semiautomata. t Dupa prelucrarile anterioare, rezultatul este un ier cu imaginile a 10000 de cifre proves nite de la 1000 de persoane diferite. Fiecare rnd conine imagini de la o singura persoana. t n Figura 4.10 este aratat modul de codicare. Cu aceste zece cifre ale ecarei persoane construim 200 de imagini cu perechi de cifre parial suprapuse. Imaginile cu indici pari conin t t cifre suprapuse orizontal cu un pixel, iar cele cu indici impari conin cifre suprapuse orizontal t cu 3 pixeli. Am folosit suprapuneri orizontale doar pe 1 si 3 pixeli, deoarece mai puin de 1 t nseamna doar atingere - caz u or rezolvat de un clasicator la nivel de cifra care e aplicat pe s o fereastra ce se deplaseaza deasupra imaginii -, iar mai mult de trei (3 reprezentnd 15% ntr-o imagine de 20 20 pixeli) e puin probabil sa ntlnim ntr-un text scris de mna. Cazul t suprapunerii pe o distana de doi pixeli a fost evitat deoarece e prea asemanator cu celealte t doua si doar ar contribuit la marirea inutila cu 50% a setului de antrenare si, implicit, a timpului necesar antrenarii. n direcie verticala ambele imagini de cifre au fost deplasate aleator cu zero sau un pixel, t n sus sau n jos. n acest mod s-a dorit simularea scrierii nealiniate orizontal din scrisul de mna. Pixelii obinui n urma suprapunerii au ca valoare a nivelului de gri minimul dintre t t 255 si suma celor doua nivele de gri ale pixelilor ce au fost suprapu i. nainte de procesul s de suprapunere pariala ecare imagine de 20 20 pixeli a fost centrata ntr-o imagine de t 28 28 pixeli pentru a permite deplasarile orizontale si verticale. Imaginea rezultata n urma unirii a doua cifre are dimensiunea de 40 28 pixeli (Figura 4.11). Acestea sunt datele brute care vor redimensionate ulterior pentru antrenarea si testarea reelelor neuronale. Am ales t

30

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Figura 4.10: Cifrele a noua persoane dupa etapele de taiere dupa dreptunghiul delimitator, centrare si redimensionare la 20 20 pixeli. t laimea de 40 de pixeli deoarece imaginile originale aveau 20 de pixeli, din acest motiv n urma procesului de suprapunere pariala nu putea rezulta o imagine mai lata de 40 de pixeli. t t nalimea stabilita la 28 de pixeli permite deplasarea pe verticala a imaginilor cu patru pixeli, att n sus, ct si n jos. Setul de antrenare obinut conine 200000 de imagini, cte 2000 t t pentru ecare din cele 100 de clase.

4.4.2

Setul de test

Acest set este compus din persoane ncepnd cu poziia 1010 n partiiile hsf0 hsf3 . Din t t motive similare cu cele de la setul de antrenare, formularele urmatoarelor persoane au fost ignorate: 1102, 1107, 1110, 1209, 1432, 1571, 1572, 1723, 1725, 1726, 1727, 1756, 1767, 1965, 1969, 1974, 1984, 1990, 1992 si 1995. Am aplicat procesul semiautomat de nde partare a pixelilor care ar afectat nedorit procesul de unire a cifrelor. Pe aceste seturi am t mbunatait doar aproximativ 10 imagini care au fost prea distorsionate pentru a interpretate t t de un om. Nu am facut alte mbunatairi ale calitaii imaginilor din acest set deoarece am dorit sa se poata observa capacitatea de generalizare a reelei. Un alt motiv a fost acela ca s-a t dorit testarea reelei cu imagini ct mai apropiate de cele ntlnite n realitate. Restul pa ilor t s de procesare sunt identici cu cei de la setul de antrenare: taierea imaginii la limitele dreptunghiului delimitator al cifrei,

unirea a doua imagini ntr-una de 40 28 pixeli.

redimensionarea la 20 20 pixeli, deplasari orizontala si verticala,

centrarea imaginii,

4.5 Seturile de test 3DNS, 6DNS si 10DNS


ntruct lucrarea de faa trateaza subiectul recunoa terii sirurilor de cifre scrise de mna, sunt t s necesare seturi de test cu astfel de siruri. n literatura se folosesc sirurile din NIST SD 19 [4]

4.5. SETURILE DE TEST 3DNS, 6DNS SI 10DNS

31

28x28

28x28 -1 pixel 13 pixeli

+1 pixel 28x28

28x28

40x28

Figura 4.11: Procesul de suprapunere pariala: primul rnd - imaginile originale; rndul al t doilea - imagini deplasate pe verticala; al treilea rnd - imaginea nala dupa deplasarea pe orizontala cu 13 pixeli (distana minima dintre imagini) + 3 (distana de suprapunere) pixeli. t t si din CEDAR [22]. Deoarece am avut la dispoziie doar NIST SD 19, testele au fost efectuate t pe aceasta baza de date. NIST SD 19 conine gata extrase cifrele si literele din cele cteva mii de formulare. Nu t conine, nsa, sirurile de cifre, astfel ca a trebuit scris un program care sa le extraga din t imaginile cu formulare (Figura 4.2). Cu metoda descrisa n seciunea urmatoare am extras cmpurile de 3, 6 si 10 cifre din t formularele 1800-2099. Din cele 300 de pagini cu formulare, autorii din [44] au eliminat patru pagini cu imagini foarte sterse: 1965, 1977, 2027 si 2067. Au fost eliminate si n cadrul acestor experimente, ramnnd 296 de imagini de formulare.

4.5.1

Metoda de extragere a cmpurilor din formulare

Studiind formularele de tip HSF (un exemplu este dat n Figura 4.2), se observa ca sunt al catuite din cmpuri dreptunghiulare n care persoana care le completeaza trebuie sa scrie informaia tiparita deasupra cmpului respectiv. Se cunoa te ca toate formularele arata aprot s ximativ la fel: au acela i numar de cmpuri de aceea i dimensiune, poziionate n acelea i s s t s locuri. Difera numai coninutul cmpurilor, iar informaia cu cifrele sau literele ce ar trebui t t sa se regaseasca n acele cmpuri se aa n ierul cu referine corespunzator formularus t lui. Cunoscnd aceste detalii, extragerea imaginilor cu sirurile de cifre pare iniial o operaie t t destul de simpla. Doar ca formularele au fost nti tiparite, apoi completate mai mult sau mai puin corect si apoi scanate. n urma acestor prelucrari dreptunghiurile nu se mai aa t n acelea i poziii; liniile au grosimi diferite si pot ntrerupte; distanele dintre cmpuri nu s t t

32

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

mai sunt egale ntre ele; toata imaginea poate rotita cu un unghi de cteva grade faa de t s orizontala, mai mult, acest unghi poate varia n interiorul documentului; scrisul poate depa i dreptunghiurile ce delimiteaza cmpurile. Deoarece cmpurile din formulare sunt dispuse pe rnduri, iar dreptunghiurile aferente t sunt aliniate, avnd aceea i nalime, un mod de a ncepe extragerea informaiei ar putea s t reprezentat de detectarea acestor linii cvasiorizontale. n formular exista 20 de astfel de linii (Figura 4.2), delimitnd 10 rnduri cu informaie. Doar rndurile 1, 2, 3, 4, 5 si 6 conin t t siruri de cifre, restul neprezentnd interes. Un mod simplu de a detecta liniile dintr-o imagine este cu ajutorul histogramelor. Dezavantajul acestora este acela ca funcioneaza doar pentru t un unghi care trebuie cunoscut a priori. Deoarece imaginile pot rotite cu orice unghi -n urma experimentelor am constatat ca unghiul de rotire al formularelor este de maxim 1.5 -, aceasta metoda nu poate aplicata. De i unghiul pare mic, lund n considerare ca o linie are s lungimea de aproximativ 2000 de pixeli, 1.5 nseamna o abatere pe verticala de aproximativ 2000 tan 1.5 52 de pixeli. Cum grosimea liniei scanate la 300dpi este de aproximativ 8-10 pixeli, devine evident de ce metoda histogramelor orizontale nu funcioneaza. Soluia ar t t reprezenta-o mai multe histograme cvasiorizontale cu abaterea faa de orizontala de maxim t 1.5 , nsa exista o alta metoda -transformata Hough- care rezolva aceste probleme. n seciunea 3.1.3 au fost prezentate aspecte teoretice generale referitoare la aceasta transfort mata. Avnd n vedere ca sunt foarte multe formulare de prelucrat, ecare avnd dimensiunile de 3300 2560 pixeli, si ca transformata Hough este foarte mare consumatoare de resurse de calcul, aplicarea ei pare a neoportuna. Se stie ca transformata Hough va lua ecare din cei 8448000 de pixeli ai imaginii si va testa sa vada daca se aa pe una din foarte multele drepte posibile. n mod normal parametrii transformatei Hough (a se vedea Sectiunea 3.1.3) ar lua urmatoarele valori: [90 , +90 ), iar r [3300, +4177]. Daca am alege pa ii s de discretizare dr = 1pixel si d = 0.2 (e necesar un astfel de pas mic pentru deoarece liniile orizontale ale documentului sunt foarte lungi -de aproximativ 2000 de pixeli- si un pas mai mare ar conduce la abateri prea mari care ar implica e ecul detectarii liniilor din imagine), s observam ca trebuie sa vericam apartenena ecaruia din cele 8448000 de puncte la ecare t

180 + 1 = 6736777 drepte. Ajungem la 8448000 901 = 0.2 7611648000 aplicari ale Formulei 3.7 pentru un singur formular, mult prea mult chiar si pentru procesoarele actuale. t Evident, sunt necesare mbunatairi ale algoritmului. Pasul de discretizare dr nu poate marit deoarece am ncepe sa detectam puncte din grosimea liniilor, ceea ce ar duce la alte complicaii. Mai ramn doi parametri, intervalele de valori pentru r si pentru . Am putea t cauta linii orizontale numai n anumite zone ale documentului, dar o matrice de acumulare cu s indici ce variaza necontinuu iara i complica mult algoritmul. Pe lnga acest motiv, e destul de "periculos" sa alegem doar anumite benzi orizontale din imagine, deoarece imaginile pot translatate pe verticala destul de mult, chiar si cu cteva sute de pixeli. Ramne parametrul , care, din fericire, poate limitat la intervalul [1.5 , +1.5 ), deoarece cunoa tem ca imaginile s formularelor nu pot rotite mai mult de att. Aceasta limitare a domeniului de valori pentru 180/0.2+1 s mare te viteza algoritmului de 3/0.2+1 56 ori, aducnd timpul de procesare la nivelul a cteva secunde pentru un formular (folosind un singur r de execuie). t O optimizare a fost adusa si parametrului r, prin limitarea variaiei sale. Analiznd Figura t 4.12 se poate observa ca pentru variaii de 1.5 ale lui putem limita variaia lui r doar la t t domeniul pozitiv daca nu mai consideram posibilele drepte ce ar trece numai prin puncte ale
din cele

(3300+4177)pixeli 1pixel

4.5. SETURILE DE TEST 3DNS, 6DNS SI 10DNS

33

Spaiul imagine O
1.5

Dreptele care conin puncte numai din aceast zon a imaginii au toate r>=0

2560 pixeli

Figura 4.12: Limitarea variaiei parametrului r. t zonei ha urate din Figura 4.12. Cum informaiile din formulare se aa cu cteva sute de pixeli s t mai jos, nu afectam deloc corectitudinea algoritmului. n schimb, va cre te viteza de rulare si s codul va puin mai simplu din cauza ca nu mai exista si zone negative pentru indici. t Algoritmul 1 prezinta modul de obinere a matricei de acumulare. Fiecare element al t matricei are ca valoare numarul de pixeli negri ai imaginii prin care trece respectiva linie. Folosind informaiile prezentate anterior se poate calcula dimensiunea matricei de acumulare: t 4177 16 = 66832. Foarte multe din valorile matricei sunt nenule, astfel ca trebuie sa gasim o metoda prin care sa selectam doar acele elemente care corespund liniilor cautate. O metoda simpla este aceea de a aplica un ltru care sa decida daca ecare valoare a matricei reprezinta o dreapta utila sau nu. Aratam mai sus ca abaterea maxima pentru o linie de 2000 de pixeli la o nclinaie de 1.5 este de 52 pixeli. Putem aplica o fereastra de t forma unui patrat cu latura de 52 2 + 1 = 105 pixeli centrata n ecare pixel al matricei de acumulare. Daca n aceasta fereastra exista cel puin o valoare mai mare dect cea t din centrul ferestrei, valoarea elementului central este setata pe 0. De i e o metoda foarte s primitiva, este ecienta si este sucient de rapida pentru a nu necesita implementarea unor algoritmi mai complicai. Timpul necesar procesarii ntregii matrici este de aproximativ o t secunda. Pe lnga procesarea decrisa am mai adaugat condiia ca ecare linie sa conina cel t t puin 800 de pixeli. Acest prag a fost obinut studiind suma lungimilor segmentelor coliniare t t din formulare. Rezultatul operaiilor de pna acum este reprezentat de cteva zeci de linii candidate. t Analizndu-le am constatat ca pe lnga liniile ce se doreau a detectate apareau si cteva linii "fantoma". Acestea erau detectate n textul tiparit al paragrafului din Constituie. Deoarece t fontul de acolo era foarte gros si adunat, ntr-adevar existau cteva linii care se puteau forma cu pixeli din caracterele tiparite. De obicei se detecta o linie pentru ecare rnd al paragra-

3300 pixeli

34

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Input: Imagine Output: matricea de acumulare H iniializeaza toate elementele din H cu 0 t t foreach 0 y < nalimeImagine do t foreach 0 x < LaimeImagine do if Imagine[y, x] = 0 then foreach 0 t < tmax do

= (0.2t 1.5)/180 r = x sin + y cos if 0 r < 4177 then incrementeaza H[t, r] end end end end end Algorithm 1: Transformata Hough.

fului. Transformata Hough doar numara punctele care se aa pe o linie, nu verica con tinuitatea ei, neavnd nicio informaie referitoare la distribuia punctelor pe dreapta. Din t t acest motiv gradul de fragmentare al liniilor detectate n paragraful Constituiei nu reprezinta t un impediment n detectarea lor. Se impune, nsa, eliminarea acestor linii false din prisma scopului metodei de extragere a imaginilor cu siruri de cifre. Pentru aceasta este sucient sa s masuram gradul de fragmentare al liniilor si sa le eliminam pe cele care depa esc un anumit prag maxim admis. t Gradul de fragmentare al unei linii poate masurat calculnd numarul de discontinuitai al respectivei linii, folosind Algoritmul 2. Algoritmul reface linia, prin cautarea n spaiul imaginii t originale a pixelilor de pe dreapta cu parametrii r si n spaiul Hough. Sunt numarate t trecerile 0 1 si 1 0, adica trecerile de la pixeli albi la negri si invers. Acest numar e apoi t t mparit cu 2 pentru a obine numarul de discontinuitai. t Input: Imagine, dreapta (r, ) t Output: numarul de discontinuitai ale dreptei curente treceri=0 t foreach 0 x < LaimeImagine-1 do

y1 = r

if Imagine[y1 , x] = Imagine[y2 , x + 1] then incrementeaza treceri end end return treceri 2 t Algorithm 2: Determinarea numarului de discontinuitai ale unei drepte.

y2 = r

x sin 180 cos 180 (x+1) sin 180 cos 180

4.5. SETURILE DE TEST 3DNS, 6DNS SI 10DNS

35

Dupa experimentarea algoritmului pe cteva formulare am ajuns la un numar maxim admisibil de ntreruperi egal cu 60 pentru liniile candidate la a delimita cmpuri ale formularului. t Toate liniile cu mai mult de 60 de discontinuitai sunt ignorate, ele aparnd n paragraful tiparit al Constituiei. n acest moment numarul de linii nca este mai mare dect numarul de linii orit zontale care delimiteaza rndurile cu cmpurile formularului. Liniile detectate sunt mai multe deoarece unele dintre ele sunt multiplu detectate, adica exista cteva linii cu exact acela i s numar de puncte si cu parametri foarte apropiai. De obicei difera numai prin parametrul r, t existnd linii multiplicate de 2-5 ori. Dintre aceste linii ne este sucienta una singura. Folosind Algoritmul 3 pastram doar liniile care delimiteaza rnduri cu cmpuri din formular. Daca exista mai multe linii consecutive detectate, atunci o pastram pe prima, daca suntem la nceputul unui rnd, respectiv doar pe ultima, daca suntem la sfr itul unui rnd. Fiecare linie conine s t informaii despre r, si numarul de puncte. Varibila start are valoarea true daca se cauta o t linie pentru nceputul unui rnd, si f alse daca se cauta o linie pentru sfr itul unui rnd. s Input: L[], vector cu liniile detectate Output: D[], vector cu liniile pastrate start=true //nceput de rnd foreach linie L[i] din L[] do aa lista de linii L[i + j] cu proprietatea ca |L[i].r L[i + j].r| 10 if j=0 then adauga L[i] la D[] //nu exista linii alaturate end else if start then adaugam L[i + j] la D[] //o copiem pe ultima end else adaugam L[i] la D[] //o copiem pe prima end end start = not(start) //schimbam starea end Algorithm 3: Selectarea liniilor ce delimiteaza rnduri cu cmpuri din formular. n D[] vom avea 20 de linii care delimiteaza cele 10 rnduri de cmpuri. ntruct ne intereseaza numai cmpurile numerice, pastram doar liniile cu indici de la 2 la 13, linii care ar trebui sa delimiteze cele cinci rnduri de cmpuri numerice. Fiecare pereche de linii din cele 10 linii ramase, este trimisa unui modul de extragere a imaginilor cmpurilor numerice. Se verica daca numarul de puncte de pe cele doua linii nu t difera cu mai mult de 200 de puncte si daca ||r1 r2 | 90| > 20, deoarece nalimea medie a unui rnd este de 90 de pixeli. Daca vreunul din aceste teste nu este trecut, procesarea continua cu urmatoarea pereche de linii. Urmeaza delimitarea cmpurilor pe orizontala. Pen tru aceasta se reformeaza cele doua linii n spaiul imagine si apoi se suprapun. Avem o t t singura linie care ar trebui sa prezinte discontinuitai n spaiile dintre cmpuri. Cmpurile din t formulare sunt separate pe orizontala de cel puin 55 de pixeli albi. Din acest motiv am ales t ca prag 40 de pixeli pentru discontinuitatea maxima permisa. Linia anterioara este segmen-

36

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

tata n ecare poziie unde ncepe o discontinuitate mai mare de 40 de pixeli. Bineneles, t t se trateaza si cazurile particulare de nceput si de sfr it de linie. Primul rnd cu cmpuri s numerice conine 3 cmpuri, iar urmatoarele 5 conin cte 5 cmpuri. Numarul de cmt t puri detectate este comparat cu aceste constante pentru a se detecta eventuale erori de segmentare. Daca valorile se potrivesc, atunci se apeleaza un alt modul care extrage din formular imaginea rectangulara cu dimensiunile si poziia detectate anterior. Se construie te t s si un nume sugestiv pentru imaginea cmpului, de forma fxxxx_yy_dzz_eticheta.bmp, unde zz reprezinta numarul cmpului, iar eticheta - eticheta respectivului cmp. Eticheta este citita din ierul cu etichete, aferent ecarui formular. Imaginea nca este n forma bruta, coninnd s t t n unele cazuri pari din dreptunghiul ce delimita cmpul. Primul rnd din Figura 4.13 prezinta t cteva astfel de imagini nainte de procesul de curaare.

Figura 4.13: Imagini obinute n urma procesului de extragere a cmpurilor din formulare. t t Primul rnd - imagini brute, al doilea rnd - imagini dupa faza de curaare automata, rndul t al treilea - imagini dupa faza de curaare manuala. Grosimea liniilor care formeaza dreptunghiurile de delimitare a cmpurilor este de apro ximativ 10 pixeli. Am luat o marja de 50% si am considerat un dreptunghi interior imaginii, t departat la 15 pixeli de extremitai. Ideea consta n stergerea condiionata a pixelilor din acest t cadru dreptunghiular. Se ia ecare pixel din aceasta cadru. Daca este negru, atunci se cauta componenta conexa din care face parte. Daca aceasta componenta conexa nu conine pixeli t din afara cadrului dreptunghiular, atunci pixelul mpreuna cu toata componenta conexa pot ster i. Determinarea componentei conexe se face n mod uzual prin cautare n opt direcii, s t s dar condiionat de a nu se depa i zona cadrului dreptunghiular. Aceasta metoda simpla ret zolva peste 80% din cazurile de imagini brute cu resturi ale dreptunghiurilor ce delimiteaza t cmpurile (Figura 4.13, rndul din mijloc). Restul de imagini sunt curaate manual deoarece textul din interior atinge sau suprascrie dreptunghiul delimitator (Figura 4.13, ultimul rnd).

4.5.2

Setul de test 3DNS

Setul de test 3DNS este folosit pentru a efectua o comparaie exacta ntre metoda propusa n t aceasta lucrare si cele prezentate n [44]. Din acest motiv am extras exact aceale i imagini s ca n [44]. Formularele conin cte 5 cmpuri de trei cifre, n total existnd 296 5 = 1480 t imagini de numere formate din trei cifre. n [44] se arma ca au fost eliminate patru imagini care nu corespundeau etichetelor, dar nu se specica care sunt aceste imagini. Analiznd vizual imaginile detectate eronat de clasicator am identicat patru imagini care, ntr-adevar, nu corespundeau cu etichetele lor (Figura 4.14). Imaginile gre it scrise sunt: formularul 1902 s

4.5. SETURILE DE TEST 3DNS, 6DNS SI 10DNS

37

- cmpul 7, formularul 2035 - cmpul 28, formularul 2056 - cmpul 11, formularul 2076 cmpul 11. Deci, la nal, setul de test 3DNS conine 1476 de imagini cu numere de trei cifre. t Toate aceste imagini au fost taiate la dimensiunea dreptungiului delimitator.

899

714

644

889

Figura 4.14: Imaginile cu numere de trei cifre care au fost scrise eronat de subiecii din NIST t SD 19.

4.5.3

Setul de test 6DNS

Si setul de test 6DNS este folosit pentru a compara metoda propusa cu cele din [44], astfel ca l-am compus din acelea i imagini. Mai exact, din cele 296 de formulare (1800-2099, minus s cele patru scrise foarte sters) am extras toate cmpurile de 6 cifre. Fiind cte cinci cmpuri de sase cifre pe formular am obinut 1480 de imagini de numere a sase cifre. Ca n [44], am t eliminat imaginile ce nu conineau textul scris deasupra cmpului. Am identicat opt exemt ple clare de astfel de erori, al noualea -rndul doi, coloana trei- a fost ales deoarece autorii din [44] arma ca exista noua astfel de imagini eronate (Figura 4.15). Am ales cea mai de fectuos scrisa imagine, deoarece n [44] nu se specica indicii imaginilor. ntruct detectarea acestor imagini este laborioasa si plictisitoare, pentru referine urmatoare, voi meniona indicii t t imaginilor eronate: formularul 1910 cmpul 26, formularul 1913 cmpul 26, formularul 1937 cmpul 18, formularul 2003 cmpul 22, formularul 2035 cmpul 22, formularul 2043 cmpul 14, formularul 2070 cmpul 18, formularul 2080 cmpul 22 si formularul 2094 cmpul 18.

755735

075969

223551

389072

052804

245721

758837

722001

231327

Figura 4.15: Imagini cu numere de sase cifre, eronat scrise de subiecii NIST SD 19. t La nal setul de test 6DNS este compus din 1471 de imagini cu numere formate din sase cifre. Toate imaginile au fost taiate la dimensiunea dreptunghiului delimitator.

38

4. BAZE DE DATE CU CIFRE SI SIRURI DE CIFRE

Figura 4.16: Imagini cu numere de zece cifre, eronat scrise de subiecii NIST SD 19 (toate ar t trebui sa conina sirul 0123456789). t

4.5.4

Setul de test 10DNS

Din cele 296 de formulare am extras 296 3 = 888 de imagini cu numere formate din 10 cifre, ecare formular coninnd trei cmpuri a zece cifre. Din cele 888 de imagini, zece nu t corespund cu informaia scrisa deasupra respectivului cmp si au fost eliminate (Figura 4.16). t Imaginile eronate au urmatorii indici: formularul 1858 cmpul 4, formularul 1896 cmpul 4, formularul 1909 cmpul 3, formularul 1957 cmpul 4, formularul 1975 cmpul 4, formularul 2021 cmpul 3, formularul 2023 cmpul 3, formularul 2038 cmpul 3, formularul 2039 cmpul 3 si formularul 2049 cmpul 5. Dupa excluderea imaginilor eronate au ramas 878 de imagini n setul de test 10DNS. La fel ca pentru seturile 3DNS si 6DNS, imaginile au fost taiate la dimensiunea dreptunghiului delimitator.

4.6 Concluzii
Acest capitol a avut drept scop crearea de seturi de imagini pentru antrenarea si testarea clasicatorilor. De asemenea, au fost prezentate bazele de date NIST SD 19 si MNIST. Pentru antrenarea clasicatorului la nivel de cifra au fost create seturile din LNIST (66214 imagini pentru setul de antrenare si 45398 de imagini pentru setul de test) prin extragerea de imagini din NIST SD 19. Acestea sunt construite identic cu cele folosite de autorii din [44, 45] pentru a permite o comparaie ct mai riguroasa a rezultatelor. t Pentru antrenarea clasicatorului la nivel de doua cifre parial suprapuse (2RNC) au fost t create seturile de antrenare si de test TDNS. Din NIST SD 19 au fost extrase 20000 de imagini de cifre (10000 pentru antrenare si 10000 pentru test) din care s-au creat cte 200000 de imagini cu perechi de cifre parial suprapuse att pentru setul de antrenare, ct si pentru t setul de test. Pentru formarea imaginilor cu perechi de cifre parial suprapuse a fost dezvoltat t

4.6. CONCLUZII

39

un algoritm care une te cifrele n funcie de morfologia acestora. s t Daca imaginile setului LNIST au fost extrase pentru a folosite de catre clasicatorul la nivel de cifra, pentru cazul general, cel al sirurilor numerice formate din mai multe cifre, au fost construite seturile de test 3DNS, 6DNS si 10DNS. Si n construirea acestor seturi s-a urmarit obinerea unor seturi ct mai apropiate de cele folosite de ali cercetatori pentru t t evaluarea performanelor metodelor de recunoa tere. Cele trei seturi sunt identice cu cele t s folosite n domeniu, n limita informaiilor furnizate de autorii care le-au utilizat anterior. Exista t posibilitatea ca una, maxim doua imagini din cele aproape 1500 sa e diferite. Pentru extragerea din NIST SD 19 a imaginilor necesare construirii seturilor 3DNS, 6DNS si 10DNS a fost elaborat un algoritm care folose te o varianta a transformatei Hough pentru s detectarea liniilor din formularele NIST. Dupa detecia acestor linii, sunt detectate dreptunt ghiurile ce ncadreaza cmpurile dorite. Apoi are loc extragerea propriu-zisa a imaginilor si t se aplica un algoritm de nlaturare automata a posibilelor pari din dreptunghiul delimitator care au fost extrase n acela i timp cu imaginile sirurilor numerice. La nal a fost aplicat s t un proces de inspectare si curaare manuala a imaginilor. Algoritmul de extragere automata a imaginilor din cmpurile formularelor a diminuat considerabil timpul necesar construirii pe cale manuala a celor trei seturi de test. De asemenea, algoritmul este destul de general, putnd adaptat facil pentru alte tipuri de formulare.

Capitolul 5

Experimente
n acest capitol vor evaluate performanele reelelor neuronale de tip perceptron si de cont t voluie prezentate n Capitolul 3. nti, reelele vor antrenare si apoi vor evaluate folosind t t seturile de date din Capitolul 4. Se va ncepe cu evaluarea reelelor pentru recunoa terea t s cifrelor individuale, iar apoi se vor antrena reele pentru recunoa terea de numere formate t s din doua cifre parial suprapuse. Dupa ce ambii clasicatori - pentru cifre singulare si pentru t numere formate din doua cifre parial suprapuse - vor antrenai si testai, se va implementa t t t o metoda pentru recunoa terea numerelor formate din 3 sau mai multe cifre. Aceasta metoda s va testata cu seturile 3DNS, 6DNS si 10DNS construite n Seciunile 4.5.2, 4.5.3 si 4.6. t Reelele neuronale si toate programele adiionale pentru procesarea imaginilor au fost t t implementate n C++. Am folosit si cod open source [3] pe care l-am modicat pentru a putea folosit la experimentele pe care le-am efectuat. Pentru toi neuronii reelei am folosit t t e2x 1 ca funcie de activare tangenta hiperbolica e2x +1 . Am obinut o cre tere semnicativa a t t s vitezei de antrenare prin paralelizarea algoritmului pentru a folosi suportul nativ existent n procesoarele multinucleu existente. Am testat algoritmii pe procesoare cu doua si cu patru nuclee.

5.1 Experimente cu cifre individuale


Aceste experimente au o dubla motivaie. Prima este data de evaluarea corectitudinii imt plementarii algoritmilor prin compararea rezultatelor cu cele existente deja, iar a doua de obinerea unui clasicator de calitate (care are rata mare de recunoa tere) la nivel de cifre t s singulare. Acest clasicator va utilizat apoi n sistemul de recunoa tere (a se vedea Figura s 5.4) care recunoa te siruri de una, doua sau mai multe cifre distincte sau parial suprapuse. s t Ca seturi de antrenare au fost folosite seturile MNIST si LNIST. La prima vedere, poate parea inutila folosirea a doua seturi de antrenare. Scopul acestei lucrari este de a propune o noua metoda de recunoa tere a sirurilor scrise de mna. Ca orice metoda noua, trebuie s validata prin efectuarea de experimente ale caror rezultate trebuie comparate cu cele exis tente deja n literatura de specialitate. Aratam n introducere ca articolul [44] prezinta cele mai bune rezultate obinute pna n acest moment. Autorii din [44] folosesc ca set de antrenare t pentru clasicatorul la nivel de cifra setul LNIST, astfel ca pentru o comparaie corecta a t metodelor am antrenat si clasicatorul din metoda proprie cu acest set. n plus, setul LNIST

5.1. EXPERIMENTE CU CIFRE INDIVIDUALE

41

are proprietatea ca este disjunct cu seturile de test 3DNS, 6DNS si 10DNS. Setul MNIST a fost folosit pentru a verica corectitudinea implementarii algoritmilor de antrenare a reelelor t neuronale prin compararea rezultatelor cu cele din [40]. Din pacate, setul de antrenare din MNIST conine imagini cu cifre din toate partiiile hsf_{0-4}, deci nu este disjunct cu seturile t t de test 3DNS, 6DNS si 10DNS. Din acest motiv nu poate folosit la experimentele ce implica seturile 3DNS, 6DNS si 10DNS.

5.1.1

Reele neuronale de tip perceptron t

ntruct perceptronul fara straturi ascunse nu poate folosit la clasicarea elementelor mulimilor n clase neliniar separabile, am folosit perceptronul cu un strat ascuns. Am variat t numarul de neuroni de pe stratul ascuns ntre 60 si 220 (Tabelul 5.1). Antrenarea a fost efectuata cu setul de antrenare LNIST (Sectiunea 4.3), iar testarea cu cu cele 10000 de imagini din setul de test MNIST (Seciunea 4.2). Puteam folosi si setul de test LNIST, dar, t dupa cum se va vedea n seciunea urmatoare, rezultatele sunt foarte asemanatoare. Nu am t marit numarul de neuroni de pe stratul ascuns mai mult de 220 pentru ca timpul ajunsese la aproximativ 600 de secunde pentru o epoca, iar eroarea nu scadea dect foarte ncet. Tabelul 5.1: Rezultate obinute cu perceptronul cu un strat ascuns. t # neuroni pe stratul ascuns 60 80 100 120 140 160 180 200 220 eroarea pe setul de antrenare LNIST(%) 2.08 1.59 1.39 1.31 1.40 1.26 1.32 1.23 1.26 eroarea pe setul de test MNIST(%) 4.83 4.02 3.68 3.54 3.58 3.70 4.11 3.63 3.46

Toate reelele au fost antrenate fara activarea distorsiunilor pe setul de antrenare. Am t t variat rata de nvaare, , de la 0.0001 pna la 0.000005, nmulind-o la ecare epoca cu t factorul 0.85. Dupa atingerea valorii minime de 0.000005, a ramas constant. Cnd numarul de imagini eronat clasicate din setul de antrenare s-a stabilizat, am oprit antrenarea. Pentru a verica daca aplicarea distorsiunilor ar inuena mult rata de recunoa tere pentru t s setul de test, am antrenat cea mai mare reea -cea cu 220 de neuroni pe stratul ascuns- si t cu activarea distorsiunilor pe setul de antrenare. Eroare a scazut pna la 2.88%, dar aceasta eroare este prea mare faa de cele mai bune rezultate raportate n [40]. n plus, a crescut t timpul de antrenare cu aproximativ 100 de secunde pe epoca.

5.1.2

Reele neuronale cu extractori de trasaturi t

Cum perceptronul nu a oferit rate de recunoa tere sucient de bune, am trecut la experis mentarea unor reele de convoluie despre care exista date [64, 40] ca ofera rate de recut t noa tere mult mai bune. Detalii despre arhitectura reelelor de convoluie se aa n Capitolul s t t

42

5. EXPERIMENTE

3. Am variat cei trei parametri ai reelei n jurul valorilor despre care Simard scria n [64] ca t au oferit cea mai buna rata de recunoa tere. Am refacut si experimentul lui Simard pe setul s MNIST si am obinut eroarea minima pentru setul de test de 0.66%. Simard obinuse 0.4% t t t ceea ce este foarte apropiat de 0.66%. Daca reeaua ar fost lasata sa se antreneze mai mult, probabil ajungeam la eroarea lui Simard. nsa, scopul era doar vericarea corectitudinii t algoritmilor de nvaare, nu obinerea unui minim ct mai mic, deoarece, oricum, nu puteam t folosi reeaua antrenata cu setul MNIST, acesta neind disjunct cu seturile de test multicifra t ce urmau a folosite la clasicatorul general. Am antrenat reelele cu setul de antrenare LNIST, iar rezultatele se aa n Tabelul 5.2. t Am testat ecare reea si cu setul de test din MNIST pentru a vedea daca rezultatele sunt t asemanatoare cu cele obinute pe setul de test LNIST. Rezultatele testarii MNIST sunt puin t t mai bune -cu maxim 0.22%-, ceea ce se explica prin faptul ca setul de test MNIST are imagini t si din setul de antrenare LNIST. Cel mai bun rezultat este obinut cu o reea cu 6 hari de t t t convoluie pe stratul L1 , 50 de hari de convoluie pe stratul L2 si 60 de neuroni pe stratul L3 . t t De aceasta data am urmat recomandarile lui Simard [64] si am antrenat reelele aplicnd t distorsiuni asupra setului de antrenare. Valorile maxime ale acestora sunt: 15% pentru fac torul de scara, 15% pentru factorul de rotaie, 8 pentru pentru distorsiuni elastice, si 0.5 t pentru factorul de scara pentru distorsiuni elastice. Distorsiunile au fost aplicate ecarei t imagini nainte de a trimisa modulului de antrenare. Rata de nvaare, , a pornit de la 0.0001 si am scazut-o la ecare epoca nmulind-o cu factorul 0.85. Cnd numarul de imagini t eronat clasicate din setul de antrenare s-a stabilizat, am dezactivat distorsiunile setului de antrenare si am mai antrenat reeaua nca 10 epoci cu =0.000005. Acest pas nal a scazut t mult eroarea pe setul de antrenare deoarece acesta nu a mai fost distorsionat, dar a scazut-o puin si pe setul de test deoarece a atenuat efectul distorsiunilor care erau prea mari. Alegnd t s o valoare att de mica pentru , nu a existat pericolul ca reeaua sa- i piarda capacitatea de t generalizare.

t Tabelul 5.2: Rezultate obinute cu reele neuronale cu hari de convoluie. t t t

t (hari) 4 4 6 6 6 8 8

L1

t (hari) 20 40 50 50 60 60 60

L2

(neuroni) 40 80 60 100 80 100 120

L3

eroare antrenare LNIST (%) 1.37 1.18 0.63 0.80 0.54 0.92 0.96

eroare test LNIST (%) 1.21 1.11 0.88 0.86 0.99 0.89 0.98

eroare test MNIST (%) 1.04 0.89 0.72 0.70 0.77 0.80 0.74

Timpul maxim pentru o epoca de antrenare a fost de 620 de secunde, iar cel minim de 210 secunde. Ace ti timpi au fost obinui pe procesoare Core2 Duo la 2.4Ghz. Folosind s t t procesoare Core2 Quad similare ca frecvena, dar cu 4 nuclee, timpii de antrenare s-au redus t la 60-70%. Reeaua neuronala ce a oferit cea mai buna rata de recunoa tere va folosita t s drept clasicator la nivel de cifra n sistemul de clasicare general (Figura 5.4).

5.2. EXPERIMENTE CU SIRURI COMPUSE DIN DOUA CIFRE PARTIAL SUPRAPUSE

43

5.2 Experimente cu siruri compuse din doua cifre parial t suprapuse


n aceasta seciune vor prezentate rezultatele antrenarii unui clasicator pentru siruri de t doua cifre parial suprapuse. Acest clasicator va utilizat apoi n sistemul de recunoa tere t s (a se vedea Figura 5.4) care recunoa te siruri de una, doua sau mai multe cifre distincte sau s parial suprapuse. t Toate experimentele au fost efectuate pe imaginile din TDNS mic orate de la dimensiunea s originala de 40 28 pixeli la 21 13 pixeli. Utilizarea imaginilor de aceste dimensiuni pentru imaginile de intrare a permis antrenarea reelelor ntr-un timp rezonabil, de maxim 24 de ore t pe un calculator cu procesor cu doua nuclee rulnd la 2.4GHz. Imaginile sunt mici, iar multe dintre ele sunt dicil de recunoscut chiar de om. Cteva exemple de imagini provenite de la doua persoane diferite sunt prezentate n Figura 5.1. Dimensiunile exacte ale imaginilor din seturile de antrenare si de test au fost determinate de constrngerile impuse la proiectarea reelei de convoluie. Redimensionarea de la 40 28 pixeli la 21 13 pixeli a fost efectuata t t cu pastrarea aspectului imaginilor. Timpul necesar antrenarii unei reele a variat ntre o ora t t pentru cea mai simpla reea (numar redus de ponderi) si cteva zile pentru reelele complexe t care aveau un numar mare de ponderi. Am folosit 15 calculatoare cu procesoare cu doua nuclee pentru mai mult de o saptamna pentru a antrena reelele. Au existat cteva cazuri de t reele pentru care antrenarea a trebuit reluata deoarece s-a mpotmolit ntr-un minim local. t

Figura 5.1: Exemple de imagini din ierul de antrenare. s

5.2.1

Reele neuronale de tip perceptron t

Acest tip de reea neuronala foarte generala a fost ales pentru a stabili o baza de comparaie t t pentru arhitecturile specializate prezentate n seciunile urmatoare. Tipul de perceptron ales t este unul cu trei straturi, din care unul este ascuns, celelalte doua reprezentnd straturile de intrare, respectiv de ie ire. Am variat doar numarul de neuroni din stratul intermediar, s parametrii celorlaltor straturi ind impu i de dimensiunile imaginilor, respectiv de numarul de s clase. Rezultatele din Tabelul 5.3 arata ca eroarea descre te cu cre terea numarului de s s neuroni de pe stratul ascuns. Erorile obinute pe seturile de test si de antrenare sunt foarte t asemanatoare, diferena dintre ele ind de maxim 0.37%. Avnd n vedere ca seturile de t antrenare si de test conin imagini de la persoane distincte, aceasta diferena mica ntre erorile t t

44

5. EXPERIMENTE

pe setul de test si pe cel de antrenare demonstreaza capacitatea deosebita de generalizare si de adaptare la nou a reelei. t Timpul de antrenare necesar ecarei epoci de antrenare cre te cu numarul de neuroni s din stratul ascuns, de la 200 de secunde pentru 60 de neuroni pna la 710 secunde pentru 220 de neuroni. Eroarea a scazut lent, astfel ca am decis oprirea experimentelor la 220 de neuroni pe stratul ascuns deoarece timpul necesar antrenarii cre tea prea rapid. s Tabelul 5.3: Rezultate obinute cu perceptronul cu un strat ascuns. t

# neuroni pe stratul ascuns 60 80 100 120 140 160 180 200 220

eroarea pe setul de antrenare (%) 26.85 24.92 23.45 22.28 22.14 21.33 21.17 20.94 20.55

eroarea pe setul de test (%) 26.74 24.65 23.47 22.21 22.29 21.54 21.35 21.31 20.74

timpul necesar unei epoci de antrenare (s) 200 264 327 391 454 518 581 645 710

5.2.2

Reele neuronale cu extractori de trasaturi t

n [38] Yann LeCun propune o arhitectura sosticata de reea neuronala numita LeNet-5. t Reeaua s-a dovedit a foarte buna pentru recunoa terea cifrelor singulare, chiar si n t s prezena zgomotului. Sirurile de cifre distincte pot recunoscute facil folosind un astfel de t clasicator aplicat pe o fereastra ce se deplaseaza n lungul imaginii. Patrice Simard ([64]) a folosit reele neuronale de convoluie pentru recunoa terea cifrelor singulare. Clasicatorul t t s utilizat de mine (Figura 5.2) este derivat din cel al lui Simard, dar este modicat extensiv deoarece am dorit sa poata folosit pentru recunoa terea perechilor de cifre parial supras t puse. In Figura 5.2 stratul de intrare este alcatuit din 21x13 neuroni, cte unul pentru ecare pixel al imaginii. Nivelul de gri (0 255) al ecarui pixel din imaginea de intrare este convertit proporional la un numar din intervalul [1, 1]. Aceasta valoare este transferata neuronului t corespunzator de pe stratul de intrare. La fel ca n [64] am conectat stratul de intrare la un t strat de convoluie. Acest strat de convoluie este alcatuit din mai multe hari de convoluie t t t (HC). n experimente am variat acest numar ntre 2 si 12. Dimensiunea nucleului de con voluie a fost pastrata la 5x5 pixeli. Acest nucleu de convoluie a fost aplicat tot din doi n doi t t pixeli, mai exact, numai pentru pixelii care aveau ambele coordonate pare. Aplicarea nucleu t lui de convoluie n acest mod a generat o reducere a dimensiunilor harilor de convoluie de t t t t (n 3)/2, unde n reprezinta nalimea, respectiv laimea stratului L0 . n concluzie, dimensiu t nea harilor de convoluie din stratul L1 este de 9x5 neuroni. Fiecare din cei 45 de neuroni ai t stratului L1 este conectat cu 25 de neuroni din nucleul de convoluie corespunzator. Pe lnga t aceste 25 de conexiuni mai exista una pentru bias. De i exista 9 5 (5 5 + 1) = 1170 s conexiuni pentru ecare harta, numarul de ponderi ce trebuie antrenate este mult redus,

5.2. EXPERIMENTE CU SIRURI COMPUSE DIN DOUA CIFRE PARTIAL SUPRAPUSE

45

100 neuroni L4 : strat de ieire (complet conectat)

20-120 neuroni L3 : strat intermediar (complet conectat) 10-120 hri de convoluie a 3 x 1 neuroni

L2 : strat de convoluie

2-12 hri de convoluie a 9 x 5 neuroni

L1 : strat de convoluie

21 x 13 neuroni L0 : strat de intrare

t Figura 5.2: Arhitectura reelei neuronale cu hari de convoluie. t t

5 5 + 1 = 26, acestea ind partajate de toi neuronii din stratul L1 . Deoarece antrenat rea unei reele neuronale consta n obinerea unor valori apropiate de optim pentru ponderile t t reelei, RNC pot antrenate mult mai rapid dect reelele de tip perceptron. Conexiunile si t t ponderile sunt diferite pentru ecare harta de convoluie. n total sunt 11700 conexiuni si 260 t t de ponderi pentru L1 , n cazul unei reele cu 10 hari pe stratul respectiv. t t Pentru stratul L2 am experimentat cu un numar de 10 pana la 120 de hari de convoluie. t Avnd n vedere ca s-a folosit aceea i regula de aplicare a nucleului de convoluie - doar s t pentru poziiile pare - si ca dimensiunea nucleului a fost meninuta la 5 5, dimensiunea t t t harilor de pe L2 este de 3 1 neuroni. Fiecare neuron din acest strat este conectat cu 5 5 neuroni din ecare harta a stratului anterior (Figura 3.5) plus o conexiune pentru bias. Deci, o harta de convoluie din stratul L2 conine 3 1 = 3 neuroni, 3 1 (5 5 10 + 1) = 753 t t t conexiuni spre neuroni din L1 (am considerat ca L1 are 10 hari de convoluie), si 5 5 10 + t t 1 = 251 ponderi. n total, pentru 100 de hari de convoluie pe stratul L2 , sunt 100 3 = 300 t de neuroni, 753 100 = 75300 conexiuni si 251 100 = 25100 ponderi. Dupa doua nivele de convoluie reducerea este de [(n 3)/2 3]/2 = p n = 4p + 9, t unde p 1, 2, 3, 4, 5, .... n formula anterioara n reprezinta dimensiunea iniiala a imaginii, iar t t p - dimensiunea unei hari de convoluie dupa doua nivele de convoluie. n concluzie, n ia t t valori din mulimea 13, 17, 21, 25, 29, .... Pentru a menine dimensiunea imaginilor de intrare t t la un nivel ct mai mic, dimesiunea stratului de intrare este aleasa ca ind 21 13 neuroni. S-a inut cont si de aspectul imaginilor cu doua cifre concatenate (setul TDNS), acesta ind t t t 40/28 1.43. Alegnd 13 pentru nalimea stratului de intrare, laimea trebuie sa e cel mai mic numar ntreg mai mare dect 40/28 13 = 18.57. Valoarea din lista anterioara care corespunde acestei cerine este 21. Stratul de intrare s-a dorit a ct mai mic pentru a obine t t un timp de antrenare rezonabil pentru reeaua neuronala, nu mai mare de cteva zile. t Stratul L3 este total conectat, iar dimensiunea lui variaza de la 40 la 120 de neuroni. Ultimul strat, L4 , are 100 de neuroni, cte unul pentru ecare clasa, si este, de asemenea,

46

5. EXPERIMENTE

total conectat cu stratul anterior. Ie irea ecarui neuron ia valori n intervalul [1, 1]. Pentru s o imagine valida, neuronul care reprezinta clasa imaginii va avea o valoare apropiata de 1, iar ceilali 99 de neuroni vor avea valori apropiate de 1. Daca imaginea este ambigua si t s seamana cu mai mult de o clasa, ie irile neuronilor corespunzatori claselor cu care seamana imaginea vor avea valori corelate cu gradul de asemanare. t Tabelul 5.4: Rezultate obinute cu reele neuronale cu hari de convoluie. t t t
t (hari)

L1

t (hari)

L2

(neuroni) Eroare antrenare (%) Eroare test (%) 35.43 34.61 26.03 21.51 19.96 18.15 18.04 15.68 15.30 25.32 22.08 18.44 15.25 13.26 12.02 12.34 11.50 10.64 15.63 15.94 15.67 11.40 10.81 10.33 9.83 8.48 7.83 15.78 14.78 13.49 10.26 9.10 8.72 9.22 8.31 7.86 6.85 5.35 6.54 Eroare antrenare (cu def.) (%) 44.48 39.24 37.71 35.82 32.19 30.54 28.95 28.65 24.67 30.86 30.16 26.08 26.66 18.88 18.07 18.78 15.42 15.20 26.35 23.30 21.31 25.20 16.74 13.95 13.94 13.76 12.10 20.08 19.91 17.08 15.78 13.62 12.06 15.25 11.23 10.70 10.71 10.15 Eroare antrenare (%) 39.79 34.25 33.42 31.69 29.95 25.77 23.62 22.96 18.65 25.76 27.00 21.74 23.20 15.39 14.29 16.55 13.04 11.86 24.15 20.40 17.49 23.07 13.44 11.32 11.50 10.79 9.63 17.90 16.66 14.38 12.95 10.01 9.33 13.16 8.82 8.22 7.89 7.10 Eroare test (%) 39.88 34.21 32.83 31.21 29.20 25.31 22.91 22.47 18.16 25.56 26.60 21.20 23.06 15.23 14.03 16.57 12.94 11.72 23.32 19.62 17.34 23.40 13.57 11.46 11.82 11.15 9.91 17.86 16.78 14.42 13.25 10.42 9.74 13.33 9.51 8.71 8.44 7.60 -

L3

fara deformari

cu deformari

10

30

50

10

30

50

10

30

50

10

30

50

40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 40 60 80 100 100 120

35.00 34.76 26.25 21.64 19.98 18.26 17.80 15.53 15.30 25.63 22.27 18.25 15.19 12.67 11.80 11.30 10.67 10.33 15.57 15.50 15.45 10.72 10.15 9.44 9.15 7.52 6.73 15.36 14.21 12.97 9.49 8.20 7.75 8.06 7.22 6.52 5.63 3.27 5.23

10 12

60 100 120

t t Pentru 2, 4, 6 si 8 hari de convoluie pe stratul L1 ; 10, 30 si 50 de hari pe stratul t L2 , respectiv 40, 60 si 80 de neuroni pe stratul L3 am efectuat toate combinaiile posibile, t construind 4 3 3 = 36 de reele neuronale. Fiecare reea a fost antrenata n doua moduri: t t cu, respectiv fara activarea deformarilor asupra imaginilor din setul de antrenare. Operaiile t efectuate asupra imaginilor sunt similare cu cele din [64], dar am ales valori mai mici pentru

5.2. EXPERIMENTE CU SIRURI COMPUSE DIN DOUA CIFRE PARTIAL SUPRAPUSE

47

rotaii, translaii si deformari elastice. Motivul descre terii valorilor acestor parametri este t t s dimensiunea mult mai mica a imaginilor pe care le-am folosit, 21 13, faa de 29 29 ct t a folosit Simard pentru cifre singulare. Explicit, factorul de scalare a fost limitat la maxim 6%, rotaiile la maxim 4 , pentru distorsiuni elastice a fost ales 10.0, iar scalarea pentru t distorsiuni elastice - 0.2. Antrenarea celor 36 de reele cu si fara imagini distorsionate a generat 72 de seturi dist tincte de rezultate (Tabelul 5.4). Pentru reelele antrenate cu imagini distorsionate exista doua t tipuri de erori pentru setul de antrenare. Prima este eroarea obinuta testnd reeaua cu setul t t de antrenare asupra caruia s-a aplicat o transformare aleatoare (rotaie + translaie + defort t mare) la nceputul ecarei epoci. Al doilea tip de eroare este obinut pe setul de antrenare t original. Rezultatele din Tabelul 5.4 arata ca eroarea este monoton descrescatoare (cu extrem de mici excepii ce au drept cauza probabila o subantrenare a reelei respective sau atingerea t t t unui minim local apropiat de minimul global). Pentru oricare doua reele antrenate similar ambele cu set de antrenare cu imagini deformate sau ambele cu set de antrenare cu imagini nedeformate - oricare din cele cinci tipuri de erori a variat corespunzator cu modicarea unuia din cei trei parametri ai reelei. Explicit, daca doi dintre parametri sunt meninui constani (de t t t t t exemplu, numarul de hari din L1 si numarul de neuroni din L3 ), iar cel de-al treilea (n acest t caz, numarul de hari de pe stratul L2 ) este marit, erorile descresc si reciproc. Concluzia evidenta este ca erorile pot diminuate daca marim dimensiunea reelei. Pentru a verica t aceasta armaie, am antrenat trei reele si mai mari (ultimele trei rnduri din Tabelul 5.4). t t t Am obinut cele mai mici erori (5.35% pentru setul de test) cu reeaua cu 10 hari pe L1 , 100 t t t de hari pe L2 si 100 de neuroni pe L3 . Eroarea pe setul de test a fost cu 1.60% mai mica t t dect precedentul minim obinut, 6.85% (10 hari pe L1 , 60 de hari pe L2 si 100 de neuroni t pe L3 ). Dezavantajul a fost o cre tere accentuata a timpului necesar antrenarii, de la 24 de s ore la peste 48 de ore. t n concluzie, cele mai bune rezultate, exceptnd cazurile speciale cu 10 sau 12 hari de t convoluie pe stratul L1 , au fost obinute pentru opt hari pe stratul L1 . Suprafaele erorilor t t t sunt aratate n Figura 5.3. Cea mai mare reea antrenata (ultimul rnd din Tabelul 5.4) a t t t coninut 12 hari pe L1 , 120 de hari pe L2 si 120 de neuroni pe L3 . Chiar si dupa 96 de ore t t de antrenare eroarea nu a scazut sub minimul antins de reeaua cu 10 hari pe L1 , 100 de t t hari pe L2 si 100 de neuroni pe L3 . Am concluzionat ca am detectat un minim sucient de apropiat de minimul global si marirea n continuare a parametrilor reelei ar inutila si foarte t costisitoare din punct de vedere al timpului de antrenare. Referitor la timpul necesar unei epoci de antrenare, acesta a variat de la 70 de secunde t pentru cea mai simpla reea pna la 670 de secunde pentru cea mai complexa, cea cu 10 t t hari pe L1 , 100 de hari pe L2 si 100 de neuroni pe L3 . Antrenarea a fost mult mai rapida dect n cazul perceptronului, iar rata de recunoa tere este semnicativ mai buna. s Chiar daca am scazut amplitudinea transformarilor aplicate pe imaginile din setul de antrenare, toate reelele antrenate cu imagini deformate au atins o eroare minima mai mare, t att pe setul de antrenare, ct si pe setul de test. Adaugarea deformarilor a degradat perfor t t mana reelelor cu cel puin 0.85% (cazul L1 : 8 hari, L2 : 50 de hari, L3 : 80 de neuroni). Se t t t poate concluziona ca acest tip de aplicare a deformarilor este ecient doar pentru clasicarea cifrelor singulare, nu si pentru perechi de cifre parial suprapuse. t

48

5. EXPERIMENTE

t Figura 5.3: Suprafeele erorilor reelelor cu 8 hari de convoluie pe stratul L1 . t t t

Analiza rezultatelor celei mai bune reele t t t Experimentele efectuate au aratat ca cea mai buna reea are zece hari de convoluie a 9 5 t t neuroni pe stratul L1 , o suta de hari de convoluie a 3 1 neuroni pe stratul L2 si o suta de t neuroni pe stratul L3 . Din cele 200000 de imagini din setul de test, 10708 au fost clasicate gre it. Aceasta reprezinta o eroare de 5.35% pe setul de test. s Din cele 10708 erori doar n 663 (0.33%) de cazuri ambele cifre au fost clasicate de fectuos. Aceasta rata de eroare att de redusa ofera premisele dezvoltarii unui sistem de recunoa tere care va utiliza acest clasicator pentru recunoaerea sirurilor de cifre. Cea mai s t semnicativa cifra - cifra zecilor - a fost clasicata eronat n 5239 de cazuri, iar cea mai puin t t semnicativa cifra - cifra unitailor - n 6123 de cazuri. Putem concluziona ca este mai di cil pentru reeaua neuronala sa identice cifre suprapuse n partea partea stnga dect n t partea dreapta. Distribuia erorilor pe clase arata ca clasele 67, 64 si 69 au fost mai dicil de recunoscut, t genernd 253 (2.36%), 219 (2.04%), respectiv 212 (1.98%) erori de clasicare. n paranteze este trecuta procentual contribuia clasei la eroarea totala. t Rata de eroare de 5.35% nsemna 94.65% rata de recunoa tere. Aceasta reprezinta s t o rata de recunoaere forata, adica fara rejecie. Pentru a mbunataii calitatea deteciei t t t t am calculat ratele de recunoa tere considernd rate de rejecie variabile. O imagine este s t rejectata daca N (C1)N (C2) < T , unde N (C1) si N (C2) reprezinta primele doua maxime ale neuronilor de ie ire pentru acea imagine, normalizate la intervalul [1, 1], iar T reprezinta s pragul de rejecie. Att autorii din [44], ct si din alte publicaii folosesc pentru valoarea de t t prag valorile 0.5% si 1%, astfel ca am calculat ratele de eroare pentru aceste rate de rejecie, t dar am adaugat si pentru doua valori mult mai mari: 2%, respectiv 5%. Diferenele foarte mici t t dintre ratele de recunoa tere din Tabelul 5.5 arata ca reeaua are un grad mare de sigurana, s t

5.3. EXPERIMENTE CU SIRURI DE CIFRE DIN NIST SD 19

49

rata de recunoa tere cu rejecia maxima de 5% ind cu numai 0.59% mai mica dect rata de s t recunoa tere cu fara rejecie. s t Tabelul 5.5: Inuena strategiei de rejecie asupra ratei de recunoa tere (forat = fara rejecie). t t s t t T (%) forat t 0.5 1 2 5 rata de recunoa tere (%) 94.65 94.59 94.53 94.42 94.06 s

5.2.3

Concluzii

RNC sunt mult mai performante dect perceptronul cu un strat ascuns, acesta din urma genernd o rata de eroare prea mare pentru a putea folosit n clasicatori mai complec i. s RNC reprezinta o soluie buna att pentru recunoa terea de cifre parial suprapuse, ct si t s t t pentru recunoa terea de cifre izolate. Rata de eroare minima obinuta pentru setul de test din s t t TDNS este de 5.35% pentru o reea cu 10 hari pe L1, 100 de hari pe L2 si 100 de neuroni t pe L3. t Deformarile elastice nu mbunataesc performanele n cazul cifrelor parial suprapuse, t t a a cum faceau pentru cifre singulare. Cum voi arata n seciunile care urmeaza, exista s t motive ntemeiate pentru care deformarile nu s-au dovedit utile. Rata de eroare de 5.35% este sucient de mica pentru a folosi acest clasicator ntr-unul general pentru recunoa terea de siruri numerice formate dintr-un numar indenit de cifre. s Diferenele extrem de reduse dintre ratele de recunoa tere cu si fara rejecie demont s t streaza gradul de robustee al clasicatorului. t Rezultatele au fost publicate n [20] si au fost prezentate la ICCP 2008.

5.3 Experimente cu siruri de cifre din NIST SD 19


Dupa ce am obinut doi clasicatori cu rate bune de recunoa tere - unul pentru cifre izolate si t s unul pentru perechi de cifre parial suprapuse - am trecut la construirea unui clasicator care t sa poata recunoa te numere formate dintr-un numar oarecare de cifre. Acest clasicator a s fost apoi testat cu siruri numerice din NIST SD 19 si comparat cu cele mai bune rezultate existente n domeniu.

5.3.1

Sistemul de recunoastere

Diagrama sistemului de recunoa tere este prezentata n 5.4. Fiecare sir de cifre este nti s taiat la dimesiunile dreptungiului delimitator si apoi este prezentat Analizorului de Compo nente Conexe (CCA) care extrage toate componentele conexe (CC) din imagine. n continuare, componentele conexe vor clusterizate n imagini ce probabil vor conine cifre sau t mulimi de cifre. Procesul de clasicare este efectuat de Clasicator folosind doua Reele t t Neuronale de Convoluie (RNC). t

5.3.2

Analizorul de componente conexe

Toate componentele conexe din imaginea de intrare sunt extrase folosind procedeul recursiv de cautare n doar patru direcii (mai corect: doua direcii cu doua sensuri ecare), orizontale t t

50

5. EXPERIMENTE

One-digit classifier
String image

Two-digit classifier
String label

CCA

Clustering

Classifier

Figura 5.4: Arhitectura sistemului de recunoa tere a sirurilor de cifre. s si verticale. Nu am folosit cautarea n opt direcii deoarece neefectund segmentare acesta t este unicul loc unde imaginea de intrare poate separata n ct mai multe componente printr-un simplu proces de extragere. Orice separare a imaginii unei cifre sau a mai multor cifre va corectata n faza urmatoare, cea de clusterizare. Pentru ecare componenta se calculeaza diver i parametri: arie, dreptunghiul circumscris s t t t t de arie minima (dreptunghiul delimitator), laime, nalime, aspect (laime / nalime), distane t la alte componente. CCA atribuie cte o culoare distincta ecarei componente. n contrast cu alte metode ([44, 30, 31]), prezenta metoda poate evita procesul de segmentare prin utilizarea suplimentara a unui clasicator pentru perechi de cifre parial suprapuse, pe lnga clasicul t clasicator la nivel de cifra.

5.3.3

Componenta de clusterizare (agregare)

n cazul imaginilor scanate exista multe componente conexe care formeaza o singura cifra sau mai multe cifre alipite. Pentru a putea reconstrui imaginea lor, etapa de agregare efec tueaza secvenial urmatoarele operaii (constantele din toate testele referitoare la suprafaa t t t unei componente - numarul de pixeli - au fost stabilite pentru imagini din setul NIST SD 19. O caracteristica a acestor imagini e aceea ca au fost scanate la 300dpi. Constantele pot folosite si n cazul altor imagini scanate la alte rezoluii, dar trebuie multiplicate cu patratul t (deoarece suprafaa e o arie) factorului de redimensionare de la o rezoluie la cealalta): t t toate componentele mici coninnd maxim 4 pixeli sunt sterse daca cea mai apropiata t componenta este la o distana mai mare de 5 pixeli. Motiv: sunt prea mici si prea t departate de alte componente, deci probabil ca reprezinta doar zgomot. oricare doua componente separate prin doar un pixel sunt concatenate daca respecta cel puin una din condiiile: t t t ambele au nalimi mai mari de 60% din nalimea imaginii, iar distana dintre ele t t t sau distana de suprapunere este mai mica de 35% din laimea componentei celei t mai late. ambele au arii mai mari de 200 de pixeli si aspecte mai mari de 0.5, si cel puin t una dintre ele are aspectul mai mare dect 1 i distana dintre ele sau distana de s t t t suprapunere pariala este mai mica dect 25% din laimea componentei mai late. t ambele au arie mai mare de 400 de pixeli

5.3. EXPERIMENTE CU SIRURI DE CIFRE DIN NIST SD 19

51

Dupa acest pas se reia algoritmul pentru componentele separate prin maxim doi pixeli, si, la nal, pentru maxim trei pixeli. Aceste operaii agregheaza cu succes compo t nentele din imaginile scanate defectuos sau care conin cifre scrise intermitent (Figura t 5.5).

Figura 5.5: Componentele conexe nainte (sus) si dupa (jos) faza de agregare. Fiecare componenta este colorata distinct si este desenat si dreptunghiul delimitator. t exista multe persoane care scriu cifra 5 din doua pari, una pentru corpul cifrei si t cealalata pentru partea superioara. n mod frecvent cele doua pari sunt foarte dis tanate pe orizontala si etapele anterioare de agregare nu sunt suciente pentru a ret t conecta parile cifrei 5. Acest caz este distinct si apare doar n cazul cifrei 5. Pentru a reforma cifra, se cauta nti partea superioara a lui 5 ca ind o componenta cu urmat toarele proprietai: are cel puin 10 pixeli, are un aspect alungit pe orizontala (mai mare t t t de 1.4), nu este prea groasa (nalime mai mica dect 40% din nalimea imaginii), si este plasata n jumatatea superioara a imaginii. Daca o componenta de acest tip este detectata, atunci se cauta o componenta care sa poata reprezenta partea inferioara a cifrei 5. O astfel de componenta e obligatoriu sa aiba minim 100 de pixeli.

Figura 5.6: Reconectarea cifrei 5. Partea superioara a cifrei trebuie sa nceapa n partea dreapta a corpului ei, dar nu mai t departe de 50% din laimea corpului cifrei dupa aceasta. Daca nicio componenta nu este detectata, atunci componenta care se presupunea ca reprezinta partea superioara t a lui 5 ramne neconcatenata. Daca ambele pari ale cifrei 5 sunt detectate, atunci

52

5. EXPERIMENTE

partea superioara este translatata spre stnga pna ajunge pe aceea i verticala cu s pixelul din dreapta-sus al componentei ce reprezinta corpul cifrei 5 (Figura 5.6). t acest pas trateaza puinele cazuri de cifre scrise din mai multe pari separate vertical. t t Daca doua componente sunt suprapuse orizontal pe minim 80% din laimea cel puin a t uneia dintre ele, atunci sunt concatenate.

5.3.4

Clasicatorul

Componenta de clasicare (Figura 5.4) folose te doua RNC, una pentru cifre si una pentru s perechi de cifre parial suprapuse. Ambele RNC au fost descrise anterior, iar ratele de eroare t obinute au fost 0.86% pentru o cifra, respectiv 5.35% pentru doua cifre. t Testarea sistemelor de recunoa tere a fost efectuata pe seturile de test 3DNS, 6DNS si s 10DNS (detalii sunt prezentate n Seciunile 4.5.2, 4.5.3 si 4.6), seturi care sunt folosite si de t ali autori [44] pentru compararea sistemelor de recunoa tere. Autorii din [44] si-au comparat t s metodele cu cele mai bune din literatura, prezentnd cele mai eciente metode existente pna n anul 2004. Folosind cele doua RNC am implementat mai multe sisteme de recunoa tere. Ambele s RNC preiau rnd pe rnd cte o componenta din imaginea de la intrare si ncearca sa de termine carei clase i se potrive te respectiva componenta (sa recunoasca cifra sau perechea s de cifre din imaginea componentei). nainte de a intra n etapa de clasicare, toate compot t nentele care sunt ori mai mici de 80 de pixeli ori au nalimea mai mica de 30% din nalimea imaginii sunt eliminate. n toi algoritmii ce urmeaza, rezi reprezinta un vector de structuri, ecare structura t coninnd doua cmpuri: class si score. Indicele i este 1 pentru 1RNC si 2 pentru 2RNC. t s Vectorii rezi stocheaza ie irea RNC. De expemplu, rez2 [3].class reprezinta clasa celui de-al patrulea element al rezultatului obinut de 2RNC. Cmpul class nu este redundant deoarece t este util dupa ce vectorul este sortat, pentru a stii ce clasa are cel mai bun scor, ce clasa are al doilea scor etc. Sistem de recunoastere bazat pe scorul maxim Cel mai simplu sistem de recunoa tere care poate implementat ia o imagine si o prezinta la s RN C1 si la RN C2 . Cele mai mari scoruri al celor doua RNC sunt comparate, iar clasicatorul care a obinut maximul va oferi att clasa, ct si numarul de cifre prezente n imaginea de la t intrare (Algoritm 4). Din cele 1476 imagini (setul 3DNS) care conineau 3 cifre, 158 au fost incorect clasit cate. Aceasta nseamna o rata de recunoa tere de 89.29%. Rezultatul pentru perceptronul s multistrat din [44] antrenat fara exemple negative este 82.52%. Avnd n vedere ca metoda prezenta nu folose te segmentare deloc, recunoa terea corecta a 89.29% din imagini este s s t promiatoare, dar mai exista loc pentru mbunatairi. Este foarte importat a se observa ca t rezultatul obinut reprezinta dovada ecienei combinarii a doi clasicatori, unul pentru recut t noa terea cifrelor si unul pentru recunoa terea perechilor de cifre parial suprapuse, faa de s s t t folosirea doar a unui clasicator la nivel de cifra [44], chiar daca ultima este ajutata de un complicat mecanism de segmentare [44]. Dupa studierea erorilor sistemului de recunoa tere, am ajuns la urmatoarele concluzii: s

5.3. EXPERIMENTE CU SIRURI DE CIFRE DIN NIST SD 19

53

foreach componenta din imagine do rez1 [ ] = RN C1 (componenta); rez2 [ ] = RN C2 (componenta); sorteaza descrescator rez1 si rez2 ; if rez1 [0].score rez2 [0].score then return rez1 [0].class; end else return rez2 [0].class; end end Algorithm 4: Sistem de recunoa tere bazat pe scorul maxim. s

deoarece am antrenat ambele RNC fara exemple negative, ele nu pot utilizate direct pentru a detecta daca o componenta conine una, doua sau mai multe cifre. Prin antret narea unei RN doar cu exemple pozitive, reeaua va ncerca sa clasice orice imagine t de intrare, chiar si pe cele incorecte - care nu conin reprezentari grace ale niciuneia t t dintre clasele nvaate -, clasei cu care seamana cel mai mult. Mai mult, probabil din cauza naturii convoluionale a reelelor, cele mai confuze cazuri apar la numerele fort t mate din doua cifre de tipul XX . Este foarte dicil att pentru RN C1 , ct si pentru RN C2 sa distinga daca o imagine conine o singura cifra sau un numar format din t doua cifre. De exemplu, daca imaginea conine doar cifra 4, scorul ambelor RNC poate t foarte mare si foarte asemanator, RN C2 detectnd numarul 44!

multe imagini coninnd cifrele 0, 1, 3 , 4, 7, 8, respectiv 9 sunt interpretate de RN C2 t ca ind 01, 11, 31, 41, 71, 81, respectiv 91. Problema se datoreaza metodei de unire ([20]) a cifrelor pentru setul de antrenare al RN C2 , deoarece daca cifra 1 este scrisa ca un segment de dreapta si este suprapusa parial cu o cifra care are n partea dreapta t t pixeli pe toata nalimea cifrei, rezultatul este foarte confuz (Figura 5.7). Un argument similar se poate oferi si pentru cazurile 10, 16, 18. Aceste cazuri sunt notate cu 1X si X1.

Figura 5.7: Cazurile de unire defectuoasa de tipul X1. Evident, antrenarea ambelor RNC cu exemple negative ar rezolvat multe probleme, dar colectarea manuala a imaginilor cu exemple negative - imagini care nu conin cifre sau t perechi de cifre - din formularele NIST SD 19 este un proces foarte ndelungat si neplacut. Numarul de exemple negative trebuie sa e sucient de mare pentru a asigura o antrenare adecvata. n [44], autorii au antrenat clasicatorul la nivel de cifra cu 1000 si apoi cu 4000 de exemple negative. n ambele cazuri rata de recunoa tere a clasicatorului la nivel de cifra s-a s redus cu 2-4%, dar acesta a devenit rezistent la imagini ce nu conin cifre. Metoda prezentata t n aceasta teza are doi clasicatori, deci ar trebui colectate exemple negative pentru ambii. Bineneles, scrierea unui algoritm de generare automata a exemplelor negative este un alt t

54

5. EXPERIMENTE

mod de a rezolva aceasta problema, dar ar trebui conceput un astfel de algoritm. Autorii din [44] au ajuns la concluzia ca tot mai bune sunt datele colectate manual, astfel ca scrierea algoritmului de generare ar putea reprezenta timp irosit. Dupa ce am evaluat toate aceste aspecte, am decis sa nu antrenez clasicatorii cu exemple negative si sa ncerc sa dezvolt o metoda care sa atenueze problemele prezentate anterior ntr-o maniera ct mai simpla. Cnd am studiat erorile, am observat ca n majoritatea cazurilor RNC recuno teau corect, s dar scorul relativ al clasicatorilor genera clasicarea incorecta. Am antrenat ambele RNC astfel nct sa e ct mai puin inuenate de translaii, dar daca t t t imaginea este perfect centrata n clasicator, atunci scorurile sunt mult mai bune. Conside rnd acest aspect, am ncercat sa translatez imaginea n cmpul de intrare al clasicatorilor. RN C1 a fost antrenata cu baza de date LNIST, iar imaginile din ea sunt centrate n centrul de masa. Din aceasta cauza am aplicat repetat RN C1 asupra imaginii translatate cu 1 pixeli relativ la centrul de masa si am pastrat cel mai mare scor din cele 3 3 = 9 aplicari. RN C2 a fost antrenata cu imagini care au fost centrate prin centrarea dreptunghiului delimitator. Con sidernd aceasta metoda de generare ([20]) a imaginilor de antrenare, am plasat imaginea de 18 10 pixeli n toate poziiile posibile n cmpul de intrare de 21 13 neuroni ai RN C2 . t t Exista (21 18 + 1) (13 10 + 1) = 16 posibilitai. Din nou am reinut scorul maxim pentru t ecare clasa. Din pacate, numarul de clasicari incorecte a crescut (Tabelul 5.6) si timpul de execuie s-a marit din cauza aplicarilor repetate ale clasicatorilor. Se poate conclude ca mut tarea clasicatorilor deasupra imaginii (sau, echivalent, a imaginii n cmpul clasicatorilor) t s nu mbunatae te rata de recunoa tere a metodei ce folose te clasicarea bazata pe scor s s maxim. Sistem de recunoastere bazat pe diferena de scoruri t

Tabelul 5.6: Rate de recunoa tere pentru setul de test 3DNS (1C - cu deplasarea RN C1 deas supra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea ambelor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). scor maxim diferene t scor maxim & diferene t simplu(%) 91.46 76.49 83.40 1C(%) 71.54 76.76 83.74 2C(%) 69.85 92.75 93.63 1+2C(%) 71.54 93.36 93.77

Aratam nainte ca nu putem sa ne bazam decizia selectarii unui anumit clasicator pe scorul maxim oferit de acesta deoarece nu am antrenat clasicatorii cu exemple negative. Mai mult, prin antrenarea reelelor numai cu exemple pozitive, RNC vor clasica orice imagine t de la intrare ntr-una din cele mai asemanatoare clase cunoscute. Aceasta nsemna ca daca un clasicator prime te la intrare o imagine care este reprezentarea uneia dintre clasele pe s care le cunoa te, atunci ie irea neuronului corespunzator clasei va avea o valoare apropiata s s de 1, iar celelalte ie iri vor considerabil mai mici, apropiate de -1. Putem utiliza acest aspect s al reelelor neuronale articiale pentru a deriva o noua metoda de a decide daca o imagine t t aparine sau nu vreuneia din clasele cu care a fost antrenata reeaua. Astfel, diferena dintre t t cele mai mari doua scoruri trebuie sa e considerabila pentru ca imaginea sa aparina unei t t clase nvaate. Se pot imagina cazuri n care aceasta metoda nu va funciona, de exemplu t cnd imaginea de la intrare nu aparine niciuneia din clase, dar seamana destul de mult cu t

5.3. EXPERIMENTE CU SIRURI DE CIFRE DIN NIST SD 19

55

una din ele, iar cu restul nu. Un alt caz ar acela cnd exista clase foarte asemanatoare, iar o imagine care seamana cu una din ele va semana, evident, si cu celelalte clase, genernd din acest motiv scoruri mari si apropiate. Oricum, se poate presupune ca aceste cazuri sunt excepii de la regula, ind sucient de rare pentru ca metoda sa e ecienta. t Considernd observaiile pe care le-am facut n urma studierii erorilor generate de Algot t t ritmul 4 pentru cazurile X1, am implementat Algoritmul 5, ntarind condiia daca cel puin una din cifrele pe care le detecteaza ca posibil existente RN C2 este 1. Contrar cu primul sistem de recunoa tere care a folosit doar scorul maxim al ecarei s t RNC, n acest caz mutarea clasicatorilor deasupra imaginilor de intrare a mbunatait rata de recunoa tere cu mai bine de 6% pna la 92.82%. s foreach componenta din imagine do rez1 [ ]=RN C1 (componenta); rez2 [ ]=RN C2 (componenta); sorteaza descrescator rez1 [ ] si rez2 [ ]; dif1 = rez1 [0].score rez1 [1].score; dif2 = rez2 [0].score rez2 [1].score; if u=1 or z=1 then if dif1 dif2 then return rez1 [0].class; end else return rez2 [0].class; end end else if dif1 2 dif2 then return rez1 [0].class; end else return rez2 [0].class; end end end Algorithm 5: Sistem de recunoa tere bazat pe diferena de scoruri (z - cifra zecilor, u - cifra s t t unitailor).

Sistem de recunoastere bazat pe scor maxim si pe diferene de scoruri t Pentru a vedea daca se pot obine rezultate mai bune combinnd metodele anterioare, am t implementat Algoritmul 6. Pentru ecare clasicator am adunat cel mai bun scor cu dife rena dintre cele mai bune doua scoruri. Cel mai bun rezultat, 93.77%, reprezentnd 92 de t siruri incorect clasicate, a fost obinut cnd am aplicat translaii asupra clasicatorilor. Acest t t rezultat este cu 3 pna la 18% mai bun dect toate rezultatele din [44] obinute cu numeroase t arhitecturi de reele neuronale, de i acelea au fost antrenate si cu exemple negative. Chiar t s daca comparam metoda prezentata cu cea mai buna din [44], diferena este de doar 3.05%, t

56

5. EXPERIMENTE

si aceasta n contextul n care noua metoda nu folose te nici segmentare, nici antrenare cu s exemple negative. foreach componenta din imagine do rez1 [ ]=RN C1 (componenta); rez2 [ ]=RN C2 (componenta); sorteaza descrescator rez1 [ ] si rez2 [ ]; dif1 = rez1 [0].score rez1 [1].score; dif2 = rez2 [0].score rez2 [1].score; if u=1 or z=1 then if rez1 .score + dif1 rez2 .score + dif2 then return rez1 [0].class; end else return rez2 [0].class; end end else if rez1 + dif1 rez2 + 2 dif2 then return rez1 [0].class; end else return rez2 [0].class; end end end Algorithm 6: Sistem de recunoa tere bazat pe scor maxim si pe diferene de scoruri (z s t t cifra zecilor, u - cifra unitailor). t Algoritmul poate mbunatait mai departe prin complicarea regulilor de selecie a rezult tatului unuia dintre clasicatori, dar i i va pierde simplitatea. Analiza erorilor arata ca RNC s rezultatul sunt foarte bune n a recunoa te maginile de la intrare, dar regulile care selecteaza s t unuia dintre clasicatori nu ofera totdeauna rezultate corecte. Cele 92 de erori pot mparite n cinci tipuri:

4 erori de segmentare, toate ind cauzate de imagini scanate decitar, 8 erori cu imagini care conin trei cifre concatenate. Sistemul de recunoaere nu trateaza t t cazurile de imagini cu mai mult de doua cifre parial suprapuse. t 23 erori ale RN C1 . Aproximativ jumatate dintre ele sunt cauzate de o subreprezentare a specimenului din clasa respectiva n setul de antrenare, iar celelalte de imagini foarte confuze. 26 erori ale RN C2 . Majoritatea lor se datoreaza faptului ca cele doua cifre parial sut t prapuse sunt extrem de diferite n nalime (chiar cu mai mult de 200%), iar antrenarea t RN C2 a fost efectuata cu perechi de cifre diferite n nalime prin maximum 10%. 63 erori generate de alegerea defectuoasa a clasicatorului. Acestea ar putea corectate complicnd regulile de selecie sau, preferabil, prin antrenarea si cu cu exemple t negative.

5.4. EXPERIMENTE PE SETUL 6DNS

57

Tabelul 5.7: Rate de recunoa tere pentru setul de test 6DNS (1C - cu deplasarea RN C1 deas supra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea ambelor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). scor maxim diferene t scor maxim & diferene t simplu(%) 88.72 56.08 66.42 1C(%) 89.73 56.83 67.51 2C(%) 47.93 91.91 91.50 1+2C(%) 50.58 92.45 92.52

Pentru a verica daca cel de-al doilea clasicator - cel la nivel de doua cifre - contribuie t la mbunatairea ratei de recunoa tere, am rulat experimentele dezactivnd 2RNC si lasnd s activ doar clasicatorul la nivel de cifra. Au fost identicate corect 89.16% din imagini n cazul n care nu am deplasat imaginea n cmpul de intrare al clasicatotului, si 89.30% daca am utilizat deplasarile. Se poate observa ca ambele scoruri sunt cu peste 4% mai mici dect daca s-a folosit si 2RNC.

5.4 Experimente pe setul 6DNS


Cele mai bune rezultate (Tabelul 5.7) au fost obinute si de aceasta data aplicnd translatarea t imaginilor n cmpul de intrare al clasicatorilor. De asemenea, combinaia dintre scorul t maxim si diferena dintre primele doua scoruri s-a dovedit a cea mai performanta. t Din cele 1471 de imagini ale setului 6DNS, 110 imagini au fost incorect identicate, reprezentnd 7.48% din setul de test 6DNS. Analiza rezultatelor a aratat ca si n cazul acestui set de test cele mai multe erori provin din alegerea eronata a clasicatorului. De asemenea, am observat ca clasicatorul la nivel de doua cifre este mai susceptibil la erori dect clasi catorul la nivel de cifra. Aceasta este normal deoarece complexitatea imaginilor ce trebuie t nvaate este mult mai mare. Un alt motiv este dimensiunea mai mica a cmpului de intrare a clasicatorului la nivel de doua cifre. Faa de rezultatele obinute n [44] pe setul 6DNS, rata de 92.52% este net superioara t t celei de 63.7% ct au obinut cu perceptronul multistrat antrenat fara exemple negative. Cel t mai bun rezultat din [44] (obinut cu Support Vector Classier with Radial Basis Functions t Gaussian kernel), 96.74%, este cu 4.22% mai bun dect cel obinut cu metoda prezentata, t dar folose te att segmentare, ct si antrenare cu exemple negative. s Am vericat si n acest caz comportarea sistemului de recunoa tere n cazul dezactivarii s 2RNC. Lasnd activ doar clasicatorul la nivel de cifra, au fost identicate corect 91.37% din imagini n cazul n care nu am deplasat imaginea n cmpul de intrare al clasicatotului, t si 91.91% daca am utilizat deplasarile. Faa de setul 3DNS, unde mbunatairea adusa de t includerea 2RNC a fost de peste 4%, majorarea ratei de recunoa tere s-a diminuat la 0.61% s n cazul setului 6DNS. O explicaie posibila ar ca setul 6DNS conine imagini mai dicil de t t recunoscut dect setul 3DNS.

58

5. EXPERIMENTE

Tabelul 5.8: Rate de recunoa tere pentru setul de test 10DNS (1C - cu deplasarea RN C1 s deasupra imaginii, 2C - cu deplasarea RN C2 deasupra imaginii, 1+2C - cu deplasarea am belor RNC deasupra imaginii, simplu - fara deplasarea clasicatorilor). scor maxim diferene t scor maxim & diferene t simplu(%) 82.69 33.83 49.09 1C(%) 85.31 34.05 49.77 2C(%) 20.27 91.80 89.64 1+2C(%) 23.23 92.82 91.80

5.5 Experimente pe setul 10DNS


Rezultatele obinute pe acest set de test pot urmarite n Tabelul 5.8. Erorile mari obinute t t cnd deplasarea imaginii n cmpul 2RNC a fost oprita arata ca dimensiunea de 21x13 pixeli pentru imagini de doua cifre este prea mica. Aceasta observaie este susinuta si de fapt t t s tul ca deplasarea imaginilor n cmpul clasicatorului la nivel de cifra mbunatae te foarte puin rata de recunoa tere. Probabil din cauza ca n acest caz imaginile sunt mult mai mari, t s 29x29 pixeli, motiv pentru care clasicatorul este mai robust. Autorii din [44] nu au prezen tat rezultatele pentru acest set pe motiv ca niciunul din articolele anterioare nu prezenta, de asemenea, rezultatele pe acest set. Din acest motiv nu se poate compara rezultatul obinut t n cazul setului 10DNS.

5.6 Concluzii
Ratele de eroare obinute au fost de 0.86% pentru o cifra, respectiv de 5.35% pentru doua t cifre, ceea ce arata ca RNC reprezinta o buna alegere att pentru clasicatorul dedicat cifrelor, ct si pentru clasicatorul dedicat perechilor de cifre parial suprapuse. t De i RNC nu au fost antrenate cu exemple negative, rezultatele obinute pentru seturile s t de test 3DNS si 6DNS sunt mult mai bune dect cele obinute anterior n domeniu, cu reele t t neuronale articiale. Diferenele ajung pna la cteva zeci de procente n cazul reelelor t t antrenate fara exemple negative. Utilizarea combinaiei de clasicatori s-a dovedit a ecienta, rata de recunoa tere crest s cnd faa de sistemul ce utilizeaza numai clasicatorul de cifre cu 4.47% pentru setul 3DNS, t respectiv cu 0.61% pentru setul 6DNS. Metoda propusa ofera rate de recunoa tere cu numai cteva procente (3.03% pentru s 3DNS si 4.42% pentru 6DNS) mai mici dect cele mai bune rezultate obinute anterior [44]. t Avnd n vedere ca rezultatele sunt obinute fara a aplica segmentarea si fara antrenare cu t exemple negative, ratele de recunoa tere pot considerate foarte bune. s Din analiza erorilor rezulta urmatoarele doua observaii: clasicatorul la nivel de perechi t t de cifre parial suprapuse ar trebui mbunatait si ambii clasicatori ar trebui antrenai cu t t t exemple negative. Pentru a mbunatai setul TDNS trebuie detaliata metoda de unire au tomata a cifrelor, prin crearea de cazuri specice pentru 1X si X1. De asemenea, trebuie marite imaginile deoarece dimensiunea de 21 13 este prea mica pentru reprezentarea su cient de clara a imaginilor. Antrenarea cu exemple negative este foarte importanta pentru ambii clasicatori, nemaiexistnd apoi alegeri gre ite de clasicator. Din analiza manuala a s erorilor rezulta ca daca totdeauna s-ar alege clasicatorul potrivit imaginii (RN C1 pentru cifre,

5.6. CONCLUZII

59

respectiv RN C2 pentru perechi de cifre), rata de recunoa tere ar deveni mai buna dect cea s mai buna existenta n momentul de faa n domeniu. t O mare parte a rezultatele au fost publicate n [17] si au fost prezentate la SYNASC 2008.

Capitolul 6

Optimizarea vitezei de execuie t


Avnd n vedere ca placile grace folosite pentru accelerarea calculelor n virgula mobila au t aparut pe piaa la sfr itul lunii iunie 2008, precum si dicultaile legate de scrierea unor prot s grame pe arhitecturi complet noi si extrem de diferite faa de arhitectura x86, acest capitol t prezinta numai rezultate pariale, pentru nalizarea portarii tuturor aplicaiilor pe placi grace t t ind necesare cel puin nca cteva luni. Chiar daca acest capitol nu aduce nimic nou n prit vina performanelor sistemului de clasicare, neavnd legatura explicita cu rata de recunoa t t s tere, am considerat ca este util a prezenta si aceste rezultate pariale deoarece tehnologia t folosita reprezinta viitorul pentru majoritatea domeniilor din stiina care au nevoie de putere t foarte mare de calcul, si cu sigurana n domeniul reelelor neuronale. Mai multe detalii vor t t prezentate n seciunile dedicate accelerarii vitezei de execuie cu ajutorul placilor grace. t t Clasicatorul 2RNC a fost antrenat cu o versiune modicata a programelor open source din [3]. Din pacate, acest cod a fost scris ntr-un mod mai mult "didactic", dect avnd ca t inta performana. Oricte modicari i-am facut n ideea de a-i mbunatai viteza, am ajuns t t la o limita sub care nu mai puteam scadea timpul de rulare dect daca rescriam de la zero tot programul. Problema si mai neplacuta era ca daca maream dimesiunea reelei neuronale t peste un anumit nivel, programul ncepea sa funcioneze haotic. ncercarea de a descoperi t cauzele acestei comportari s-a soldat cu e ec, chiar dupa multe saptamni de depanare s (sursele programului au aproximativ 250KB de cod C++). Modul n care se aloca memoria n toata ierarhia de clase, precum si cantitatea imensa care era alocata - mult peste un gigabyte de RAM -, multa din ea chiar pe stiva si nu n heap, generau acest comportament. Un alt factor care a ngreunat mult depanarea a fost arhitectura implementata multi-threading (cu mai multe re de execuie). Cum scrierea unui program de acest gen este foarte complexa si t dureaza un timp apreciabil, am considerat ca utilizarea unor imagini de dimensiuni mai reduse este compromisul optim. Astfel au rezultat toate experimentele si rezultatele din capitolul precedent. Una din concluziile din capitolului anterior evidenia faptul ca pentru a obine rezultate mai t t bune este nevoie de un clasicator mai performant pentru perechi de cifre parial suprapuse. t Pe lnga antrenarea cu exemple negative, performanele clasicatorului pot crescute prin t marirea dimensiunii imaginilor cu care este antrenat. O dimensiune adecvata pentru a obine t rezultate mai bune pentru 2RNC ar 41 29 de pixeli. Aceasta nseamna 1189 de neuroni t pentru stratul de intrare al reelei, si, implicit, numere crescute de neuroni si de hari de t convoluie pe celelalte straturi. Faa de imaginile de 21 13 pixeli cu care a fost antrenat t t

6.1. VARIANTE CPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

61

2RNC, imagini care necesita numai 293 de neuroni pentru stratul de intrare, imaginile cu dimensiunea de 41 29 pixeli ar necesita o reea de peste patru ori mai mare. Timpul de t t antrenare ar cre te proporional cu marimea reelei. Cum cea mai buna reea pentru 2RNC s t t a necesitat cteva zile pentru a antrenata, timpul pentru noua dimensiune a imaginilor ar ajunge la aproximativ doua saptamni, ceea ce este total nepractic. portarea programelor nu este nalizata, pentru a putea face com ntruct precizam ca paraii de viteza este necesara alegerea unei poriuni de cod reprezentativa pentru reelele t t t neuronale, cod care apoi sa e implementat n diverse moduri. Reelele neuronale, ca toi t t t clasicatorii, au doua pari, una de antrenare si una de testare. Cum algoritmul de propagare nainte (forward propagation) apare att la antrenare, ct si la testare, unde reprezinta chiar ntreg pasul de testare, am decis sa aleg o parte a acestui algoritm pentru a implemen tata pe diverse arhitecturi. Am ales cel mai complex strat al reelei neuronale de convoluie, t t stratul L3. Acesta este un strat complet conectat, si nu de convoluie, dar conine de departe t t cele mai multe operaii, necesitnd cea mai mare parte a timpului de rulare a algoritmului t de propagare nainte. Am ales stratul L3 al clasicatorului la nivel de cifra, 1RNC, deoarece este mai mare dect cel de la 2RNC. Este bine ca dimensiunea stratului sa e ct mai mare deoarece scopul nal al acestei optimizari este acela de a permite antrenarea unor reele de t dimensiuni mai mari. n toate experimentele urmatoare timpul a fost masurat si raportat pentru 10000 de rulari pentru a putea masurat corect si, n acela i timp, pentru a putea raportat n secunde, nu s n microsecunde. De asemenea, setul de test al MNIST are 10000 de imagini, testele ind efectuate pe ntreg setul de test. Stratul L3 conine 100 de neuroni ecare din ei avnd 1251 de conexiuni, una pentru t valoarea de prag (bias) si 1250 pentru cei 1250 de neuroni de pe stratul L2. n total exista 125100 de conexiuni si tot attea ponderi. Calculul acestui strat este format din evaluarea a 100 de produse scalare dintre vectori cu 1251 de componente, urmata de aplicarea funciei t de activare asupra rezultatului ecarui produs scalar.

6.1 Variante CPU ale optimizarii algoritmului de propagare nainte


n aceast subcapitol vor prezentate rezultatele obinute prin optimizarea codului ce ruleaza t numai pe procesor, fara placi grace. nti se va prezenta algoritmul iniial, cel care folose te t s multe clase si vectori STL (Standard Template Library). Timpul sau de rulare va folosit ca etalon pentru comparaiile urmatoare. Apoi vor prezentate doua variante care nu folosesc t ierarhii de clase si, mai important, vectori STL, ci memorie alocata dinamic cu new/malloc. Ultima varianta este implementata n limbaj de asamblare si folose te instruciuni SSE3. s t

6.1.1

Varianta open source modicata

Aceasta varianta este cea cu care am efectuat experimentele, dar care s-a dovedit a im posibil de extins la reele mai mari din cauza timpului mare de rulare si din cauza comportarii t eronate n cazul cre terii dimensiuni reelei neuronale. Codul iniial este preluat din [3] si s t t modicat pentru a putea utilizat pentru experimentele pe care le-am efectuat. n Figura 6.1 este prezentat codul sursa al algoritmului de propagare nainte. Se poate observa ct de

62

6. OPTIMIZAREA VITEZEI DE EXECUTIE

ncarcat este codul si ct de mult face apel la vectori STL. Timpul necesar pentru cele 10000 de imagini ale setului de test a fost de 11.67 secunde. Ca observaie, timpul necesar pentru t ntreg algoritmul de propagare nainte pentru toate cele 10000 de imagini ale setului de test din MNIST a fost de 27 de secunde.

Figura 6.1: Codul sursa al algoritmului de propagare nainte pentru varianta C++ cu vectori STL.

6.1.2

Varianta C++ fara vectori STL

Aceasta varianta (Figura 6.2) reprezinta prima tentativa de optimizare prin rescrierea programului de antrenare a reelelor neuronale articiale pe procesoare x86. Scopul ei a fost acela t de a verica gradul de accelerare a execuiei faa de varianta open source modicata, care t t se baza excesiv pe clase si pe vectori STL. Datele referitoare la ie irile neuronilor, precum si s la ponderi au fost restructurate astfel nct accesele la memorie sa e ct mai grupate. Pentru cre terea vitezei acceselor la memorie, toi vectorii au fost alocai la adrese de memorie s t t aliniate la 64 octei [5]. S-a ncercat eliminarea indirectarilor inutile prin precalcularea valorilor t

6.1. VARIANTE CPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

63

Figura 6.2: Codul sursa al algoritmului de propagare nainte pentru varianta C++. necesare. Dupa toate aceste optimizari timpul de rulare pentru stratul L3 a scazut la 4.39 secunde. Aceasta nseamna o cre tere a vitezei de 2,65 ori faa de varianta originala. s t Ca observaie, timpul necesar pentru ntreg algoritmul de propagare nainte pentru toate t cele 10000 de imagini ale setului de test din MNIST a scazut de la 27 de secunde la 9.97 secunde.

6.1.3

Varianta SSE2

Cautnd noi metode pentru a cre te viteza algoritmului, am recurs la limbajul de asamblare. s Mai mult de att, ntruct procesoarele pe care le foloseam, Intel Core2 Duo, dispuneau si de seturi de instruciuni paralele, am scris codul folosind aceste instruciuni. t t Procesoarele x86 au ncepnd cu Intel Pentium MMX si AMD K6 instruciuni SIMD (Single t Instruction Multiple Data). Daca prima extensie adaugata, MMX, a fost pentru numere ntregi,

64

6. OPTIMIZAREA VITEZEI DE EXECUTIE

au urmat apoi seturi de instruciuni pentru calcule cu numere reale: SSE, SSE2, SSE3, SSE4, t SSE4.1, SSE4.2, 3DNow! si variantele sale. Detalii despre aceste seturi de instruciuni t paralele pot gasite n [25].

Figura 6.3: Codul sursa al algoritmului de propagare nainte pentru varianta C++ cu SSE II. Procesoarele pe care le-am avut la dispoziie, Intel Core2 Duo 6600 si Intel Core2 Quad t 6600 suporta maxim SSE3, astfel ca a trebuit sa limitez optimizarea codului la acest set de instruciuni. Modelele noi de procesoare Core2 de la Intel, cele n tehnologie de 45nm, t suporta setul de instruciuni SSE4 care are o instruciune foarte importanta, MAD (Multiply t t and Accumulate), foarte utila pentru calculul produsului scalar. Daca ar fost disponibil un astfel de procesor, probabil ca viteza ar fost si mai mare, dar nu cu mult deoarece a a cum s

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

65

se poate vedea din Figura 6.3 n bucla de calcul a produsului scalar exista si alte instruciuni t care nu mai pot optimizate. Deoarece a scrie cod n limbaj de asamblare nu e un lucru facil si dureaza destul de mult, am ncercat sa evit scrierea n asamblor a ntregului algoritm de calcul a stratului L3, scriind o rutina care calculeaza produsul scalar a doi vectori de mari dimensiuni. ntruct stratul L3 se bazeaza pe calculul a 100 de produse scalare de vectori de 1251 de dimensiuni, acest mod de evaluare a performanelor este adecvat si corect. Figura 6.3 prezinta codul t optimizat pentru instructiuni SSE3. Pentru documentare am folosit [52]. Codul sursa este comentat n Figura 6.3, astfel ca nu va mai explicat din nou. Am implementat aceea i rutina s pentru produsul scalar si n C++, activnd toate optimizarile pentru viteza ale compilatorului VS C++ 2008, inclusiv folosirea de instruciuni SSE3. n urma masurarii timpilor de execuie t t am constatat ca varianta scrisa n limbaj de asamblare este de 1.3 ori mai rapida dect cea scrisa n C++. Extrapolnd acest rezultat la problema calculului stratului L3, s-ar obine 3.37s, t adica o accelerare de 3.46 ori faa de algoritmul iniial. t t Trebuie menionat ca am utilizat valori de tip double, astfel ca instruciunile SSE au pret t lucrat cte doua valori simultan. Puteam folosi si valori de tip oat, caz n care calculele propriu-zise s-ar accelerat de doua ori deoarece instruciunile SSE ar prelucrat cte patru t valori oat simultan. Pe ansamblu, nsa, accelerarea nu ar fost mult mai mare deoarece algoritmul de calcul al produsului scalar este limitat de accesele la memorie. Optimizarile pe procesor ar putea continua cu scrierea de cod paralel, care sa foloseasca mai multe re de execuie. Nu am evaluat aceasta posibiltate deoarece numarul de nuclee t dintr-un procesor este de maxim 4, iar placile grace au sute de nuclee de procesare, astfel ca este imposibil ca orice optimizare pe procesor sa e mai rapida dect cea pentru placile grace.

6.2 Variante GPU ale optimizarii algoritmului de propagare nainte


n ultimii ani viteza de procesare a placilor grace a crescut extrem de mult faa de viteza t procesoarelor de uz general. Iniial placile grace au fost proiectate pentru a efectua foarte t multe operaii grace n paralel. De i aveau o putere de calcul destul de mare, aceasta t s nu putea folosita dect foarte dicil - prin transformarea problemelor respective n operaii t grace - si n alte domenii. Jocurile si graca 3D sunt cele care vnd cele mai multe placi grace performante, astfel ca rmele producatoare au proiectat cipuri capabile de a efectua un numar din ce n ce mai mare de operaii. Graca 3D foloseste intensiv operaii cu numere t t reale, de obicei n simpla precizie. Operaiile sunt simple, de obicei adunari si nmuliri, si mult t t mai rar complicate: radical, funcii trigonometrice etc. n timp, cipurile grace s-au trasformat t n procesoare grace (GPU - Graphics Processing Unit), devenind mult mai exibile, putnd programate pentru a executa si alte operaii dect cele dedicate gracii. t Pentru a putea efectua un numar att de mare de operaii exista doua metode, un prot cesor unic la o frecvena foarte mare sau multe procesoare la frecvene moderate. Prima t t s varianta este folosita de procesoarele de uz general, iar tactul acestora nu a depa it nicio data limita de 4GHz. Puterea consumata cre te rapid cu cre terea frecvenei, tehnologia s s t actuala neind capabila de a oferi frecvene mult mai mari la consumuri rezonabile de curent, t de exemplu un maxim de 150W. A doua varianta s-a dovedit a mult mai practica, zeci, chiar

66

6. OPTIMIZAREA VITEZEI DE EXECUTIE

Figura 6.4: Evoluia performanelor procesoarelor si a placilor grace. Preluare dupa [54]. t t sute de procesoare simple ce ruleaza la frecvena redusa pot efectua mpreuna un numar imt presionant de calcule n virgula mobila. n Figura 6.4 sunt prezentate vitezele n GFLOPS ale placilor grace de la NVIDIA, precum si a procesoarelor de la Intel. Se poate observa foarte clar ca pentru calcule masive placile grace sunt naintea procesoarelor cu cteva generaii, t ceea ce se traduce n 5-10 ani. Cealalta rma producatoare de placi grace, AMD-ATI, a scos pe piaa n ultimele luni placi grace chiar si mai performante: ATI Radeon HD 4850 atinge t 1 TFLOPS, ATI Radeon HD 4870 - 1.2TFLOPS, si cea mai noua, ATI Radeon HD 4870X2, t 2.4TFLOPS. Un alt aspect important n care placile grace exceleaza este laimea de banda la memoria placii grace, care este cu aproximativ un ordin de marime mai mare dect cea a procesoarelor la memoria RAM a sistemului. Trebuie avut n vedere ca absolut toate cifrele prezentate n gracele anterioare reprezinta maxime teoretice - att pentru GPU-uri, ct si pentru CPU-uri -, n practica performanele obinute depinznd mult de problema si de abilit t tatea progamatorului. nsa, chiar si inecient programate, GPU-urile sunt n marea majoritate a cazurilor de cteva ori mai rapide dect CPU-urile. Avantajele si dezavantajele GPU faa de CPU pot observate analiznd Figura 6.6. Pro t cesoare moderne dedica un spaiu foarte mare memoriei cache (60-90% din numarul de t tranzistoare) si relativ puine tranzistoare nucleelor de procesare a datelor care sunt n numar t de maxim patru (n viitorul apropiat rma Intel va scoate pe piaa procesoare cu sase nut t clee). n schimb, GPU-urile folosesc cele mai multe tranzistoare pentru unitaile de calcul si foarte puine pentru memoria cache. Sumariznd, CPU-urile au puine nuclee de execuie, t t t dar care ruleaza la frecvene ridicate, au un numar mare de instruciuni si sunt foarte exibile, t t

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

67

t Figura 6.5: Comparaie ntre evoluiile laimii de banda pentru memoria sistem (RAM) si t t pentru memoria globala a placilor grace. Adaptare dupa [54].

au o memorie cache considerabila -ultimele procesoare de la Intel au 12MB cache L2- ce le ofera acces rapid la date aate la adrese aleatoare de memorie. GPU-urile au foarte multe nuclee de execuie - ATI 4870X2 are 2 800 nuclee dispuse n doua cipuri - care ruleaza t la frecvene scazute, nucleele sunt simple si nu ofera exibilitatea celor din CPU, memoria t cache este foarte puina, accesul la memoria globala ind foarte rapid numai daca se face la t adrese consecutive de memorie. O observaie importanta este ca att pentru CPU, ct si pentru GPU, raportul dintre nut t marul de operaii pe secunda si laimea de banda este aproximativ acela i, 7. Acest lucru t s arata ca pentru a folosi la maxim puterea de calcul a unui CPU sau a unui GPU, accesele la memorie trebuie sa e mult mai reduse dect numarul de operaii asupra datelor. Din t acest motiv se spune ca problemele sunt limitate de memorie (memory bound) sau limitate de CPU/GPU (CPU/GPU bound). Odata cu dezvoltarea GPU-urilor, acestea au nceput sa e denumite GPGPU (General-

68

6. OPTIMIZAREA VITEZEI DE EXECUTIE

Figura 6.6: Comparaie ntre alocarea tranzistoarelor pe suprafaa de siliciu pentru GPU si t t CPU. Preluare dupa [54]. Purpose GPU) pentru a evidenia ca au devenit mult mai exibile si pot utilizate si la alte t aplicaii dect cele grace. Exista si o organizaie si un site dedicat programarii GPGPUt t urilor. Primele utilizari majore au fost n supercalculatoare distribuite la nivel planetar si au fost folosite pentru studiul plierii proteinelor - Folding@home - [2], pentru detectarea stelelor neutronice rotitoare - Einstein@Home [1]. Programarea GPU-urilor se face folosind stream computing (programarea uxurilor de date) si este un mod particular de paralelism care impune anumite limite felului n care sunt create, executate si sincronizate rele de execuie. Toate aceste particularizari fac ideal acest t t mod de paralelism pentru probleme care au urmatoarele proprietai:

densitate mare de calcule pentru ecare element care este prelucrat,


paralelism la nivelul datelor: aceea i rutina (kernel) poate aplicata pentru multe date s diferite,

datele sunt consistent localizate: informaiile necesare unei instane a kernel-ului se t t aa distribuite n memorie ntr-un mod similar cu datele celorlalte instane ale kernelt t ului. Aceasta constrngere a devenit din ce n ce mai laxa odata cu cre terea exibilitaii s GPU-urilor.

6.2.1

Varianta BROOK+

Limbajul BROOK+ [7] este derivat din limbajul BROOK dezvoltat la Stanford [66] pentru programarea uxurilor de date (stream computing). BROOK+ este specic placilor grace AMD/ATI si reprezinta un nivel de abstractizare peste nivelul limbajului de asamblare al pro cesoarelor grace. n seciunea anterioara precizam ca performanele ultimelor placi de la ATI sunt impresiot t nante, ntre 1TFLOPS si 2.4 TFLOPS, toate avnd acela i cip grac, RV770 [6], diferind prin s frecvena acestuia si prin tipul si frecvena memoriei utilizate (GDDR3 sau GDDR5). Placa pe t t care am avut-o la dispoziie este ATI Radeon HD 4850, avnd 800 de procesoare rulnd la t 625MHz, pentru o viteza maxima de 625M Hz 800processors 2F LOP/Hz/processor = 1T F LOP S . De i este cea mai puin performanta dintre placile cu GPU RV770 (seria 48xx), s t

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

69

Figura 6.7: Codul sursa al algoritmului de propagare nainte pentru varianta BROOK+. t pentru preul de 199USD ofera o viteza maxima de calcul care este mult superioara faa de t orice CPU existent. Am nceput optimizarea algoritmului de propagare nainte pe GPU-uri folosind aceasta placa si limbajul BROOK+. Firma AMD-ATI are o mare problema n partea de software a stream computing. Daca placile grace la nivel hardware sunt excelente, softul (SDK-ul) lasa foarte mult de dorit. Este documentat foarte puin, implementarea limbajului BROOK+ nu este t nalizata, implicnd multe limitari n modul n care trebuie scrise programele. Unicele surse de documentare gasite au fost [7] si [66]. Pe site-ul AMD exista un forum dedicat stream computing, dar cei care se ocupa de dezvoltarea limbajului BROOK+ raspund, daca o fac, cu ntrziere destul de mare. Cum nu exista alte surse de informaii, iar a experimenta mai t mult sau mai puin haotic n ncercarea de aa cum funcioneaza unele aspecte ale limbajului t t t BROOK+ nu este deloc ecient, timpul necesar nvaarii acestui limbaj pentru a-l putea aplica cu succes este ndelungat, iar rezultatele pot mediocre. La momentul cnd au aparut placile din seria 48xx (iunie-iulie 2008) SDK-ul era la versiunea 1.1. Proler-ul nu funciona pe placile t t din noua serie. Cel mai descurajant aspect este lipsa posibilitaii de depanare automatizata, neexistnd un debugger! Astfel ca orice depanare trebuie facuta terminnd toate rele de execuie pentru ca numai din codul scris pentru CPU se pot face a ari. t s Un alt aspect negativ al limbajului BROOK+ este nivelul nalt al acestuia, nivel care nu permite accesul la nivel scazut asupra hardware-ului. Avnd n vedere complexitatea unui program cu foarte multe re de execuie, accesul la nivel scazut este obligatoriu pentru a t putea scrie programe performante. Compilatorul nu poate dect n puine cazuri sa produca t optimizarile necesare. Exista, ntr-adevar, si un limbaj de asamblare pentru GPU, dar este la fel de slab documentat. Se va vedea n seciunea referitoare la limbajul CUDA ce diferena t t exista ntre BROOK+ si CUDA n privina documentaiei, a accesului la nivel scazut al hard t t ului, u urinei de a scrie si depana programe etc. s t Cu toate aceste limitari am ncercat scrierea de cod BROOK+ pentru algoritmul de propa gare nainte. Dupa ndelungate ncercari nereu ite, am ajuns la algoritmul din Figura 6.7. s Nu voi detalia modul de funcionare al limbajului BROOK+, nsa cteva explicaii asupra t t

70

6. OPTIMIZAREA VITEZEI DE EXECUTIE

codului din Figura 6.7 sunt necesare. Cuvntul cheie kernel specica faptul ca aceasta rutina va executata n paralel pentru ecare element al stream-ului de ie ire stari. Parantezele <> s specica natura de stream a parametrului stari. Se poate conceptualiza n felul urmator: daca stream-ul (vector-ul) are n elemente, atunci pentru ecare element al sau se va executa logic, n paralel cte o instrana a kernel-lului, pentru un total de n re de execuie. Din considet t rente zice, numarul de instane executate n paralel este limitat de numarul de procesoare t si de alte aspecte ale arhitecturii procesorului grac. Daca un stream este precizat folosind parantezele <>, atunci n instana curenta poate utilizat numai elementul corespunzator int stanei. Daca este necesar ca un kernel sa foloseasca date de oriunde dintr-un parametru de t tip stream, atunci se folosesc parantezele drepte pentru respectivul stream. Recapitulnd, <> nseamna acces numai asupra elementului curent, iar [] - acces la orice element al streamului. Este bine a se evita accesul cu paranteze [], deoarece accesele la locaii aleatoare de t memorie este foarte lent. Funcia nu este optimizata pentru un strat anume al reelei, putnd utilizata pentru orice t t tip de reea cu propagare nainte. Parametrul intr este un stream unidimensional care conine t t ie irile neuronilor de pe stratul anterior, idx_p este un stream bidimensional ce conine pons t derile tuturor conexiunilor neuronilor de pe stratul curent, idx_s este un stream bidimensional ce conine indici ai neuronilor stratului anterior, iar nrc este numarul de conexiuni ale ecarui t neuron, considerat n aceasta implementare a acela i pentru toi neuronii unui strat. s t Tipul oat2 mpacheteaza doua valori de tip oat, accesibile cu .x si .y. Variabila step este iniializata cu valoarea {1,0}, deoarece 1 reprezinta pasul necesar trecerii la conexiunea t urmatoare. Este de tip oat2 deoarece tabloul n care se folose te acest pas pentru incres mentarea indicelui idx este bidimensional. Pe rndul 9 se selecteaza neuronul corespunzator instanei curente a kernel-ului. Funcia indexof() returneaza indicele elementului care este t t prelucrat de instana curenta a kernel-ului. Pe rndul 10 se ncarca bias-ul si apoi se trece t la urmatoarea conexiune pe rndul urmator. Bucla de la rndurile 12-16 calculeaza restul produsului scalar. La nal se aplica funcia de activare asupra rezultatului produsului scalar t si se stocheaza aceasta valoare n elementul din stream-ul de ie ire, element corespunzator s instanei kernel-ului. t Ca performana, aceasta rutina lasa foarte mult de dorit. Timpul necesar pentru cele t 10000 de imagini din setul de test al MNIST a fost de peste 15 secunde pentru L3, deci de cteva ori mai mare dect varianta pe procesor. Acest lucru demonstreaza ct de slab este compilatorul de BROOK+ pentru anumite probleme. n cazul de faa nu este folosita nici t macar 0.5% din puterea procesorului grac. n data de 10 septembrie 2008 a aparut noua versiune a SDK-ului de la AMD-ATI. Versi t unea 1.2 are o documentaie mbunataita si limbajul BROOK+ a fost si el puin dezvoltat. t t Avnd n vedere aceste aspecte si faptul ca n ultimele luni am nceput sa nteleg mai bine (scriind programe n CUDA pentru GPU-uri NVIDIA - detalii n seciunea urmatoare) t modul n care trebuie scrise programele pentru a eciente pe arhitecturi GPU, n viitor voi t reevalua posibilitatea scrierii algoritmilor de nvaare ai reelelor neuronale articiale n limbat jul BROOK. nsa, atta timp ct nu vor documentate detaliile arhitecturale ale RV770 si nu vor puse la dispoziia programatorului prin extensii BROOK+, este total improbabil ca se va t ajunge la performane apropiate de cele de care este capabil la nivel hard GPU-ul RV770. t

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

71

Figura 6.8: Arhitectura GPU-urilor de la NVIDIA (seriile GeForce 8 si 200). Preluare dupa [65].

6.2.2

Variantele CUDA

Celalalt mare producator de placi grace este NVIDIA. Este si cel mai mare, avnd o cota de piaa de peste 60%. n anul 2006 a introdus limbajul CUDA (Compute Unied Device Archit tecture) [55] special conceput pentru GP-GPU (General Purpose GPU). Acesta funcioneaza t pe toate placile grace din seriile GeForce 8 si GTX 200, n lume existnd aprope 100 de milioane de astfel de mini supercomputere, cum mai sunt numite datorita puterii mari de calcul. Spre deosebire de limbajul BROOK+ de la AMD-ATI, CUDA este mult mai dezvoltat si permite mult mai facil accesul la resursele hardware ale GPU-urilor. De asemenea, exista mod debug si depanarea se face aproape ca n orice compilator de C. n plus, exista si un program de analiza a performanelor programelor (proler) scrise n CUDA. t De la NVIDIA am avut la dispoziie modelul de vrf, GTX 280. Acesta a aparut n luna iunie t 2008. Este un procesor care conine foarte multe tranzistoare, peste 1.4 miliarde, gravate n t t tehnologie de 65nm. Frecvena procesorului este 602MHz, iar a ALU-urilor (unitai aritmeticot logice) 1297MHz. Conine 30 de multiprocesoare ecare avnd 8 procesoare, pentru un total t de 240 de procesoare. Viteza maxima de procesare este 1296M Hz 240processors 3F LOP/Hz/processor = 933GF LOP S . Memoria folosita este de tipul GDDR3, rulnd la 1107MHz si ind conectata la GPU printr-un bus foarte lat, de 512 bii (8 canale a 64 de bii). t t t Laimea de banda maxima este de 1107M Hz 64bytes/transf er 2transf ers/Hz = t 141GB/s. n conguraie standard, memoria este de 1GB si este mparita n 8 canale de t 128MB ecare. n Figura 6.8 este descrisa la modul general arhitectura ultimelor doua generaii de prot

72

6. OPTIMIZAREA VITEZEI DE EXECUTIE

cesoare grace, cele din seriile GeForce 8 si GTX 200. n cazul lui GTX 280 N=30, iar M=8. Fiecare multiprocesor are 16KBytes de memorie partajata ce poate accesata de toate cele t 8 unitai de calcul pe care le conine multiprocesorul. t Memoria partajata este foarte rapida, apropiata de viteza regi trilor, scrierile si citirile s durnd numai 4 impulsuri de tact. Un aspect important al memoriei partajate este acela ca t este mparita n 8 bancuri de cte 1KBytes, accesele la aceste bancuri putndu-se efectua simultan. Adresele bancurilor sunt ntreesute la nivel de oat, astfel ca bancul 0 are adresele t n acest mod a memoriei 0, 32, 64 ..., bancul 1 - 1, 33, 65 ... etc. Nerespectarea accesarii duce la conicte de banc, care genereaza ntrzieri n execuie. GTX 280 are o facilitate n t plus, aceea de a permite tuturor celor 8 procesoare dintr-un multiprocesor sa citeasca simul tan aceea i locaie de memorie partajata. n literatura aceasta memorie mai este denumita s t si memorie cache gestionata de programator (user managed cache). Avnd n vedere ca memoria globala - 1GB GDDR3 - este mult mai lenta dect memoria partajata, unul din mo durile n care se pot accelera calculele este acela de a aduce n memoria partajata datele care sunt accesate de mai multe ori. Fiecare multiprocesor are propriul set de regi tri pe care i distribuie celor opt procesoare s pe care le conine. Numarul maxim de regi tri disponibili unui multiprocesor este 8192. t s Oricare din cele 8 procesoare poate citi din memoria globala, sau din memoria pentru texturi sau memoria constantelor. n cazul ultimelor doua tipuri de memorie, accesele se fac prin intermediul unei memorii cache de 8KBytes. Accesele la memoria globala nu sunt intermediate de nicio memorie cache. Din acest motiv, accesele la memoria globala sunt eciente numai daca se fac la adrese consecutive. n plus, e bine ca prima adresa sa e aliniata la nivel de 64 de bytes, ct este dimensiunea magistralei, altfel efectundu-se cel puin un acces suplimentar. Timpul de acces aleator la t memoria globala este de 400-600ns. Accesele consecutive se fac apoi la cte un tact distana. n cazul cel mai nefavorabil, cnd toate accesele sunt aleatoare, neexistnd localizare t t spaiala sau temporala, laimea de banda a memoriei scade de la 141GB/s la aproximativ t 8MB/s! Din acest motiv este obligatoriu ca datele sa e accesate astfel nct sa existe lo calizare spaiala si temporala. Proler-ul care exista n SDK analizeaza si aceste aspecte, t oferind informaii utile n pastrarea coeziunii acceselor la memorie. t n continuare va descris pe scurt cum funcioneaza un program CUDA. Fiecare program t t este mparit n foarte multe re de execuie (thread-uri) care apoi sunt rulate logic n paralel. t De fapt, thread-urile sunt organizate ntr-un grid bidimensional care este format din mai multe blocuri de thread-uri (Figura 6.9). Fiecare bloc este executat de catre un singur multiprocesor, toate procesoarele dintr-un multiprocesor executnd acea i instruciune la un anumit moment s t de timp. Pe un multiprocesor pot rula mai multe blocuri logic n paralel, dar zic iterativ. Pentru detalii poate consultata documentaia din SDK [54]. Detalii interesante pot gasite t si n seria de articole din [26]. Exista foarte multe articole si prezentari despre modul de funcionare al CUDA, precum si despre cum trebuie scrise programele pentru a rula ct mai t optim din prisma vitezei, dar nu vor n irate aici pentru a nu aglomera explicaiile. ntruct s t t limbajul CUDA este predat si n cadrul universitailor, un mod bun de a gasi documentaie este t de a cauta cursurile a ate pe pagina www.nvidia.com/object/cuda_university_courses.html. s Deoarece acest capitol are ca scop optimizarea performanelor pe diverse arhitecturi, se t vor descrie n continuare aspecte ce trebuie avute n vedere pentru a obine programe pert formante. Informaiile oferite reprezinta o sinteza a articolelor si prezentarilor de pe pagina t www.nvidia.com/object/cuda_university_courses.html. Exista si alte aspecte mai puin import tante si nu att de eciente pentru procesul de optimizare, dar nu vor expuse deoarece nu

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

73

Figura 6.9: Organizarea thread-urilor. Adaptare dupa [56]. le-am folosit n rutinele ce urmeaza.

eliminarea buclelor
se face cu directiva de compilare #pragma unroll n, unde n este o constanta care specica numarul de iteraii care vor efectuate t utila doar daca numarul de iteraii este cunoscut aprioric, altfel trebuie efectuate t alte articii de programare am obinut o reducere a timpilor de execuie cu aproximativ 40% pentru bucle mari t t ce calculau produse scalare (de exepmlu n Figura 6.11 rndurile 198-200) memoria globala accesele trebuie sa e localizate spaial si temporal t este bine a accesata ct mai puin t accesele aleatoare sunt de peste 100 de ori mai lente dect cele la memoria partajata memoria partajata trebuie folosita de ecare data cnd se citesc repetat acelea i locaii de memorie s t trebuie evitate conictele de banc

74

6. OPTIMIZAREA VITEZEI DE EXECUTIE

thread-urile trebuie sincronizate nainte de a citi din memoria partajata ecare bloc este bine sa folosesca ct mai puina memorie partajata pentru a t putea rulate logic n paralel mai multe blocuri de thread-uri pe ecare multiprocesor numarul de blocuri ale gridului trebuie sa e sucient de mare pentru ca multiprocesoarele sa aiba ce rula cu ct sunt mai multe blocuri alocate unui multiprocesor, cu att mai bine sunt as cunse latenele la memoria globala: cnd un bloc a teapta dupa memoria globala, t s este pus n coada de a teptare si controlul este dat urmatorului bloc s numarul de thread-uri din ecare bloc e bine sa e multiplu de 32 pentru a trimise spre execuie ct mai ecient t Optimizarea kernel-urilor pentru straturile reelei neuronale t Din multitudinea de variante ncercate vor prezentate doua dintre ele, cele mai performate. Prima varianta este prezentata n gurile 6.10 si 6.11 si implementeaza ntreg algoritmul de propagare nainte. n prima gura sunt implementate straturile de convoluie L1 si L2. t t Stratul L1 conine 6 hari de convoluie de dimensiunea 13 13. Este creat un grid cu 6 t t blocuri a 169 de thread-uri ecare. Specicatorul __global__ arata ca funcia (kernel-ul) este t apelata de catre CPU, dar ruleaza pe GPU. ntruct ie irile stratului anterior vor folosite la s calculul mai multor produse scalare, au fost ncarcate n memoria partajata (declaraia este la t rndul 97, iar ncarcarea la rndurile 102-104). Deoarece memoria partajata are 16 bancuri, pentru a nu genera conicte de banc doar thread-urile corepunzatoare primilor 16 neuroni se ocupa de ncarcarea datelor n memoria partajata. Variabila btidx conine indicele thread-ului t n blocul curent, iar idx - indicele n ntregul grid. La ncarcarea ie irilor stratului anterior se s folose te btidx deoarece ecare bloc trebuie sa ncarce datele ntruct memoria partajata s este la nivel de bloc, iar ie irile stratului anterior sunt necesare n toate blocurile. s Specicatorul __shared__ precizeaza ca respectiva variabila este alocata n memoria partajata. Pentru acest strat, si numarul ponderilor este redus, existnd numai 156 de pon deri, cte 26 pentru ecare harta de convoluie. Fiecare bloc trebuie sa ncarce (rndurile t t 106-108) numai 26 de ponderi deoarece executa calcule doar pentru una din hari. Deoarece sunt numai 26 de ponderi, am lasat un singur thread sa se ocupe de ncarcare, thread-ul 0 al ecarui bloc. Apelul __syncthreads() asigura ca ecare bloc are toate datele ncarcate n memoria partajata. n acest moment poate ncepe calculul produselor scalare. La rndul 112 ecare thread iniializeaza valoarea produsului scalar cu valoarea bias-ului, urmnd ca pe t rndurile 114-117 sa e adunate produsele dintre ponderi si ie irile corespunzatoare ale stra s tului anterior. Cele doua for-uri aplica calculul pe un nucleu de 5x5 neuroni. La nal (rndul s 118) este calculata ie irea neuronului curent prin aplicarea funciei de activare asupra valorii t produsului scalat. Rezultatul este memorat n memoria globala. t Stratul L2 conine 50 de hari de convoluie ecare a 5 5 neuroni. Fiecare neuron al t t t ecarei hari este conectat cu cate 25 de neuroni din ecare harta de pe L1. Se creaza un grid cu 50 de blocuri, ecare bloc calculnd valorile neuronilor dintr-o harta, avnd, deci, 25 de thread-uri. Ca si la stratul precedent, ie irile de pe stratul anterior, precum si ponderile s dintre straturi sunt ncarcate n memoria partajata. Avantajul straturilor de convoluie este ca t folosesc un numar restrns de ponderi pe care le reutilizeaza. Rndurile 129-135 produc

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

75

ncarcarea datelor n memoria partajata si asigura sincronizarea thread-urilor la nal. Rn durile 137-145 calculeaza valorile neuronilor de pe stratul L2 ntr-un mod similar cu algoritmul t stratului L1. Al treilea for, cel mai interior, selecteaza harile din stratul L1.

Figura 6.10: Kernel-urile pentru straturile de convoluie. t Stratul L3 (Figura 6.11) este total conectat cu stratul anterior. Fiecare din cei 100 de neuroni ai stratului este conectat cu ecare din cei 1250 de neuroni de pe L2, deci ecare neuron are 1251 de conexiuni, una ind pentru bias. Exista 100 1251 = 125100 conexiuni si tot attea ponderi. La acest caz ponderile nu se refolosesc, ci sunt utilizate o singura data. Oricum, sunt mult prea multe pentru a putea ncarcate n memoria partajata. Din aceste motive ele vor ramne n memoria globala si vor citite numai cnd este nevoie de ele. n schimb, cele 1250 de ie iri ale neuronilor de pe stratul L2 sunt utilizate ecare de circa 100 s de ori. Fiind puine si des accesate este foarte indicat a ncarcate n memoria partajata. La t

76

6. OPTIMIZAREA VITEZEI DE EXECUTIE

execuie este trimis un grid cu un singur bloc a 100 de thread-uri. t Rndurile 185-189 din Figura 6.11 declara variabilele locale necesare si calculeaza indi cele thread-urilor la nivel de grid. Urmeaza (rndurile 191-194) ncarcarea ie irilor neuronilor s de pe stratul L2 n memoria partajata a blocului, nalizata cu sincronizarea thread-urilor. Este obligatorie aceasta sincronizare deoarece numai primele 16 thread-uri ale blocului de 100 de thread-uri participa la ncarcarea memoriei partajate. Fara sincronizare thread-urile ce nu efectueaza ncarcarea ar trece la execuia instruciunilor urmatoare care citesc date t t din memoria partajata care nca nu ar ntr-o stare coerenta, procesul de ncarcare neind nalizat.

Figura 6.11: Kernel-urile pentru straturile complet conectate. n continuare (rndurile 196-201) se calculeaza produsul scalar corespunzator si se aplica funcia de activare asupra rezultatului. La nal are loc scrierea ie irii neuronului n memoria t s globala. Sunt necesare cteva precizari pentru operaiile de la rndul 200. Ca si la celelalte t straturi, output se alfa n memoria partajata. n schimb, ponderile currLW se aa n memoria globala care pentru a rapida trebuie accesata ncepnd de la adrese multiplu de 64bytes,

6.2. VARIANTE GPU ALE OPTIMIZARII ALGORITMULUI DE PROPAGARE NAINTE

77

t ct este laimea magistralei, iar adresele locaiilor accesate este bine sa prezinte localizare t spaiala si temporala. Acest lucru nseamna ca citirile pe care le efectueaza thread-urile t gridului trebuie sa e concentrate, nu rasrate aleator prin memorie, iar aceste citiri (accesari, la modul general) trebuie sa e facute cvasisimultan. Daca sunt respectate aceste principii, atunci accesele vor grupate de catre GPU si executate n paralel. n mod normal, ponderile erau stocate n memorie n felul urmator: cele 1251 de ponderi ale neuronului 0, urmate de cele 1251 de ponderi ale neuronului 1, si tot a a pna la neuronul 99. Considernd ca thread s urile ruleaza n paralel, la un moment dat, ecare thread acceseaza ponderea cu acela i s indice din lista de ponderi corespunzatoare lui. Aceasta nseamna accese la adresele: 1251 4 0, 1251 4 1, 1251 4 2 etc (4 apare din cauza ca sizeof(oat)=4). Evident, nu este respectata regula localizarii spaiale. Din acest motiv vectorul de ponderi a fost reordonat n t felul urmator: primele 100 de valori reprezinta cele 100 de bias-uri ale neuronilor, urmatoarele 100 de valori reprezinta ponderile spre neuronul 0 al stratului L2 si tot a a. n acest mod se s respecta regula localizarii spaiale. Numarul 128 apare n loc de valoarea 100 pe rndul 200 t deoarece am dorit ca accesele sa nceapa la adrese multiplu de 64 bytes. n acest mod nu sunt facute doua accese n loc de unul n cazurile n care datele se ntind n doua blocuri diferite chiar daca dimensiunea lor cumulata este de cel mult 64 bytes. Bineneles, tabelul de t ponderi este creat astfel nct ponderile corespunzatoare unui neuron de pe stratul anterior sa se ae la multiplii de 128. Aceasta nseamna ca tabelul conine cte 28 de elemente t neutilizate pentru ecare 100 de ponderi. Se "pierd" astfel 28 1251 sizeof (f loat) = 140112 bytes, ceea ce este nesemnicativ avnd n vedere ca memoria globala este de 1GB. Pentru GTX 280 alinierea la multiplii de 128 nu aduce nicio cre tere de viteza deoarece cirs t cuitele hard care acceseaza memoria globala au fost mult mbunataite faa de seria GeForce t 8 unde acestea erau mult mai simple. La seria GeForce 8 alinierea datelor la multiplii de 128 se manifesta ntr-o cre tere observabila a vitezei de execuie (10-40%), n funcie de pros t t blema). Stratul L4 nu va mai detaliat ind foarte asemanator cu stratul L3. Codul din Figura 6.11 este sucient pentru nelegerea funcionarii sale. t t Cu aceasta varianta am obinut un timp de rulare pentru kernel-ul stratului L3 pentru cele t 1000 de imagini ale setului de test MNIST de 1.60 secunde, de 2.75 ori mai rapid dect algoritmul optimizat pentru procesor. Este o accelerare semnicativa, dar totu i mica avnd s n vedere diferena de performana dintre placa graca si CPU. Era evident ca se poate mult t t mai bine din urmatoarele doua motive: am testat algoritmul pe doua placi grace diferite GTX 280 si Quadro NVS 290. De i s ultima are performane teoretice de peste 30 de ori mai slabe dect GTX 280, timpii t obtinui cu ea au fost de numai 3-4 ori mai mari. Aceasta arata ca nu foloseam dect t puin din potenialul placii GTX 280, t t ntruct problema este limitata de viteza memoriei (memory bound problem) am calcut lat pentru stratul L3 laimea de banda utilizata. Citirea ie irilor stratului L2, a ponderilor s stratului L3, precum si scrierea ie irilor stratului L3 totalizeaza 1250+1251100+100 = s 126450 oat-uri, adica 505800 octei citii/scri i pentru o imagine (acesta ignornd t t s octeii citii inutil pentru pastrarea alinierii datelor). Pentru toate cele 10000 de imat t t gini, nseamna 5058000000 octei, adica 4.71 GB accesai n 1.6 secunde. Laimea de t t t banda folosita este de 2.94 GB/s. Avnd n vedere ca GTX 280 are o laime de banda de 141GB/s se poate observa ct de inecient este utilizata. n schimb, 2.94GB/s este aproape de limita maxima a placii NVS 290, aratnd nca o data ca modul n care am

78

6. OPTIMIZAREA VITEZEI DE EXECUTIE

scris kernel-ul nu este unul scalabil, neind capabil de a utiliza resursele placii GTX 280.

Figura 6.12: Kernel-urile pentru stratul L3. n a doua varianta am continuat optimizarea kernel-ului pentru stratul L3. Varianta an s terioara era inecienta deoarece pentru a nu ncarca repetat n memoria partajata ie irile neuronilor de pe stratul L2, am ales o conguraie cu un singur bloc a 100 de thread-uri. Cum t un bloc este trimis la execuie la un singur multiprocesor, se poate observa ct de inecient t am utilizat cele 30 de multiprocesoare din GTX 280. Ar trebui sa avem cel puin 30 de blocuri t pentru a ocupa GPU-ul, asta daca ignoram latenele la memorie pentru ascunderea carora se t precizeaza ca este bine sa existe mai multe blocuri disponibile pentru ecare multiprocesor,

6.3. CONCLUZII

79

n timp ce unul a teapta dupa memoria globala, altul poate deveni activ si executa operaii. s t ar fost mparirea blocului de 100 de thread-uri n 34 de blocuri a 3 t Soluia simpla t thread-uri ecare, ultimul bloc coninnd numai un thread. Sunt trei dezavantaje. Primul este t numarul mic de thread-uri dintr-un bloc, numai 3, faa de cel puin 32 ct e recomandat. Apoi, t t ecare thread are mult de calculat - un produs scalar ntre doi vectori a 1251 de elemente. La nal, memoria partajata a ecaruia din cele 34 de blocuri ar trebuit umpluta cu date din memoria globala. Se observa ca aceasta soluie are ceva comun cu cea anterioara: numarul t de 100 de thread-uri. Soluia mai complicata rezolva problema numarului mic de thread-uri prin divizarea calt t culului produselor scalare n mai multe pari. Din acest motiv avem nevoie de doua kernel sumele pariale, si unul care formeaza rezultatul nal din aceste uri, unul care calculeaza t sume pariale (Figura 6.12). Comunicaia dintre kernel-uri se face prin memoria globala t t folosind parametrul partialsum. Deoarece dorim sa ocupam toate cele 30 de multiprocesoare ale GTX 280, vom crea 30 de blocuri. Avem 1250 de produse ce trebuie apoi adunate, deoarece pentru bias nu trebuie sa efectuam nicio nmulire. Numarul 1250 nu se divide cu t 30. Ar indicat sa folosim o repartizare uniforma deoarece ecare bloc ar avea exact acela i s numar de thread-uri si nu ar trebui sa mai punem instruciuni condiionale n kernel. Pen t t tru a rezolva acest aspect, completam cu neuroni cu ie ire nula stratul L2. Avem nevoie de s 1250 div 30 30 = 1260 neuroni, deci mai adaugam 10 neuroni ctivi pe stratul L2. Deci, vom avea 40 de blocuri a 100 de thread-uri ecare (rndurile 3 si 4), iar ecare thread va calcula suma pariala formata din 1250 div 30 = 42 de produse. Dimensiunea necesara t pentru partialsum este de 30 100 sizeof (f loat), dar vom aloca 30 112 sizeof (f loat) pentru a avea datele aliniate la 64 de octei. t Kernel-ul 3A calculeaza sumele pariale. ncepe prin a ncarca n memoria partajata cele t 42 de ie iri de pe stratul anterior (rndurile 23-25). Numai primele 42 de thread-uri efectueaza s ncarcarea, restul a teapta la bariera de sincronizare (rndul 25). Urmeaza calculul sumelor s pariale si scrierea rezultatelor n partialsum. t Kernel-ul 3B folose te sumele pariale calculate de 3A pentru a obine rezultatul nal. n s t t urma mai multor teste, am gasit drept conguraie optima 4 blocuri a 25 de thread-uri ecare t (rndurile 8-10). La rndul 37 se iniializeaza produsul scalar cu valoarea de prag (bias), iar t cele 30 de sume pariale, urmnd ca la rndul 41 sa se aplice la rndurile 39 si 40 se aduna t funcia de activare si sa se memoreze rezultatul n variabila de ie ire. t s Acest mod de a scrie algoritmul de calcul pentru L3 a dus la scaderea timpului de rulare pentru stratul L3 pna la 0.2 secunde, ceea ce este de 21.95 ori mai rapid ca varianta C++ optimizata. Folosind calcule similare cu cele de la prima varianta scrisa n CUDA, am obinut t t pentru laimea de banda utilizata de acest strat valoarea de 38 GB/s.

6.3 Concluzii
n capitolul dedicat experimentelor am ajuns la concluzia ca unul din modurile n care rata t de recunoa tere poate mbunataita este antrenarea clasicatorilor cu imagini mai mari. s t Acest lucru implica reele neuronale mai mari, antrenarea carora va dura mult mai mult timp. Folosind programele existente deja, timpul de antrenare s-ar ntinde pe mai multe saptamni. De aceea devine necesara cautarea unor soluii mai rapide. t Pentru ca scrierea tuturor programelor pentru ecare tip de optimizare ar durat multe luni de zile, am ales un mod mai simplu de a testa diferitele moduri de optimizare. Mai exact, am

80

6. OPTIMIZAREA VITEZEI DE EXECUTIE

25.00 20.00 15.00 10.00 5.00 0.00 C++ STL 0.38

C++ fr STL 1.00

SSE II 1.30

BROOK+ CUDA v1 CUDA v2 0.29 2.74 21.95

Figura 6.13: Gradul de accelerare a diferitelor variante de kernel pentru stratul L3. Referina t este considerata varianta C++ optimizata, fara vectori STL.

ales o parte reprezentativa a algoritmului reelelor neuronale si am implementat-o n diverse t moduri. Pentru experimentele de optimizare am ales stratul L3 al 1RNC (reeaua neuronala t la nivel de cifra). Acest strat este cel mai mare din ambii clasicatori folosii. t Am efectuat doua tipuri de optimizari folosind arhitectura x86 si apoi folosind GPU-urile. optimizata folosind numai procesorul a implicat rescrierea n C++ a stratului Prima varianta L3 si aranjarea datelor de intrare astfel nct sa e ct mai u or accesibile. S-a obinut o m s t t t bunataire semnicativa faa de algoritmul iniial, de 2.63 ori. Aceasta versiune de optimizare t a fost folosita drept referina pentru celelalte tipuri de optimizari. De i ar fost avantajos din t s prisma marimii cifrelor, nu am folosit drept referina varianta iniiala deoarece este un algoritm t t open source care este scris ntr-un mod didactic, nu avnd ca principiu un timp ct mai mic de rulare. Al doilea motiv pentru care am ales algoritmul C++ optimizat pentru a referina este t ca doream sa compar arhitecturi diferite si nu este normal a compara o varianta neoptimizata scrisa pe o arhitectura cu una optimizata scrisa pe cealalta arhitectura. Pe arhitectura x86 am mai scris si o varianta n limbaj de asamblare ce folose te instruc s iuni SIMD SSE3. Aceasta s-a dovedit a mai rapida ca varianta C++ optimizata, dar nu t am folosit-o ca referina deoarece nu intenionam sa scriu n limbaj de asamblare variantele t t pentru placile grace si s-ar ajuns la comparaii nefondate. n Figura 6.13 sunt prezentate t

6.3. CONCLUZII

81

accelerarile obinute cu diferitele variante implementate. t Celalalt tip de arhitectura folosit a fost reprezentat de placi grace, a a numitele GPU-uri. s Am efectuat experimente cu GPU-uri att de la AMD-ATI, ct si de la NVIDIA. Varianta scrisa n BROOK+ pe placa AMD-ATI este foarte lenta deoarece nu este optimizata, documentaia t oferita de AMD-ATI ind mediocra. De asemenea, BROOK+ nu ofera acces de nivel scazut la arhitectura GPU, optimizarile ind lasate exclusiv n seama compilatorului. Din aceste motive si din cauza inexistenei unui debugger, am renunat la a mai optimiza varianta BROOK+. t t GPU-ul de la NVIDIA este mult mai u or de programat pentru a obine performana. Toate s t t decienele ntlnite la BROOK+ nu exista la limbajul CUDA folosit pentru GPU-urile NVIDIA. t Am implementat doua variante de optimizare, cea mai buna atingnd o cre tere a vitezei s de 21.95 ori. n cazul compararii timpului de rulare cu cel obinut de varianta iniiala, open t t source, obinem o cre tere de performana si mai mare, de 58.35 ori. t s t Optimizarile efectuate cu ajutorul GPU-urilor au aratat ca gradul de accelerare poate si t mai mare daca reeaua neuronala are dimensiuni mai mari. Accelerarea de 21.95 ori a fost limitata de dimensiunea mica a reelei simulate. t Pentru a putea implementa ecient o reea neuronala cu ajutorul GPU-urilor, este oblit gatorie cunoa terea si accesul prin software a arhitecturii interne a procesorului grac. n s caz contrar, performanele obinute sunt comparabile (sau chiar mai slabe) cu cele obinute t t t utiliznd CPU-uri. Concluzia cea mai importanta a acestui capitol este ca placile grace reprezinta cea mai performanta soluie de optimizare a algoritmilor reelelor neuronale ce poate t t aplicata. Algoritmii implementai pe GPU sunt de departe mult mai rapizi dect cei t implementai pe CPU, o accelerare de peste 20 de ori permind antrenarea unor reele t t t mult mai complexe.

Capitolul 7

Concluzii
n acest capitol vor prezentate contribuiile autorului, urmate de sumarizarea concluziilor t tezei. La nal vor expuse principalele direcii de continuare a cercetarii. t

7.1 Contribuii t
Crearea unui clasicator pentru perechi de cifre parial suprapuse si demont strarea ecienei acestuia [20]. Acest clasicator pune bazele construirii unui sistem t de recunoa tere a sirurilor numerice cu numar nedenit de cifre, unite sau nu. s
Crearea unui nou algoritm de recunoastere [17] a sirurilor numerice scrise de mna. Metoda propusa evita folosirea segmentarii prin utilizarea a doi clasicatori, unul la nivel de cifra si unul la nivel de doua cifre parial suprapuse. Ratele de recunoa t s tere obinute sunt foarte apropiate de cele mai bune existente n domeniu, cu toate t ca metoda nu folose te nici segmentare, nici antrenare cu exemple negative. Pentru s evitarea antrenarii cu exemple negative, au fost concepute trei metode simple si e ciente de selecie a clasicatorului potrivit coninutului imaginii. Analiza erorilor arata t t ca n cazul utilizarii antrenarii cu exemple negative, sistemul de recunoa tere va ajunge s la rate de recunoa tere comparabile, probabil chiar mai bune dect cele mai eciente s metode actuale, pastrnd, nsa, simplitatea data de neutilizarea segmentarii.

Accelerarea pasului de propagare nainte a reelelor neuronale de peste 20 de ori t folosind arhitecturi GPU, cu perspectiva maririi acestui factor pentru reele si mai mari. t Punerea bazelor crearii unui algoritm de antrenare pe GPU pentru reele neuronale t practic imposibil de antrenat pe CPU.
Crearea unui metode ce genereaza automat perechi de cifre parial suprapuse. t

Crearea seturilor de imagini cu perechi de cifre parial suprapuse TDNS. t Crearea seturilor de imagini cu cifre LNIST. Crearea seturilor de imagini cu siruri numerice 3DNS, 6DNS si 10DNS.

7.2. SUMARUL TEZEI

83

Dezvoltarea unui algoritm de extragere automata a cmpurilor din formulare. Algoritmul poate adaptat pentru a extrage cmpuri rectangulare din orice tip de formular. t Conceperea unui algoritm de clusterizare (concatenare) a imaginilor cu pari de cifre n imagini de cifre sau de perechi de cifre.

7.2 Sumarul tezei


Teza propune o metoda ecienta pentru recunoa terea sirurilor numerice formate dintr-un s numar nedenit de cifre izolate sau parial suprapuse. t ntruct orice metoda trebuie validata, prezentarea ncepe cu construirea unor seturi de imagini pentru antrenarea si testarea clasicatorilor. Pentru antrenarea clasicatorului la nivel de cifra am creat seturile din LNIST (66214 imagini pentru setul de antrenare si 45398 de imagini pentru setul de test) prin extragerea de imagini din NIST SD 19. Acestea sunt construite identic cu cele folosite de autorii din [44, 45] pentru a permite o comparaie ct mai riguroasa a rezultatelor. t Pentru antrenarea clasicatorului la nivel de doua cifre parial suprapuse (2RNC) am creat t seturile de antrenare si de test TDNS. Din NIST SD 19 au fost extrase 20000 de imagini de cifre (10000 pentru antrenare si 10000 pentru test) din care s-au creat cte 200000 de imagini cu perechi de cifre parial suprapuse att pentru setul de antrenare, ct si pentru setul de test. t Pentru formarea imaginilor cu perechi de cifre parial suprapuse am dezvoltat un algoritm care t une te cifrele n funcie de morfologia acestora. s t Daca imaginile setului LNIST au fost extrase pentru a folosite de catre clasicatorul la nivel de cifra, pentru cazul general, cel al sirurilor numerice formate din mai multe cifre, au fost construite seturile de test 3DNS, 6DNS si 10DNS. Si n construirea acestor seturi am urmarit obinerea unor seturi ct mai apropiate de cele folosite de ali cercetatori pentru evaluarea t t performanelor metodelor de recunoa tere. Cele trei seturi sunt identice cu cele folosite n t s domeniu, n limita informaiilor furnizate de autorii care le-au utilizat anterior. t Pentru extragerea din NIST SD 19 a imaginilor necesare construirii seturilor 3DNS, 6DNS si 10DNS am elaborat un algoritm care folose te o varianta a transformatei Hough pentru s detectarea liniilor din formularele NIST. Dupa detecia acestor linii, sunt detectate dreptunt ghiurile ce ncadreaza cmpurile dorite. Apoi are loc extragerea propriu-zisa a imaginilor si t se aplica un algoritm de nlaturare automata a posibilelor pari din dreptunghiul delimitator care au fost extrase n acela i timp cu imaginile sirurilor numerice. La nal a fost aplicat s t un proces de inspectare si curaare manuala a imaginilor. Algoritmul de extragere automata a imaginilor din cmpurile formularelor a diminuat considerabil timpul necesar construirii pe cale manuala a celor trei seturi de test. De asemenea, algoritmul este destul de general, putnd adaptat facil pentru alte tipuri de formulare. Dupa ce seturile pentru antrenare si testare au fost create, se trece la prezentarea sis temului de recunoastere. Se ncepe cu antrenarea celor doi clasicatori. Ratele de eroare obinute sunt de 0.86% pentru o cifra, respectiv de 5.35% pentru doua cifre, ceea ce arata ca t RNC reprezinta o buna alegere att pentru clasicatorul dedicat cifrelor, ct si pentru clasi catorul dedicat perechilor de cifre parial suprapuse. t

84

7. CONCLUZII

Folosind cei doi clasicatori si trei metode distincte de seleie a lor n funcie de coninutul t t t imaginii, am implementat sistemul de recunoa tere a sirurilor numerice. s Ratele de recunoa tere obinute sunt: 93.77% pentru siruri de trei cifre (setul 3DNS), s t 92.52% pentru siruri de sase cifre (setul 6DNS) si 92.82% pentru siruri de zece cifre (setul 10DNS). De i RNC nu au fost antrenate cu exemple negative, rezultatele obinute pentru seturile s t de test 3DNS si 6DNS (pentru 10DNS nu exista date de comparaie n literatura) sunt mult t mai bune dect cele obinute anterior n domeniu, cu reele neuronale articiale. Diferenele t t t ajung pna la cteva zeci de procente n cazul reelelor antrenate fara exemple negative. t Utilizarea combinaiei de clasicatori s-a dovedit a ecienta, rata de recunoa tere crest s cnd faa de sistemul ce utilizeaza numai clasicatorul de cifre cu 4.47% pentru setul 3DNS, t respectiv cu 0.61% pentru setul 6DNS. Metoda propusa ofera rate de recunoa tere cu numai cteva procente (3.03% pentru s 3DNS si 4.42% pentru 6DNS) mai mici dect cele mai bune rezultate obinute anterior [44]. t Avnd n vedere ca rezultatele sunt obinute fara a aplica segmentarea si fara antrenare cu t exemple negative, ratele de recunoa tere pot considerate foarte bune. s Concluzia experimentelor efectuate este ca unul din modurile n care rata de recunoa tere s t poate mbunataita este antrenarea clasicatorilor cu imagini mai mari. Acest lucru implica reele neuronale mai mari, antrenarea carora va dura mult mai mult timp. Folosind programele t existente deja, timpul de antrenare s-ar ntinde pe mai multe saptamni. Din acest motiv devine necesara cautarea unor soluii mai rapide. t Pentru ca scrierea tuturor programelor pentru ecare tip de optimizare ar durat multe luni de zile, am ales un mod mai simplu de a testa diferitele moduri de optimizare. Mai exact, am ales o parte reprezentativa a algoritmului reelelor neuronale si am implementat-o n diverse t moduri. Pentru experimentele de optimizare am ales stratul L3 al 1RNC (reeaua neuronala t la nivel de cifra). Acest strat este cel mai mare din ambii clasicatori folosii. t Am efectuat doua tipuri de optimizari folosind arhitectura x86 si apoi folosind GPU-urile. Prima varianta optimizata folosind numai procesorul a implicat rescrierea n C++ a stratului L3 si aranjarea datelor de intrare astfel nct sa e ct mai u or accesibile. S-a obinut o m s t t t bunataire semnicativa faa de algoritmul iniial, de 2.63 ori. Aceasta versiune de optimizare t a fost folosita drept referina pentru celelalte tipuri de optimizari. De i ar fost avantajos din t s prisma marimii cifrelor, nu am folosit drept referina varianta iniiala deoarece este un algoritm t t open source care este scris ntr-un mod didactic, nu avnd ca principiu un timp ct mai mic de rulare. Al doilea motiv pentru care am ales algoritmul C++ optimizat pentru a referina este t ca doream sa compar arhitecturi diferite si nu este normal a compara o varianta neoptimizata scrisa pe o arhitectura cu una optimizata scrisa pe cealalta arhitectura. Pe arhitectura x86 am mai scris si o varianta n limbaj de asamblare ce folose te instruc s iuni SIMD SSE3. Aceasta s-a dovedit a mai rapida ca varianta C++ optimizata, dar nu t am folosit-o ca referina deoarece nu intenionam sa scriu n limbaj de asamblare variantele t t pentru placile grace si s-ar ajuns la comparaii nefondate. t Celalalt tip de arhitectura folosit a fost reprezentat de placi grace, a a numitele GPU-uri. s Am efectuat experimente cu GPU-uri att de la AMD-ATI, ct si de la NVIDIA. Varianta scrisa n BROOK+ pe placa AMD-ATI este foarte lenta deoarece nu este optimizata, documentaia t oferita de AMD-ATI ind mediocra. De asemenea, BROOK+ nu ofera acces de nivel scazut la arhitectura GPU, optimizarile ind lasate exclusiv n seama compilatorului. Din aceste motive

7.3. CONTINUARI POSIBILE

85

si din cauza inexistenei unui debugger, am renunat la a mai optimiza varianta BROOK+. t t GPU-ul de la NVIDIA este mult mai u or de programat pentru a obine performana. Toate s t t decienele ntlnite la BROOK+ nu exista la limbajul CUDA folosit pentru GPU-urile NVIDIA. t Am implementat doua variante de optimizare, cea mai buna atingnd o cre tere a vitezei s de 21.95 ori. n cazul compararii timpului de rulare cu cel obinut de varianta iniiala, open t t source, obinem o cre tere de performana si mai mare, de 58.35 ori. t s t Optimizarile efectuate cu ajutorul GPU-urilor au aratat ca gradul de accelerare poate si reeaua neuronala are dimensiuni mai mari. Accelerarea de 21.95 ori a fost mai mare daca t limitata de dimensiunea mica a reelei simulate. t Pentru a putea implementa ecient o reea neuronala cu ajutorul GPU-urilor, este oblit gatorie cunoa terea si accesul prin software a arhitecturii interne a procesorului grac. n s caz contrar, performanele obinute sunt comparabile (sau chiar mai slabe) cu cele obinute t t t utiliznd CPU-uri. Observaia cea mai importanta este ca placile grace reprezinta cea mai performanta t soluie de optimizare a algoritmilor reelelor neuronale. Algoritmii implementai pe GPU sunt t t t de departe mult mai rapizi dect cei implementai pe CPU, o accelerare de peste 20 de ori t permind antrenarea unor reele mult mai complexe. t t

7.3 Continuari posibile


t t Pentru marirea ratei de recunoa tere trebuie mbunataii clasicatorii: s

1RNC:
adaugarea n setul de antrenare de exemplare ale cifrei 1 cu linie orizontala n partea de jos. n prezent setul de antrenare nu conine niciun astfel de exemplar t si toate cifrele 1 scrise n acest mod sunt recunoscute ca ind 2. Vericarea exis tenei a suciente exemplare din ecare stil de scriere a cifrelor [42] si completarea t setului de antrenare, daca este cazul generarea sau colectarea de exemple negative reantrenarea clasicatorului

2RNC:
marirea dimensiunii imaginilor setului de antrenare de la 21 13 pixeli la 41 29 pixeli ranarea algoritmului de formare automata a perechilor de cifre parial suprapuse t prin implementarea cazurilor particulare 1X si X1 studierea efectului aplicarii deformarilor naintea procesului de unire a cifrelor generarea sau colectarea de exemple negative reantrenarea clasicatorului Reantrenarea clasicatorilor (sau cel puin a unuia dintre ei) cu exemple negative este t t foarte importanta deoarece ar mbunatai drastic acurateea alegerii clasicatorului corect. t Din analiza manuala a erorilor rezulta ca daca totdeauna s-ar alege clasicatorul potrivit

86

7. CONCLUZII

imaginii (RN C1 pentru cifre, respectiv RN C2 pentru perechi de cifre), rata de recunoa tere s ar deveni mai buna dect cea mai buna existenta n momentul de faa n domeniu. t Pentru a putea antrena n timp rezonabil (cteva ore, maxim o zi, si nu saptamni) clasi catorul 2RNC cu imagini cu dimensiunea de 41 29 pixeli este necesara nalizarea imple mentarii pe GPU a algoritmului de antrenare a reelei neuronale. t ntruct exista, de i ntr-un numar destul de redus, si imagini care conin mai mult de doua s t cifre unite, trebuie dezvoltata o metoda de rezolvare a acestui caz. t Algoritmul de extragere a cmpurilor din formulare poate mbunatait pentru a diminua cazurile n care trebuie rezolvate manual. Acest aspect este important numai daca sistemul de clasicare va trebui n viitor sa extraga imagini de test din alte formulare. Binenteles, etapele de extragere a cmpurilor si cea de recunoa tere a informaiilor ar putea concate s t nate si introduse ntr-un sistem unitar care sa proceseze automat formulare cu informaii t numerice. Studierea implementarii clasicatorilor cu SVM (Support Vector Machine) sau alte metode de clasicare. Sunt importante att rata de recuno tere, ct si gradul de paralelism al algorits mului clasicatorului n ideea implementarii pe GPU. O continuare interesanta si foarte utila ar extinderea metodelor de clasicare si la literele scrise de mna. ntruct literele sunt de aproximativ trei ori mai multe dect cifrele, clasi catorul la nivel de litera ar avea de trei ori mai multe ie iri, devenind mai complex. Cel mai s mult va cre te gradul de complexitate al clasicatorului la nivel de doua litere parial supras t puse (sau scrise legat) deoarece numarul claselor va ajunge la 900. Din fericire, gradul acesta de complexitate este potrivit cu capacitatea de procesare a placilor grace, si pro blema recunoa terii literelor si cuvintelor scrise de mna ar reu i sa utilizeze mult mai ecient s s resursele care acum sunt doar parial folosite din cauza dimensiunilor prea mici ale problemei t recunoa terii cifrelor si a perechilor de cifre parial suprapuse. s t Multe din aspectele prezentate se alfa deja n faza de dezvoltare.

Anexa 1 - Formatul sierelor IDX


Acest format este utilizat pentru a stoca tablouri unidimensionale si multidimensionale. Tipul elementelor poate ales din cele mai uzuale tipuri numerice. Elementele dintr-un ier trebuie s sa aiba toate acela i tip. s Fi ierul este structurat n modul urmator: s

cod, numarul de elemente din dimensiunea 0, numarul de elemente din dimensiunea 1, numarul de elemente din dimensiunea 2, ... numarul de elemente din dimensiunea N, date.

Codul este un ntreg pe 4 octei. Primii doi octei sunt nuli. Al treilea octet codica tipul de t t date memorate:

0x08: unsigned byte, 0x09: signed byte, 0x0B: short (2 bytes), 0x0C: int (4 bytes), 0x0D: oat (4 bytes), 0x0E: double (8 bytes).

Al patrulea octet specica numarul de dimensiuni ale tabloului. Datele sunt stocate n forma tablourilor C, cu indicele ultimei dimensiuni schimbndu-se cel mai des. Toate numerele ntregi sunt reprezentate pe patru octei n format MSB (non Intel). t Pentru detalii se poate consulta [40].

Anexa 2 - Formatul sierelor MNIST


Este un caz particular al tipului de ier idx descris n anexa precedenta. Toate numerele s ntregi sunt reprezentate n format MSB rst (cel mai semnicativ octet este stocat la adresa cea mai mica). Cele patru iere din MNIST sunt structurate n felul urmator: s

train-images-idx3-ubyte
offset 0000 0004 0008 0012 0016 0017 ........ xxxx tip 32 bit integer 32 bit integer 32 bit integer 32 bit integer unsigned byte unsigned byte unsigned byte valoare 0x00000803(2051) 60000 28 28 ?? ?? ?? descriere tip date numar de imagini numar de rnduri numar de coloane valoare pixel valoare pixel valoare pixel

train-labels-idx1-ubyte
offset 0000 0004 0008 0009 ........ xxxx tip 32 bit integer 32 bit integer unsigned byte unsigned byte unsigned byte valoare 0x00000801(2049) 60000 ?? ?? ?? descriere tip date numar de elemente eticheta eticheta eticheta

t10k-images-idx3-ubyte
offset 0000 0004 0008 0012 0016 0017 ........ xxxx tip 32 bit integer 32 bit integer 32 bit integer 32 bit integer unsigned byte unsigned byte unsigned byte valoare 0x00000803(2051) 10000 28 28 ?? ?? ?? descriere tip date numar de imagini numar de rnduri numar de coloane valoare pixel valoare pixel valoare pixel

t10k-labels-idx1-ubyte
offset 0000 0004 0008 0009 ........ xxxx tip 32 bit integer 32 bit integer unsigned byte unsigned byte unsigned byte valoare 0x00000801(2049) 10000 ?? ?? ?? descriere tip date numar de elemente eticheta eticheta eticheta

Etichetele au valori ntre 0 si 9, iar pixelii ntre 0 (alb) si 255 (negru).

Bibliograe
[1] Einstein@home - distributed computing. http://einstein.phys.uwm.edu/. [2] Folding@home - distributed computing. http://folding.stanford.edu/. [3] Neuralnet recognition project on the www.codeproject.com/kb/library/neuralnetrecognition.aspx. codeproject page,

[4] Nist special database 19 - nist handprinted forms and characters database. www.nist.gov/srd/nistsd19.htm. [5] MSDN Run-Time Library Reference: _aligned_malloc. http://msdn.microsoft.com/enus/library/8z34s9c6(vs.80).aspx. Visual C++ Developer Center. [6] AMD. Ati radeon hd 4800 series http://ati.amd.com/products/Radeonhd4800/specs.html. gpu specications.

[7] AMD. Brook+. http://ati.amd.com/technology/streamcomputing/AMD-Brookplus.pdf. [8] Sven Behnke. Hierarchical Neural Networks for Image Interpretation, volume LNCS 2766. Springer, 2002. [9] Christopher M. Bishop. Neural Networks for Pattern Recognition. Oxford University Press, 13th edition, 2005. [10] Christopher M. Bishop. Pattern recognition and machine learning. Springer, 2006. [11] R. G. Casey and E. Lecolinet. A survey of methods and strategies in character segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 18(7):690706, July 1996. [12] K Chellapilla, S. Puri, and Simard P. High performance convolutional neural networks for document processing. In International Workshop on Frontiers in Handwriting Recognition, 2006. [13] K Chellapilla, M. Shilman, and Simard P. Combining multiple classiers for faster optical character recognition. In Proc. of the 7th International Workshop on Document Analysis Systems, volume LNCS 3872, pages 358367, 2006. [14] C.E. Cheong, K. Ho-Yon, S. Jang-Won, and J.H. Kim. Handwritten numeral string recognition with stroke grouping. Proc. of the Fifth International Conference on Document Analysis and Recognition (ICDAR99), (1):745748, September 1999.

BIBLIOGRAFIE

91

[15] Dan Ciresan. Analiza si prelucrarea imaginii n vederea procesului de recunoa tere cu s reele neuronale articiale. Technical report, Referat 1, 2004. t [16] 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 Scientic Computing, pages 131140, 2004. [17] Dan Ciresan. Avoiding segmentation in multi-digit numeral string recognition by combining single and two-digit classiers trained without negative examples. Proc. of 10th International Symposium on Symbolic and Numeric Algorithms for Scientic Computing, pages 197203, 2008. [18] 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 490497, 2004. [19] 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 471476, 2006. [20] 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 5360, 2008. [21] L.P. Cordella and M. Vento. Symbol recognition in documents: a collection of techniques? International Journal on Document Analysis and Recognition, 3(2):7388, December 2000. [22] CEDAR DATABASE. http://www.cedar.buffalo.edu/databases/cdrom1/. USPS Ofce of Advanced Technology Database of Handwritten Cities, States, ZIP Codes, Digits, and Alphabetic Characters. [23] Richard O. Duda and Peter E. Hart. Use of the hough transformation to detect lines and curves in pictures. Communications of the ACM, 15:1115, January 1972. [24] G. Dzuba, A. Filatov, and A. Volgunin. Handwritten zip code recognition. Proc. of the 4th International Conference on Document Analysis and Recognition (ICDAR97), 2:766 770, August 1997. [25] Streaming SIMD Extensions. http://en.wikipedia.org/wiki/streaming_simd_ extensions. Wikipedia. [26] Rob Farber. Cuda, supercomputing for the masses. tect/207200659. http://www.ddj.com /archi-

[27] Jurgen Franke. Expanding the performance of polynomial classiers by iterative learning. Advances in Handwriting Recognition, 34:378386, 1999. [28] Kunihiko Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4):193202, April 1980.

92

BIBLIOGRAFIE

[29] T. M. Ha, M. Zimmermann, and H. Bunke. Off-line handwritten numeral string recognition by combining segmentation-based and segmentation-free methods. Journal of Pattern Recognition, 31(3):257272, 1998. [30] T.M. HA, J. Zimmermann, and H. Bunke. Off-line handwritten numeral string recognition by combining segmentation-based and segmentattion-free methods. Pattern Recognition, 31(3):257272, 1998. [31] K. Kim, Y. Chung, J. Kim, and C.Y. Suen. Recognition of unconstrained handwritten numeral strings using decision value generator. Proc. Sixth Intl Conf. Document Analysis and Recognition, pages 1417, 2001. [32] Kye Kyung Kim, Yun Koo Chung, and C.Y. Suen. Post-processing scheme for improving recognition performance of touching handwritten numeral strings. Proc. of the 16th International Conference on Pattern Recognition, 3:327330, November 2002. [33] Kye Kyung Kim, Yun Koo Chung, and C.Y. Suen. Recognition of unconstrained handwritten numeral strings by composite segmentation method. Proc. of the 15th International Conference on Pattern Recognition, 2:594597, September 2002. [34] G. Koch, Heutte L., and Paquet T. Automatic extraction of numerical sequences in handwritten incoming mail documents. Pattern Recognition Letters, 26(8):11181127, June 2005. [35] F. Bortolozzi L. S. Oliveira, R. Sabourin and C. Y. Suen. Impacts of verication on a numeral string recognition system. Pattern Recognition Letters, 27(7):10231031, April 2003. [36] F. Lauer, C.Y. Suen, and G. Bloch. A trainable feature extractor for handwritten digit recognition. Journal of Pattern Recognition, 40(6):18161824, June 2007. [37] Y. LeCun and Y. Bengio. Convolutional networks for images, speech, and time-series. In M. A. Arbib, editor, The Handbook of Brain Theory and Neural Networks. MIT Press, 1995. [38] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):22782324, November 1998. [39] Y. LeCun, O. Matan, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, L. D. Jackel, and H. S. Baird. Handwritten zip code recognition with multilayer networks. In IAPR, editor, Proc. of the International Conference on Pattern Recognition, volume II, pages 3540, Atlantic City, 1990. IEEE. invited paper. [40] Yann LeCun. The http://yann.lecun.com/exdb/mnist/. mnist database of handwritten digits

[41] Kenneth Levenberg. A method for the solution of certain non-linear problems in least squares. The Quarterly of Applied Mathematics, (2):164168, 1944. [42] Z. C. Li and C. Y. Suen. Distinctiveness and similarities of handwritten numerals. Advances in Handwriting Recognition, 34:387396, 1999.

BIBLIOGRAFIE

93

[43] Cheng-Lin Liu and K. Marukawa. Handwritten numeral string recognition: character-level vs string-level classier training. Proc. of the 17th International Conference on Pattern Recognition, 1:405408, August 2004. [44] Cheng-Lin Liu, Hiroshi Sako, and Hiromichi Fujisawa. Effects of classier structures and training regimes on integrated segmentation and recognition of handwritten numeral string. IEEE Trans. Pattern Analysis and Machine Intelligence, 26(11):13951407, November 2004. [45] L.C. Liu, K. Nakashima, H. Sako, and H. Fujisawa. Integrated segmentation and recognition of handwritten numerals: Comparison of classication algorithms. Proc. of the International Workshop on Frontiers in Handwritten Recognition (IWFHR02), 8:303308, 2002. [46] George F. Luger. Articial Intelligence - Structures and strategies for complex problem solving. Addison-Wesley, fth edition, 2005. [47] W. Ohyama M. Shi, T. Wakabayashi and F. Kimura. Mirror image learning for handwritten numeral recognition. Proc. of the Second International Workshop on Machine Learning and Data Mining in Pattern Recognition, LNCS 2123:239248, 2001. [48] Ranzato MarcAurelio, Christopher Poultney, Sumit Chopra, and Yann LeCun. Efcient learning of sparse representations with an energy-based model. In J. Platt et al., editor, Advances in Neural Information Processing Systems (NIPS 2006). MIT Press, 2006. [49] O. Matan, J. Bromley, C. Burges, J. Denker, L. Jackel, Y. LeCun, E Pednault, W. Sattereld, C Stenard, and T. Thompson. Reading handwritten digits: A zip code recognition system. IEEE Computer, 25(7):5963, July 1992. [50] Ofer Matan, Christopher J. C. Burges, Yann LeCun, and John S. Denker. Multi-digit recognition using a space displacement neural network. In J. M. Moody, S. J. Hanson, and R. P. Lippman, editors, Neural Information Processing Systems, volume 4. Morgan Kaufmann Publishers, San Mateo, CA, 1992. [51] Michael Negnevitsky. Articial Intelligence - A Guide to Intelligent Systems. AddisonWesley, second edition, 2005. [52] Intel Software Network. Using streaming simd extensions 3 in algorithms with complex arithmetic. http://cache-www.intel.com/cd/00/00/06/67 /66715_66715.pdf. [53] Daisuke Nishiwaki and Keiji Yamada. A new numeral string recognition method using character touching type verication. Advances in Handwriting Recognition, 34:416425, 1999. [54] NVIDIA. Cuda compute unied device architecture - programming guide. www.nvidia.com. [55] NVIDIA. Cuda home. http://www.nvidia.com/object/cuda_home.html#. [56] NVIDIA. Cuda overview. http://www.isi.edu/ddavis/GPU/Course/Slides/Mono Chrome/02 - Introduction to CUDA.pdf.

94

BIBLIOGRAFIE

[57] L.S. Oliveira and R. Sabourin. Support vector machine for handwritten numerical string recognition. 9th International Workshop on Frontiers in Handwriting Recognition (IWFHR-9), pages 3944, October 2004. [58] L.S. Oliveira, R. Sabourin, F. Bortolozzi, and Suen C.Y. Automatic recognition of handwritten numerical strings: A recognition and verication strategy. IEEE Transaction on Pattern Analysis and Machine Intelligence, 24(11):14381454, November 2002. [59] S. Ouchtati, M. Bedda, and A. Lachouri. Segmentation and recognition of handwritten numeric chains. Journal of Computer Science, 3(4):242248, 2007. [60] MarcAurelio Ranzato, Fu-Jie Huang, Y-Lan Boureau, and Yann LeCun. Unsupervised learning of invariant feature hierarchies with applications to object recognition. In Proc. Computer Vision and Pattern Recognition Conference (CVPR07). IEEE Press, 2007. [61] Stuart J. Russell and Peter Norvig. Articial Intelligence - A Modern Approach. Prentice Hall, second edition, 2003. [62] Stuart C. Shapiro, editor. Encyclopedia of articial intelligence, volume 1. John Wiley & Sons, 1990. [63] Z. Shi, N. Srihari, C. Y. Shin, and A. V. Ramanaprasad. A system for segmentation and recognition of totally unconstrained handwritten numeral strings. Proc. of the 4th International Conference on Document Analysis and Recognition (ICDAR97), 2:445 458, August 1997. [64] Patrice Y. Simard, Dave Steinkraus, and John Platt. Best practices for convolutional neural networks applied to visual document analysis. Proc. of International Conference on Document Analysis and Recognition, pages 958962, 2003. [65] ASPLOS 2008 Tutorial. Gpu architecture and http://www.gpgpu.org/asplos2008/ASPLOS08-4-GPU-architecture.pdf. applications.

[66] Stanford University. Brookgpu. http://graphics.stanford.edu/projects/brookgpu/. [67] Xian Wang, Venu Govindaraju, and Sargur Srihari. Holistic recognition of touching digits. Advances in Handwriting Recognition, 34:359367, 1999. [68] R. Allen Wilkinson, Michael D. Garris, and Jon Geist. Machine-Assisted Human Classication of Segmented Characters for OCR Testing and Training. volume 1906. SPIE, San Jose, 1993. [69] J.F. Wang Y.K.Chen. Segmentation of single- or multiple-touching handwritten numeral string using background and foreground analysis. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):13041317, November 2000. [70] Jie Zhou, Qiang Gan, Adam Krzyzak, and Ghing Y. Suen. Quantum neural network in recognition of handwritten numerals. Advances in Handwriting Recognition, 34:368377, 1999.

S-ar putea să vă placă și