2010-07-28 7 views
28

Estoy implementando un rastreador de rostros en Android, y como estudio de literatura, me gustaría identificar la técnica subyacente de FaceDetector de Android.Técnica subyacente de FaceDetector de Android

En pocas palabras: quiero entender cómo funciona el clasificador android.media.FaceDetector.

Una breve búsqueda en Google no dio ningún resultado informativo, así que pensé en echarle un vistazo al código.

Al observar el código fuente de Java, FaceDetector.java, no hay mucho que aprender: FaceDetector es simplemente una clase que proporciona las dimensiones de la imagen y el número de caras, y luego devuelve una matriz de caras.

La fuente de Android contains the JNI code for this class. He seguido a través de las llamadas de función, donde, reducido a lo esencial, supe:

  1. El "FaceFinder" se crea en FaceFinder.c:75
  2. En la línea 90 bbs_MemSeg_alloc, devuelve un objeto btk_HFaceFinder (que contiene la función de encontrar realmente caras), esencialmente copiándolo la matriz hsdkA->contextE.memTblE.espArrE del btk_HSDK objeto original inicializado dentro initialize() (FaceDetector_jni.cpp:145) por btk_SDK_create()
  3. parece ser que un laberinto de funciones mutuamente con los punteros y los casos de btk_HSDK, pero en ninguna parte puedo yo encontrar un concr e instanciación de sdk->contextE.memTblE.espArrE[0] que supuestamente contiene la magia.

Lo que tengo descubierto, es una pequeña pista: el código JNI hace referencia a una biblioteca FFTEm que no puedo encontrar el código fuente para. Por lo que parece, sin embargo, FFT es Transformada rápida de Fourier, que probablemente se usa junto con una red neuronal preentrenada. La única literatura que puedo encontrar que se alinea con esta teoría es a paper by Ben-Yacoub et al.

Ni siquiera sé realmente si estoy en el camino correcto, por lo que cualquier sugerencia sería indudablemente de ayuda.

Edit: He añadido un bounty de +100 para cualquiera que pueda darnos alguna idea.

+0

libFFTEm no se hace referencia a partir de la capa de detección de caras de Android, en realidad es la salida compilada de todas las fuentes en externa/Neven – ognian

+0

Eso explica por qué no pude encontrar el código fuente! Gracias; esto sugiere que si de hecho usa transformadas rápidas de Fourier, debería haber alguna evidencia de ello en 'neven'. Sin embargo, nada realmente salta a mí. –

+2

Parece que el "Em" en 'libFFTEm' puede referirse a" expectativa-maximización ", un método estadístico utilizado en la detección de piel basada en color. – Justin

Respuesta

3

Estoy en un teléfono, así que no puedo responder ampliamente, pero Google palabras clave "algoritmo de visión Neven" tire hacia arriba unos papeles útiles ...

También, la patente de EE. UU. 6222939 está relacionada.

Posiblemente también algunos de los enlaces en http://peterwilliams97.blogspot.com/2008/09/google-picasa-to-have-face-recognition.html podría ser útil ...

+0

Parece que Google adquirió Neven Vision, una técnica de reconocimiento de objetos basada en varias patentes presentadas por Hartmut Neven. No he encontrado una descripción detallada del algoritmo, pero darle seguimiento a la patente da una pequeña idea. –

+0

Las [diversas patentes enumeradas en este sitio] (http://www.seobythesea.com/?p=267) dan alguna idea de la técnica. Parece sugerir que depende en gran medida de [Gabor Wavelets] (http://en.wikipedia.org/wiki/Gabor_filter#Wavelet_space). –

4
+0

Gracias por su respuesta, y esos son proyectos realmente interesantes, pero estoy buscando información sobre cómo funciona el detector facial * integrado * de Android ('android.media.FaceDetector'). –

0

echar un vistazo a esto: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1562271

Creo que una vez vi un código de matlab haciendo esto en una presentación. Quizás esté en algún lugar en línea.

saludos, Lars

+0

Busqué en Google este enlace aquí: Tal vez es el código. No sé, no tengo matlab o scilab aquí para probarlo. Tal vez usted tiene: http://download.cnet.com/Face-Recognition-in-Fourier-Space/3000-2053_4-10878312.html – Lars

+0

Me temo que no encuentro ninguna evidencia de que esta sea la técnica que Neven Vision se basa en. –

Cuestiones relacionadas