随着人脸识别、人脸解锁等技术在金融、门禁、考勤、人证合一等日常生活中的广泛应用,人脸防伪/活体检测(Face Anti-Spoofing)技术在近年来得到了越来越多的关注。
简单来说,活体检测就是要识别出成像设备(摄像头、手机等)上检测到的人脸图像是来自真实的人脸,还是某种形式的攻击或伪装。这些攻击形式主要包括照片(包括纸质照片和手机、平板等电子设备上的照片)攻击、视频回放攻击、面具攻击等。
活体检测包括普通彩色(RGB)摄像头上的检测,也包括红外摄像头、三维深度摄像头上的检测。后面两种相对容易实现,这里主要讨论普通RGB摄像头上的活体检测。
以前的动作活体检测的方式具有很高的安全性,但要求用户配合做几个动作,因此体验不好。现在的活体检测不需要用户动作配合,被称作静默活体检测。 此外,活体检测要求实时完成,在不超过1秒,最好在300毫秒内完成识别。
现在主流的活体识别算法基本可以分为两种类型。第一个类型使用特定的某种物理特征,或多种物理特征的融合,通过深度学习方面的训练分类器,来区分是活体,还是攻击(或者是哪种形式的攻击)。另一个方式是使用卷积神经网络(CNN)的方法,直接在RGB图像(或者转换到其它色度空间)上使用深度神经网络来提取特征,最后通过分类器来区分是活体还是非活体。为了提取时间上多帧而不是单帧的信息,也可以结合使用RNN的方法。CNN的方法能达到很好的效果,但通常比较耗时,不能满足实际应用中嵌入式设备的实时识别的要求。而且,当物理特征挑选使用恰当时,第一种方法能够达到非常好、甚至超越CNN的效果。
活体检测中的物理特征主要分为纹理特征、颜色特征、频谱特征、运动特征、图像质量特征等,此外,还包括心跳特征等。其中纹理特征包括很多,但最主流的是LBP、HOG、LPQ等。颜色特征除了RGB之外,学术界发现HSV或YCbCr具有更好的区分活体非活体的性能,被广泛用作不同的纹理特征上。频谱特征的原理是活体、非活体在某些频段具有不同的响应。运动特征提取目标在不同时间上的变化,是一个有效的办法,但通常耗时较久,达不到实时的要求。图像质量特征有很多描述方式,比如反射、散射、边缘或形状等。
经过多种算法的比较,我们的活体检测选用了多种物理特征融合加上分类器的算法。我们的计算优势体现在以下几个方面。
- 我们的物理特征选用了上面描述的其中几种,涵盖了纹理特征、颜色、频谱特征、图像质量特征,和可选的运动特征。
- 我们研究了几种融合方式:i)在特征上进行融合;ii)在自动编码器(auto encoder)上进行融合;iii)在分类得分上融合。我们选用了准确率最高,易用性好,速度快的方法。
- 我们使用的分类器算法超越传统的支持向量机(SVM)算法,使用了最新深度学习方法,比如center loss。
算法经过优化之后,可以有效提取各种摄像头上的活体和非活体的不同响应,根据我们在多个主流厂家摄像头及手机的测试结果表明,识别准确率达到99%以上。同时,实时性能优异,能在300毫秒内快速完成识别。
当然,泛化性能对所有活体识别来说都是一个挑战,这需要采集海量的数据来进行训练,涵盖市面上主要的手机、摄像头型号。我们希望使用我们的SDK的开发者们,可以分享你们能获取的活体、非活体照片,以便于我们进一步优化我们算法的准确率。
神目科技的AI开放平台上可以下载并免费使用的人脸识别及活体检测SDK https://ai.deepcam.cn/#/home 大家可以试试。