【问题标题】:Underlying technique of Android's FaceDetectorAndroid FaceDetector 的底层技术
【发布时间】:2011-03-22 04:30:57
【问题描述】:

我正在 Android 上实现人脸跟踪器,作为文献研究,我想确定 Android 的 FaceDetector 的底层技术。

简单地说:我想了解android.media.FaceDetector 分类器的工作原理。

简单的 Google 搜索没有提供任何信息,所以我想我应该看看代码。

通过查看 Java 源代码 FaceDetector.java,没有太多要学习的东西:FaceDetector 只是一个提供图像尺寸和人脸数量的类,然后返回一个人脸数组。

Android 源码contains the JNI code for this class。我跟踪了函数调用,在那里,我学到了最基本的东西:

  1. “FaceFinder”在FaceFinder.c:75 中创建
  2. 在第 90 行,bbs_MemSeg_alloc 返回一个 btk_HFaceFinder 对象(其中包含实际查找人脸的函数),本质上是将其复制到在 initialize() 中初始化的原始 btk_HSDK 对象的 hsdkA->contextE.memTblE.espArrE 数组(@987654324 @) by btk_SDK_create()
  3. 似乎错综复杂的函数相互提供了 btk_HSDK 的指针和实例,但我无法找到据称包含魔法的 sdk->contextE.memTblE.espArrE[0] 的具体实例。

已经发现了一点线索:JNI 代码引用了一个我找不到源代码的 FFTEm 库。然而,从表面上看,FFT 是快速傅里叶变换,它可能与预训练的神经网络一起使用。我能找到的唯一符合这个理论的文献是a paper by Ben-Yacoub et al.

我什至不知道我是否走上了正确的道路,所以任何建议无疑都会有所帮助。

编辑:我已经为任何可以提供任何见解的人添加了 +100 赏金。

【问题讨论】:

  • libFFTEm 没有被Android的人脸检测层引用,实际上是external/neven中所有源的编译输出
  • 这就解释了为什么我找不到源代码!谢谢;这表明如果它确实使用了快速傅立叶变换,那么在neven 中应该有一些证据。然而,我并没有真正跳出来。
  • 看起来libFFTEm中的“Em”可能指的是“期望最大化”,一种用于基于颜色的皮肤检测的统计方法。
  • 有一个项目,从Android中提取了neven人脸检测库:https://github.com/lqs/neven

标签: android java-native-interface fft face-detection


【解决方案1】:

【讨论】:

  • 感谢您的回复,这些确实是有趣的项目,但我正在寻找有关 Android 内置面部检测器如何工作的一些见解 (android.media.FaceDetector) .
【解决方案2】:

看看这个: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1562271

我想我曾经在演示文稿中看到过一些 matlab 代码这样做。 也许它在网上某个地方。

您好, 拉尔斯

【讨论】:

【解决方案3】:

我正在打电话,所以无法广泛回复,但谷歌关键词“neven vision algorithm”提取了一些有用的论文......

另外,US patent 6222939 是相关的。

http://peterwilliams97.blogspot.com/2008/09/google-picasa-to-have-face-recognition.html 上的一些链接可能也很方便...

【讨论】:

  • Google 似乎收购了 Neven Vision,这是一种基于 Hartmut Neven 申请的各种专利的物体识别技术。我还没有找到该算法的详细描述,但跟进该专利可以提供一些见解。
  • various patents listed on this site 提供了对该技术的一些见解。这似乎表明它严重依赖Gabor Wavelets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多