- 作者 | 彭建宏(旷视科技产品总监彭建宏)
人脸识别技术越来越多地应用在了各种身份验证场景,在这种看起来发生在电光火石之间的应用背后,又有哪些不易察觉的技术在做精准判别?算法又是通过何种方式来抵御各种欺诈式攻击?
深度学习技术的迅猛发展,使得图像识别、分类跟检测的准确率大幅提高,但真正要做成一套金融级解决方案还不是那么简单的,这张图就展示了一个整体的 FaceID 提供的金融级整体的解决方案。
在这个架构图中,我们可以看到,FaceID 的用户提供了多种产品形态,包括移动端的 SDK,H5,微信/小程序、第三方渠道 APP 以及 PC 端。从功能上来说呢,我们的产品包括身份证的质量检测、身份证 OCR 识别、活体检测、攻击检测以及人脸比对,整个解决方案可以看出是建立在云跟端两个基础上,我们在端上提供了 UI 解决方案,就提供 UI 界面可以方便集成,如果觉得我们的 UI 做得不符合大家的要求,也可以去做一些定制化开发,整个核心功能里有活体检测,在端上跟云上分别有自己的实现。
身份验证流程:
活体攻击检测方案:
下面我们来去讨论一下最重要的活体攻击。在我们的产品里面提供了多种活体攻击的检测方案,包括随机、动态的活体,包括视频活体、炫彩活体等等。活体检测是我们整个 Face ID 最重要的一环,也是我们最重要的核心优势。这个 PPT 展示的是我们的动作活体,用户可以根据我们的 UI 提示进行点头、摇头这样的随机动作,所以我们每次随机动作都是 Serves 端去发出的,这样也保证我们整个动作的安全性。这里面有些技术细节,包括人脸质量检测,人脸关键点的感测跟跟踪,脸部的 3D 姿态的检测。这是我们整个技术的一些核心竞争力。然后我们会帮助用户定义一套 UI 界面,如果用户觉得我们 UI 界面不好也可以直接去修改。
我们提供一种叫炫彩活体的检测方法,这个是 Face++ 独特独创的一种根据反射光三维成像的原理进行活体检测,从原理上杜绝了各种用 3D 软件合成的视频、屏幕翻拍等等的攻击。从产品形态上来说本身又是一个视频,现在可能看不到,就是屏幕会发出一种特定图案进行活体判断。
现在活体有一个比较大的问题是当在强光下它的质量检测方法,效果不太好,我们在最后会配合一个简单的点图动作,这样就提高了整个攻击的门槛,然后针对移动 H5 的场景我们主要推出了一个视频活体的检测方法,用户会根据 UI 提供的一个数字去读这样一个四位数字,同时我们会去判断,不仅会去做云方面的识别,还会做传统方面的识别,以及两者之间的语音跟声音同步检测。
这样通过这三种方案去判断就是活体检测,除了刚才我们介绍的一些比较典型的方法之外,我们也在去尝试一些新的包括双角度活体跟静默活体。双角度活体是用户拍一张正脸的自拍照与侧面自拍照,通过这种 3D 建模重建的方式来判断是不是真人,我们的双角度活体,静默活体,为用户提供一种非常好的用户体验,相当于用户拍一个两秒钟的视频。
我们会将这个视频传到云端,这样我们不仅会去做单帧的活体检测,还会去做多帧之间的这种关联性活体检测,这样通过两种动静结合的方法去判断受测人是不是真人。
除了活体检测之外,我们还提供了一套叫做 FMP 的攻击检测,可以有效去识别翻拍,面具攻击,这是在我们的云端完成的。这是我们基于大量的人脸数据训练出一套叫 FMP 的深度神经网络,并且根据线上的数据进行实时返回和调整,不断去识别准确率,这也是我们整个活体检测里一个最重要的技术难点。
人脸比对:
活体检验之后,我们就可以进行人脸比对的环节。我先简单跟大家介绍一下人脸识别的一个基本原理:首先我们会从一幅图片里面去做人脸检测并做出标识,相当于在一张图片里面找到这张人脸,并且表示出整个人脸上的一些基本关键点,如眼睛、眉毛等等。
下面要做的是将一些人脸关键点进行对齐,作用是为之后的人脸识别算法提供数据预处理,可以提高整个算法准确度。然后,我们会把整个人脸的那部分抠出来,这样就可以避免周围物体对它的影响,抠完之后的人脸会经过深度学习网络,最终生成一个叫做表示的东西,可以把表示理解为这张图片生成的一张向量,认为是在机器认知里面这张图片就是通过这样的向量来进行表示的。但这个怎么样去衡量这个标识能够真实的刻画出这张真实的人脸?
我们现在有个原则:如果同一个人,我们希望表示之间的距离要尽量的近,如果是不同的人,我们希望表示的距离尽量的远,这就是我们去评价一个深度学习出来的一个表示好坏。然后基于这样的表示,在人脸识别里边有两个比较大的应用,我们分别叫做 1:1 与 1:N 的识别。
前者主要是比较两张人脸识别是不是同一个人,它的原理是我们去计算两张人脸表示的距离,如果这个距离小于一个域值,我们就会认为这个是同一个人,如果是大于某一域值,我们就认为它不是同一个人,在不同的误识率下,我们会提供不同的域值。第二个 1:N 的应用,主要应用场景是安防,也就是说我们提供一张人脸照片,在数据库里面去查找已知,最相似的这样一个人脸是 1:7 的应用,FaceID 主要应用的技术场景是 1:1。
当我们通过 OCR 去识别出来用户姓名、身份证号,并通过活体检测之后,我们会从公安部的权威数据库里面去获得一张权威照片,会跟用户视频采集到的一张高质量照片进行比对,会返回给用户是不是一致,当然我们不会去直接告诉用户是不是一致,而是会通过这种近似度的方式告知。
大家可以看一下左侧的这张表,然后这边的返回值里面提供了千分之一、万分之一、十万分之一不同的近似度,这些表示的是误识率,在不同的误识率下会有一个域值,假设我们认为在千分之一误识率下,如果分数大于 60 分,我们就会认为是同一个人,所以这两张照片,我发现他们的这个近似度是 75,我们会说在万分之一的误识率下是同一个人,但是在十万分之一这种误识率下可能他们不是同一个人。
这里有一个细节是我们的照片数据源可能会提供不同的整个时间造成不同的障碍,正常的话,我们会有一个不同的这种纹理图案,但是有时我们会获得一张空白照片,或者获得一张黑白照片,这也需要我们去做一些后台方面的处理。
所以总结一下就是 Face ID 会为大家提供一整套的这种身份验证解决方案,整个方案涵盖了质量检测、身份证识别、活体检测、攻击检测和人脸比对等一系列的功能,其中在活体检测方面,我们采用了云加端的这种联合防范方式,通过不同的活体检测方案,包括动作活体、视频活体、静默活体等一系列的检测方法,可以有效的预防假脸攻击。
在线上我们每天都会遇到各种各样的攻击方式,整个人脸验证的方案是一套长期攻防战,我们现在通过线上运营的方式不断去收集攻击的异常数据,进行人工标注、训练、分析,然后可以不断提升整个模型的防范能力,在这方面我们已经形成了一套闭环系统,发现任何的攻击我们都可以在很短的时间内去更新线上的一些模型,做到充分防范。
摘录:https://cloud.tencent.com/developer/article/1143876