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