人脸识别技术总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人脸识别技术总结
人脸识别技术大总结——Face Detection Alignment
20XX-04-08
搞了一年人脸识别,寻思着记录点什么,于是
想写这么个系列,介绍人脸识别的四大块:Face
detection,alignment,verification and
identification(recognization),本别代表从一张图中识别出人
脸位置,把人脸上的特征点定位,人脸校验和人脸识别。(后两者的区别在于,人脸校验是要给你两张脸问你是不是同一个人,人
脸识别是给你一张脸和一个库问你这张脸是库里的谁。
人脸校准(alignment)是给你一张脸,你给我找出我需要的
特征点的位置,比如鼻子左侧,鼻孔下侧,瞳孔位置,上嘴唇下
侧等等点的位置。如果觉得还是不明白,看下图:
如果知道了点的位置做一下位置驱动的变形,脸就成正的了,如何驱动变形不是本节的重点,在此省略。
首先介绍一下下面正文要写的东西,由于干货非常多所以可
能会看着看着就乱了,所以给出框架图:
=================================
废话说了这么多,正文开始~
detection
作者建立了一个叫post classifier的分类器,方法如下:
1.样本准备:首先作者调用opencv的Viola-Jones分类器,将recal阀值设到XX%,这样能够尽可能地检测出所有的脸,但是同时也会有非常多的不是脸的东东被检测出来。于是,检测出来的框框们被分成了两类:是脸和不是脸。这些图片被resize到96*96。
2.特征提取:接下来是特征提取,怎么提取呢?作者采用了三种方法:
第一种:把window划分成6*6个小windows,分别提取SIFT 特征,然后连接着XXX个sift特征向量成为图像的特征。
第二种:先求出一个固定的脸的平均shape(XXX个特征点的位置,比如眼睛左边,嘴唇右边等等),然后以这XXX个特征点为中心提取sift特征,然后连接后作为特征。第三种:用他们组去年的另一个成果Face Alignment at 3000 FPS via Regressing Local Binary Features (CVPR14),也就是图中的3000FPS方法,回归出每张脸的shape,然后再以每张脸自己的XXX个shape points为中心做sift,然后连接得到特征。
3.分类:将上述的三种特征分别扔到线性SVM中做分类,训练出一个能分辨一张图是不是脸的SVM模型。
紧接着作者将以上三种方法做出的分类器和初始分类器进行比对,画了一个样本分布的图:
这个图从左到右依次是原始级联分类器得到的样本分类分布和第一种到第三种方法提取的特征得到的样本分类分布。可见做
一下shape alignment可以得到一个更好的分类效果。但是问题来了:如果把所有的windows都做一下alignment,即使是3000 faces per second的速度一张图可能也要处理上1秒,这无法满足一般一秒30帧的实时需求。作者也说,用opencv分类器,参数设成XX%的recall率将会带来很严重的效率灾难——一张图能找出来3XXX个框,处理一张图都要好几秒。
这么渣的效率可咋办呢?以上内容已经证明了alignment确实对detection的
preciseness有帮助,这就够啦,对下面的工作也是个启发——能不能在做detection的同时把alignment做了呢?alignment的中间结果是否能给detection带来一些帮助呢?后面慢慢讲。先说两个通用的面部检测和矫正的模型:
1.级联检测分类器(bagging):不失一般性,一个简单的级联分类器是这样的:
2.级联回归校准(我这翻译…+_+):这里介绍的是另一个人在10年发的文章:Cascaded Pose Regression (CVPR10),给图像一个初始shape(通常采用平均shape),然后通过一次一次的回归把shape回归到正确的地方。算法结构很简单,但是效果确实非常好:
回归过程如下:首先提取特征,原作者采用的是
Pose-Indexed point features,然后根据特征训练回归函数(可以用线性回归,CART,随机森林等等),原作者采用了一个叫
Random Fern Regressor的东西,这里翻译成随机蕨好了(这名字…),回归出这一阶段的偏移量,然后shape加上这个偏移量,反复这一过程,直到迭代上限或者shape错误率不再下降。随机蕨的算法过程和随机森林类似,他是一个半朴素贝叶斯模型。首先选取M组每组K个特征建立M个蕨(弱分类器),然后假设蕨内特征是相关的,蕨间特征是独立的,这样从统计学上随机蕨是一个完整的把朴素贝叶斯分类器,让计算变得简单:
式中C代表分类,ci代表第I类,M代表蕨数量。
综上,这样回归的过程可以总结成如下形式:
S代表
shape,St代表在回归第t阶段的shape,他等于上一阶段的shape加上一个偏置,这个偏置就是上述回归方法之一搞定的。比如随机森林或者随机蕨,或者线性回归。
现在再说说怎么训练得到这个回归Rt。
有两种思路:一种是像刚才随机蕨那样,每个每个蕨的叶子节点存储一个偏移量,计算训练的时候落入这个叶子节点的样本偏移之平均,然后作为最终的叶子节点偏移量。其实就是在优化一个如下目标函数:
然而MSRA组在3000fps中采用的是另一种方法,形状的偏移量ΔδS为:
目标函数是:
其实也是同样的思路,Φ代表特征提取函数,论文中称Φ的输出为局部二值特征(LBF),W为线性回归参数矩阵,其实就是
把提取出来的特征映射到一个二维的偏移量上,是一个
2*lenth(特征空间维数)的变换矩阵。
首先讲Φ是怎么训练的:Φ其实就是一个随机森林。思想汇报专题输入像素差特征
e features),输出一个offest。训练的时候随机给每个根节点
像素差特征中的一部分。非叶节点的分裂依据是从输入的
pixel-difference features中找出能够做到最大的方差衰减的feature。在最后的叶子节点上写上落在叶子节点上的样本偏移量,这个偏移量在之前说到的fern里有用,但是在这里没啥用,因为
作者
篇二:人脸识别技术综述
人脸识别研究
代上
(河南大学环境与规划学院河南开封 475004)
摘要:现今世界经济发展迅速,而面对繁杂的社会安全问
题却显得有些捉襟见肘,人脸识别技术能够因通过面部特征信息
识别身份而受到广泛关注。人脸识别通常使用采集含有人脸图像
或视频流的设备,将收集到的人脸信息进行脸部检测,进而与数据
库中已有信息进行对比确定被识别对象的身份,已经广泛的应用于
公共安全、教育等多个方面,且在以后的社会发展中具有很大的