我正在Android上实现一个人脸跟踪器,作为一个文献研究,想要确定Android的FaceDetector的基础技术.
简单地说:我想了解android.media.FaceDetector
分类器的工作原理.
一个简短的谷歌搜索没有提供任何信息,所以我想我会看看代码.
通过查看Java源代码,FaceDetector.java
没有太多需要学习的内容:FaceDetector
只是提供图像尺寸和面数的类,然后返回一个面数组.
Android源代码包含此类的JNI代码.我跟着函数调用,在那里,简化为基本要素,我学到了:
"FaceFinder"创建于 FaceFinder.c:75
在第90行,bbs_MemSeg_alloc
返回一个btk_HFaceFinder
对象(其中包含实际查找面的函数),基本上将其复制到initialize()()中初始化hsdkA->contextE.memTblE.espArrE
的原始btk_HSDK
对象的数组中FaceDetector_jni.cpp:145
.btk_SDK_create()
似乎迷宫的函数彼此提供了指针和实例btk_HSDK
,但我无处可寻找具体的实例,sdk->contextE.memTblE.espArrE[0]
其中包含了魔法.
我已经发现,是一个小线索:JNI代码引用FFTEm库,我无法找到的源代码.然而,从它的外观来看,FFT是快速傅立叶变换,它可能与预训练的神经网络一起使用.我能找到的唯一符合这一理论的文献是Ben-Yacoub等人的论文.
我甚至不知道自己是否走上了正确的道路,所以任何建议都无疑会有所帮助.
编辑:我为任何可以提供任何见解的人添加了+100赏金.