这是一个「看脸」的时代,一谈人脸技术,大家最为熟知就是人脸识别。该技术在金融、社保、零售、安防等领域表现活跃,成为人工智能技术领域的明星。本文主要介绍一些背后默默支持人脸识别的技术。
一般而言,一个完整的人脸识别系统包含四个主要组成部分,即人脸检测、人脸对齐、人脸特征提取以及人脸识别。
四部分流水线操作:
检测出图像中人脸所在位置的一项技术
人脸检测算法的输入是一张图片,输出是人脸框坐标序列(0个人脸框或1个人脸框或多个人脸框)。一般情况下,输出的人脸坐标框为一个正朝上的正方形,但也有一些人脸检测技术输出的是正朝上的矩形,或者是带旋转方向的矩形。
常见的人脸检测算法基本是一个“扫描”加“判别”的过程,即算法在图像范围内扫描,再逐个判定候选区域是否是人脸的过程。因此人脸检测算法的计算速度会跟图像尺寸、图像内容相关。开发过程中,我们可以通过设置“输入图像尺寸”、或“最小脸尺寸限制”、或“人脸数量上限”的方式来加速算法。
根据输入的人脸图像,自动定位出人脸上五官关键点坐标的一项技术
人脸对齐算法的输入是“一张人脸图片”加“人脸坐标框”,输出五官关键点的坐标序列。五官关键点的数量是预先设定好的一个固定数值,可以根据不同的语义来定义(常见的有5点、68点、90点等等)。
这项技术的应用很广泛,比如自动人脸识别,表情识别以及人脸动画自动合成等。由于不同的姿态、表情、光照以及遮挡等因素的影响,准确地定位出各个关键特征点看似很困难。我们简单地分析一下这个问题,不难发现这个任务其实可以拆分出三个子问题:
1. 如何对人脸表观图像(输入)建模
2. 如何对人脸形状(输出)建模
3.如何建立人脸表观图像(模型)与人脸形状(模型)的关联
对人脸图像进行特征点定位,将得到的特征点利用仿射变换进行人脸矫正,若不矫正,非正面人脸进行识别准确率不高,最后将矫正的人脸送入人脸识别网络,此时的人脸识别网络可以是一个分类网络,我们只需要提取分类网络中的某个层作为人脸的特征层,此时的特征才是人脸的特征。
将一张人脸图像转化为一串固定长度的数值的过程
具有表征某个人脸特点能力的数值串被称为“人脸特征(Face Feature)”。
人脸特征提取过程的输入也是 “一张人脸图”和“人脸五官关键点坐标”,输出是人脸相应的一个数值串(特征)。人脸提特征算法都会根据人脸五官关键点坐标将人脸对齐预定模式,然后计算特征。
近几年来,深度学习方法基本统治了人脸提特征算法,这些算法都是固定时长的算法。早前的人脸提特征模型都较大,速度慢,仅使用于后台服务。但最新的一些研究,可以在基本保证算法效果的前提下,将模型大小和运算速度优化到移动端可用的状态。
识别出输入人脸图对应身份的算法
输入一个人脸特征,通过和注册在库中N个身份对应的特征进行逐个比对,找出“一个”与输入特征相似度最高的特征。将这个最高相似度值和预设的阈值相比较,如果大于阈值,则返回该特征对应的身份,否则返回“不在库中”。
判断人脸图像是来自真人还是来自攻击假体(照片、视频等)的方法
计算机判别检测的人脸是真实的人脸,还是伪造的人脸攻击,比如合法用户图片、提前拍摄的视频等。
和前面所提到的人脸技术相比,人脸活体不是一个单纯算法,而是一个问题的解法。这个解法将用户交互和算法紧密结合,不同的交互方式对应于完全不同的算法。
解决人脸活体检测这个问题,不光是需要通过各种反欺骗算法,还有需要通过一系列的硬件设备配合,如静默活体检测、红外活体检测、获取生物信号(心率等)、光流场、深度摄像头、语音指令配合等。
传统方法将其视为一个“活体”VS“假体”的二分类问题,当然也可看成多分类问题,如真人、图片攻击、视频回放攻击、面具攻击等)。
识别出人脸的性别、年龄、姿态、表情等属性值的一项技术
一般的人脸属性识别算法的输入是“一张人脸图”和“人脸五官关键点坐标”,输出是人脸相应的属性值。人脸属性识别算法一般会根据人脸五官关键点坐标将人脸对齐(旋转、缩放、扣取等操作后,将人脸调整到预定的大小和形态),然后进行属性分析。
常规的人脸属性识别算法识别每一个人脸属性时都是一个独立的过程,即人脸属性识别只是对一类算法的统称,性别识别、年龄估计、姿态估计、表情识别都是相互独立的算法。但最新的一些基于深度学习的人脸属性识别也具有一个算法同时输入性别、年龄、姿态等属性值的能力。
衡量两个人脸之间相似度的算法
人脸比对算法的输入是两个人脸特征(注:人脸特征由前面的人脸提特征算法获得),输出是两个特征之间的相似度。人脸验证、人脸识别、人脸检索都是在人脸比对的基础上加一些策略来实现。相对人脸提特征过程,单次的人脸比对耗时极短,几乎可以忽略。
判定两个人脸图是否为同一人的算法
它的输入是两个人脸特征,通过人脸比对获得两个人脸特征的相似度,通过与预设的阈值比较来验证这两个人脸特征是否属于同一人(即相似度大于阈值,为同一人;小于阈值为不同)。
人脸验证过程就是人脸识别过程。
查找和输入人脸相似人脸的算法
人脸检索通过根据人脸特征的数值,在大量的数据库里检索,找出最相似的人。
将输入的人脸和一个人脸库中的人脸进行比对,根据比对后的相似度对人脸库中的人脸进行排序。根据相似度从高到低排序的人脸序列即使人脸检索的结果。