Algoritm DE Detectie A Directiei Privirii

ALGORITM DE DETECTIE A DIRECTIEI PRIVIRII

Anghel Claudia

Badea Mihai-Sorin

Zurini Corrado

TAID

State of the art

Gaze – Tracking este procesul prin care se identifica punctul spre care cineva priveste sau identificarea pozitiei irisului relativa la pozitia capului.

Aplicatii ale Gaze-Tracking:

Automotive

Jocuri video

Citirea notelor muzicale in timpul unui concert

Viola-Jones

Detectorul de obiecte Viola-Jones este prima metoda de detectie in timp real a obiectelor si a fost propusa in 2001 de catre Paul Viola si Michael Jones.Desi aceasta metoda poate fi antrenata sa gaseasca o gama larga de obiecte, scopul sau primar a fost de a detecta fete.

Problema care trebuie rezolvata este aceea de a detecta (nu recunoaste) fete.Practic scopul detectorului este de a imparti in 2 clase (fete si non-fete) obiectele dintr-o imagine.

Avantajele algoritmului Viola-Jones sunt:

Robustete – rata mare de detectie si rata de fals-pozitive foarte mica;

Lucreaza in timp real – Pentru o aplicatie practica trebuie ca cel putin 2 cadre sa fie procesate intr-o secunda;

Calcul si selectie eficienta de caracteristici(features);

Este invariant la scala si la locatie;

In loc sa scalam imaginea la o alta dimensiune, se scaleaza caracteristicile(features).

Dezavantajele algoritmului Viola-Jones sunt:

Detectorul e cel mai efficient doar pe poze in care apar fete frontale

Sensibil la conditiile de iluminare

Putem obtine mai multe detectii ale aceleiasi fete, din cauza suprapunerii de testare ale mai multor zone.

Algoritmul are 4 stagii:

Selectie de caracteristici Haar

Se creaza imaginea integrala

Antrenarea Adaboost

Clasificare in cascada

Retele neuronale supervizate

Învătarea supervizată este una dintre categoriile principale de probleme ale învătării automate, iar scopul ei este acela de a deduce o functie din datele de antrenament pe care le primeste.  Aceste  date  de  antrenament  sunt  o  multime  de  perechi,  fiecare  pereche  fiind compusă dintr-un obiect de intrare (de obicei un vector) si valoarea de iesire dorită. Un algoritm de învătare supervizată analizează asadar datele de antrenament pe care le primeste si construieste pe baza lor functia ce va fi folosită ulterior pentru a clasifica noi exemple.Scenariul optim al rezolvării unei probleme de acest tip va permite algoritmului dezvoltat să generalizeze de la datele de antrenament până la situatii cu care nu s-a mai confruntat cu rezultate satisfăcătoare.

Invățarea este supervizată în sensul că setul de exemple este dat împreună cu clasificarea lor corectă. Aceste instanțe rezolvate se numesc instanțe de antrenament. Formal, setul de instanțe de antrenament este o mulțime de perechi atribut-valoare (x,f(x)), unde x este instanța iar f(x) clasa căreia îi aparține instanța respectivă.

Scopul învățării este construirea unei funcții-șablon care să clasifice corect instanțele exemplu, iar pentru un x pentru care nu se cunoaște f(x) să propună o aproximare cât mai corectă a valorii f(x).

Abordari si algoritmi:

retele neuronale artificiale

statistica Bayesiana

arbori de decizie

support vector machines

Aplicatii:

bioinformatica

recunoasterea scrisului de mana

recunoasterea obiectului in computer vision

detectarea spamurilor

recunoasterea tiparelor ( Pattern Recognition) -recunoasterea vorbirii

Descriere algoritm

Scopul algoritmului de fata este de a detecta directia in care priveste un individ, cu aplicabilitate in mai multe domenii, asa cum s-a descris la subcapitolul anterior.

Algoritmul are ca inspiratie o varianta modificata a algoritmului mentionat in referinta bibliografica [1]. Spre deosebire de algoritmul propus in [1], noi am luat in considerare si sclera ochiului (relevanta acesteia este data de asemanarea cazurilor privire inainte/ privire in jos), nu am folosit transformate Hough si am decis sa folosim retele neuronale in loc de SVM.

Pentru implementarea algoritmului am folosit Computer Vision System Toolbox din cadrul mediului de dezvoltare Matlab. S-a utilizat algoritmul de detectie Viola-Jones, in urma caruia am obtinut o detectie de perechi de ochi, din care am pastrat-o pe cea cu chenarul cel mai mare (in cazul mai multor detectii pentru aceeasi imagine, ca in figura 1).

Fig.1 Detectie multipla

Urmatorul pas a fost detectia pozitiei pupilei din cadrul chenarului de ochi (ingustat cu 50%, asa cum se poate observa in imaginea din coltul din dreapta sus din figura 2). Pentru a segmenta pupila am determinat un prag pe canalul R, folosind histograma cumulativa. Conditia ca un pixel sa fie clasificat ca fiind parte a pupilei este ca valoarea acestuia sa fie in cele mai joase 5% din valori de pe canalul R.

De asemenea, am mai efectuat o segmentare a sclerei pentru a obtine pozitia relativa a pupilei in raport cu pozitia sclerei. Conditiile pentru segmentare aplicate au fost date tot de histograma cumulativa. Ca un pixel sa fie clasificat ca facand parte din sclera, acesta trebuie sa aiba valorile de pe toate cele trei canale in cele mai inalte 20% din valori.

In figura 2 pot fi vizualizate etapele ce au condus la obtinerea unui vector de trasaturi pentru a fi utilizat mai departe in antrenarea unei retele neuronale supervizate. Cu rosu sunt reprezentati pixelii corespunzatori pupilei, in timp ce pixelii care respecta conditiile de sclera sunt ilustrati cu verde.

In cazul in care sclera nu poate fi detectata (atunci cand subiectul priveste in jos), algoritmul este fortat sa indice un punct apropiat de pupila, anume la doua linii deasupra si doua coloane in stanga. Pozele care nu contin sclera (sau daca sclera este prea umbrita de pleoape) au ca valori cele mai ridicate zona de piele. Algoritmul considera ca are expus un astfel de caz atunci cand zona detectata se intinde pana in marginile imaginii.

Dupa obtinerea centroizilor pentru sclera si pupila se obtine vectorul de trasaturi astfel:

[linePupil/height, lineSclera/height, colPupil/width, colSclera/width]

LinePupil si colPupil reprezinta coordonatele pupilei, lineSclera si colSclera reprezinta coordonatele sclerei, iar height si width reprezinta inaltimea si latimea chenarului de ochi.

Fig.2 Pasii efectuati pentru obtinerea vectorului de trasaturi

In continuare, am apelat la toolboxul pentru crearea de retele neuronale, nprtool, oferindu-i ca intrare o matrice de 4 linii si 142 coloane, fiecare coloana reprezentand vectorul de trasaturi specific fiecarei poze. Am ales sa realizam recunoasterea intre cinci tipuri diferite ale directiei privirii: inainte, sus, jos, dreapta, stanga. In consecinta, vom avea cinci iesiri. Se va da retelei neuronale o matrice de etichete, in care pe fiecare coloana se va afla un vector de cinci elemente, patru egale cu zero, si unul singur element de valoare 1 pe pozitie corespunzatoare directiei alese. Numarul de straturi intermediare ales este egal cu 11, ca in schema de mai jos:

Fig.3 Schema retelei neuronale

De asemenea, mai este de mentionat faptul ca din totalul de 102 imagini, 70% au fost folosite pentru antrenare, 15% pentru validare si 15% pentru testare.

In figura 4 pot fi observate matricile de confuzie:

Observatii, rezultate si concluzii

In continuare am decis sa construim un nou set de poze pentru o testare in alte conditii. Pozele din lotul de antrenament au fost facute in aceleasi conditii favorabile. Setul nou contine poze cu 4 subiecti in alte conditii de iluminare fata de cele din perioada antrenarii retelei.

Rezultatele au fost mai mult decat satisfacatoare cu o rata de detectie corecta de 86%, cele mai multe erori fiind in cazul privirii in jos.

Este de mentionat faptul ca aceste rezultate se datoreaza si conditiilor restrictive impuse de la inceputul elaborarii algoritmului. In toate imaginile, subiectii aveau fata indreptata

catre camera si nu sunt luate in considerare decat 5 directii de privire.

Bibliografie

[1] – Moving the Mouse Pointer Using Eye Gazing – Ibraheem Frieslaar, disponibil la http://www.cs.uwc.ac.za/~ifrieslaar/Documentaion.pdf

Similar Posts