Eigenface

De Viquipèdia
Dreceres ràpides: navegació, cerca

Els eigenfaces són un conjunt dels components principals de la distribució de les imatges de la cara. Són utilitzats per captar la variació d'una col·lecció d'imatges de cares. De fet, cada cara pot ser representada exactament en termes de combinacions lineals dels eigenfaces.

L'objectiu és extreure la informació rellevant de la imatge digital d'una cara, codificar-la de la manera més eficient possible i comparar una codificació de la cara amb una base de dades, de models codificats, semblats. En termes matemàtics, es desitja trobar el component principal de la distribució de cares o dels vectors de la matriu de covariància del conjunt d'imatges, on es considera un punt en l'espai n-dimensional d'una imatge amb N píxels.

Eigenfaces de les imatges d'entrenament

Es basen en la projecció lineal de l'espai de la imatge a un espai de característiques de baixa dimensionalitat. Es poden extreure mitjançant la tècnica d'anàlisi del component principal (ACP). Per mitjà de l'ACP es pot transformar cada imatge original, del conjunt d'entrenament, en un eigenface corresponent. Alhora es pot reconstruir qualsevol imatge amb la combinació dels eigenfaces.

Molts dels treballs en màquines de reconeixement de cares estaven centrats en la detecció individual de característiques tals com els ulls, nas, boca, posició... però aquests enfocaments han demostrat ser difícils d'estendre a diferents punts de vista i ser poc eficients.

L'objectiu principal és desenvolupar un model computacional de reconeixement facial que sigui ràpid, raonablement simple i precís en entorns limitats.

La idea d'utilitzar els eigenfaces va ser desenvolupat per Sirovich i Kirby (1987) i utilitzat per Matthew Turk i Alex Pentland, per a la detecció i reconeixement de la cara. Aquest es considera la primera tecnologia del reconeixement facial i va servir de base per als principals productes comercials.

Per completar eigenfaces, ha estat desenvolupat eigenfeatures. Això combina mesures facials (mesurant la distància entre els trets facials) amb la tècnica d'eigenface. Un altre mètode utilitza fisherfaces que és menys sensible a les variacions de lluminositat.

Enfocament de l'eigenfaces[modifica | modifica el codi]

Aquest enfocament sobre el reconeixement facial consisteix en un seguit de passos d'inicialització:

  • Adquirir un conjunt d'imatges de la cara (imatges d'entrenament).
  • Calcular els eigenface de les imatges d'entrenament (guardant només les M imatges que corresponguin amb el valor propi més alt).
  • Calcular la corresponent distribució del pes de cada espai conegut de la imatge, mitjançant la projecció de les imatges al "face space" (subespai generat pels eigenfaces).

Una vegada inicialitzat el sistema, els següents passos són després utilitzats pel reconeixement d'imatges de cares noves:

  • Càlcul d'un conjunt de valors basats en la imatge d'entrada i els M eigenfaces mitjançant la projecció de la imatge d'entrada en cada un dels eigenfaces del subespai.
  • Determinar si la imatge és d'una cara o no. Cares similars (imatges) posseeixen característiques similars (pesos).
  • Si és d'una cara, classificar la imatge segons si és una cara ja coneguda pel sistema o no.
  • Actualitzar el subespai ("face space").

La motivació de Eigenfaces és:

1. Extreure la informació rellevant de la cara. Una forma de fer-ho és capturar la variació estadística entre les imatges de la cara.

2. Representar imatges de la cara de manera eficient. Per reduir el càlcul i la complexitat de l'espai, cada imatge es pot representar amb un nombre reduït de paràmetres.

Generació dels eigenfaces[modifica | modifica el codi]

Eigenvector

Els eigenfaces que es creen apareixen com àrees clares i obscures que es classifiquen en un patró específic. Hi haurà, llavors, un patró per avaluar la simetria, la linea del cabell...o avaluar la mida del nas o boca.

Per generar un sistema d'eigenfaces, un gran sistema de les imatges de cares humanes digitalitzades totes sota les mateixes condicions d'il·luminació es normalitzen per alinear trets com els ulls i la boca.

Es considera un conjunt de M imatges d'entrenament que prenen valors en un espai n-dimensional de la imatge. Es realitza una transformació lineal de l'assignació de l'espai n-dimensional (espai original de la imatge) en un element m-dimensional: una imatge I(x,y) de dos dimensions NxN es pot considerar com un vector de dimensions N2 { Γ1, Γ2,..., ΓM }. Per exemple, una imatge de 256x256 es converteix en un vector de dimensió 65.536.

Vegem el càlcul dels eigenfaces pas a pas:

Processament d'imatge


  • Pas 1: Obtenir les imatges de la cara I1, I2, ... IM (imatges d'entrenament). Important! les cares han d'estar centrades i han de ser de la mateixa mida.
  • Pas 2: Representar cada imatge I com un vector Γ.
  • Pas 3: Calcular la mitjana (Ψ) del vector Γ.

 \psi=( \frac {1}{M} ) \sum_{n=1}^{M} \Gamma_n

  • Pas 4: Restar la mitjana (Ψ) de la imatge de la cara original (Γ).

 \phi = ( \Gamma_n - \psi )


 C=( \frac {1}{M} ) \sum_{n=1}^{M} \phi_n \cdot \phi_n^T = A \cdot A^T (matriu N2 x N2)

on  A = [\phi_1 \phi_2 ... \phi_M] (matriu N2 x M)
  • Pas 6: Trobar els eigenvectors vl, ul (on  l= \phi_n \cdot \phi_m^T)

 u_l= \sum_{k=1}^{M} v_lk \cdot \phi_k

per l=1...M

Procediment de reconeixement[modifica | modifica el codi]

Procediment reconeixement imatges
1. Una cara es transforma en els seus components d'eigenface. En primer lloc, es compara la imatge d'entrada amb la imatge mitjana i es multiplica amb cada vector de la matriu L. Cada valor representa un pes, que es guarda en un vector Ω.
 \omega_k= u_k^T (\Gamma - \psi)
Obtenint el vector  \Omega^T= [\omega_1 \omega_2 ... \omega_M]

2. Ara determinar quin tipus de cara és la millor descripció per a la imatge d'entrada. Això s'aconsegueix reduint al màxim la distància euclidiana.
 \epsilon_k = || \Omega - \Omega_k || ^2

3. Si la diferència de la cara d'entrada es considera que pertany a una classe que:
- És inferior a un llindar establert, aquesta imatge de la cara es considera coneguda.
- És superior al llindar determinat però inferior al segon llindar, la imatge es pot considerar com una cara desconeguda.
- Està per sobre dels dos llindars, la imatge no és d'una cara.

4. Si la imatge no es d'una cara coneguda, es decideix si agregar-la o no al conjunt d'imatges d'entrenament per reconeixements futurs.

Aplicacions[modifica | modifica el codi]

  • Detecció de cares, rastreig i reconeixement
  • Relació amb la biologia i xarxes neuronals

També s'utilitza una tècnica molt semblant aplicada a anàlisi d'escriptura, lectura de llavis, reconeixement per veu,

Problemes[modifica | modifica el codi]

Per desgracia, aquest tipus de reconeixement facial té un inconvenient a considerar: problemes per reconèixer les cares quan es veuen amb diferents nivells de llum o angles.

  • El fons de la imatge.
  • Condicions d'il·luminació: els canvis de llum degraden rendiment.
  • L'escala: els experiments demostren que el reconeixement decrementa molt ràpid si la grandària del cap o l'escala, es calcula malament. D'aquestes grandàries es fa una estimació i es reescala l'eigenface.
  • Orientació: disminueix el rendiment encara que no tant ràpid com els canvis d'escala.

El reconeixement facial utilitzant eigenfaces ha demostrat ser molt precís. A l'experiment amb variacions en certes condicions es va trobar els següents resultats correctes: una mitjana de 96% amb la variació de la llum, un 85% amb la variació de l'orientació i el 64% amb la variació de la grandària.

La solució a aquests problemes està adreçada a l'obtenció d'un treball més robust.

Solucions[modifica | modifica el codi]

  1. Al processament d'imatge s'ha d'ignorar l'efecte del fons. Per solucionar aquest problema s'ha de treure importància a la part exterior de la imatge (que no és cara), multiplicant la imatge d'entrada per una finestra gaussiana 2D centrada en la cara. Així s'aconsegueix accentuar els trets de la cara.
  2. Una solució al problema de l'escala és utilitzar una multiescala als eigenfaces. D'aquesta manera es compara la imatge d'entrada amb les diferents grandàries de l'eigenface, que no són tant sensibles als canvis d'escala.

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]