Utilizarea Retelelor Neuronale In Recunoasterea Fetelor Umane

Utilizarea rețelelor neuronale în recunoașterea fețelor umane

CUPRINS

LISTA ABREVIERILOR

ADNOTARE

ANNOTATION

INTRODUCERE

NOȚIUNI TEORETICE DESPRE REȚELELE NEURONALE

Rețele neuronale. Definiții. Elementele de bază ale unei rețele neuronale

Tipuri de rețele neuronale

Antrenarea rețelelor neuronale. Algoritmii folosiți în rețelele neuronale

RECUNOAȘTEREA FORMELOR ÎN IMAGINI. RECUNOAȘTEREA FEȚELOR UMANE

Problema recunoașterii formelor

Tehnici de recunoaștere a imaginilor

Recunoașterea feței

APLICAREA REȚELELOR NEURONALE ÎN RECUNOAȘTEREA FEȚELOR UMANE

Construirea structurii pentru prelucrarea imaginii

Antrenarea rețelei neuronale pe exemple pozitive și negative

Utilizarea rețelei neuronale în cadrul aplicației de recunoaștere a fețelor similare

REZULTATE OBȚINUTE ȘI CONCLUZII

BIBLIOGRAFIE

DECLARAȚIA PRIVIND ASUMAREA RĂSPUNDERII

LISTA ABREVIERILOR

ART – Teoria Rezonanței Adaptive

Algoritmul BFGS – algoritmul lui Broyden–Fletcher–Goldfarb–Shanno

CNN – arhitectură de tip celulă

DIP – prelucrarea digitală a imaginilor

EOF – Empirical Orthogonal Function

FAR – Rata de Falsă Acceptare

FRR – Rata de Falsă Respingere

schema HSV – schema cromatică Hue, Saturation, Value

ICA – Independent component analysis

KCFA – Analiza dependentă de Clasă a trăsăturilor Kernel

KLT – transformata Karhunen-Loewe

LDA – Analiza Discriminatorie liniară

LFA – Local Factor Analysis

LMS – algoritmul Least Mean Square

LVQ – cuantizarea vectorială cu învățare

PCA – principal component analysis, analiza componentelor principale

RNA – Rețeaua neuronală artificială

SOM – hărțile cu autoorganizare

SVD – Singular Value Decomposition

INTRODUCERE

Creierul uman, în analogie cu un calculator, este un sistem de procesare a informațiilor, caracterizat prin complexitate, neliniaritate și paralelism. Creierul uman are capacitatea de a-și organiza activitatea neuronală în așa fel, încât să realizeze activități complexe (recunoașterea formelor, percepție, control motric etc.) mult mai rapid și mai performant decât cel mai puternic super-calculator construit de om la momentul actual.

Creierul reușește în aproximativ 100-200 ms să rezolve o problemă complexă ca cea de recunoaștere a unei persoane, pe când un sistem de calcul necesită mult mai mult timp pentru sarcini mult mai simple.

Rețelele neuronale artificiale au fost studiate de mai mulți ani, cu scopul de a obține performanța similară celei umane în domeniile de recunoaștere a vorbirii și a imaginilor. Un astfel de model este doar prin remeniscențe similar cu rețelele neuronale biologice. Modelele de tipul dat sunt compuse din multe elemente de calcul non-liniare, ce operează în paralel și sunt aranjate după anumite șablonuri. Fiecare element de calucul este numit nod. Fiecărui nod se calculează ponderea, care se aplică asupra elementului de intrare. Ponderea dată și prezintă elementul de învățare, deoarece pe parcursul învățării ea își modifică valoarea, mărind exactitatea sistemului.

Bazele rețelelor neuronale artificiale au fost puse încă la începutul anilor 1970, dar a fost ignorate în ce au urmat. Datorită noilor topologii și algoritmi dezvoltați în ultimii ani în sfera rețelelor neuronale, domeniul respectiv a început să își redobândească interesul savanților.

O aplicație importantă în sisteme în baza rețelelor neuronale o constituie recunoașterea feței umane. Problema dată este împărțită în 2 sarcini: identificarea feței în imagine și identificarea persoanei din ea.

Sistemele robuste de recunoaștere a feței au devenit, în ultima perioadă, din ce în ce mai utile în diferite sfere, cum ar fi: automatizarea clasificării pozelor, rețele sociale, respectarea drepturilor de autor, combaterea criminalității, autentificarea pentru accesul utilizatorului în spațiile fizice și virtuale, ce se presupune că ar asigura o mai mare securitate a acestora.

Cu toate inovațiile făcute în ultimul timp, problema identificării unei persoane (de a lua imaginea feței ca intrare și de a o potrivi cu fotografiile fețelor stocate într-o bază de date) este încă o problemă foarte dificilă. Acest lucru se datorează variabilității chipurilor umane în condiții diferite, cum sunt cele de iluminare, rotire, expresii faciale, performanța camerei de luat vederi, îmbătrânirea, machiajul, utilizarea ochelarilor ș.a. Adesea aceste condiții afectează performanța sistemelor de recunoaștere a feței, în special atunci când sistemele de recunoaștere trebuie să potrivească imagini din baze de date de scară mare.

Această performanță scăzută a sistemelor de recunoaștere a feței împiedică utilizarea în aplicații reale la scară largă (la moment, sistemele implementate sunt limitate la anumite scenarii operaționale), având erorile de Rata de Falsă Acceptare (FAR) și Rata de Falsă Respingere (FRR) relativ înalte pentru a putea prezice cu acuratețea necesară sistemelor industriale.

Cu dezvoltarea domeniului, au apărut numeroase abordări algoritmice noi, ce prezintă îmbunătățiri considerabile față de tehnicile anterioare. Printre acestea se numără: Analiza dependentă de Clasă a trăsăturilor Kernel (KCFA), Tensorfaces, Metode Kernel și Analiza Discriminatorie liniară (LDA). Unele din aceste abordări, cum ar fi KCFA, pun accent pe generalizarea persoanelor nerecunoscute. Tehnica Tensorfaces poate analiza multiple schimbări de conditii (poziție diferită, iluminare variabilă). metoda, considerată tradiționala, LDA, încerca să găsească cei mai potriviți vectori de separare a proiecțiilor, maximizând criteriile lui Fisher.

Scopurile puse în cadrul tezei date sunt:

cercetarea tehnologiei rețelelor neuronale

cercetarea algoritmilor, ce permit recunoașterea facială

cercetarea arhitecturilor sistemelor de recunoaștere a formelor și obiectelor

crearea unui sistem, ce ar fi capabil, prin învățare, să recunoască fețele umane

antrenarea unei rețele neuronale în recunoașterea fețelor umane

utilizarea rețelei antrenate în cadrul unei aplicații de recunoaștere a fețelor.

NOȚIUNI TEORETICE DESPRE REȚELELE NEURONALE

Rețele neuronale. Definiții. Elementele de bază ale unei rețele neuronale

În știința inteligenței artificiale, rețelele neuronale caracterizează niște ansambluri de elemente de procesare simple, puternic interconectate, care operând în paralel, urmăresc să interacționeze cu mediul înconjurător într-un mod asemănător rețelelor neuronale biologice și care posedă capacitatea de a învăța. La fel cum și în natură, funcția rețelei e determinată de legăturile dintre elemente. Ponderile legaturilor dintre unități sunt cele care memorează informația învățată de rețea. Rețeaua se instruiește prin ajustarea acestor ponderi, conform unui algoritm.

Rețeaua neuronală artificială (RNA) a mai fost definită drept un calculator distribuit, masiv paralel, care achiziționează noi cunoștințe pe baza experienței anterioare și le face disponibile pentru utilizarea ulterioară [1].

RNA este complet determinată prin următoarele elemente:

tipul unităților funcționale (elementele de procesare, numite neuroni);

arhitectură (amplasarea unităților funcționale);

algoritm de funcționare (transformarea semnalului de intrare în semnal ieșire);

algoritm de învățare (achiziționarea de către rețea a noilor cunoștințe pe bază de exemple).

În diferite surse bibliografice sunt întîlnite diferite denumiri alternative pentru RNA, cum ar fi:

neurocalcul;

conexionism;

procesare paralelă distribuită;

sisteme adaptive;

rețele cu auto-organizare.

Caracteristicile unei RNA sunt:

reprezentarea distribuită a informației: informația din rețea este stocată în mod distribuit (în structura de ponderi), ceea ce face ca efectul unei anumite intrări asupra ieșirii să depindă de toate ponderile din rețea;

capacitatea de generalizare în cazul unor situații neconținute în datele de instruire. Această caracteristică depinde de numărul de ponderi, adică de dimensiunea rețelei. Se constată că creșterea dimensiunii rețelei duce la o bună memorare a datelor de instruire, dar scad performanțele asupra datelor de testare, ceea ce înseamnă că RNA a pierdut capacitatea de generalizare. Stabilirea numărului optim de neuroni din stratul ascuns, care este o etapă-cheie în proiectarea unei RNA, se poate face alegând valoarea de la care începe să descrească performanța RNA pe setul de testare;

toleranța la zgomot: RNA pot fi instruite, chiar dacă datele sunt afectate de zgomot, deși aceasta reduce performanța lor;

rezistența la distrugerea parțială: datorită reprezentării distribuite a informației, RNA poate opera și în cazul distrugerii unei mici părți a ei;

rapiditatea în calcul: RNA consumă mult timp pentru instruire, dar, odată antrenate, vor calcula rapid ieșirea rețelei pentru o anumită intrare.

Se poate antrena o RNA să realizeze o anumită funcție, prin ajustarea valorilor conexiunilor (ponderilor) dintre elemente. De regulă, RNA sunt ajustate (antrenate), astfel încât un anumit semnal la intrare să implice o anume ieșire (țintă). O asemenea situație este prezentată în figura 1.1. Rețeaua este ajustată pe baza comparării răspunsului cu ținta, pâna ce ieșirea rețelei se potrivește țintei. Pentru a antrena o rețea, în această instruire supervizată, se utilizează mai multe perechi intrare/țintă.

Sunt mai multe criterii de clasificare a modelelor neuronului elementar, care implică:

domeniul de definiție a semnalelor folosite;

natura datelor folosite;

tipul funcției de activare;

prezența memoriei.

O rețea neuronală clasică constă dintr-o secvență de straturi de neuroni, cu conexiuni totale sau aleatorii între neuronii conținuți în straturile succesive. Exemplu de o astfel de structură se poate observa în figura 1.2. Pentru o rețea neuronală vor fi cel puțin două straturi de neuroni, ce au rolul de a comunica cu mediul exterior:

un strat de intrare: care are rolul de a prelua datele de intrare xi, i = 0.. n cu termen bias sau x0 = 1, i = 1.. n fără termen bias. Vectorul x = (x0, x1, …, xn) sau x = (x1, x2, …, xn) va fi numit vector de intrare al rețelei neuronale;

un strat de ieșire: unde se obțin rezultatele yj, j = 1.. m furnizate de rețeaua neuronală. Acesta reprezintă un răspuns la vectorul de intrare, propagat către stratul de ieșire. Vectorul y = (y1, y2, …, ym) se numește vector de ieșire al rețelei neuronale;

straturile, ce nu fac parte din cele de intrare sau ieșire, numite straturi ascunse (hidden layers).

Neuronii din stratul de intrare au întotdeauna drept funcție de activare funcția liniară, rolul lor fiind doar de-a propaga către stratul succesor vectorul de intrare. Respectiv, stratul dat nu exeută procesarea datelor. Neuronii din celelalte straturi pot avea diferite funcții de activare, descrise ulterior, inclusiv în figura 1.6.

Când se spune despre o rețea neuronală că are n straturi, nu se ia în calcul stratul de intrare, ceea ce înseamnă că sunt n -1 straturi ascunse și stratul de ieșire.

Principiul lucrului unui neuron

În figura 1.3 este prezentat schematic lucrul unei rețeli neuronale. Prin x1, x2, …,xN se indică intrările, care, modificate sub acțiunea unei funcții Θ formează un rezultat y. În cadrul unui model aditiv (sumare) se folosește aceeași schemă, unde funcția Θ sumează ponderilie înmulțite cu intrările, aplică anumite reguli de activare și în rezultat se obține un vector de ieșire.

Toți neuronii au aceeași structură, diferențiîndu-se prin funcțiile de activare și ponderile aplicate parametrilor de intrare. Structura unui neuron este prezentată în figura 1.4.

Vectorul de intrare P, cu R elemente, poate fi atât cel de la sursa nemijlocită de intrare, vectorul X, cât și rezultatul prelucrării datelor de către neuronii din stratul precedent. În cadrul neuronului se păstrează un vector de ponderi W, care este aplicat asupra vectroului de instrare P. Intrările individuale p1, p2, …, pR sunt înmulțite cu ponderile w1,1, w1,2, …, w1,R și valorile ponderate se însumeaza. Suma se poate nota Wp, adică produsul scalar al matricei W (cu o linie) și vectorul p.

La fnmulțite cu intrările, aplică anumite reguli de activare și în rezultat se obține un vector de ieșire.

Toți neuronii au aceeași structură, diferențiîndu-se prin funcțiile de activare și ponderile aplicate parametrilor de intrare. Structura unui neuron este prezentată în figura 1.4.

Vectorul de intrare P, cu R elemente, poate fi atât cel de la sursa nemijlocită de intrare, vectorul X, cât și rezultatul prelucrării datelor de către neuronii din stratul precedent. În cadrul neuronului se păstrează un vector de ponderi W, care este aplicat asupra vectroului de instrare P. Intrările individuale p1, p2, …, pR sunt înmulțite cu ponderile w1,1, w1,2, …, w1,R și valorile ponderate se însumeaza. Suma se poate nota Wp, adică produsul scalar al matricei W (cu o linie) și vectorul p.

La fel, în cadrul neuronului poate fi prezentă o variabilă de deplasare, b. Deplasarea b se adună cu intrările ponderate, rezultând argumentul n al funcției de transfer f:

w1,1 p1 + w2,1 p2 +. .. + w1,R pR +b = n. (1. 1)

Funcțiile de transfer servesc drept prag pentru datele de intrare (cu aplicarea ponderilor), pentru a influența vectorul de ieșire Y.

Notația abreviată, utilizată în literatură pentru a defini un neuron, este prezentată în figura 1.5, unde:

R este numărul elementelor din vectorul de intrare;

vectorul de intrare P este reprezentat de bara groasă verticală din stânga, dimensiunile lui p sunt indicate sub simbolul p(R×1);

o constantă 1 intră în neuron și multiplică deplasarea b;

intrarea n în funcția de transfer f, definită în (1.1);

a este ieșirea neuronului.

Funcțiile de transfer în cadrul neuronilor

Neuronul biologic se activează (dă un semnal la ieșire) numai dacă semnalul de intrare depașește un anumit prag. În RNA acest efect este simulat aplicând sumei ponderate a intrărilor n o funcție de transfer f, numită și funcție de activare, pentru a obține semnalul a la ieșire. Patru dintre cele mai frecvent utilizate funcții de transfer sunt prezentate mai jos:

funcția de tip prag;

funcția de transfer liniară;

funcția sigmoidală;

funcția de tip rampă.

Funcțiile de activare ale acestora sunt prezentate în figura 1.6. Pentru fucția sigmoidală mai des este utilizată funcția log-sigmoid. Intrarea poate avea orice valoare între plus și minus infinit, iar răspunsul este în domeniul de la 0 la 1. O altă variantă a acesteia este funcția tan-sigmoid, care permite obținerea valorilor negative ale lui y.

Intrări și straturi

De regula, o RNA are mai multe straturi. Ca urmare, trebuie de făcut diferența între matricea ponderilor legăturilor la intrări și matricele cu ponderile conexiunilor între straturi.

Se vor deosebi:

matricea ponderilor legaturilor la intrări – matricea ponderilor intrării (notată IW);

matricele cu ponderile conexiunilor la ieșirile unui strat – matricea ponderilor stratului (notata LW).

În cazul notațiilor ponderilor, dar și ale altor elemente ale rețelei, de regulă se utilizează următoarea regulă: pentru a identifica numărul stratului se folosește indicele secund (exponent), iar pentru identificarea stratului-destinației se folosește indicele prim.

Straturi multiple de neuroni

O RNA poate avea mai multe straturi, fiecare strat având o matrice a ponderilor W, un vector al deplasărilor b și un vector de ieșire a. RNA-ua din figura 1.7 are R1 intrări, S1 neuroni în primul strat, S2 neuroni în al doilea strat, etc.

O intrare constantă 1 este atașată la deplasarea fiecărui neuron. Ieșirile din fiecare strat intermediar reprezintă intrările pentru stratul următor. Ieșirea din al treilea strat (a3) este ieșirea rețelei.

Rețelele multi-strat sunt foarte eficiente. Rețelele cu „transmitere înainte” au, de obicei, unul sau mai multe straturi ascunse cu neuroni sigmoidali, urmate de un strat cu neuroni liniari. Mai multe straturi de neuroni, cu funcții de transfer neliniare, permit rețelei să învețe relații liniare și neliniare între vectorii de intrare și de ieșire. Stratul liniar de ieșire permite rețelei să producă valori în afara domeniului de la -1 la +1.

Pe de altă parte, dacă se dorește restricționarea ieșirilor unei rețele (de ex., între 0 și 1), atunci stratul de ieșire trebuie să utilizeze o funcție de transfer sigmoidala. De exemplu, o rețea cu două straturi, unde primul strat este sigmoid și al doilea strat este liniar, poate fi antrenat să aproximeze orice funcție (cu un număr finit de discontinuități).

Crearea unei rețele

Prima etapă în antrenarea unei rețele cu transmitere înainte este crearea obiectului „rețea”. Elementele necesare pentru definirea unei noi rețele cu N staturi sunt:

PR – matrice Rx2 cu valorile minime și maxime ale celor R elemente de la intrare;

Si – dimensiunea stratului i, pentru cele Nl straturi;

Tfi – funcția de transfer a stratului i;

BTf – funcția de antrenare a rețelei;

BLf – funcția de instruire backpropagation a ponderilor/deplasărilor rețelei;

Pf – funcția de performanță.

Structura unei rețele este greu de definit din timp. Cea mai bună metodă, în cazu dat, este de a experiemnta cu numărul de straturi și noduri în fiecare strat ascuns.

Inițializarea ponderilor

Înaintea antrenării unei RNA, este necesar de inițializat ponderile și deplasările. Inițializarea nodurilor are loc concomitent, obligatoriu cu valori aleatorii (random). Se poate de creat o funcție, care consideră obiectul „rețea” ca intrare și returnează același obiect, dar cu toate ponderile și deplasările inițializate. În cazul inițializării nealeatorii, unde 2 noduri din același nivel au valori similare, în timpul învățării ele vor continua să posede aceleași valori și este riscul să nu găsim valorile optimale pentru rețea.

La fel, pentru fiecare nod este definită o deplasare. Valoarea ei este determinată de către importanța nodului în cauză. Cu cît este mai mare, cu atît valoarea de intrare pentru acest nod este mai neimportantă. Din start deplasările sunt egale cu 1.

Antrenarea

După ce ponderile rețelei și deplasările au fost inițializate, rețeaua este pregatită pentru a fi antrenată. Procesul de antrenare necesită un set de valori privind comportarea rețelei: intrarea în rețea P și ținta (ieșirea) y. În timpul antrenării, ponderile rețelei și deplasările sunt ajustate iterativ, pentru a minimiza funcția de performanță a rețelei. Funcția implicită de performanță pentru rețelele cu transmitere înainte este eroarea medie pătratică dintre ieșirea rețelei a și ținta y. Se consideră eroarea pătratică dintre ieșirea rețelei și ținta impusă:

(1.2)

unde S3 este numărul neuronilor din stratul de ieșire. E = f (a3(1), a3(2), …, a3(S3)) se numește suprafață de eroare, prin analogie cu E = f(x, y); unde a = f (w, b), deci se poate de spus că E = f (w, b). Valorile nodurilor rețelei, rezultante în urmă învățării, sunt acelea, ce aveau eroarea minimă. Ajustările la ponderi și deplasări sunt efectuate utilizând metoda gradientului descendent.

Utilizarea rețelei antrenate

După ce rețeaua a fost antrenată, ea poate fi folosită pentru rezolvarea diferitor tipuri de probleme. Pentru aceasta, valoarea obicetului, sub forma unui vector P este dată drept paramentru de intrare. La ieșire se returnează un vector Y, ce prezice apartenența obiectului la un anumit grup.

În cazul sistemelor de recunoaștere se întîlnesc 2 tipuri de erori, ce un sistem de clasificare le poate face: FAR și FRR.

Rata de Falsă Acceptare (FAR) este probabilitatea ca sistemul să clasifice în mod incorect o intrare drept una pozitivă, în timp ce ea era defapt din altă categorie.

Rata de Falsă Respingere (FRR) este probabilitatea ca sistemele să respingă în mod eronat o intrare poztivă.

Aceste 2 tipuri de erori sunt des antagoniste, deoarece în cazul în care indicăm că pragul de acceptare trebuie să fie mai mare ca cel curent, FAR va scădea, în timp ce FRR se va majora. În timp ce, în cazul în care micșorăm pragul dat, va scădea FRR, totodată mărindu-se FAR.

Compromisul în cazul dat este bazat pe specificațiile sistemului și necesitățile acestuia – să fie o certitudine mai mare în exemplele selectate sau să fie cuprinse cît mai multe exemple posibil adevărate.

Tipuri de probleme rezolvabile cu RNA

clasificare;

Problemele de tipul dat au drept scop gruparea vectorilor de intrare în clase, iar domeniu de ieșire este unul discret. Drept exemplu ar putea servi recunoașterea formelor, operații de telecom (decodare, demodulare, regenerare semnale), luare de decizii;

aproximare de funcții;

Problemele clasei date au o interpolare de perechi intrare-ieșire, iar domeniu de ieșire este unul continuu. Exemple pentru această categorie ar putea fi modelarea directă/inversă a unui sistem necunoscut sau predicție a unui rezultat.

optimizare.

Problemele din această categorie se rezumă la găsirea punctului de minim/maxim al unei funcții. Aceasta se obține prin căutarea unui set de ponderi pentru care diferența dintre ieșirea dorită și ieșirea rețelei este minimă, în sens statistic. O astfel de problemă este cea al comis-voiajorului .

Tipuri de rețele neuronale

Există numeroase modalități de interconectare a neuronilor elementari, care conduc la o evoluție specifică a rețelei și care se utilizează în cele mai diverse aplicații.

În general, neuronii elementari sunt dispuși într-un șir unidimensional în cadrul unui strat. Unele arhitecturi, de exemplu rețelele celulare și cele cu autoorganizare de tip Kohonen, pot avea straturi bidimensionale.

Din considerente legate de volumul de calcul necesar, dar și ca urmare a existenței unor rezultate teoretice riguroase, rareori se utilizează în practică rețele neurale cu mai mult de 3 straturi ascunse. Excepții notabile sunt rețeaua de tip counter-propagation, precum și unele variante de rețele auto-asociative.

Clasificarea rețelelor neuronale

Se poate de creat o clasificare ale rețelelor neuronale, în dependență de tip, scop și metodă. În figura 1.9 au fost generaliate tipurile de rețele, având la bază cercetările și clasificările din [20-26].

O problemă fundamentală o constituie modalitatea de a alege arhitectura adecvată pentru o aplicație dată. Lipsa unor teoreme constructive care să precizeze tipul rețelei și numărul de neuroni elementari împreună cu modalitatea de interconectare dintre aceștia în vederea rezolvării unei anumite sarcini constituie în continuare una dintre principalele limitări ale utilizării rețelelor neuronale și totodată câmpul unor intense cercetări. Totuși există unele aplicații pentru care au fost formulate condiții minimale referitoare la arhitectură.

Figura 1.9 Clasificare rețelelor neuronale

Pot fi identificate 2 clase distincte de arhitecturi:

cu propagare a informației numai dinspre intrare spre ieșire (rețele de tip feed-forward). O particularitate de arhitectură a acestora o constituie posibilitatea de a identifica seturi de neuroni elementari grupați straturi. O variantă utilă în multe aplicații constă în separarea neuronilor din straturile ascunse în module distincte și restricționarea structurii de interconexiuni;

rețele recurente (cu reacție). Au fost introduse recent și arhitecturi „mixte", al căror aspect global este feed-forward, dar care prezintă reacție locală. În cazul acestui tip de arhitectură semnalul de reacție poate proveni de la stratul de ieșire, respectiv de la unul sau mai multe straturi ascunse. Modalitatea de interconectare poate fi diversă, cum ar fi interconectarea neuronilor dintr-un strat numai spre stratul următor sau rețele complet interconectate (recurente). Aici mai pot fi observate rețele ce permit și conexiuni între neuroni aflați în straturi neânvecinate, sau rețelele feed-forward la care apar legături de reacție între neuronii de pe același strat (rețele cu inhibiție laterală) și rețelele la care legăturile de reacție sunt prezente numai între neuronii elementari strict învecinați (rețele neurale celulare).

În figura 1.10 se indică arhitecturile cel mai des întâlnite, iar în figura 1.11 – o serie de exemple mai rar folosite.

Circuite local recurente

În continuare se va vorbi despre cele mai des folosite tipuri de rețele.

O clasă specială de circuite o constituie cele local recurente, la care reacția este prezentă la nivelul modelului considerat pentru neuronii elementari, care sunt interconectați apoi în rețele feed-forward obișnuite. În figura 1.12 sunt prezentate schemele cel mai des utilizate ale nodului.

Rețea unistratificată

În figura 1.13 se arată o RNA avand un singur strat, R intrări și S neuroni. În această rețea, fiecare element din vectorul intrărilor P este conectat la intrarea fiecărui neuron, prin matricea ponderilor W:

Se observă că primul indice al unui element din matricea W indică cărui neuron îi este atribuită ponderea, iar al 2-lea indice – elementul din vectorul intrărilor căruia i se aplică ponderile.

Astfel, indicii lui w1,2 arata sensul semnalului: de la al doilea element al vectorului de intrare, către primul neuron. Neuronul i are un sumator Σ care adună intrările sale ponderate și deplasarea, rezultând ieșirea scalară n(i). Toate mărimile n(i) formează un vector n, cu S elemente. Ieșirile din stratul de neuroni formează un vector a, a cărui expresie se dă în partea de jos a figurii 1.13.

Perceptronul multistrat

Rețelele neuronale feed-forward cu funcții de activare treaptă poartă denumirea de rețele perceptron. Perceptronul poate avea unul sau mai multe straturi ascunse. O structură de tipul dat e prezentată în figura 1.13.

Structura generală arată în felul următor:

un strat de intrare;

unul sau mai multe straturi ascunse / intermediare;

un strat de ieșire.

Perceptronul multistrat pemite clasificarea în mai mult de două clase cu condiția că acestea să fie liniar separabile. Din punct de vedere al arhitecturii, perceptronul multiplu este o rețea care conține un nivel de m unități funcționale total conectate cu cele N+1 unități de intrare.

Ponderile conexiunilor dintre unitățile de intrare și cele funționale (care sunt totodată unități de ieșire) pot fi organizate într-o matrice W, cu M lini și N+1 coloane (pentru a cuprinde și unitatea fictivă asociată pragului unităților funcționale).

Perceptron multistrat cu 2 straturi ascune

Exemplu de astfel de perceptron este prezentat în figura 1.14. În cadrul acestui model calculele se realizeazã numai în neuronii din straturile ascunse și din stratul de ieșire. Semnalele de intrare sunt propagate înainte succesiv prin straturile rețelei. Rețelele neuronale comerciale au de obicei unul sau două straturi ascunse. Fiecare strat poate conține 10-1000 neuroni. Rețele neuronale experimentale pot avea 3 sau 4 straturi ascunse, cu milioane de neuroni. Aceasta se datorează costului computațional foarte ridicat pentru un număr atît de mare de noduri.

Se pot deosebi 2 categorii de tehnici de construire a astfel de rețele:

tehnici de tip pruning, în care se pleacă de la sisteme de dimensiuni suficient de mari și se elimină pe rând neuronii elementari și legăturile care se dovedesc neimportante (cele care nu se modifică semnificativ în procesul de învățare). Decizia de eliminare este de regulă bazată pe un calcul de senzitivitate al funcției de eroare în raport cu diversele ponderi ale sistemului. Un exemplu binecunoscut îl reprezintă metoda Optimal Brain Damage;

tehnici de tip learn and grow, în care se pleacă de la rețele de dimensiuni reduse și se adaugă neuroni și conexiuni până când performanțele sistemului sunt suficient de bune. Ca exemple se poate cita algoritmul cascade-correlation și metoda denumită projection pursuit.

Antrenarea rețelelor neuronale. Algoritmii folosiți în rețelele neuronale

Unul dintre aspectele care diferențiază rețelele neurale față de alte sisteme de prelucrare a informației îl constituie capacitatea acestora de a învăța în urma interacțiunii cu mediul înconjurător și, ca urmare, de a-și îmbunătăți în timp performanțele (conform unui criteriu precizat). Deși nu există o definiție general acceptată a procesului de învățare, mai jos este prezentată una din cele mai răspândite:

Învățarea este un proces prin care parametrii unei rețele neurale se adaptează în urma interacțiunii continue cu mediul de lucru. Constă în procesul de modificare a tăriilor sinaptice ca răspuns la vectorul de intrare prezentat la stratul de intrare al rețelei neuronale (uneori și a vectorului țintă prezentat la stratul de ieșire al rețelei neuronale), în scopul configurării rețelei neuronale pentru a executa acțiunea dorită.

Tipul mecanismului de învățare este determinat de modalitatea concretă prin care se produce ajustarea valorilor parametrilor sistemului. Instruirea poate fi și nesupervizată, prin analiza statistică a vectorilor de intrare.

Algoritm de instruire este modul în care se modifică ponderile nodurilor în cadrul rețelei. Regula de bază este:

Wkj(n+1) = Wkj(n) + ΔWkj(n), (1.3)

unde:

k- indicele stratului de neuroni;

j – indicele neuronului pe stratul k;

n – momentul de timp;

ΔWkj(n) – funția propriu zisă (algoritm de instruire).

După ce ponderile rețelei și deplasările au fost inițializate, rețeaua este pregătită pentru a fi antrenată. Procesul de antrenare necesită un set de valori privind comportarea rețelei: intrarea în rețea P și ținta (ieșirea) y. În timpul antrenării, ponderile rețelei și deplasările sunt ajustate iterativ pentru a minimiza funcția de performanță a rețelei. Funcția implicită de performanță pentru rețelele cu transmitere înainte este eroarea medie pătratică – diferența dintre ieșirea rețelei a și valoarea reală ce îi corespunde y.

Regulă de instruire este o formulă matematică care specifică cum se modifică parametrii RNA, pentru a atinge obiectivul. Printre astfel de reguli mai des se întîlnesc:

regula hebbiană;

regula de instruire competitivă;

regula de tip Boltzmann.

După alegerea funcției se purcede nemijlocit la antrenarea rețelei. Generalizând, algortmul de procesare are etapele ce urmează:

inițializarea ponderilor;

calculul ețirilor neuronilor;

calculul Δw cu care se modifică fiecare pondere;

modificarea ponderilor, soluționînd problema de miniizare;

recalcularea ieșirilor neuronilor – salt la etapa 2.

Criterii de clasificare a algoritmilor de învățare

Există mai multe criterii în funcție de care se pot clasifica algoritmii de învățare:

În funcție de disponibilitatea răspunsului dorit la ieșirea rețelei neurale:

învățare supravegheată;

învățare nesupravegheată;

învățare folosind un punct „critic”.

Învățarea supravegheată (supervised learning) presupune existența în orice moment a unei valori dorite (target) a fiecărui neuron din stratul de ieșire al rețelei. Sistemului i se furnizează seturi de perechi intrare-ieșire dorită, cu ajutorul cărora se calculează mărimi de eroare în funcție de diferența dintre valoarea reală a ieșirii și cea dorită, pe baza cărora se ajustează valorile parametrilor rețelei.

Exemple tipice:

pentru rețele feed-forward: algoritmul LMS (Least Mean Square), clasa de algoritmi backpropagation (cu propagare inversă a erorii), cuantizarea vectorială cu învățare (LVQ);

pentru rețele recurente: backpropagation-through-time, realtime recurrent learning.

În învățarea nesupravegheată (unsupervised learning) rețeaua extrage singură anumite caracteristici importante ale datelor de intrare, formând reprezentări interne distincte ale acestora. Rețeaua nu beneficiază de seturi de ieșiri dorite, în schimb se utilizează un gen de „competiție” între neuronii elementari care are ca efect modificarea conexiunilor aferente numai neuronului care „câștigă” întrecerea, restul legăturilor rămânând neafectate.

Exemple din această categorie sunt:

a) pentru rețele feed-forward: counterpropagation;

b) pentru rețele recurente: algoritmul propus de Kohonen pentru hărțile cu autoorganizare (SOM), algoritmul Hebb, Teoria Rezonanței Adaptive (ART) elaborate de Grossberg. În unele modele apare un parametru denumit intuitiv „conștiință” care intră în funcțiune atunci când unul dintre neuroni câștigă prea des competiția.

Învățarea folosind un „critic” (reinforcement learning) este denumită uneori și cu recompensă/pedeapsă (reward/punishment). În această situație rețeaua nu beneficiază de un semnal dorit, ca în cazul învățării supravegheate, ci de un semnal care oferă o informație calitativă ilustrând cât de bine funcționează sistemul (informația este binară, de tipul „răspunsul este bun/greșit”, însă nu se indică și cât de bun/greșit). Algoritmii ce aparțin acestei categorii sunt inspirați într-o mai mare măsură de observații experimentale făcute pe animale și, în esență, funcționează după următorul principiu: dacă urmarea unei anumite acțiuni întreprinse de un sistem capabil să învețe are un efect favorabil, tendința de a produce acțiunea respectivă este încurajată, în caz contrar este inhibată.

În general algoritmii de învățare respectă următoarea regulă: vectorul multidimensional al ponderilor aferente unui neuron elementar Wi se modifică proporțional cu produsul scalar dintre vectorul mărimilor de intrare X și un așa-numit „vector de învățare” R, reprezentat în general de o funcție dependentă de Wi, x și, eventual, de vectorul ieșirilor dorite d:

r = r (W, x, d), (1.4)

Valoarea ponderilor se modifică după o relație de forma:

∆W =η r x, (1.5)

unde η este o constantă reală, de obicei subunitară, denumită constantă de învățare.

În funcție de existența unui model analitic:

algoritmi parametrici;

algoritmi neparametrici.

Algoritmii parametrici presupun că procesul analizat poate fi modelat sub forma unei expresii matematice, având o formă cunoscută, dependente de un număr de parametri. Scopul urmărit în acest caz constă în estimarea cât mai exactă a valorilor acestor parametri pe baza datelor intrare-ieșire disponibile. În cazul în care modelul considerat nu este adecvat, calitatea aproximării poate fi nesatisfăcătoare.

În această situație sunt de preferat algoritmii neparametrici, care nu impun constrângeri de modelare. Astfel de algoritmi sunt capabili să aproximeze orice dependență intrare-ieșire în virtutea unei capacități de aproximare universală pe care o posedă unii dintre aceștia.

În funcție de tipul aplicației pentru care sunt utilizați:

regresie;

clasificare.

Categoria cea mai răspândită de aplicații în care sunt utilizate rețelele neurale este cea de aproximare funcțională, în care se modelează dependențe dintre un set de variabile de intrare și una sau mai multe variabile de ieșire. Setul de parametri care „traduc” această dependență este constituit din valorile interconexiunilor dintre neuroni, denumite de regulă ponderi sau sinapse. În mod mai general, o rețea neurală poate fi privită ca mod de a stabili forma acestei dependențe, împreună cu modalitatea concretă de a fixa valorile parametrilor corespunzători folosind baza de date disponibilă.

Se pot distinge 2 categorii majore de aplicații:

în clasificare se urmărește alocarea datelor aplicate la intrarea rețelei a uneia dintre „etichetele” corespunzătoare unui set discret de categorii avute la dispoziție (de exemplu, unei imagini reprezentând un caracter scris de mână i se asociază una dintre cele 26 de litere ale alfabetului)e;

în cazul în care ieșirea rețelei poate avea valori continue se întâlnește o problemă de regresie, al cărei scop este aproximarea unei funcții de regresie (definită printr-o operație de mediere aritmetică a unei mărimi statistice specifice). Regresia liniară este importantă în diferite domenii, cum ar fi cel financiar sau statistic, în care rezultatele obținute sunt nesatisfăcătoare, fiind necesară introducerea unui model neliniar.

În alegerea unui algoritm de învățare trebuie de avut în vedere și unele considerente de ordin practic, precum necesarul de memorie, viteza de convergență, complexitatea calculelor, comportarea în faza de testare. În tabelul 2.1 se prezintă caracteristicile principalilor algoritmi de învățare, descrise mai detaliat în continuare.

Tabelul 1.1 Principalele tipuri de algoritmi de învățare

Algoritmii frecvent utilizați

Toți algoritmii prezentați în tabelul 1.1 utilizează gradientul funcției de performanță E pentru a determina modul de ajustare a ponderilor cu scopul de a minimiza performanța. Gradientul se determină folosind propagare inversă, care înseamnă efectuarea calculelor în sens invers prin rețea.

Cea mai simplă implementare a instruirii prin propagare inversă actualizează ponderile rețelei și deplasările în direcția în care funcția de performanță scade cel mai rapid, adică în direcția gradientului negativ. O iterație a acestui algoritm poate fi scrisă astfel:

xk+1 = xk – αkgk, , (1.6)

unde xk este un vector cu ponderi și deplasări curente, gk este gradientul curent, iar αk este rata de instruire.

Des este folosită metoda gradientului negativ. Astfel, pentru funcția F(x) = F(x1, …xn) gradientul se calculează conform formulei:

G = grad F = ∇ F =, (1.7)

unde vectorul rezultant indică direcția celei mai mari creșteri. După fiecare punct nou determinat se ia direcția de căutare în sens contrar gradientului, adică în sensul dat de -∇F, deci pe direcția celei mai rapide descreșteri. Avansul pe această direcție se va face atâta timp, cât valoarea funcției scade, după care se va avansa pe noua orientare a gradientului, ș.a.m.d., până la atingerea minimului. O imagine a modului în care actioneaza această metoda pentru o funcție de două variabile este arată în figura 1.14

O astfel de instruire se numește instruire prin minimizarea erorii. Minimizarea erorii este aplicată în toți algoritmii de instruire supervizată. Eroarea este diferența între rezultatul aplicării transformărilor rețelei neuronale asupra intrării și rezultatul real corespunzător acestei intrări. Formula după care este calcultă eroarea este:

E(n) = , (1.8)

unde:

n – numărul iterației

M – numărul de neuroni în stratul de ieșire

k – indicele neuronului de pe stratul de ieșire

ek(n) – eroarea neuronuliu k la iterația n

Pentru neuronul k eroarea se calculează conform formulei:

ek(n) = dk(n) – yk(n), (1.9)

unde dk(n) este valoarea reală, iar yk(n) cea obținută în urma calculelor rețelei la momentul de timp n.

Antrenarea în baza gradientului

Pentru a antrena o rețea în baza gradientului, se folosețte următoarea regulă:

(1.10)

unde η este rata de instruire, de regulă mai mică ca 1.

Algoritmul urmat în cazul antrenării în baza gradientului constă din pașii:

se inițializează ponderile wkj și bias cu valori mici;

se calculează ieșirile neuronilor;

se calculează eroarea ek;

se calculează ∇wkj cu care se modifică fiecare pondere;

se modifică ponderile conform formulei:

wkj(n+1) = wkj(n) + ∇wkj(n), (1.11);

se trece din nou la pasul 2 și se recalculează ieșirele neuronilor pentru itrerația următoare.

Există două modalități în care poate fi implementat algoritmul gradientului descendent: modul incremental și modul grupat. În modul incremental gradientul este calculat și ponderile sunt actualizate după ce fiecare intrare este aplicată rețelei. În modul grupat, toate intrările sunt aplicate rețelei înainte ca ponderile să fie actualizate. Sunt mai multe variații ale antrenări grupate.

Antrenarea grupată.

În modul grupat, ponderile și deplasările sunt actualizate numai după ce întregul set de antrenare a fost aplicat rețelei. Gradienții calculați la fiecare pas de antrenare sunt cumulați pentru a determina variațiile ponderilor și deplasărilor.

Antrenarea grupată cu gradient descendent.

În cadrul acesteia rata de instruire se înmulțește cu negativul gradientului pentru a determina modificările ponderilor și deplasărilor. Creșterea ratei de instruire duce la mărirea pasului. Dacă rata de instruire este prea mare, algoritmul devine instabil. Dacă rata de instruire este prea mică, algoritmul necesită mult timp pentru a deveni convergent.

Antrenarea grupată cu gradient descendent și momentum

“Momentum” permite rețelei să răspundă nu numai la gradientul local, dar și evoluțiilor recente în suprafață de eroare. Acționând ca un filtru trece-jos, momentum permite rețelei să ignore abaterile minore din suprafața de eroare. Fără momentum, o rețea se poate bloca într-un minim local. Având momentum, rețeaua poate ocoli asemenea minime. În cadrul la momentum se iau variațiile ponderilor egale cu suma unei părți a ultimei variații a ponderii, cu noua variație furnizată de regula propagării inverse. Mărimea ultimei modificări a ponderii este mediată de o constantă momentum, care poate fi orice numar între 0 și 1. Atunci când constanta momentum este 0, variația ponderii provine numai din gradient. Dacă constanta este egală cu 1, noua modificare a ponderii se ia egală cu ultima variație, gradientul fiind ignorat. Gradientul este calculat prin adunarea gradienților inregistrați la fiecare pereche de antrenare, iar ponderile și deplasările sunt doar reactualizate după ce toate perechile de antrenare au fost prezentate. Dacă noua valoare a funcției de performanță, la o iterație dată, depășește funcția de performanță la iterația precedentă cu mai mult decât un raport predefinit, noile ponderi și deplasări sunt utilizate în loc.

Antrenarea mai rapidă

Algoritmii de mai sus sunt deseori prea lenți pentru problemele practice. În lucrare au fost analizați câțiva algoritmi de înaltă performanță, care pot converge de la zece până la o sută de ori mai rapid decât algoritmii prezentați anterior. Algoritmii dați sunt complecși și nu este recomandată programarea desinestătătoare a acestora, ci folosirea bibliotecilor existente. Algortmii dați se împart în două categorii. Prima categorie folosește tehnici euristice, care au fost elaborate pe baza analizei performanței algoritmului standard de gradient descendent. O modificare euristică este tehnica momentum. În această categorie se prezintă două tehnici euristice: propagarea inversă cu rata de instruire variabilă și propagarea inversă flexibilă. A doua categorie de algoritmi rapizi folosește tehnici standard de optimizare numerică: gradientul conjugat, quasi-Newton, și Levenberg-Marquardt.

Tehnici euristice

Rata variabilă de instruire.

În antrenarea standard cu descreștere rapida, rata de instruire (α, lr) este constantă. O rată de instruire adaptivă va încerca să mențină mărimea pasului de instruire cât de mare posibilă, în timp ce menține și instruirea stabilă.

Adaptarea ratei de instruire necesită unele modificări în procedura de antrenare folosită de anterior. Mai întâi se calculează ieșirea inițială a rețelei și eroarea. La fiecare pas se calculează noile ponderi și deplasări folosind rata de instruire curentă. Apoi sunt calculate noile ieșiri și erori. Ca și la „momentum”, dacă noua eroare depășește eroarea precedentă cu mai mult de un raport prestabilit, se v-a renunța la noile ponderi și deplasări și rata de instruire este diminuată. În caz contrar, se păstrează noile ponderi, etc. Dacă noua eroare este mai mică decât eroarea precedentă, rata de instruire se mărește. Acest procedeu mărește rata de instruire, dar numai în măsura în care rețeaua poate fi instruită fără creșterea erorii. Astfel, se obține o rată de instruire cuasi-optimă pentru condițiile locale.

Propagarea inversă flexibilă.

Rețelele multi-strat folosesc de obicei – în straturile ascunse – funcții de transfer sigmoidale. Aceste funcții sunt numite și funcții de „comprimare”, pentru că ele comprimă un domeniu infinit de la intrare într-un domeniu finit la ieșire. Funcțiile sigmoidale sunt caracterizate de faptul că panta lor trebuie să fie zero, când intrarea este mare. Aceasta duce la apariția unei probleme, când se folosește „coborârea cea mai rapidă” la antrenarea unei rețele multi-strat cu funcții sigmoidale, din motiv că gradientul este foarte mic, sunt provoacate mici modificări ale valorilor ponderilor și deplasărilor, chiar când acestea sunt departe de valorile lor optimale.

Scopul algoritmului de antrenare prin propagare inversă flexibilă este acela de a elimina efectele date cauzate de derivatele parțiale. Se foloșeste numai semnul derivatei pentru a afla direcția actualizării ponderii; mărimea derivatei nu are efect asupra actualizării ponderii. Mărimea variației ponderii se determină cu o valoare de actualizare separată. Valoarea actualizării pentru fiecare pondere și deplasare se amplifică cu un factor delt-inc dacă derivata funcției de performanță în raport cu acea pondere are același semn în două iterații successive. Valoarea actualizată se micșorează cu factorul delt-dec când derivata în raport cu acea pondere își schimbă semnul față de iterația anterioară. Dacă derivata are valoarea zero, atunci valoarea actualizată rămâne aceeași. Când ponderile oscilează, variația ponderii va fi redusă. Dacă ponderea continuă să se modifice în aceeași direcție pe parcursul mai multor iterații, atunci mărimea variației ponderii se va amplifica.

Algoritmii cu gradient conjugat

Algoritmul de baza al propagării inverse ajustează ponderile în direcția celei mai abrupte descreșteri (care este gradientul negativ). Algoritmii cu gradient conjugat realizează o căutare în lungul direcțiilor „conjugate”, care duce la o convergență mai rapidă decât direcțiile celor mai abrupte descreșteri. La majoritatea algoritmilor cu gradient conjugat, mărimea pasului este ajustată la fiecare iterație. Se face o căutare în lungul direcției gradientului conjugat, pentru a determina mărimea pasului care minimizează funcția de performanță în lungul acelei linii. Din această categorie de algoritmi fac parte:

actualizarea Fletcher-Reeves;

actualizarea Polak-Ribiere;

restartul Powell-Beale.

Algoritmul Quasi-Newton

Algoritmul BFGS

Metoda lui Newton este o alternativă la metodele cu gradient conjugat pentru optimizare rapidă. Relația de bază în metoda lui Newton este:

xk+1 =xk-Ak-1gk , (1.12)

unde Ak este matricea Hessiana (cu derivatele secunde ale funcției de performanță în raport cu valorile curente ale ponderilor și deplasărilor). Metoda lui Newton converge deseori mai rapid decât metodele cu gradient conjugat. Din păcate, este complicat și costisitor să se calculeze matricea Hessiana pentru RNA cu transmitere înainte. Exista o categorie de algoritmi bazați pe metoda lui Newton, dar care nu necesită calcularea derivatelor secundare. Aceste metode sunt numite quasi-Newton. La fiecare iterație ele actualizează o matrice Hessiană aproximativă. Actualizarea este calculata ca o funcție de gradient.

Algoritmul BFGS necesită mai multe calcule în fiecare iterație și mai multa memorie decat metodele cu gradient conjugat, deși în general converge în mai puține iterații. Hessianul aproximativ trebuie stocat, iar dimensiunile sale sunt n× n, unde n este egal cu numărul ponderilor și deplasărilor din rețea. În cazul rețelelor foarte mari se recomandă utilizarea unui algoritm cu gradient conjugat. Totuși, pentru rețelele mai mici, funcția dată poate fi o funcție de antrenare eficientă.

Algoritmul Levenbert-Marquardt

La fel ca la metodele quasi-Newton, algoritmul Levenberg-Marquardt a fost proiectat pentru a atinge o viteză de antrenare de ordinul doi, fără a fi necesară calcularea matricei Hessiene. Când funcția de performanță are forma unei sume de pătrate (caracteristic pentru rețelele cu transmitere înainte), atunci matricea Hessiană poate fi aproximată astfel: H=JTJ, iar gradientul poate fi calculat astfel: g = JTe, unde J este matricea Jacobiană care conține primele derivate ale erorilor rețelei (a funcției de performanță) în raport cu ponderile și deplasările, iar e este vectorul erorilor rețelei. Algoritmul Levenberg-Marquardt folosește această aproximare pentru matricea Hessiană, într-o recurență asemănătoare cu metoda Newton:

xk+1 = xk – [JTJ + μI]-1JTe, (1.13)

Când scalarul μ este zero, aceasta este chiar metoda Newton, folosind matricea Hessiană aproximativă. Când μ este mare, aceasta devine „gradientul descendent”, cu un pas mic. μ este micșorat după fiecare pas realizat cu succes (care face o reducere în funcția de performanță) și este mărit doar când în urma pasului crește funcția de performanță. În acest fel, funcția de performanță va fi intotdeauna redusă la fiecare iterație a algoritmului.

Instruire nesupervizată

Algoritmii de mai sus pot fi utilizați pentru antrenarea supervizată a rețelelor. În cazul problemelor ce necesită învățare nesupervizată, cel mai des se folosește instruirea competitivă.

Instruirea competitivă

Antrenarea de tipul dat are la bază principiul concurenței. Unul sau mai mulți neuroni concurează pentru a fi activați. Activarea maximă este criteriul după care se conduce. Sistemul neuronal competitiv este o rețea autoasociativă, ce se bazează pe conexiuni laterale inhibitoare wij<0, i≠ j și o singură conexiune de răspuns wij> 0.

Regula de instruire în cazul dat va arăta astfel:

(1.14)

Având vectorul de intrare xi, câștigă neuronul, al cărui vector de ponderi w este cel mai apropiat de xi.

Algoritmul de instruire va arăta în felul următor:

se inițializează ponderile wkj și bias cu valori mici;

se caută neuronul câștgător, ce are o distanță euclidiană minimă;

se modifică ponderile conform formulei (1.21);

se face saltul la pasul 2 și se recalculează ieșirile pentru neuronii n = n+1.

Instruirea se oprește în momentul în care nu mai apar modificări semnificative ale ponderilor.

RECUNOAȘTEREA FORMELOR ÎN IMAGINI. RECUNOAȘTEREA FEȚELOR UMANE

Problema recunoașterii formelor

În literatura engleză ce vizează prelucrarea digitală a imaginilor (DIP) apar diferiți termeni pentru specificarea sarcinii de recunoaștere a formelor: object recognition, pattern recognition, pattern / template matching, image recognition, pattern / image classification. În limba română ei ar putea fi traduși ca: recunoașterea formelor, recunoașterea obiectelor, recunoașterea și clasificarea imaginilor, analiză de imagini, unde noțiunea de pattern (șablon, model, formă primară) este tradusă mai ales prin cuvântul cu înțeles general – formă.

Din punct de vedere al creșterii complexității metodelor și operațiilor implicate există următoarea incluziune:

forme ⊂ obiecte ⊂ imagini.

Problema recunoașterii obiectelor și clasificării automate a imaginilor reprezintă capacitatea programului de a determina conținutul unei imagini, imitând capacitatea umană de „citire” a imaginilor în vederea luării unor decizii ulterioare. Clasificarea automată a imaginilor reprezintă o categorie de tehnici, metode și algoritmi de recunoaștere a obiectelor și formelor în imagini, ce permit clasificarea imaginilor în anumite categorii cunoscute.

Problema dată are mai multe greutăți și puncte de analizat. Astfel, mai jos sunt prezentate câteva din problemele puse față de sistem ce ar fi capabil să recunoască formele obiectelor. Diferite aplicații au diferite necesități și limitări în cazul recunoașterii formelor.

Timpul de evaluare. În special în aplicații industriale, datele trebuie procesate în timp real. Timpul de evaluare este strâns legat de numărul de pixeli ale obiectului, cât și a imaginii cercetate.

Acuratețea rezultatului. Unele aplicații au nevoie de a detecta foarte exact poziția obiectului, iar eroarea nu trebuie să depășească o fracție de pixel. În cazul dat numărul de pixeli iarăși joacă un rol important – cu cât mai mulți pixeli sunt prezentați, cu atât mai multă infomație este prezentată, și, respectiv, rezultatul poate fi mai precis.

Fiabilitatea recunoașterii: toate metodele încearcă să reducă numărul de „alarme false” (FRR) și „fals pozitive” (FAR), cât mai mult posibil. Dar unele sisteme au nevoie de o fiabilitate mult mai strictă decât altele. De exemplu sistemele industriale au o presiune mai mare în reducerea clasificărilor eronate decât, de exemplu, categorizarea imaginilor din baza de date.

Invarianța: ideal, fiecare algoritm trebuie să fie insensibil la careva variații ale obiectului, ce îl detectează. Dacă același obiect ar fi la fel în toate imaginile, sarcina dată ar deveni trivială. Un algoritm trebuie să poată râmăne insensibil la variațiile unui obiect, dar totodată să fie receptiv și să poată găsi diferențele între obiectele din clasele diferite. Varianța este obținută în momentul colectării imaginilor, cât și de obiecte propriu-zis. În dependență de aplicație, are sens de a construi sistem invariant la variațiile de:

Iluminare: în cazul imaginilor monocrome, intensitatea culorii depinde direct de puterea de iluminare, unghiul luminii, cât și culoarea acestea.

Scară: printre altele, aria pixelilor, ce este acoperită de către obiect depinde de distanța obiectului de sursa de captare a imaginii, iar algoritmul trebuie să se adapteze la diferite scări ale obiectului din imagine

Notația obiectului: des unghiul de amplasare a obiectului în imagine nu este cunoscut, de aceea el trebuie să fie determinat de sistem.

Zgomotul fundalului: în special imaginile „naturale” (luate din mediu fără a fi prelucrate) nu arată doar obictele, în care suntem interesați, dar și informația de fundal. Acest fundal poate varia semnificativ pentru același obiect (nu este legat de obiect) sau din contra, să fie unul constant.

Ocluziune parțială: uneori o parte din obiect poate fi acoperită, iar sistemele trebuie să ia aceasta în considerație

Unghiul de vedere: deobicei obiectele detectate sunt o reprezentare 2D a obiectului 3D din viața reală. Aspectul 2D este strict dependent de poziția relativă a camerei în raport cu obiectul. Invarianța la unghiul de vedere este o caracteristică foarte dorită pentru o schemă de recunoaștere a formelor. Din păcate, această invarianță nu poate fi asigurată pentru obiecte cu forme arbitrare.

În cadrul unor astfel de probleme, imaginile de obicei sunt reprezentate sub forma unui set de caracteristici, ce descriu culoarea, textura și forma imaginii individuale. Aceste trăsături sunt concatenate într-un singur vector, pentru a le contrapune imaginilor predefinite (cunoscute) din baze de date și vectorilor lor. În final este arătat setul de imagini cu vectorii asociați, apropiați celui introdus.

Astfel, se numește „vector de formă” (pe scurt − „formă") setul de masurători indirecte cu ajutorul căruia este descris sau caracterizat un obiect. Fiecare caracteristică poate fi privită ca o variabilă într-un spațiu m-dimensional, numit spațiu al formelor, unde fiecare caracteristică este atribuită unei dimensiuni.

Vectorul de formă se reprezintă astfel: x = [x1, x2,. .., xm] T, unde xi este caracteristica a i-a.

Prin recunoașterea formelor se înțelege acel ansamblu de metode și tehnici cu ajutorul cărora se poate realiza o clasificare în cadrul unei muțtimi de obiecte (de ex.: sfere cuburi, prisme, etc.), procese sau fenomene. Aceasta se realizează prin compararea cu modele. Forma de intrare necunoscută este comparată pe rând cu fiecare prototip din setul de modele salvate, clasificarea ei într-una din clase facându-se pe baza unui criteriu de selecție: dacă forma necunoscută se potrivește cel mai bine cu modelul „i", atunci ea va aparține clasei „i".

Dificultățile care apar sunt legate de alegerea unui model reprezentativ, care să caracterizeze cât mai bine o clasă de forme, cât și definirea unui criteriu de selecție adecvat, capabil să clasifice univoc fiecare formă necunocută. În plus, se face ipoteza că obiectele similare în raport cu o anumita proprietate se grupează împreună, formând domenii distincte.

Feicare formă apare ca un punct în spațiul formelor. Acest spațiu, notat Hx, poate fi descris ca o matrice, formată din indicii x(i,j):

Hx = [xkT; k = 1,2,..N], (2.1)

unde N este numărul de forme.

Astfel, clasificarea formelor va reprezenta o împărțire a spațiului formelor în domenii reciproc exclusive:

h1 ∪ h2 ∪ … ∪ hn = Hx; h1 ∩ h2 ∩ … ∩ hn = F, (2.2)

unde F este mulțimea de puncte, ce constituie frontierele claselor.

Funcțiile de clasificare se pot împărți în două categorii: neparametrice și parametrice. Dacă formele din setul de formare nu pot fi descrise prin masurători statistice, atunci se utilizează funcții discriminant „neparametrice".

Clasificatorii „parametrici” se bazează pe estimarea parametrilor statistici ai formelor din setul de formare, aceste estimări fiind apoi utilizate pentru stabilirea funcțiilor discriminant.

Recunoașterea și clasificarea imaginilor este un proces ce se desfășoară în patru pași. Schema procesului de recunoaștere și clasificare automată a imaginilor este prezentată în figura 2.1.

Preprocesarea imaginii.

Prin această etapă de preprocesare se înțelege de fapt aplicarea, unor algoritmi DIP specializați de îmbunătățire a calității imaginii.

Extragerea atributelor sau descriptorilor de imagine (feature extraction).

Este etapa cheie care măsoară performanța. Alegerea unor atribute sau caracteristici cât mai potrivite este cheia succesului algoritmilor de recunoaștere. Rezultatul final al acestei etape este un vector de n atribute extrase (v1, v2, …, vn).

Măsurarea atributelor sau descriptorilor (feature/pattern measurement).

Rezultatul final al acestei etape este o valoare numerică uni- sau multi-dimensională, ce reprezintă distanța vectorului de atribute față de granițele regiunilor sau față de „bornele” de clasificare.

Clasificarea imaginii (pattern classification).

Este în care se stabilește apartenența formei, obiectului sau imaginii – descrise prin vectorul de atribute – la o clasă de imagini, pe baza unor criterii matematice sau funcții de apartenență. Rezultatul final al etapei de clasificare este numărul C al clasei de apartenență sau direct denumirea ei.

Pe baza pașilor 3 și 4, se grupează modelele și metodele generale de recunoaștere și clasificare în patru mari categorii sau strategii, numite abordări:

recunoașterea prin potrivirea cea mai bună;

recunoașterea prin metode statistice;

recunoașterea cu ajutorul rețelelor neuronale;

recunoașterea sintactică sau structurală.

În tabelul 2.1 sunt sintetizate informațiile ce privesc cele 4 strategii de mai sus.

Tabelul 2.1 Strategiile de modelare a problemei de recunoaștere

Rețelele neuronale, în cazul dat, au avantajul în fața altor tehnici, deoarece pot fi învățate rapid și fără mult efort adițional, totodată fiind capabile să creeze partiția spațiului de caracteristici.

Totuși, rețelele neuronale în forma sa standard sunt incompetente de a clasifica imaginea în mai mult de 2 clase, deoarece la nivelul fiecărui neuron se folosește activarea de ordinul 2, adică sunt doar 2 ieșiri posibile. Cum un neuron poate produce doar un răspuns binar, întreaga structură la fel va produce o ieșire binară. Pentru producerea răspunsurilor multiple, e nevoie de a extinde rețeaua arhitectural sau funcțional. Cel mai des aceasta see obține pin crearea unui vector de ieșire, ce ar avea pentru N clase un cel mai mic număr natural de noduri M, pentru care M>=ln(N).

Tehnici de recunoaștere a imaginilor

Sunt numeroase metode de recunoaștere a formelor din imagini. Cele mai răspândite pot fi împărțite în 2 categorii: metode rezistente la stres generat de statistici și metode bazate pe obiecte de tip tensor.

Algoritmi bazați pe clasificatori

În domeniul de recunoaștere a imaginilor un loc aparte îl au tehnicile, ce pot automat clasifica obiectul văzut în careva categorie.

Clasificatorul liniar

În spațiul bi-dimensional x = [x1,x2]1 acest clasificator este o funcție liniară:

w1x1 + w1x2 + w3 = 0, (2.3),

similar cu funcția f = Ax + By +C, pentru un C<0. Un exemplu al rezultatului unei astfel de funcții este prezentat în figura de mai jos:

Pentru un spațiu cu m dimensiuni, formula devine:

w1x1 + w1x2 + …+wmxm+wm+1 = 0, (2.4)

iar funcția discriminant va avea forma:

Di(x) = 1,2, ..,n, (2.5)

care sub forma vectorială se poate scrie: D = WX, unde W este matricea cu ponderi wi,j, iar X este vectorul de exemple pentru antrenarea rețelei, unde s-a introdus suplimentar elementul 1, pentru a da posibilitatea efectuării operației de înmulțire.

Clasificatorul de distanța minimă

Exemplul acestui tip de clasificator poate fi văzut în figura 2.3. Acesta se bazează pe evaluarea distanțelor dintre forma ce trebuie clasificată și un set de vectori de referință din spațiul formelor.

Dacă se va presupune că sunt cunoscuți n vectori de referință, notati cu R1, R2,…,Rn, unde vectorul Rj este asociat clasei hj, atunci clasificatorul de distanță minimă va atribui forma x clasei hi dacă distanța dintre aceasta și vectorul de referință asociat este minimă. Adica x∈ hi dacă

d(x, Ri) = |x – Ri| = |x – Rj|, (2.6)

Vecorii de referință se consideră că reprezintă centrele claselor, respectiv se calculează relația

(2.7)

unde Mj este numărul de forme din clasa hj. Distanța între forma x și vectorul Ri al clasei hi este:

| x – Ri |2 = (x – Ri)T(x – Ri), (2.8)

Generalizând această formulă, se poate obține următoarea relație pentru funcția discriminant în cadrul clasificatorului de distanță minimă:

Di (x) = xTRi + RiTx – RiT Ri, i = 1,2,…,n, (2.9)

Distanța este minimă pentru cazul în care Di este maximă.

Clasificatorul liniar pe porțiuni

Distanța între o formă necunoscută x și clasa hi se va defini ca cea mai mică distanță între x și fiecare vector xj(i), j= 1,2,…,Mi din hi:

Funcția de decizie va fi:

Di(x) = max {xT xj(i)+ (xj(i))Tx – (xj(i))Txj(i)}, i = 1, 2, ..,n (2.11)

Deoarece funcția din acolade este liniară, clasificatorul dat poartă denumirea de clasificator liniar pe porțiuni. Un exemplu poate fi văzut în figura 2.4.

Clasificatori neliniari (polinomiali)

Acești clasificatori au expresia:

Di(x) = wi,k fk(x) + wi,L+1, (2.12)

unde fk (x) = xk1n1xk2n2…xkrnr, cu k1, k2, .., kr = 1, 2,..,m și nr = 0 sau 1.

Un exemplu de acest tip de clasificator este prezentat în figura 2.5:

Recunoașterea feței

Scopul recunoașterii feței este de a determina identitatea unei persoane, bazându-se pe o imagine statică sau într-o secvență video a feței sale.

Detectarea feței este separarea fețelor din fundal. În cazul unui material video, fețele detectate ar putea să aibă nevoie de a face track-ing cu un component special. Alinierea feței are drept scop să obțină o localizare, și prin urmare o normalizare, în dependență de locația și scara la care se află fața detectată în imagine.

Componente faciale (ale feței) deobicei sunt ochii, nasul, gura și conturul feței. În baza localizării acestor puncte, fața introdusă este normalizată, fiind luate în considerație proporțiile geomterice, cum ar fi poziția și mărimea, utilizând transformările geometrice sau morfice.

Uneori se aplică încă un pas de normalizare – se iau în considerație proprietățile fotometrice, cum ar fi iluminarea și scara de nuanțe gri. După ce fața este normalizată geometric și fotometric, se aplică extragerea de caracteristici, cu scopul de a obține informație efectivă, ce va fi utilizată pentru a face distincție dintre fețele diferitor persoane și să fie stabil față de variațiile geometrice și fotometrice.

Pentru potrivirea de fețe, vectorul caracteristicilor extras a fețelor de la intrare este potrivit cu cei salvați în baza de date, la ieșire fiind obținută idenditatea persoanei în caz că corespondența a fost făcută cu un anumit grad de certitudine, sau marcajul de neconoscut în caz contrar.

Sunt două moduri de funcționare pentru un sistem de recunoaștere a feței: autentificare și identificare. În modul de autentificare sistemul acceptă sau respinge identitatea revendicată de individ. În modul de identificare sistemul compară fața cu o bază de date a unor persoane cunoscute și returnează cea mai probabilă identitate sau identități. În funcție de sursa de imagine pentru identificare, algoritmul de recunoaștere are abordări diferite, fiecare cu avantajele și dezavantajele sale.

Recunoașterea fețelor poate fi încadrată în contextul mai larg al metodelor de recunoaștere a imaginilor.

Pașii generali ale recunoașterii feței

Problema de recunoaștere este divizată în mai multe faze. Aceste faze sunt studiate aparte, și des lucrează independent una față de alta, performanța sistemului depinzînd de fiecare soluție aleasă în cadrul fiecărui pas. În figura 2.6 sunt prezentate diferite soluți pentru fiecare pas.

Mai jos sunt descriși mai detaliat pașii ce sunt urmați în cazul problemei de recunoaștre a feței, având un sistem de recunoaștere antrenat.

Achiziția de imagine

Această fază captează ilustrațiile, folosind dispozitive periferice. Există moduri evidente pentru a obține imagini digitale: scanarea unei poze, imaginile dinamice sau statice salvate de web-cam, fotografierea cu camera de filmat, sau folosind alte surse. În cadrul acestui pas contează metoda de salvare a imaginii, cum ar fi JPEG, PNG și altele, astfel ca să fie optimă pentru a servi drept intrare în sistem.

Prelucrarea caracteristicilor

După ce o imagine este disponibilă, ea este trecută prin câțiva pași de prelucrare. Acesti pași garantează o prelucrare mai simplă în cadrul fazelor următoare. Prelucrarea are drept scop reducerea erorilor imaginilor, aplicare de culoare ș.a. Exemple de prelucrări pot fi: reducerea număului de pixeli, mărirea contrastului, scăderea sau micșorarea luminozității imaginii etc.

Segmenatrea

În recunoașterea feței este importantă segmentarea imaginilor în regiuni semnificative și în fundal, pentru a extrage din imagine obiecte ce sunt supuse recunoașterii și examinării. Des, în cadrul acestui pas se ia iterativ porțiuni de imagini, care se analizează individual. Totodată pot fi aplicate și alte tehnici, cum ar fi separarea culorilor, detecția curbelor de contrast și altele.

Extracția caracteristică

Caracteristicile imaginii sunt un set de valori statistice determinate de valori de stil. Drept caracteristici pot fi: distanțate între două puncte, suprafețele regiunilor, lungimile perimetrelor, centrul masei, momentele, regiuni limitate, etc, sau pot fi rezultate din alte caracteristici, cum ar fi parametrii transformați aplicați local sau global. În cazul problemei recunoașterii persoanelor, pasul dat este unul esențial, deoarece de algoritmul ales pentru generalizarea imaginii depinde invariația sistemului.

Căutare în baza de date

Pentru aceasta, vectorul caracteristicilor este trecut prin sistemul de recunoaștere. În dependență de structura lui, lucrul intern este diferit. În cadrul sistemului de rețele neuronale are loc crearea vectorului de ieșire, ce corespunde nemijlocit cu clasa, căreia corespunde imaginea.

Tehnici de recunoaștere facială

Algoritmii de recunoaștere a feței pot fi clasificați în două mari categorii, în funcție de schemele de extragere a trăsăturilor pentru reprezentarea facială:

metode bazate pe extragerea de trăsături;

metode bazate pe extragerea aspectului general.

Proprietățile și relațiile geometrice, cum ar fi zonele, distanțele și unghiurile dintre puncte de pe față sunt folosite ca descriptori de recunoaștere a feței. Pe de altă parte, metodele bazate pe aspectul general iau în considerare proprietățile globale ale modelului de intensitate a imaginii feței.

Algoritmii de recunoaștere a feței bazați pe aspectul general procedează la calculul vectorilor de bază, pentru a reprezenta datele feței cat mai eficient.

În etapa următoare, chipurile sunt proiectate pe acești vectori și coeficienții lor de proiecție pot fi utilizați pentru reprezentarea imaginilor faciale. Algoritmii populari, cum ar fi PCA, LDA, ICA, LFA, Filtre de corelație, Manifolds și Tensorfaces se bazează pe aspectul feței.

Doi dintre cei mai populari algoritmi pentru recunoașterea feței umane sunt Eigenfaces și Analiza discriminatorie liniară.

Eigenfaces

Eigenfaces, de asemenea, cunoscut sub numele de Analiza Componentelor Principale (PCA) este, poate, cea mai veche și mai bine cunoscută dintre tehnicile de analiză multivariată. Ea este semnalată în diverse lucrări sub numele de „analize Karhunen-Loeve”, în oceanografie ca „analize EOF” (Empirical Orthogonal Function) iar în matematică sub denumirea de „analize SVD” (Singular Value Decomposition). Obiectul principal al metodei este studiul valorilor varianței și a corelației fără a construi noi variabile. Are scopul de a găsi eroarea minima pentru maparea unui spațiu N-dimensional într-unul M-dimesional (M<<N).

Modul eigenfaces este o metodă des folosită și devreme implementată. Este bazat pe analiza feței într-o bază de figuri, calculată de la imaginile bazei de date. Figura necunoscută este scrisă ca suma importantă de bază a imaginilor. Importanța va caracteriza figura din imagine.

Analiza Discriminatorie liniară (LDA)

Analiza Discriminatorie liniară este mai potrivită pentru găsirea de proiecții care discriminează mai bine diferite clase. Face asta prin căutarea vectorilor de proiecții, optimi care să maximizeze raportul de distribuție între clase și în clase. De obicei, atunci când se lucrează cu imagini faciale, numărul de imagini de învățare este mai mic decât numărul de pixeli ai unei imagini, astfel, este posibil ca matricea W să fie singulară, și prin urmare să nu poată fi găsită inversa matricei, ceea ce cauzează probleme pentru algoritmul LDA. Pentru eiliminarea problemei date, la început să folosește reducerea dimensiunilor datelor (micșorarea numărului de pixeli în imagine), după care se aplică algoritmul LDA.

În continuare se va propune descrierea mai detaliată a fiecărei din aceste 2 metode, adaptată la problema reală.

Recunoașterea feței folosind tehnica Eiginefaces

În această abordare, imaginile feței sunt modelate ca o distribuție Gaussiană care este estimată cu reducere dimensională folosind transformata Karhunen-Loewe (KLT). Pentru a detecta fețe în imagini statice, blocuri la scări diferite și localizate în diverse locuri sunt extrase din imagine, și este calculată probabilitatea de a fi o față folosind densitatea de probabilitate.

Deoarece căutarea unei imagini mari la scări multiple și în locații multiple este un task computațional intens, se încearcă reducerea spațiului de căutare pe baza unei reguli de tipul: presupunând că avem doar o față în imagine, metoda sugerează că modificările abrupte în profilele verticale sau orizontale ale imaginii corespund cu limitele capului.

Profilul orizontal este obținut prin medierea pixelilor pe fiecare coloană, iar profilul vertical este obținut prin medierea pixelilor pe fiecare linie. Totuși, în cazul general, dacă o persoană este situată pe un fundal oarecare este puțin probabil să găsim limitele capului prin această metodă, deoarece pot fi și alte schimbări în fundalul imaginii care să producă același efect. În acest caz regula este utilă în reducerea spațiului de căutare al feței. În profilul orizontal, se determină prima și ultima modificare abruptă și se presupune că cel puțin jumătate din față este situată între aceste două limite. Dacă sunt detecții false datorate fundalului, aceasta mărește spațiul de căutare fără a pierde fața propriu-zisă. În mod similar, în profilul vertical, se găsește prima modificare abruptă, și se presupune că fața este situată sub limita superioară.

După găsirea poziției feței, se face căutarea poziției ochilor, prin căutarea celor doi ochi de asemenea la scări multiple și în locuri diferite. Se utilizează estimarea de densitate propusă de Moghaddam și Pentland pentru modelarea distribuției ochilor. După găsirea ochilor, imaginea este rotită pentru a avea ochii în poziție orizontală, apoi imaginea este mascată pentru a exclude fundalul și este decimată pentru reducerea ei la o rezoluție de 128×128 pixeli. Acești pași se numesc normalizarea feței. Ei sunt ilustrați în figura 2.7.

După ce imaginea feței este normalizată, este trimisă algoritmului de clasificare a feței care o compară cu baza de date a persoanelor cunoscute și returnează cea mai probabilă identitate. Se prezintă două versiuni ale algoritmului de clasificare a fețelor. În această abordare, imaginile sunt proiectate într-un subspațiu care este obținut prin realizarea analizei componentelor principale pe imaginile de antrenament. Recunoașterea este realizată prin clasificarea pe baza distanței minime.

Analiza discriminatorie liniară

Metoda descrisă mai jos utilizeaza rejecția bazata pe clasificare. Detectorul constă dintr-un set de metode care indepărtează regiunile ce nu aparțin feței. Prima data, culorile ce nu aparțin pielii sunt indepartate utilizand segmentarea culorilor. Un set de operații morfologice sunt aplicate pentru a filtra zgomotul obținut în urma primului proces. Regiunile rămase sunt conectate și clasificate în funcție de geometrie și numărul de orificii. La sfârșit un șablon este folosit pentru identificarea a zero sau mai multe fețe în fiecare regiune. O schemă bloc a detectorului este ilustrată în figura 2.8:

Descrierea pașilor din figura de mai sus:

Cum operațiile morfologice lucrează asupra intensității imaginii, imaginea segmentată prin culoare este convertită într-o imagine cu nuanțe de gri.

Pragurile de intensitate sunt folosite pentru a transforma regiunile ântunecate în regiuni mai mici ce pot fi îndepărtate de deschiderea morfologică. Pragul este destul de mic pentru a nu îndepărta porțiuni din față, ci numai a crea găuri în ea.

Deschiderea morfologică este folosită pentru a îndepărta obiecte mici din imagine în timp ce forma și dimensiunea obiectelor mari este păstrată. Definiția „deschiderii” morfologice a unei imagini este o eroziune urmată de o dilatare, utilizând același element pentru ambele operații. Este folosită o structură de tip element sub forma de disc și raza 1.

Umplerea găurilor este realizată pentru a menține față ca o conexiune de regiuni în anticiparea unei deschideri morfologice mult mai mari. Altfel, imaginea mască va conține multe cavități și găuri în față.

Deschiderea morfologică este realizată pentru a îndepărta obiecte mici până la medii ce sunt mai mici decât dimensiunea feței. O structură tip element sub forma de disc și raza 6 este folosită.

Principalul avantaj al segmentării culorii feței îl reprezintă rejecția regiunilor ce nu aparțin pielii umane din imaginea inițială. Această tehnică ține cont de toate tipurile de culori ale pielii de la toate rasele precum, și de variația acesteia la lumina.

Pentru prezentarea spașiului de culori se va folosi schema HSV (Hue, Saturation, Value), deoarece permite separarea culorii de luminozitate. Astfe este posibil de a se concentra numai asupra nuanței de culoare și ale saturației. Histogramele ne arată că cele două componente H și S pentru față sunt grupate. Această informație a fost utilizată pentru a defini praguri adecvate pentru spațiul H și S care să corespundă fețelor. Valorile pragurilor au fost integrate în rutina de segmentare a culorilor.

Rezultatul aplicării măștii cu nuanțe de gri asupra imaginii introduse este reprezentata în figura 2.9.

Figura 2.9 Imaginea-mască generata în urma operațiilor morfologice

Numărul lui Euler pentru o imagine este definit ca numărul obiectelor din imagine minus numărul total al găurilor din aceste obiecte. Analiza numărului lui Euler este bazată pe faptul că regiunile ochilor, nasului și buzelor sunt mai întunecate față de restul regiunilor faciale, astfel sunt marcate drept orificii. O schemă adaptivă este folosită pentru a genera pragul pentru fiecare regiune conectată. În cazul în care există o mare răspândire (ex: raportul dintre ințeles la deviația standard este mare), se folosește funcția de tip prag. Acest fapt împiedică fragmentarea fețelor mai întunecate în mai multe regiuni conectate după trasarea pragurilor. Altfel, pragul este setat mare (multiplul deviației standard) pentru a a asigura contabilizarea chipurilor luminoase.

Regiunea pragului este folosită pentru calcularea numărului lui Euler e. Dacă e >= 0 (ex: mai puțin de două găuri), regiunea este respinsă, deoarece chipul are cel puțin două orificii corespunzătoare ochilor. numărul lui Euler pentru fiecare regiune conectată a imaginii inițiale este ilustrat în figura 2.10.

Figura 2.10 numărul lui Euler pentru regiunile conectate din imaginea inițială

Potrivirea șablonului

Ideea de bază a șablonului este de a găsi o imagine (șablon) ce se potrivește imaginii create de program până acum, reprezentativă pentru fețe. Găsirea unui șablon este o adevărată provocare, deoarece un șablon ar trebui să se potrivească cu orice chip indiferent de mărimea și caracteristicile acestuia.

Generarea șablonului

Se observă că după segmentarea culorii, intensitatea imaginii obținute conține fețe cu regiunea gâtului, astfel că se modifică șablonul în așa fel încât să conțină și zona gâtului. Acest procedeu a fost realizat prin scăderea intensității imaginii după segmentarea culorii, separând regiunile conectate, iar apoi selectând manual toate fețele și făcând o medie între ele. Dacă se încearcă algoritmul șablonului cu cele două tipuri de șabloane, se poate observa că șablonul ce include regiunea gâtului dă rezultate mai bune. Ambele șabloane sunt ilustrate în figura 2.11.

Figura 2.11 Șablonul feței, a – fără regiunea gâtului, b – cu regiunea gâtului

Algoritmul potrivirii șablonului

Se răsucește imaginea obținută de la analiza regiunilor conectate cu șablonul utilizat. Rezultatele sunt relativ bune în raport cu un singur chip (convoluția are un vârf pentru aceste regiuni). Pentru regiunile ce conțin mai multe fețe unite, o simplă convoluție nu este suficientă. O problemă evidentă a fost modul de a detecta vârfurile convoluției. Alta a fost aceea că fețele din spatele altora nu erau înregistrate ca fiind suficient de înalte. De asemenea, s-a observat că metoda de potrivire a șablonului era dependentă mai mult de forma șablonului, decât de caracteristicile acestuia, astfel utilizarea unui singur chip drept șablon are rezultate slabe.

Pentru rezolvarea această problemă, a fost modificat algoritmul de potrivire a șablonului. În loc de numai o singură rotire (convoluție) și să detectarea vârfurilor, s-a făcut o convoluție, s-au observat coordonatele maxime ale vârfului și marcat regiunea printr-un dreptunghi negru (de mărimea șablonului) în jurul acestor coordonate cu repetarea procesului până când valoarea vârfului maxim a fost sub pragurile impuse.

Rezultatele sunt cu mult peste cele obținute atunci când se face o singură convoluție. Un dezavantaj este acela că în cazul fețelor mai mari, algoritmul le marchează de mai multe ori. Pentru a rezolva această problemă,se introduce o cale adaptivă de a marca cu negru regiunea din jurul coordonatelor vârfului maxim, unde un dreptunghi mai mare a fost utilizat pentru a acoperi fețele mari.

Se observă că fețele mai mari sunt aproape tot timpul în partea de jos a imaginii, din care cauză dimensiunea dreptunghiului a fost aleasă diferit, în funcție de locul unde au fost localizate coordonatele vârfului. Rezultatul este acela că se pot separa toate fețele dintr-un grup.

APLICAREA REȚELELOR NEURONALE ÎN RECUNOAȘTEREA FEȚELOR UMANE

Construirea structurii pentru prelucrarea imaginii

Instrumente folosite

Limbaj de programare

În cadrul elaborării aplicației, ce prelucrează masiv datele structurate coform logicii matematice, este bine de a folosi limbaj de programare adaptat la astfel de sarcini.

Pentru elaborarea tezei s-a utilizat limbajul de programare Octave. Octave are în bagajul său multe funcții native pentru calculul operațiilor supra matricelor, cât și biblioteci externe, ce permit folosirea algoritmilor complecți de învățare, descriși în capitolul 2. La fel, datorită funcțiilor native, operațiile de învățare foarte ușor pot fi vectorizate, ceea ce permite micșorarea timpului de execuție a programului.

Octave este limbaj alternativ Matlab, ce este distribuit gratuit și nu necesită licență. În cadrul priectului a fost folosită distribuția GNU Octave Forge, versiunea 3.8.2.

La fel, pentru construirea rețelei neuronale s-a folosit pachetul extern limbajului – „Octave's neural network package”, creat de către echipa michaelschmid, cât și „nn22 Basic Neural Networks for Octave” de către aqasoft.

Pentru aplicația mobilă s-a folosit limbajul de programare Java, utilizând Android Software Development Kit (SDK) pentru crearea aplicației mobile.

Infrastructura

Pentru a asigura utilizarea aplicației de pe un dispozitiv mobil, s-a folosit conceptul de arhitectură client-server.

Drept client s-a recurs la dispozitiv mobil cu sistem de operare Android, versiunea mai nouă ca 3.0.

În cazul serverului s-a recus la serviciu Platform as a Service (PaaS), oferită de compania Heroku. Această tehnologie permite instalarea aplicației indiferent de sistemul necesar de operare, cât și limbajului ce e nevoie de menținut.

Structura rețelei neuronale alese

Antrenarea rețelei neuronale pe exemple pozitive și negative

Utilizarea rețelei neuronale în cadrul aplicației de recunoaștere a fețelor similare

REZULTATE OBȚINUTE ȘI CONCLUZII

Problema recunoașterii fețelor este una din cele mai complexe probleme din cadrul recunoașterii imaginilor. Ea implică cunoașterea anatomiei feței, și necesită algoritmi de preprocesare și clasificare complecși. La moment sistemele moderne dispun de mecanisme de recunoaștere, dar au o rată înaltă de recunoaștere falsă.

Pentru rezolvarea unei astfel de probleme s-a recurs la utilizarea rețelelor neuronale – o structura ce are capacitatea de a învăța cu costuri computaționale relativ reduse. Aceasta o face foarte comodă pentru cercetarea și analiza imaginilor.

În lucrare s-au prezentat conceptele ce stau în spatele rețelelor neuronale, tipurile și caracteristicile diferitor arhitecturi ale rețelelor, cât și o descriere a algoritmilor utilizați pentru învățarea în cadrul nodurilor rețelelor.

În continuare s-a arătat folosirea rețelelor în detectarea formelor în cadrul imaginilor, ce pune bazele pentru recunoașterea nemijlocită a fețelor umane.

A urmat o prezentare și analiză a tehniclior de recunoaștere a fețelor. Au fost prezentați pașii necesari pentru pre-procesarea imaginilor (normalizare), structura rețelei neuronale, ce ar fi capabilă să învețe parametrii necesari pentru recunoașterea fețelor, cât și parametrii de recunoaștere ale rețelei.

S-au prezentat rezultatele de lucru ale acestei rețele și exemple de recunoaștere și de respingere a diferitor mostre de imagini.

Pentru a demonstra utilizarea unei astfel de rețele, a fost creată o aplicație mobilă de tip client-server, ce permite din fotografii detectarea fețelor umane. Arhitectura acesteia, cât și utilizarea au fost descrise în cadrul tezei.

BIBLIOGRAFIE

Haykin, S. (1994) Neural Networks. A Comprehensive Foundation. Macmillan, New York, NY.

Enăchescu C., Calculul neuronal 2008, monografie, http://cs.upm.ro/_users/calin.enachescu/Enachescu%20-%20Inteligenta%20artificiala/Curs/Cartea%20v21.pdf, vizitat 15.04.2015

Ivanciu L. N., Sisteme Inteligente De Suport Decizional, 2014, note de curs http://www.bel.utcluj.ro/dce/didactic/sisd/SISD_curs_6_Retele_Neuronale_Artificiale.pdf, vizitat 15.04.2015

Ciocoiu I. B,, Caracteristici fundamentale ale rețelelor neurale artificiale, note de curs, http://scs.etc.tuiasi.ro/iciocoiu/courses/DSP/course5/capitol2_NN.pdf, vizitat 15.04.2015

Owen C., Image Processing and Analysis, 2014, lecții video https://www.youtube.com/playlist?list=PLA64AFAE28B8DD0FD, vizitat 11.04.2015

Arsinte R., Implementarea Sistemelor Biometrice Autonome Pentru Recunoașterea Feței Utilizând Procesoare Dsp Media, Verificatori Biometrici Workshop 26-27 mai 2005, Cluj-Napoca, http://users.utcluj.ro/~arsinte/papers/VB_2005_Arsinte.pdf, vizitat 16.04.2015

Weilong Chen, ș.a, High-Speed Face Recognition Based on Discrete Cosine Transform and RBF Neural Networks, Eee Transactions On Neural Networks, Vol. 16, No. 3, May 2005

Kecman V., Learning And Soft Computing: Support Vector Machines, Neural Networks And Fuzzy Logic Models, 2001, Massachusetts Institute of Technology, ISBN 0-262-11255-8

Lakhmi C. Jain ș.a., Industrial Applications of Neural Networks, 1998, CRC Press, CRC Press LLC, ISBN: 0849398029

Cyganek B., Object Detection And Recognition In Digital Images, AGH University of Science and Technology, Poland, 2013, ISBN 978-0-470-97637-1

Campilho M ș.a., Image Analysis and Recognition, 6th International Conference, ICIAR 2009, Halifax, Canada, iulie 6-8, 2009, ISBN-10 3-642-02610-9

Danciu D., Probleme Calitative În Dinamica Rețelelor Neuronale, teză de doctor, rezumat, Craiova, 2003, 51p

Bălan C. G., Retele Neuronale Artificiale, note de curs, http://www.mrm.ugal.ro/balan_site/ebooks.htm, vizitat 10.04.2015

Le T. H., Applying Artificial Neural Networks for Face Recognition, Advances in Artificial Neural Systems, Volume 2011 (2011), Article ID 673016, 16 pages, http://www.hindawi.com/journals/aans/2011/673016/, vizitat 20.04.2015

CBCL Face Database #1, MIT Center For Biological and Computation Learning, http://www.ai.mit.edu/projects/cbcl, vizitat 2.05.2015
http://cbcl.mit.edu/software-datasets/FaceData2.html

Baza de date ale fețelor umane, CS Department, California Institute of Technology, http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/, vizitat 2.05.2015

librăria pentru Octave nn22 Basic Neural Networks for Octave, http://sourceforge.net/projects/nn22/, vizitat 22.04.2015

librăria pentru Octave Fast Artificial Neural Network Library, http://sourceforge.net/projects/fann/, vizitat 05.02.015

Manualul de utilizare pentru limbajul Octave, http://www.gnu.org/software/octave/doc/interpreter/, vizitat 05.02.015

Anderson J.A., Categorization in a neural network, Theoretical Neurobiology, Weinhem, 1988

Willshaw D.J, How patterned neural connections can be setup by selforganization, Proceeding of the Royal Society of London, 1977, p431-445

Kohonen T., Self-Organizing Maps, Springer; 3rd edition, 2000, ISBN-13: 978-3540679219, 521p

Grossberg S., Neural Networks for Vision and Image Processing, The MIT Press; 1 edition, 1992, ISBN-13: 978-0262531085, 488p

T. Sejnowski șa., Self-Organizing Map Formation: Foundations of Neural Computation (Computational Neuroscience), A Bradford Book; ISBN-13: 978-0262650601, 2001, 415p

Rumelhart D. șa., Backpropagation: Theory, Architectures, and Applications, Psychology Press, 2013, ISBN-13: 978-0805812589, 576 p

Rosenblatt F., Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms,The American Journal of Psychology, vol. 76, No. 4 (Dec., 1963), pp. 705-707

BIBLIOGRAFIE

Haykin, S. (1994) Neural Networks. A Comprehensive Foundation. Macmillan, New York, NY.

Enăchescu C., Calculul neuronal 2008, monografie, http://cs.upm.ro/_users/calin.enachescu/Enachescu%20-%20Inteligenta%20artificiala/Curs/Cartea%20v21.pdf, vizitat 15.04.2015

Ivanciu L. N., Sisteme Inteligente De Suport Decizional, 2014, note de curs http://www.bel.utcluj.ro/dce/didactic/sisd/SISD_curs_6_Retele_Neuronale_Artificiale.pdf, vizitat 15.04.2015

Ciocoiu I. B,, Caracteristici fundamentale ale rețelelor neurale artificiale, note de curs, http://scs.etc.tuiasi.ro/iciocoiu/courses/DSP/course5/capitol2_NN.pdf, vizitat 15.04.2015

Owen C., Image Processing and Analysis, 2014, lecții video https://www.youtube.com/playlist?list=PLA64AFAE28B8DD0FD, vizitat 11.04.2015

Arsinte R., Implementarea Sistemelor Biometrice Autonome Pentru Recunoașterea Feței Utilizând Procesoare Dsp Media, Verificatori Biometrici Workshop 26-27 mai 2005, Cluj-Napoca, http://users.utcluj.ro/~arsinte/papers/VB_2005_Arsinte.pdf, vizitat 16.04.2015

Weilong Chen, ș.a, High-Speed Face Recognition Based on Discrete Cosine Transform and RBF Neural Networks, Eee Transactions On Neural Networks, Vol. 16, No. 3, May 2005

Kecman V., Learning And Soft Computing: Support Vector Machines, Neural Networks And Fuzzy Logic Models, 2001, Massachusetts Institute of Technology, ISBN 0-262-11255-8

Lakhmi C. Jain ș.a., Industrial Applications of Neural Networks, 1998, CRC Press, CRC Press LLC, ISBN: 0849398029

Cyganek B., Object Detection And Recognition In Digital Images, AGH University of Science and Technology, Poland, 2013, ISBN 978-0-470-97637-1

Campilho M ș.a., Image Analysis and Recognition, 6th International Conference, ICIAR 2009, Halifax, Canada, iulie 6-8, 2009, ISBN-10 3-642-02610-9

Danciu D., Probleme Calitative În Dinamica Rețelelor Neuronale, teză de doctor, rezumat, Craiova, 2003, 51p

Bălan C. G., Retele Neuronale Artificiale, note de curs, http://www.mrm.ugal.ro/balan_site/ebooks.htm, vizitat 10.04.2015

Le T. H., Applying Artificial Neural Networks for Face Recognition, Advances in Artificial Neural Systems, Volume 2011 (2011), Article ID 673016, 16 pages, http://www.hindawi.com/journals/aans/2011/673016/, vizitat 20.04.2015

CBCL Face Database #1, MIT Center For Biological and Computation Learning, http://www.ai.mit.edu/projects/cbcl, vizitat 2.05.2015
http://cbcl.mit.edu/software-datasets/FaceData2.html

Baza de date ale fețelor umane, CS Department, California Institute of Technology, http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/, vizitat 2.05.2015

librăria pentru Octave nn22 Basic Neural Networks for Octave, http://sourceforge.net/projects/nn22/, vizitat 22.04.2015

librăria pentru Octave Fast Artificial Neural Network Library, http://sourceforge.net/projects/fann/, vizitat 05.02.015

Manualul de utilizare pentru limbajul Octave, http://www.gnu.org/software/octave/doc/interpreter/, vizitat 05.02.015

Anderson J.A., Categorization in a neural network, Theoretical Neurobiology, Weinhem, 1988

Willshaw D.J, How patterned neural connections can be setup by selforganization, Proceeding of the Royal Society of London, 1977, p431-445

Kohonen T., Self-Organizing Maps, Springer; 3rd edition, 2000, ISBN-13: 978-3540679219, 521p

Grossberg S., Neural Networks for Vision and Image Processing, The MIT Press; 1 edition, 1992, ISBN-13: 978-0262531085, 488p

T. Sejnowski șa., Self-Organizing Map Formation: Foundations of Neural Computation (Computational Neuroscience), A Bradford Book; ISBN-13: 978-0262650601, 2001, 415p

Rumelhart D. șa., Backpropagation: Theory, Architectures, and Applications, Psychology Press, 2013, ISBN-13: 978-0805812589, 576 p

Rosenblatt F., Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms,The American Journal of Psychology, vol. 76, No. 4 (Dec., 1963), pp. 705-707

Similar Posts