人脸识别,人脸关键点检测算法

1 Face++:http://www.faceplusplus.com.cn/tech_landmark/

其提供的技术服务有1:人脸检测(人脸检测追踪,人脸关键点检测) 2:人脸分析(微笑分析,性别年龄种族表情)3:人脸识别(1:1,1:N,大规模人脸搜索)。我需要关注的是这里的人脸关键点检测的实现。Face++为美图秀秀,美颜相机提供人脸关键点检测的技术服务。

2 Face++一个采访问题,能够了解人脸识别技术的整个流程。

CSDN移动:可否介绍一下,典型的人脸识别系统是什么样子的?

印奇:当今的人脸识别系统虽然包含无数细节和各种工程技巧,但大的系统框架不外乎如下图所示的流程:一张人脸图片输入后,需要先找到人脸的位置(人脸检测),然后在这个基础上定位人脸关键点的位置(如眼睛中心或嘴角等),每个系统关键提取的数量相差很大,有的只有左右眼睛中心两个点,有的可能多达近百个点。这些点的位置一是用来做人脸的几何校正,即把人脸通过缩放、旋转、拉伸等图像变化变到一个比较标准的大小位置。这样待识别的人脸区域会更加规整,便于后续进行匹配。同时,现在的实际系统一般也都配有人脸光学校正模块,通过一些滤波的方法,去除一些对光照更加敏感的面部特征。在做完这些预处理之后,就是从人脸区域提取各种特征,包括LBP、HOG、Gabor等。最终相关的特征会连接成一个长的特征向量(Feature Vector),然后匹配出人脸的相似度,根据相似度的大小,系统会判定两张图片到底是不是一个人。不难看出,人脸识别技术还是一个系统链条较长,较为有技术门槛的领域。因为这条流水线的每个环节可能都会严重影响最终系统性能,所以一个好的人脸识别技术公司需要在各个环节上追求细节,建立自己的技术优势,最终才有可能在最后的人脸识别精度上有出色的表现。


3 人类识别人脸用的是什么算法:http://www.zhihu.com/question/20154853

上面链接是知乎上面的讨论,有一个关于生物学方面的解释。

又一个Face++的专访:http://segmentfault.com/a/1190000000452539

通过下面这段话可以了解到目前的一些测试平台:

  1. 人脸检测(在照片中精准定位人脸位置的算法),在世界公开评测集FDDB 排名第一
  2. 人脸关键点检测(精准定位面部关键部门的位置),在世界公开评测比赛300-W排名第一。
  3. 在最重要的互联网图片人脸识别(Face recognition) 比赛LFW中,Face++团队更是力压Facebook人脸团队 (前face.com团队),获得世界第一。在极难识别的互联网新闻图片上,获得了97.3%的准确率。
Face++: Face++已经能够较为稳定地应对复杂的光照和人脸姿态,但过于极端的光照和姿态还是十分困难。Face++的全线技术都更新为 大数据深度学习算法,通过收集的海量人脸照片,新型的神经网络算法可以通过大数据训练形成性能更好的人脸检测,人脸分析,和人脸识别技术。

所以我的感觉是技术实现的方式采用:深度学习与传统算法相结合,互补的方式,并注重深度学习方面的创新。Face++ 目前发布的两篇论文,关键点检测和人脸特征表示都是基于DCNN的技术。

SegmentFault: Face++的算法研发用到了C++、Matlab和Python?能比较下Matlab和Python在视觉算法研究方面的优势和不足么?

Face++: 优势是比较糙快猛,方便验证idea;落实到系统和实用级别,可能还是要采用C++。所以用matlab验证完idea后,用C++做实现。不妨申请下Face++的实习生。

4 阅读文献《人脸特征点定位研究与应用-吴证》

文中提到几种人脸关键点检测的方法:

1投影(五官灰度值较周围皮肤灰度值低)

2基于先验规则(先验知识指的是人脸比如眼睑、虹膜等一些已知的灰度、形状信息)

3基于几何形状(比如可变形模板,能够较好检测眼睛嘴唇特征形状,但是由于边缘不精确难以精确定位特征点,依赖初始参数大,容易陷入局部最小,计算时间长)(另外还有主动形状模型(ASM),主动表观模型(AAM))

4基于统计的方法(该方法的思想是将特征部位看做一类模式,然后使用大量的特征部位样本和非特征部位样本进行训练,然后构造分类器,该类方法主要有PCA(主成分分析)、SVM、ANN(神经网络)、AdaBoost、模板匹配

5基于小波和小波包

5 机器学习的封装好的库:

这里有关于库的介绍:http://www.chinacloud.cn/show.aspx?id=21150&cid=16


theano:妹纸目前推荐我用这个库,python封装的。知乎上有不少人用这个,但是统一的评论是调试不方便。theano,教程比较基础,安装非常简单,几个指令可以搞定,不过用他来做开发实在太麻烦,建议配合keras使用,非常赞。

Theano   

主页:http://deeplearning.net/software/theano/

Github网址:https://github.co

还有一些库比如:matconvnet、Lasagne、opencv、nolearn、keras、caffe

最新的kaggle比赛中很多人用的是nolearn + lasagne,这两个库也是基于Theano作为核心建立的。 

dlib

http://matthewearl.github.io/2015/07/28/switching-eds-with-python/

http://blog.csdn.net/qingnianzhi/article/details/47322627

6 目前我的打算

我的目的:实现对人脸的关键点定位

学习思路:打算通过深度学习的方式来进行关键点检测,首先在ufldl上学习深度学习的入门知识,然后在网络的博客上找别人用python写的人脸检测的算法,最后自己基于C++实现,然后app中java调用。

比如链接:http://blog.csdn.net/qingnianzhi/article/details/46912383#comments















你可能感兴趣的:(人脸识别,人脸关键点检测算法)