人脸识别技术是如今十分热门的一项技术,掌握人脸识别技术的优势不言而喻。下面,我们将首先介绍人脸识别的基本概况。
一、 何为人脸识别
人脸识别技术由来已久,这个概念没有一个严格的定义,一般有狭义与广义之分。
狭义的表述一般是指:以分析与比较人脸视觉特征信息为手段,进行身份验证或查找的一项计算机视觉技术。
从表述上看,狭义的人脸识别技术其实是一种身份验证技术,它与我们所熟知的指纹识别、声纹识别、指静脉识别、虹膜识别等均属于同一领域,即生物信息识别领域。因此,狭义上的人脸识别一般指的是通过人脸图像进行身份确认或查找的场景。
生物信息识别的认证方式与传统的身份认证方式相比,具有很多显著优势。例如传统的密钥认证、识别卡认证等存在易丢失、易被伪造、易被遗忘等特点。而生物信息则是人类与生俱来的一种属性,并不会被丢失和遗忘。
而作为生物信息识别之一的人脸识别又具有对采集设备要求不高(最简单的方式只需要能够拍照的设备即可)、采集方式简单等特点。这是虹膜识别、指纹识别等方式所不具备的优点。
人脸识别的广义表述是:在图片或视频流中识别出人脸,并对该人脸图像进行一系列相关操作的技术。例如,在进行人脸身份认证时,不可避免地会经历诸如图像采集、人脸检测、人脸定位、人脸提取、人脸预处理、人脸特征提取、人脸特征对比等步骤,这些都可以认为是人脸识别的范畴。
二、 人脸识别的应用
近些年,随着人脸识别精度的提高,基于该项技术的产品也开始在我们生活中呈现“井喷”之势。
例如,早在2016年2月,北京站就开启了“刷脸”进站模式。如图1-1所示是北京站“刷脸”进站的使用提示。现在,越来越多的火车站开始采用“刷脸”进站方式替代人工检票,有效地加快了检票速度。
人脸识别的另外一个典型应用是手机解锁。随着iPhone X的诞生,苹果手机家族增添了一项新的身份验证方式,即所谓的Face ID。而苹果公司官方宣称,基于Face ID的识别准确率要远高于基于指纹识别的Touch ID。
实际上,通过人脸识别来解锁手机并不算什么新鲜事。早在Android 4.0时期,这项功能就已经集成在操作系统中了。只不过,由于种种原因,这项功能并未取得比较好的效果,因此无论是谷歌还是手机制造厂商都没有对此进行宣传,自然也不会被大众所了解。
值得一提的是,据说苹果公司在这项技术上的研发时间长达5年之久,直至iPhone X才搭载了完备的人脸识别功能,可见高精度的人脸识别技术并不是一种简单的技术。
上面的两个例子只是人脸识别应用的冰山一角,人脸识别技术的典型应用场景可以总结为如下几个场景。
(一) 身份认证场景
这是人脸识别技术最典型的应用场景之一。门禁系统、手机解锁等都可以归纳为该种类别。该方法与传统的钥匙开锁、指纹识别、虹膜识别等均属于身份认证。这需要系统判断当前被检测人脸是否已经存在于系统内置的人脸数据库中。如果系统内没有该人的信息,则认证失败。
(二) 证件验证场景
证件验证与身份认证相似,也可称为人脸验证,是判断证件中的人脸图像与被识别人的人脸是否相同的场景。在进行人脸与证件之间的对比时,往往会引入活体检测技术。
或许大家对活体检测技术并不陌生,就是我们在使用互联网产品时经常会出现的“眨眨眼、摇摇头、点点头、张张嘴”的人脸识别过程,这个过程我们称之为基于动作指令的活体检测。活体检测还可以借由红外线、活体虹膜、排汗等方法来实现。
不难理解,引入活体检测可以有效地增加判断的准确性,防止攻击者伪造或窃取他人生物特征用于验证,例如使用照片等平面图片对人脸识别系统进行攻击。
(三) 人脸检索场景
人脸检索与身份验证类似,二者的区别在于身份验证是对人脸图片“一对一”地对比,而人脸检索是对人脸图片“一对多”地对比。例如,在获取到某人的人脸图片后,可以通过人脸检索方法,在人脸数据库中检索出该人的其他图片,或者查询该人的姓名等相关信息。
这与我们在数据库中进行查询是一样的,但人脸检索要比在数据库中查询常规数据复杂得多,例如该以何种方式才能建立高效的人脸图片检索索引呢?
人脸检索的应用场景非常多,一个典型的例子是在重要的交通关卡布置人脸检索探头,将行人的人脸图片在犯罪嫌疑人数据库中进行检索,从而比较高效地识别出犯罪嫌疑人。
(四) 人脸分类场景
我们这里指的人脸分类主要包括判断人脸图片中的人脸是男人还是女人,所属的年龄区间是怎样的,是什么样的人种,该人的表情是什么等。当然,人脸分类能够实现的功能远不止于此,在很多场景中具有重要的应用价值。
例如,社交类App可以通过用户上传的自拍图片来判断该用户的性别、年龄等特征,从而为用户有针对性地推荐一些可能感兴趣的人。
(五) 交互式应用场景
美颜类自拍软件大家或许都很熟悉,该类软件除能够实现常规的磨皮、美白、滤镜等功能外,还具有“大眼”“瘦脸”、添加装饰类贴图等功能。
而“大眼”“瘦脸”等功能都需要使用人脸识别技术来检测出人眼或面部轮廓,然后根据检测出来的区域对图片进行加工,从而得到我们看到的最终结果。
添加装饰类贴图也是在这个基础上实现的,可以认为这是一种AR(增强现实)应用。其实,交互式的应用场景远不止于此,还有许多游戏也属于这种交互式的应用场景。
(六) 其他应用
上面所述的内容是人脸识别中应用比较广泛的领域。其实,除这些领域外,人脸识别还有许多其他的应用。
例如,人脸图片的重建技术可以应用到通信工程领域,实现低比特率的图片与视频传输;基于人脸识别技术,可以实现人脸图片的合成,甚至直接将一个视频中的人脸完全替换为另外一个人的脸。其中一个经典的项目是DeepFake,利用该项目可以实现“视频换脸”功能,实现的效果足以以假乱真。
我们可以在日常生活中体会到人脸识别技术为我们的生活带来的便利。随着技术的进一步发展,将会有越来越多的人脸识别相关项目落地。在后面的实战内容中,我们将会围绕这些应用场景,具体介绍其原理与实现方法。
三、 人脸识别的目标
我们已经介绍了人脸识别的不同应用场景。在不同的应用场景下,人脸识别的目标可能是不相同的。但是,对于绝大多数的人脸识别应用场景,人脸识别的目标是类似的。
人脸识别的大致流程可以描述为:通过人脸识别模型判断图片中是否存在人脸,如果存在人脸,则定位到该人脸的区位,或者提取该人脸图像的高级特征,作为该人脸图像的特征向量,并用在后续对图片的处理中。
由于人脸识别的应用场景不同,上述步骤的选择和侧重点也不尽相同。例如:
定位人脸在图片中的位置,可以用于诸如AR等贴图操作;
通过定位人脸的关键点,可以对人脸图片进行几何变换,通过几何变换可以实现对图像中人脸的校正,与此同时,得到的人脸关键点还可以用来实现诸如“瘦脸”等操作;
如果想要实现的功能并不是对人脸图片的几何变换,而是对图片中的人脸进行特定判断,如判断图片中人脸的性别、年龄等,那么此时的目标是提取出图片中人脸的高级特征,然后根据提取出来的高级特征,使用分类器进行分类,即可以实现诸如性别识别、年龄判断等功能;
对于人脸对比,一个可行的思路仍然是提取图片中人脸的高级特征,然后对这两个特征进行对比,从而得出一个相似度数值,通过比较该数值与预设阈值的大小,从而判别两张图片中的人脸是否属于同一个人。
从上面的介绍中我们可以看出,不同人脸识别应用的很多步骤都是重合的,其差异仅在于操作层次的深浅。通过合理选择、组合对人脸图片的操作层次,就可以实现我们预期的目标。
这个实现过程可以说是“万变不离其宗”,最核心的技术便是提取人脸图像的高级特征,我们将会在后续的例子中逐步印证这一点。
四、 人脸识别的一般方法
我们首先以人脸对比场景为例,介绍一种人脸对比的可行思路。
我们在前文中提到过,虽然人脸识别的应用很广泛,而且用到的具体技术也不尽相同,但是,有很多步骤其实是类似的。
下面我们简要介绍一下其中的一些关键步骤。
(一) 图像预处理
在很多计算机视觉项目中,往往需要进行图片的预处理操作。这主要是因为输入的图片常存在不合规范的地方,甚至会干扰系统的后续工作。
如图片带有噪声,或者图片尺寸不符合系统要求等,这些都是预处理这一步需要做的事。而对应的处理方法可以是对图片进行滤波等操作,从而使图片更加符合系统要求。如图1-3所示,分别为带有椒盐噪声的图片和经过中值滤波处理后的图片。
(二) 人脸检测
顾名思义,人脸检测就是用来判断一张图片中是否存在人脸的操作。如果图片中存在人脸,则定位该人脸在图片中的位置;如果图片中不存在人脸,则返回图片中不存在人脸的提示信息。
对于人脸识别应用,人脸检测可以说是必不可少的一个重要环节。人脸检测效果的好坏,将直接影响整个系统的性能优劣。如图1-4所示,灰色矩形框代表了从图片中检测到的人脸图像位置。
(三) 人脸校正
人脸校正又可以称为人脸矫正、人脸扶正、人脸对齐等。我们知道,图片中的人脸图像往往都不是“正脸”,有的是侧脸,有的是带有倾斜角度的人脸。这种在几何形态上似乎不是很规整的面部图像,可能会对后续的人脸相关操作造成不利影响。于是,就有人提出了人脸校正。
我们可以大致认为,人脸校正是对图片中人脸图像的一种几何变换,目的是减少倾斜角度等几何因素给系统带来的影响。因此,人脸校正一般也被认为是对人脸图像的几何归一化操作。人脸校正一般被用在人脸对比等存在后续人脸特征提取的应用场景中。
但是,随着深度学习技术的广泛应用,人脸校正并不是被绝对要求存在于系统中。深度学习模型的预测能力相对于传统的人脸识别方法要强得多,因为它以大数据样本训练取胜。也正因如此,有的人脸识别系统中有人脸校正这一步,而有的模型中则没有。
(四) 人脸特征点定位
人脸特征点定位是指在检测到图片中人脸的位置之后,在图片中定位能够代表图片中人脸的关键位置的点。常用的人脸特征点是由左右眼、左右嘴角、鼻子这5个点组成的5点人脸特征点,以及包括人脸及嘴唇等轮廓构成的68点人脸特征点等。
(五) 人脸特征提取
对于很多人脸识别应用来说,人脸特征提取是十分关键的步骤。例如在性别判断、年龄识别、人脸对比等场景中,将已提取到的人脸特征为主要的判断依据。提取到的人脸特征质量的优劣将直接影响输出结果正确与否。
我们可以认为RGB形式的彩色图片是一个具有红、绿、蓝三通道的矩阵,而二值图像和灰度图像本身在存储上就是一个矩阵,这些图片中的像素点是很多的。而提取到的特征往往是以特征向量的形式表示的,向量的元素一般都不会太多(一般在“千”这个数量级)。
因此,从宏观角度来看,特征提取过程可以看作一个数据抽取与压缩的过程。从数学角度看,其实是一个降维的过程。有关降维的内容,我们将会在后续的部分中详细介绍。
(六) 分类器
分类器其实指代的是一种分类算法。例如我们需要判断图片中人脸所属者的性别,在提取到人脸图像的高级特征之后,我们要根据这个提取到的特征来判断其性别。
这个过程其实是一个二分类过程,也就是大家都知道的:在不考虑特殊情况的前提下,人类可以分为两类,不是男人就是女人。判断的依据是前面提到的人脸图像的高级特征,用于判断的算法就是所谓的分类器。
在这里我们介绍了人脸识别中人脸对比场景中涉及的一些具体要素。我们可以看到,人脸对比的一个可行思路是首先进行图片的预处理,然后进行人脸检测判断,最后提取特征并进行对比。人脸对比是人脸识别中比较典型的应用场景,我们可以从这个例子中总结出人脸识别应用的共性。
图像预处理。目的是减少图片自身因素对系统判断造成的干扰,或者使图片格式更适合系统。常见的处理方式有图片去噪、尺寸转换、灰度化处理等。
人脸检测。对于人脸识别应用场景,如果图片中根本不存在人脸,那么后续的一切操作都将变得没有意义,甚至会造成错误的结果。而如果识别不到图片中存在的人脸,也会导致整个系统执行的提前终止。因此,人脸检测在人脸识别应用中具有十分重要的作用,甚至可以认为是不可或缺的重要一环。
特征点定位与特征提取。人脸识别系统如果想要实现一些高级功能,获取特征将是必不可少的部分。对于不同的人脸识别应用场景,其对特征的定义也不尽相同。例如想要在图片中的人脸上自动添加一个眼镜作为装饰物,那么我们需要获取的特征就是双眼在图片中的位置,这样以人眼为特征点的定位将是十分必要的;而对于人脸对比、性别识别等场景,获取能够代表图片中人脸的一个特征向量将是十分必要的。
对特征的利用。我们已经明确了,获取我们所需的特征是后续操作的重要基础。特征的利用方式前面已经提到几种,诸如使用分类器进行分类、使用比较器进行比较,或者利用定位到的人脸特征点进行图片的贴图。毫无疑问,对特征利用的目的是很明确的,因为这往往就是我们最终想要获取的系统直接输出结果。
上述过程在实现上可能会很复杂,但是对于大多数的人脸识别应用而言,大致的思路是相同的。将上述内容归结为人脸识别系统构建的一般方法,我们将在后续的内容中以这样的思路进行人脸识别系统的设计与实现。