admin管理员组文章数量:1549140
写在最前边:
最近在做TI达芬奇嵌入式平台(ARM+DSP双核CPU DM8168)平台的人脸识别项目,看到了山老师的开源代码,迫不及待的测试一下算法在嵌入式平台和Windows平台的性能。经过几天的评估测试,主要结论有以下:
1、人脸检测算法的检测率在FDDB数据库达到了领先,现实要求不苛刻的环境下可以使用(相比我们的产品使用的算法检测率提高了8个百分点);
2、人脸检测算法的处理速度太低,在嵌入式平台基本不可用(相比我们的产品的算法时间增加了三十倍)。
3、人脸定位算法,i7 CPU上超过200fps(该数据来自作者论文),定位精度也达到了领先水平。由于产品关系,并没有对该模块进行详细评估。
4、人脸识别算法,完全不可用。
我的身份证证件照和监控视频里抓取的我的人脸照片做对比,相似度0.41左右,监控视频里抓取的其他人的人脸和我的证件照的相似度0.45左右。大量的测试后发现监控里所有人和我证件照的相似度基本都维持在0.4~0.5,并无规律可言。其他的网络照片的对比(下文有详细图文)也证实了这一结论。
如果你的项目的确需要人脸识别的模块,而自己做算法又太过于耗时。百度BFR提供的API服务倒是一个不错的选择(需要联网对比),百度API的评估和测试代码将会放在我的另一篇的博文里(使用BFR API同一个人身份证照和监控抓取的照片相似度维持在0.8以上,不同人的相似度基本维持在0.25以下)。
最后,山老师的开源精神值得学习,给从事人脸识别研究的人更多的学习资料~~大赞!!!
一、开发环境
1. Win7 旗舰64Bit i3@2.53G双核
2. VS2013 ultimate
3. opencv2.4.13 (安装于D:\Program Files (x86)\opencv,后边的配置用得到该目录)
4. SeetaFaceEngine-master.zip压缩包(可在github下载)
注:opencv可以采用其他版本,对应修改即可。
opencv只在测试seetaface时候使用,seetaface本身不依赖第三方库。
opencv的配置很多,可参考(其中的release版本):
http://blog.csdn/sherryd/article/details/51734334。
二、seetaface的评估和配置运行
seetaface主要包含了三个模块:人脸检测模块SeetaFaceDetection,特征点定位模块SeetaFaceAlignment,人脸特征提取与比对模块SeetaFaceIdentification。
1.人脸检测模块SeetaFace Detection
1)评估
SeetaFace Detection采用了一种结合传统人造特征与多层感知机(MLP)的级联结构,在FDDB上达到了84.4%的召回率(100个误检时),并可在单个i7 CPU上实时处理VGA分辨率(640*480)的图像。
该模块基于一种结合经典级联结构和多层神经网络的人脸检测方法[1]实现,其所采用的漏斗型级联结构(Funnel-StructuredCascade,FuSt)专门针对多姿态人脸检测而设计,其中引入了由粗到精的设计理念,兼顾了速度和精度的平衡。
图1:SeetaFace人脸检测模块所采用的FuSt漏斗型级联结构
如图1所示,FuSt级联结构在顶部由多个针对不同姿态的快速LAB级联分类器[2]构成,紧接着是若干个基于SURF特征的多层感知机(MLP)级联结构,最后由一个统一的MLP级联结构(同样基于SURF特征)来处理所有姿态的候选窗口,整体上呈现出上宽下窄的漏斗形状。从上往下,各个层次上的分类器及其所采用的特征逐步变得复杂,从而可以保留人脸窗口并排除越来越难与人脸区分的非人脸候选窗口。
与SeetaFace Detection开源代码配套开放的是一个准正面人脸检测模型(使用了约20万人脸图像训练而来),可以实现准正面人脸的准确检测(旋转角度约45度以内,但对于姿态偏转较大的人脸也具备一定的检测能力)。
SeetafaceDetection在达芬奇嵌入式平台(C674x核)处理时间评估:
方便对比,我们产品算法在下表用C674x代表:
把C674x算法的最小尺寸扩大到80*80,速度可再提高8倍左右。这是由于这C674x算法采用了滑动窗在图像里依次划过,越小的滑动窗在图片滑动的速度就会越慢。综合对比,C674x算法比seetaface速度提高了三十倍左右。不过,在检测性能方面,seetaface算法在TruePositive上提高了8个百分点。
注:C674x算法在浮点DSP@750MHz的运行速度约400ms@VGA分辨率。
2) windows版 配置运行
(1) 解压SeetaFaceEngine-master.zip
(2) 进入SeetaFaceEngine-master\FaceDetection\examples文件夹,使用VS2013打开examples.sln
(3) 修改解决方案下的examples项目属性:
☛☛在examples项目右击->属性->配置属性->VC++目录->包含目录:
修改opencv包含目录(1个)为自己的opencv安装目录里的包含目录。
原版:
修改版:
☛☛在examples项目右击->属性->配置属性->VC++目录->库目录:
修改opencv库目录为自己的opencv安装目录里的库目录。
原版:
修改版:
☛☛在examples项目右击->属性->配置属性->链接器->输入->附加依赖项:
原版(3个库):
修改版:(加入19个release版本库,删除原有的3个库。其实只加入三个即可,我懒得区分,所以加入了opencv的全部19个库)
opencv_objdetect2413.lib
opencv_ts2413.lib
opencv_video2413.lib
opencv_nonfree2413.lib
opencv_ocl2413.lib
opencv_photo2413.lib
opencv_stitching2413.lib
opencv_superres2413.lib
opencv_videostab2413.lib
opencv_calib3d2413.lib
opencv_contrib2413.lib
opencv_core2413.lib
opencv_features2d2413.lib
opencv_flann2413.lib
opencv_gpu241
版权声明:本文标题:seetaface在嵌入式平台的性能评估以及windows版配置运行 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727227908a1103478.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论