Android FaceDetector底层技术
我正在 Android 上实现一个面部跟踪器,作为一项文献研究,我想确定 Android FaceDetector 的底层技术。
简而言之:我想了解 android.media.FaceDetector 分类器是如何工作的。
简短的谷歌搜索没有产生任何信息,所以我想我应该看一下代码。
通过查看Java源代码, FaceDetector.java
,没有太多需要学习的:FaceDetector
只是一个提供以下功能的类图像尺寸和面部数量,然后返回面部数组。
Android 源代码包含此类的 JNI 代码。我跟踪了函数调用,在精简到最基本的部分后,我了解到:
- “FaceFinder”是在
FaceFinder.c:75
< /a> - 在第 90 行,
bbs_MemSeg_alloc
返回一个btk_HFaceFinder
对象(其中包含实际查找面孔的函数),本质上是将其复制到hsdkA->contextE。 memTblE.espArrE
原始btk_HSDK
对象的数组在initialize()中初始化(FaceDetector_jni.cpp:145
) 通过btk_SDK_create()
- 看起来,迷宫般的函数相互提供了
btk_HSDK
的指针和实例,但我找不到sdk->contextE 的具体实例。 memTblE.espArrE[0]
据说包含魔法。
我发现了一点线索:JNI 代码引用了一个 FFTEm 库,但我找不到它的源代码。然而,从表面上看,FFT 是快速傅里叶变换,它可能与预训练的神经网络一起使用。我能找到的唯一与这一理论相符的文献是 Ben-Yacoub 的论文等人。
我什至不知道我是否走在正确的道路上,所以任何建议无疑都会有帮助。
编辑:我为任何能够提供任何见解的人添加了 +100 赏金。
I'm implementing a face tracker on Android, and as a literature study, would like to identify the underlying technique of Android's FaceDetector.
Simply put: I want to understand how the android.media.FaceDetector
classifier works.
A brief Google search didn't yield anything informative, so I thought I'd take a look at the code.
By looking at the Java source code, FaceDetector.java
, there isn't much to be learned: FaceDetector
is simply a class that is provided the image dimensions and number of faces, then returns an array of faces.
The Android source contains the JNI code for this class. I followed through the function calls, where, reduced to the bare essentials, I learned:
- The "FaceFinder" is created in
FaceFinder.c:75
- On line 90,
bbs_MemSeg_alloc
returns abtk_HFaceFinder
object (which contains the function to actually find faces), essentially copying it thehsdkA->contextE.memTblE.espArrE
array of the originalbtk_HSDK
object initialized within initialize() (FaceDetector_jni.cpp:145
) bybtk_SDK_create()
- It appears that a maze of functions provide each other with pointers and instances of
btk_HSDK
, but nowhere can I find a concrete instantiation ofsdk->contextE.memTblE.espArrE[0]
that supposedly contains the magic.
What I have discovered, is a little clue: the JNI code references a FFTEm library that I can't find the source code for. By the looks of it, however, FFT is Fast Fourier Transform, which is probably used together with a pre-trained neural network. The only literature I can find that aligns with this theory is a paper by Ben-Yacoub et al.
I don't even really know if I'm set on the right path, so any suggestions at all would undoubtedly help.
Edit: I've added a +100 bounty for anybody who can give any insight.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我也找到了几个链接...不确定它是否对您有帮助...
http://code.google.com/p/android-playground-erdao/source/browse/#svn/trunk/SnapFace
http://code.google.com/p/jjil/
http://benosteen.wordpress.com/2010/03/03/face-recognition-much -比预期更容易/
I Found a couple of links too...Not sure if it would help you...
http://code.google.com/p/android-playground-erdao/source/browse/#svn/trunk/SnapFace
http://code.google.com/p/jjil/
http://benosteen.wordpress.com/2010/03/03/face-recognition-much-easier-than-expected/
我正在打电话,所以无法广泛回应,但谷歌关键字“neven Vision Algorithm”提取了一些有用的论文......
另外,美国专利 6222939 相关。
可能还有 http:// /peterwilliams97.blogspot.com/2008/09/google-picasa-to-have-face-recognition.html 可能很方便...
I'm on a phone, so can't respond extensively, but Google keywords "neven vision algorithm" pull up some useful papers...
Also, US patent 6222939 is related.
Possibly also some of the links on http://peterwilliams97.blogspot.com/2008/09/google-picasa-to-have-face-recognition.html might be handy...
看看这个:
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber= 1562271
我想我曾经在演示文稿中看到过一些 matlab 代码执行此操作。
也许它在网上的某个地方。
问候,
拉尔斯
have a look at this:
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1562271
I think I once saw some matlab code doing this in a presentation.
Maybe it's somewhere online.
Greetings,
Lars