基于人脸识别的车辆解锁算法设计
2019-09-05程志伟王振阳黄宏成时良仁刘彦博
程志伟 王振阳 黄宏成 时良仁 刘彦博
(1.上海交通大学汽车电子控制技术国家工程实验室;2.上海交通大学学生创新中心,上海市 200240)
0 引言
近年来,人工智能的兴起使诸多领域都发生了变革,其中汽车的智能化与网联化也在逐渐实现。借助于人脸识别这种强大的智能算法,解锁车辆是值得探究的一个方向。典型人脸识别系统(包含人脸检测、特征提取和人脸识别)鲁棒性较差,不适合用于车辆解锁。在此基础上增加活体检测模块能有效避免恶性攻击,保证了车辆解锁的便捷性与安全性。
1 人脸识别相关研究
完整的人脸识别系统涵盖人脸位置检测、活体检测、人脸识别等。人脸位置检测大致可分为基于知识、基于不变特征和基于统计模型。早期的人脸位置检测有采用基于知识的算法,由于将人脸知识进行硬编码转换成合理的规则是非常困难的,基于知识的方法存在识别精度差的问题。基于不变特征的人脸检测通过各种面部不变特征来确定图像中是否存在人脸。此外,在RGB、HSV、YCbCr等颜色空间采用皮肤不变特征检测人脸的算法也有不少应用。基于不变特征的鲁棒性较差,光照变化、噪音、遮挡会使检测结果严重偏离。基于统计模型的方法将图像映射到低维空间并采用机器学习算法区分人脸和背景[1],这是人脸检测应用最多、效果最好的算法。
活体检测对人脸识别系统的安全性是至关重要的。真实人脸和假冒人脸在图像纹理、三维结构、运动信息这三方面是有所区别的,其中根据图像纹理(图像阴影、图像模糊、图像高光)来区分真假人脸的方法应用较广。较为典型的算法有:LGS算法、基于旋转不变LBPV算法和傅里叶频谱分析法。以上方法均采用了手工提取特征,所提取的特征可能存在局限性,而采用深度学习自动提取特征能很好地解决这些问题,达到更高准确率、更鲁棒的活体检测效果。
人脸识别大致可分为基于几何特征、基于模板匹配两大类方法。基于几何特征的方法本质上是一种匹配局部信息来识别人脸的算法,而基于模板匹配的算法则是计算模板和图像的全局自相关来实现人脸识别,总体性能更好,其中比较常见的有特征脸法、弹性图匹配、浅层神经网络方法、深度学习方法。近年来的深度学习可以说完全统治了识别领域。神经网络方法的优势在于它可以通过训练获得其他方法难以实现的特征的隐形表现,避免了复杂的特征提取(深度学习直接将特征提取与分类融为一体)。
2 人脸识别系统
2.1 人脸位置检测
人脸检测是活体检测和人脸识别的前提,为保证检测的速度和精度采用基于统计模型的方法,具体是采用实时性较好、精度较高的Haar-like特征的级联分类器[2]检测人脸。人脸检测的主要步骤如下:首先计算图像的积分图并在积分图上计算Haar-like特征,然后采用AdaBoost算法训练区分人脸和非人脸的强分类器,最后使用筛选式级联分类器把强分类器级联到一起,提高人脸检测的速度与精度。
Haar-like特征是由Viola等人提出的,具体形式如图1所示,它包括两个二矩形、一个三矩形以及一个对角四矩形。二矩形特征是计算左右区域的像素和之差,三矩形特征是计算左右区域与中间区域的像素和之差,四矩形特征则是计算对角区域像素和之差。在一个子窗口中至少有数以十万计的Haar-like特征,大量的运算无法满足实时性要求。因此,需要计算原始图像的积分图,积分图只需遍历一次图像就可以求出图像中所有区域像素和,然后在积分图上进行特征计算,能够大幅提升计算效率。
(1)(2)(3)(4)
图1 Haar-like特征示意图
Fig.1 Schematic diagram of Haar-like features
计算出Haar-like特征后利用Adaboost算法训练弱分类器并形成强分类器。其中弱分类器的训练步骤如下:先对每个特征计算所有训练样本的特征值,并将其排序;然后求得每个元素的分类误差,寻找误差最小的元素作为最优阈值,这样就得到了最优弱分类器。强分类器的产生需要经过多轮迭代,相当于让所有弱分类器投票,在对投票结果按照弱分类器的错误率加权求和,将投票加权求和的结果与平均投票结果比较得出最终的结果。获得了强分类器之后,采用级联策略将其组合成最终的人脸检测算法。
2.2 活体检测
卷积神经网络是由Yann Lecun等人提出的一种学习算法,该算法开启了深度学习的浪潮。典型的卷积神经网络有AlexNet[3]、VGG[4]、Googlenet[5]、ResNet[6]。一般的卷积神经网络由卷积层、线形整流层、池化层、全连接层组成。卷积神经网络在大型数据集ImageNet 1000类物体识别的准确率已经高达90%,可见卷积神经网络的特征提取和识别能力足够强大。受此启发,使用深度神经网络提取真人和照片的图像特征,并对真人和照片进行分类。由于从零开始训练一个深度卷积神经网络往往会耗费几周甚至几个月的时间,因此采用了迁移学习的方法。迁移学习就是将ImageNet 1000类物体上已经训练好的网络模型针对自己的数据集进行微调,使其能很好地区分不同类别。事实证明,迁移学习是高效并且完全可靠的学习策略。
活体检测算法的总体框架如图2所示,算法分训练阶段与测试阶段。在训练阶段,首先将训练集中的图像大小统一调整为224*224像素,然后将同一尺寸的训练图像输入ResNet18进行特征提取,最后得出分类结果并计算损失,进行反向传播从而训练出一个区分度好、泛化能力强的模型。在测试阶段,同样先把测试集中的图像大小统一为224*224像素,然后利用训练好的ResNet18进行分类,最后计算出分类的准确率并对训练模型做出评估。
图2 活体检测算法流程
活体检测网络在Microsoft提出的ResNet18基础上进行了修改,具体网络模型见图3。该网络是一个18层的残差卷积神经网络,输入为224*224的人脸图像,经过一系列卷积层、Relu层、池化层输出一个二维向量,从而表示输入图像属于人脸和照片的概率。网络训练之前,首先将标准的ResNet18的1000维全连接层改为2维全连接层,然后采用迁移学习的方法在原始模型的基础上微调所有filter的参数。为了保证网络收敛,不宜采用较大地学习率,因而学习率设为0.001。经过训练,在训练集上活体检测能达到100%的准确率,在测试集上达到了93%的准确率,因此基本实现了活体检测功能,有效避免了照片、视频等恶性攻击,确保了人脸解锁识别系统的安全性。
图3 修改后的ResNet18网络结构
2.3 人脸识别
人脸识别阶段是将摄像头实时采集的图像和本地的参考图像做比对,计算相似性,从而识别身份信息。人脸识别是整套系统的关键,识别的精度与速度直接影响系统的性能。
综合考虑各方面因素,采用谷歌提出的FaceNet[7]卷积神经网络模型进行人脸识别。FaceNet的网络结构如图4所示,网络的输入为三通道220*220人脸图像,首先经过卷积操作,卷积核的大小为64*7*7*3,卷积之后的特征图大小为110*110*64;然后在特征图上进行Relu操作,特征图大小保持不变;紧接着在特征图上进行池化操作,得到55*55*64的特征图;最后进行标准化操作,避免网络出现过拟合。重复以上操作数次,最终经过几个全连接层和L2正则化得到一个128维的欧氏距离。FaceNet网络模型参数较多,训练时间过长,因而直接采用训练好的权重进行识别。经过训练之后,同一个人之间的距离会非常接近,不同人之间的距离会远离,可以通过设置合理的阈值来区分不同人脸,从而达到高准确率的人脸识别效果。
图4 FaceNet网络结构
3 人脸识别算法验证
考虑到车辆空间局限性、硬件成本以及算法性能等诸多因素,采用Raspberry Pi 3B+开发板、Movidius NCS计算棒和夜视红外摄像头验证人脸识别系统的可靠性。经过实验验证,系统能快速地检测人脸,检测速度约为每秒30帧,完全满足检测实时性要求。同时,系统可以较好地区分真实人脸和二次采集的人脸图像,识别效果如图5所示。从图中可以看出,活体检测模块能将左边的照片与右边的真人进行有效的区分。系统的人脸识别模块具有极高的准确率。人脸识别模块采用的FaceNet深度学习算法在著名的LFW人脸数据集上能达到99.63%的准确率,高于正常人类的识别能力,能够胜任解锁车辆的任务。在实验过程中,未曾出现将非用户误认为用户而解锁的情况。综上所述,所设计的人脸识别系统算法是有效的,并且准确率高、实时性较好。
图5 活体检测效果
4 结论
为实现车辆智能解锁,设计了一套完整的人脸识别系统,包括了人脸检测、活体检测以及人脸识别三大部分。在嵌入式平台树莓派上进行了实验验证,该系统可以不分昼夜快速检测与识别人脸并解锁车辆,此外对照片、视频的攻击有较好的防护,能够满足系统的安全性要求。整套系统创新性高,实用性强,符合车辆智能化、网联化的发展趋势。未来,对上述人脸识别系统还可以做一些改进。一方面,可通过配备3D结构光传感器实现更好的抗攻击性能,另一方面,可以对现有算法进行一定优化,提高系统的实时性。