深度学习时代的 人脸识别
pipeline
->检测 (boarding bolds)
->对齐 (关键点检测)
-> 特征提取 (高维-低维)
-> 识别,(验证)
1. 人脸检测
1) 难点: 尺度/肤色/遮挡/角度/光照...
2) 人脸检测有两种方法: 回归问题, Proposal+分类+合并
2.1) 回归问题
建模(设计参数系), 从原始图像中学习一个函数, 从中回归初设计的4个参数.
[x,y,w,h] = f(I), f函数可以是设计,也可以neural network.
问题: 多目标检测, 参数爆炸.
2.2) Proposal+分类+合并.
滑窗 - 分类器(二分类) - 合并, 是人脸识别的主流思想
滑窗, 密集滑,有意义的滑(proposal, 多尺寸)
分类器, CNN- softmax. 级联10跟小分类器(检测率叠乘,误检率叠乘), adaboost思想,弱分类器组合成强分类器.使用单一强分类器,耗时太大(滑窗的尺寸有不同.)
合并, 非极大值抑制. 流程:1)将所有框分数排名取最大; 2)遍历其余框,和当前最高框重合度大于阈值删除; 3)从未处理的框中选最高的,重复上述过程. (类似聚类,置信度)
2. 人脸对齐(转正)
1) 确定人脸中的标定点 landmark 的位置, 3个点即可.
2) 放射变换:
二维坐标到另外的二维坐标之间的线性变换(平移/缩放/旋转);
不共线的3对对应点(6个参数)决定了一个唯一的放射变换. c1c2平移的量, a1b2缩放的量.
3) landmark detection 一般检测5个点, 回归10个参数的量.
4) 回归问题, loss function.
不是 softmax-loss(用于分类的loss);
是 cross-entropy-loss,or,ucdn-loss;
多次回归,级联的思想
3. 特征学习
1) 分类模型: Deepface, deepID, VGG, ResNet. 问题在于最后的softmax,如果是10000分类的话..
2) 度量学习模型, Triplet Loss, 谷歌, 同类相近异类相远. 对距离进行学习(欧式距离).
4. 人脸验证.
1:1 人脸比对.
1) 假定两张人脸提取的特征向量是xj和xk, 欧氏距离or余弦距离.
2) 余弦距离方法笔记方法比较简单, 可以快速判断特征提取网络的性能, 但对于人脸验证的问题, Joint Bayesian方法具有更好的性能.
3) Joint Bayesian方法: 后验概率, EM算法迭代.
1:N 人脸搜索.
1) 人脸特征向量, 逐一比对.
2) 对人脸特征向量做hash编码, 得到只包含0/1元素的向量, 只需要计算向量间的汉明距离(即两个特征向量之间做异成,可大大缩小比较时间), 且特征向量按比特存储,减少内存的消耗.( 大规模图像检索,也需要hash编码)
3) 公开的人脸识别图片数据库.