Tecnica sottostante di FaceDetector di Android

Sto implementando un face tracker su Android e, come studio di letteratura, vorrei identificare la tecnica di base di FaceDetector di Android.

In poche parole: voglio capire come funziona la classificatore android.media.FaceDetector .

Una breve ricerca su Google non ha dato alcun risultato informativo, quindi ho pensato di dare un’occhiata al codice.

Osservando il codice sorgente Java, FaceDetector.java , non c’è molto da imparare: FaceDetector è semplicemente una class a cui vengono fornite le dimensioni e il numero di facce dell’immagine, quindi restituisce una serie di facce.

La sorgente Android contiene il codice JNI per questa class . Ho seguito le chiamate di funzione, dove, ridotto all’essenziale, ho imparato:

  1. Il “FaceFinder” è stato creato in FaceFinder.c:75
  2. Alla riga 90, bbs_MemSeg_alloc restituisce un object btk_HFaceFinder (che contiene la funzione per trovare effettivamente facce), essenzialmente copiandolo l’array hsdkA->contextE.memTblE.espArrE btk_HSDK dell’object btk_HSDK originale inizializzato in initialize () ( FaceDetector_jni.cpp:145 ) di btk_SDK_create()
  3. Sembra che un labirinto di funzioni si forniscano l’un l’altro con i puntatori e le istanze di btk_HSDK , ma da nessuna parte posso trovare un’istanza concreta di sdk->contextE.memTblE.espArrE[0] che presumibilmente contiene la magia.

Quello che ho scoperto, è un piccolo indizio: il codice JNI fa riferimento a una libreria FFTEm per la quale non riesco a trovare il codice sorgente. A quanto sembra, tuttavia, FFT è Fast Fourier Transform , che è probabilmente usato insieme a una rete neurale pre-addestrata. L’unica letteratura che posso trovare allineata con questa teoria è un lavoro di Ben-Yacoub et al.

Non so nemmeno se sono sulla strada giusta, quindi qualsiasi suggerimento sarebbe sicuramente di aiuto.

Modifica: ho aggiunto una taglia di +100 per chiunque possa dare qualche idea.

Sono su un telefono, quindi non posso rispondere ampiamente, ma le parole chiave di Google “algoritmo di visione neven” tirano su alcuni documenti utili …

Inoltre, il brevetto statunitense 6222939 è correlato.

Forse anche alcuni dei link su http://peterwilliams97.blogspot.com/2008/09/google-picasa-to-have-face-recognition.html potrebbero essere utili …

dai un’occhiata a questo: http://ieeeplash.ieee.org/xpl/freeabs_all.jsp?arnumber=1562271

Penso che una volta ho visto del codice MATLAB fare questo in una presentazione. Forse è da qualche parte online.

Saluti, Lars