人脸识别的前世今生:从人工特征的百花齐放到深度学习的一统江湖
几天前一篇arXiv新上论文《Face Recognition: From Traditional to Deep Learning Methods》,对人脸识别技术发展经历的几个时期进行了分类,为我们展开了计算机视觉中最为活跃的人脸识别技术发展波澜壮阔的四十年。
作者信息:
作者为来自学术界英国赫特福德大学和工业界GBG plc公司的研究人员。
文中指出,自上世纪七十年代开始,人脸识别已成为计算机视觉和生物特征识别技术中研究最热门的方向之一。 基于人工设计的特征和传统的机器学习技术的传统方法目前已经被使用大规模数据集训练的深度神经网络所取代。
在该文中,作者提供了一个既全面回顾又力求最新的人脸识别算法文献综述,包括传统方法(基于几何,基于整体,基于特征和混合方法)和深度学习方法。
人脸识别问题面临的挑战
如下所示:
人脸识别面临诸多技术挑战,比如人头部姿态变化,跨年龄人面部变化,光照变化,表情变化,人脸被遮挡等。
人脸识别系统模块
通常人脸识别系统包含如下几大模块:
1)人脸检测Face Detection
从图像中找到人脸并返回人脸包围框坐标。
2)人脸对齐(或称人脸配准)Face Alignment
检测人脸特征点,并据此进行仿射变换,对人脸进行尺度和角度的归一化。最新的技术甚至在这一步将人脸正面化。
3)人脸表示Face Representation
从人脸图像像素中计算提取人脸紧凑且具鉴别性的特征向量,或者称为模板(template)。
理想的特征是能够从同一个体的人脸不同图像中提取相似的特征向量。
4)人脸匹配Face Matching
将两幅图像的特征向量进行比较,得到相似分数,用于表示这两幅人脸图像属于同一个人的似然性。
下图是人脸检测和对齐的示意图:
人脸特征提取是所有流程中最重要的步骤,该论文的焦点也以介绍该部分技术文献梳理为主线。
人脸特征提取文献梳理
作者按照技术出现的时间顺序和技术特点,分成5个大类。
1)基于几何的方法Geometry-based Methods
早期的人脸识别方法使用特定的边缘和轮廓检测找到人脸特征点,并据此计算特征点之间相互位置和距离,用来衡量两幅人脸图像的相似程度。
这些方法往往在极少个体(10-20个人)的人脸数据库中进行实验,但在早期使得计算机来识别人脸称为可能。
2)基于整体的方法Holistic Methods
这类方法对图像整体进行投影操作提取特征。
包括我们熟悉的主分量分析(PCA)、线性鉴别分析(LDA),通过寻找一组投影向量将人脸图像降维,再将低维特征送入类似SVM等机器学习分类器进行人脸分类。
局部保持投影(LPP)是这个方向另一个重要算法,实践证明LPP往往优于PCA、LDA。
这个方向还有一项重要工作是图像稀疏表示(sparse representation),及由此衍生的稀疏表示分类器,以重建误差最小衡量分类结果。
以LFW数据集(Labeled Faces in the Wild)评估为衡量标准,这一类基于整体变换的方法中,取得最高精度的是joint Bayesian方法,达到92.4%的精度。
3)基于特征的方法Feature-based Methods
在人脸图像中的不同位置提取局部特征的方法,这种方法往往比基于整体的方法更具鲁棒性。
较早的基于特征的方法比如模块特征脸(modular eigenfaces),还有类似在图像块中提取HOG、LBP、SIFT、SURF特征(这些特征更具鉴别性),将各模块局部特征的向量串联,作为人脸表示。
4)混合方法Hybrid Methods
先使用基于特征的方法(比如LBP、SIFT)提取局部特征,再使用子空间方法(比如PCA、LDA)投影获取低维、鉴别特征,将基于整体和基于特征的方法相结合的方法。
这一类方法中有不少基于Gabor+子空间方法。
大量文献中LBP特征是这一类方法中重要的局部特征。
由于此处文献很多,基本涉及到使用不同的分块方法、使用不同的局部特征(Gabor、LBP、SIFT、LTP、LPQ等)、使用不同的子空间方法(PCA、LDA、MFDA、Laplacian PCA、Kernel PCA、kernel LDA等)的不同排列组合。
(这简直是一个最容易想到论文idea的方向。。。。)
在这一类方法中,GaussianFace在LFW上获得了最好的精度98.52%,几乎匹敌很多后来出现的深度学习方法。
5)基于深度学习的方法Deep Learning Methods
深度学习尤其是深度卷积神经网络方法最大的优势是可以从数据集中学习特征,如果数据集能够覆盖人脸识别中常遇到的各种情况,则系统能够自动学习克服各种挑战的特征。
在早期的神经网络研究中也有用于人脸识别的报道,但由于数据集不够大,网络不够深,效果也一般,没能吸引大家的注意力。
在CNN改进人脸识别的文献中,DeepFace和DeepID是先驱,成功吸引众多学者研究该方向。
DeepFace的出现将LFW上state-of-the-art人脸识别方法误差降低了27%!
深度学习成功用于人脸识别三大要素:大规模数据集、先进的网络架构、有针对性的损失函数。
大规模数据集
业界陆续建立公开了可供深度学习训练的多个大规模数据集,提供了技术发展的充足燃料,如下表:
先进的网络架构
在网络架构上,受惠于ImageNet图像分类比赛的先进网络,比如VGG网络、GoogleNet,和近年来十分流行的残差网络,使得构建更深和更高capacity网络成为可能。
残差单元示意图:
有针对性的损失函数
最开始大家将人脸识别建模为图像分类问题,使用普通的softmax作为损失函数。
后来出现的triplet loss、centre loss损失函数使得人脸识别推广能力大大增强。
triplet loss优化目标:
xp与xa为同一个体,xn与xa为不同个体。
而近年来一些在softmax函数上引入间隔(margin)的损失函数也大大改进了结果。
softmax引入间隔示意图:
目前取得state-of-the-art效果的softmax margin类型一览:
目前,在人脸识别的研究开发中,基于深度学习的方法已经完全成为主流。
原论文参考文献众多,不再一一列出,感兴趣的朋友请阅读原论文。
论文地址:
https://arxiv.org/abs/1811.00116v1
论文下载: