1. 人脸识别系统组成
2. 人脸识别的一般流程
2.1 人脸采集
(1)简介
不同的人脸图像通过摄像镜头采集得到,比如静态图像、动态图像、不同的位置、不同表情等,当采集对象在设备的拍摄范围内时,采集设备会自动搜索并拍摄人脸图像。
(2)人脸采集的主要影响因素
- 图像大小:人脸图像过小会影响识别效果,人脸图像过大会影响识别速度。非专业人脸识别摄像头常见规定的最小识别人脸像素为60*60或100*100以上。在规定的图像大小内,算法更容易提升准确率和召回率。图像大小反映在实际应用场景就是人脸离摄像头的距离。
- 图像分辨率:越低的图像分辨率越难识别。图像大小综合图像分辨率,直接影响摄像头识别距离。现4K摄像头看清人脸的最远距离是10米,7K摄像头是20米。
- 光照环境:过曝或过暗的光照环境都会影响人脸识别效果。可以从摄像头自带的功能补光或滤光平衡光照影响,也可以利用算法模型优化图像光线。
- 模糊程度:实际场景主要着力解决运动模糊,人脸相对于摄像头的移动经常会产生运动模糊。部分摄像头有抗模糊的功能,而在成本有限的情况下,考虑通过算法模型优化此问题。
- 遮挡程度:五官无遮挡、脸部边缘清晰的图像为最佳。而在实际场景中,很多人脸都会被帽子、眼镜、口罩等遮挡物遮挡,这部分数据需要根据算法要求决定是否留用训练。
- 采集角度:人脸相对于摄像头角度为正脸最佳。但实际场景中往往很难抓拍正脸。因此算法模型需训练包含左右侧人脸、上下侧人脸的数据。工业施工上摄像头安置的角度,需满足人脸与摄像头构成的角度在算法识别范围内的要求。
2.2 人脸检测
(1)简介
在图像中准确标定出人脸的位置和大小,并把其中有用的信息挑出来(如直方图特征、颜色特征、模板特征、结构特征及Haar特征等),然后利用信息来达到人脸检测的目的。
(2)人脸关键点检测(人脸对齐)
自动估计人脸图片上脸部特征点的坐标。
(3)主流方法
基于检测出的特征采用Adaboost学习算法(一种用来分类的方法,它把一些比较弱的分类方法合在一起,组合出新的很强的分类方法)挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器,再将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,有效地提高分类器的检测速度。
最近人脸检测算法模型的流派包括三类及其之间的组合:viola-jones框架(性能一般速度尚可,适合移动端、嵌入式上使用),dpm(速度较慢),cnn(性能不错)。
2.3 人脸图像预处理
(1)简介
基于人脸检测结果,对图像进行处理并最终服务于特征提取的过程。
(2)原因
系统获取的原始图像由于受到各种条件的限制和随机干扰,往往不能直接使用,必须在图像处理 的早期阶段对它进行灰度矫正、噪声过滤等图像预处理。
(3)主要预处理过程
人脸对准(得到人脸位置端正的图像),人脸图像的光线补偿,灰度变换、直方图均衡化、归一 化(取得尺寸一致,灰度取值范围相同的标准化人脸图像),几何校正、中值滤波(图片的平滑操作以消除噪声)以及锐化等。
2.4 人脸特征提取
(1)简介
人脸识别系统可使用的特征通常分为视觉特征、像素统计特征、人脸图像变换系数特征、人脸图像代数特征等。人脸特征提取就是针对人脸的某些特征进行的,也称人脸表征,它是对人脸进行特征建模的过程
(2)人脸特征提取的方法
- 基于知识的表征方法(主要包括基于几何特征法和模板匹配法):根据人脸器官的形状描述以及它们之间的距离特性来获得有助于人脸分类的特征数据,其特征分量通常包括特征点间的欧氏距离、曲率、和角度等。人脸由眼睛、鼻子、嘴、下巴等局部构成,对这些局部和他们之间结构关系的几何描述,可作为识别人脸的重要特征,这些特征被称为几何特征。
- 基于代数特征或统计学习的表征方法:基于代数特征方法的基本思想是将人脸在空域内的高维描述转化为频域或者其他空间内的低维描述,其表征方法为线性投影表征方法和非线性投影表征方法。基于线性投影的方法主要有主成分分析法或称K-L变化、独立成分分析法和Fisher线性判别分析法。非线性特征提取方法有两个重要的分支:基于核的特征提取技术和以流形学习为主导的特征提取技术。
2.5 匹配与识别
提取的人脸特征值数据与数据库中存贮的特征模板进行搜索匹配,通过设定一个阈值,将相似度与这一阈值进行比较,来对人脸的身份信息进行判断。
3. 人脸识别的主要方法
3.1 Eigen Face(特征脸)
MIT实验室的特克(Turk)和潘特(Pentland)提出的“特征脸”方法无疑是这一时期内最负盛名的 人脸识别方法。其后的很多人脸识别技术都或多或少与特征脸有关系,现在特征脸已经与归一化的协相关 量(Normalized Correlation)方法一道成为人脸识别的性能测试基准算法。
人脸识别特征脸算法文档:
https://blog.csdn.net/zizi7/article/details/52757300
3.2 Fisher Face(渔夫脸)
贝尔胡米尔(Belhumeur)等提出的 Fisherface 人脸识别方法是这一时期的另一重要成果。该方法 首先采用主成分分析(PCA)对图像表观特征进行降维。在此基础上,采用线性判别分析(LDA)的方法 变换降维后的主成分以期获得“尽量大的类间散度和尽量小的类内散度”。该方法目前仍然是主流的人脸 识别方法之一,产生了很多不同的变种,比如零空间法、子空间判别模型、增强判别模型、直接的LDA 判 别方法以及近期的一些基于核学习的改进策略。
Fisher Face算法文档:
https://blog.csdn.net/zizi7/article/details/52999432
3.3 EGM(弹性图匹配)
其基本思想是用一个属性图来描述人脸:属性图的顶点代表面部关键特征点,其属性为相应特征点处 的多分辨率、多方向局部特征——Gabor变换12特征,称为Jet;边的属性则为不同特征点之间的几何 关系。对任意输入人脸图像,弹性图匹配通过一种优化搜索策略来定位预先定义的若干面部关键特征点, 同时提取它们的Jet特征,得到输入图像的属性图。最后通过计算其与已知人脸属性图的相似度来完成识 别过程。该方法的优点是既保留了面部的全局结构特征,也对人脸的关键局部特征进行了建模。
弹性图匹配算法文档:
https://blog.csdn.net/real_myth/article/details/44828219
3.4 基于几何特征的方法
几何特征可以是眼、鼻、嘴等的形状和它们之间的几何关系(如相互之间的距离)。这些算法识别速 度快,需要的内存小,但识别率较低。
3.5 基于神经网络的方法
神经网络的输入可以是降低分辨率的人脸图像、局部区域的自相关函数、局部纹理的二阶矩等。这类方法同样需要较多的样本进行训练,而在许多应用中,样本数量是很有限的。
3.6 基于线段Hausdorff 距离(LHD) 的方法
心理学的研究表明,人类在识别轮廓图(比如漫画)的速度和准确度上丝毫不比识别灰度图差。LHD是基于从人脸灰度图像中提取出来的线段图的,它定义的是两个线段集之间的距离,与众不同的是,LHD并不建立不同线段集之间线段的一一对应关系,因此它更能适应线段图之间的微小变化。实验结果表明,LHD在不同光照条件下和不同姿态情况下都有非常出色的表现,但是它在大表情的情况下识别效果不好。
3.7 基于支持向量机(SVM) 的方法
近年来,支持向量机是统计模式识别领域的一个新的热点,它试图使得学习机在经验风险和泛化能力上达到一种妥协,从而提高学习机的性能。支持向量机主要解决的是一个2分类问题,它的基本思想是试图把一个低维的线性不可分的问题转化成一个高维的线性可分的问题。通常的实验结果表明SVM有较好的识别率,但是它需要大量的训练样本(每类300个),这在实际应用中往往是不现实的。而且支持向量机训练时间长,方法实现复杂,该函数的取法没有统一的理论。
4. 技术发展方向
- 结合三维信息:二维和三维信息融合使特征更加鲁棒
- 多特征融合:单一特征难以应对复杂的光照和姿态变化
- 大规模人脸比对:面向海量数据的人脸比对与搜索
- 深度学习:在大数据条件下充分发挥深度神经网络强大的学习能力
5. 人脸识别数据库
- Yale人脸数据库
- ORL人脸数据库
- CMU PIE人脸数据库
- FERET人脸数据库
- MIT数据库
- BANCA人脸数据库
- CAS-PEAL人脸数据库
- JAFE表情数据库
- Cohn-Kanade表情数据库
- MMI表情数据库
6. 技术指标
6.1 人脸检测中的关键指标
例子:在摄像头某张抓拍图像中,一共有100张人脸,算法检测出80张人脸,其中75张是真实人脸,5 张是把路标误识为人脸。
- 检测率:识别正确的人脸/图中所有的人脸。检测率越高,代表检测模型效果越好。
- 误检率:识别错误的人脸/识别出来的人脸。误检率越低,代表检测模型效果越好。
- 漏检率:未识别出来的人脸/图中所有的人脸。漏检率越低,代表检测模型效果越好。
- 速度:从采集图像完成到人脸检测完成的时间。时间约短,检测模型效果越好。
在这个实际案例中:检测率=75/100 误检率=5/80 漏检率=(100-75)/100
6.2 人脸识别中的关键指标
1000张样本图片里,共600张正样本。相似度为0.9的图片一共100张,其中正样本为99张。虽然0.9阈值的正确率很高,为99/100;但是0.9阈值正确输出的数量确很少,只有99/600。这样很容易发生漏识的情况。
- 检测率:识别正确的人脸/图中所有的人脸。检测率越高,代表检测模型效果越好。
- 误检率:识别错误的人脸/识别出来的人脸。误检率越低,代表检测模型效果越好。
- 漏检率:未识别出来的人脸/图中所有的人脸。漏检率越低,代表检测模型效果越好。
- 速度:从采集图像完成到人脸检测完成的时间。时间约短,检测模型效果越好。
在这个实际案例中:检测率=75/100 误检率=5/80 漏检率=(100-75)/100
6.3 人脸识别中的关键指标
1000张样本图片里,共600张正样本。相似度为0.9的图片一共100张,其中正样本为99张。虽然0.9阈值的正确率很高,为99/100;但是0.9阈值正确输出的数量确很少,只有99/600。这样很容易发生漏识的情况。
- 精确率(precision):识别为正确的样本数/识别出来的样本数=99/100
- 召回率(recall):识别为正确的样本数/所有样本中正确的数=99/600
- 错误接受率/认假率/误识率(FARFalse Accept Rate):
- 定义:指将身份不同的两张照片,判别为相同身份,越低越好
- FAR = NFA / NIRA
- 式中 NIRA 代表的是类间测试次数,既不同类别间的测试次数,打比方如果有1000个识别 模型,有1000个人要识别,而且每人只提供一个待识别的素材,那 NIRA=1000*(1000-1) 。NFA是错误接受次数。
- FAR决定了系统的安全性,FRR决定了系统的易用程度,在实际中,FAR对应的风险远远高于FRR,因此,生物识别系统中,会将FAR设置为一个非常低的范围,如万分之一甚至百万分之一,在FAR固定的条件下,FRR低于5%,这样的系统才有实用价值。
- 错误拒绝率/拒真率/拒识率(FRR False Reject Rate):
- 定义:指将身份相同的两张照片,判别为不同身份,越低越好
- FRR = NFR / NGRA
- 上式中NFR是类内测试次数,既同类别内的测试次数,打比方如果有1000个识别模型, 有1000个人要识别, 而且每人只提供一个待识别的素 材,那 NIRA=1000,如果每个人提供N张图片,那么 NIRA=N*1000 。NFR是错误拒绝次数。
需要在精确率(识别为正确的样本数/识别出来的样本数)和召回率(识别为正确的样本数/所有样本中正确的数)中达到某一个平衡。
测试同事需要关注特定领域内每个类别的指标,比如针对识别人脸的表情,里面有喜怒哀乐等分类,每一个分类对应的指标都是不一样的。测试同事需要将测试的结果完善地反馈给算法同事,算法同事才能找准模型效果欠缺的原因。同时,测试同事将本次模型的指标结果反馈给产品,由产品评估是否满足上线需求。
(1)测试环境说明
例如:
- CPU:Intel(R) Core(TM) i7-4790 CPU @ 3.60 GHz
- 内存:8GB
- 系统:Ubuntu 14.04 x86_64/Windows 7 SP1 64bit
- GCC版本:4.8.2
(2)测试集和测试需求说明
比如“图片包含人脸大小应超过96*96像素,测试结果达到XX程度满足需求。
- 经典人脸身份识别测试集LFW,共包含13233 张图片 5749 种不同身份;世界记录99.7%。
- CK (一个人脸表情数据集),包含固定表情和自发表情,包含123个人的593个表情序列。每个序列的目标表情被FACS编码,同时添加了已验证的情感标签(生气、厌恶、害怕、快乐、悲伤、惊讶)。
(3)需要说明“有效距离,左右角度,上下角度,速度”等参数值(范围)
注:这和“部署的灵活性”相关——由于不同客户不同场景的需求不同,所以技术方的人脸检测模块,一般可以通过调整参数得到N种亚型,以适应不同应用场景(光照、角度、有效距离、速度) 下对运算量和有效检测距离的需求。
(4)测试结果——欠拟合
- 定义:模型没有很好地捕捉到数据特征,不能够很好地拟合数据