前言:想要写出一篇引人入胜的文章?我们特意为您整理了人脸识别与活体检测在嵌入式上优化范文,希望能给你带来灵感和参考,敬请阅读。
摘要:针对嵌入式设备在人脸识别系统存在的人脸较小样本下识别率低、活体检测困难问题做出来算法优化。采用了基于透视变化原理改进了PCA人脸识别算法,丰富人脸样本图像,提高识别率;设计了一种新型共享且密集的深度可分离通道卷积,大大降低了卷积计算量的同时并精度损失较小,使得能应用于嵌入式设备上。最后,经过测试,优化后的算法速度好,识别率高,安全可靠,有良好的应用前景。
关键词:嵌入式系统;人脸识别;活体检测;卷积神经网络
0引言
作为生物识别技术的一种,人脸识别技术有着先天性、唯一性、不易被复制性等优点。相较于其他传统的生物识别技术,如指纹识别[1],虹膜识别[2]等,人脸识别技术存在着成本低、友好、可靠、非接触等优势,目前已经成为应用最普遍的生物识别技术。特别是新冠肺炎期间,人脸识别系统发挥至关重要的作用。传统的人脸识别系统常搭载于PC机上并且需要建立服务器,这样成本较高,而且使用的时候会受网络的限制,并且PC机为载体存在着体积大,便携性差,在特定的场合下不适合使用等缺点。嵌入式设备具有成本低、功耗低、体积小、便携性好等优点。随着嵌入式技术的不断发展与国家的大力扶持,嵌入式应用已经不断出现在我们生活当中。因此要将人脸识别系统运用到嵌入式设备上[3,4]。人脸识别算法运算量大,占用内存高[5,6],嵌入式设备的计算能力不足,内存受限,这样会使得系统的时效性、可靠性、准确性大大降低,而且传统的嵌入式人脸识别系统缺少了人脸活体检测部分,这会使得假脸也能通过,存在严重的安全隐患[7]。因此本文针对这些缺陷给出了算法优化:1)在人脸识别环节中,设计了一种人脸图像增强方法来提升人脸识别算法对非正脸的识别率。2)在人脸活体检测环节中,提出了一种新型卷积核来对卷积神经网络进行加速。3)提升了人脸识别和人脸活体检测在嵌入式设备上的效率,准确性和速度。4)提出一种方案,使得嵌入式设备上能实现完全离线的综合人脸识别与人脸检测的系统。
1系统总体设计
嵌入式人脸识别系统的主要框架如图1所示,主体主要由主控部分、显示器部分、摄像头部分这三部分组成。系统初始化之后,摄像头对捕获的视频流截取一帧图像进行人脸检测,在检测到人脸之后进行人脸识别,如果人脸识别通过,系统会继续进行人脸活体检测,判断是否是真脸。硬件系统主要包括了主控模块、摄像头模块、显示器模块和电源模块。主控模块负责调用摄像头模块来获取图像数据信息,并对图像进行人脸检测、对检测到的人脸进行人脸识别和对识别成功的人脸进行活体检测。主控模块这里选用的是树莓派型号3piB,摄像头选用的是分辨率为1280×70,采集速率为30fps的罗技C270i摄像头。显示器模块是系统的数据输出端,负责展示系统信息和识别结果。软件模块主要包括主程序的设计、人脸检测程序设计、人脸是识别程序设计和人脸活体检测数据设计。
2基于PCA人脸识别算法优化
基于PCA的人脸识别算法是通过人脸数据集矩阵找到一个映射空间,再将人脸图像投影到该空间中,得到一组降维的向量。识别时,待识别人脸通过特征脸空间得到一个降维的向量,再通过度向量方法得到待识别人脸与数据库中每个人脸的举例,然后根据阈值进行判断。PCA人脸识别算法由计算特征脸空间阶段和人脸识别阶段两阶段组成。基于PCA的人脸识别算法需要将M×N的图像按列展开待MN×1的列向量,这样会损失图片的空间结构,使得在非正脸的情况(如仰头、低头、转头等)下识别率明显下降。通常为提升算法的识别率会要求录入者拍摄多角度的人脸照片,但是这样对人脸录入的体验十分不好,另外在某些情况下只能获取单一人脸(如基于身份证人脸)。因此本系统利用透视变化来增强人脸图像,有效得提升非正人脸的识别率。
2.1透视变化
透视变化是指利用透视中心、像点、目标点三点共线的条件,按照定律旋转定律使透视面绕透视轴旋转某一角度,破坏原有的投影光线束,仍能保持透视面上投影几何图形不变的变换[8]。透视变化就是讲畸变图像中的每个像素点投射到无畸变图像中的每一个像素点的过程,通用的透视变化公式为:由式(2)可以推导,只要得到四对畸变图像与正视图像相对应的坐标对就可以解出透视变换参数,从而求得透视变换矩阵,再将原始图像中的每个像素点代入式(2)中,则可以得到透视变换后的图像。
2.2基于透视变化的人脸增强法
本文利用透视变换模拟人向左抬头、向右抬头、仰头和低头的图像,它们与原图像的四个角(依次为左上、右上、右下、左下)的对应坐标分别为:(0,0)→(0,0),(w,0)→(w,s),(w,h)→(w,h-s),(0,h)→(0,h)(0,0)→(0,s),(w,0)→(w,0),(w,h)→(w,h),(0,h)→(0,h-s)(0,0)→(0,0),(w,0)→(w,0),(w,h)→(w-s,h),(s,h)→(0,h)(0,0)→(s,0),(w,0)→(w-s,0),(w,h)→(w,h),(0,h)→(0,h)(3)其中,h和w为原图像的高和宽,s表示畸变程度且s∈N。当图像大小为112×92时,取s为8,原始人脸和经过透视变换的人脸如图3所示。由图3可以看出,透视变换后的图像与原始图像相比有一些变化,类似于头部旋转、头部向上和头部向下图像。因此,可以通过视图转换来变换一个图像以创建四个丰富面部图像样本的面部图像。
3人脸活体检测算法优化
卷积神经网络有很强的图像理解和判断能力,在人脸活体检测上有较好的成效,能有效鉴别真假脸。但是卷积神经网络的计算量十分大,在资源受限的嵌入式设备上应用困难。这里提出一种新型卷积神经网络-共享且密集的深度可分离通道卷积SDChannelNets。
3.1共享且密集的深度可分离通道卷积
标准卷积层中,输入为Df×Df×m的特征图,输出为为Dg×Dg×n的特征图。其中Df为输入特征图的宽度和高度,Dg为输出特征图的宽度和高度,m和n分别为输入和输出的通道数。一个卷积层的参数量取决于卷积核的参数量,而卷积核的参数量又与m×n的大小密切相关。共享且密集的通道卷积层的输入输出特征图与标准卷积层的输入输出特征图相同,但是卷积核只有一个长卷积核。输入特征图每次只与长卷积核的一部分进行卷积操作,这部分是参数共享的,用这操作来代替标准卷积层的相互独立的卷积核的卷积操作。深度可分离卷积将标准卷积分解为用来过滤每一通道的特征的深度卷积和将这些特征融合的1×1卷积。在MobileNets中,1×1卷积的参数量占模型总的参数量的75%,于是这里将1×1卷积替换成1×1共享且密集的通道卷积。1×1卷积存在的参数量:1·1·m·n(4)1×1卷积存在的参数量(S为通道方向的步长):1·1·(m+(n-1)·S)(5)用这种方法压缩了m×n项,大大减少了参数量。3.2SDChannelNets本文用共享且密集的深度分离通道卷积构建SDChannelNets。这里遵循MobileNetV2的基础架构。本文去掉了MobileNetV2的瓶颈块中的第一个1×1卷积,将深度卷积的深度系数设置为6或1,最后将瓶颈块中的第二个1×1卷积替换为1×1共享且密集的通道卷积。SDChannelNet中的SDC瓶颈块由上述修改构成。并且去掉了MobileNetV2中输出通道数为1280的卷积层,MobileNetV2密集连接层的参数量占总参数量的24.3%。最后还去掉了第一个卷积层的激活函数,因为在少量基础的特征通过非线性激活函数激活时产生损失大量基础特征导致可用特性少量。SDChannelNets网络结构表所示。本文使用keras深度学习框架对SDChannels步长为192的模型进行搭建,采用随机梯下降训练,权重衰减10-4,Nesterov动量为0.9,同时训练使用64批量和100次的迭代次数。设置0.1的初始学习率。在迭代60%和80%将学习率除以10。在除了第一层的每个卷积层后加入BN层和Dropout层一直过拟合。最后在ROSE-Youtu人脸活体检测数据集上与其他算法[9,10]进行测试,实验结果如表2所示。
4实际系统测试与分析
4.1基于人脸增强的PCA人脸识别算法测试
实际测试时,让实验室的是十位同学担任人脸测试来源,每位同学录入三张照片在合法人脸文件夹里,根据之前的结果,将人脸增强的畸变s设置为8。每位同学在摄像头前测试10次,共100次。实验结果如表3所示。在数量级下的情况下识别有11%的明显提高。
4.2基于SDChannelNets-192活体检测算法测试
活体检测部分每个同学在摄像头前测试10次,作为真实人脸样本,总共100个正样本。然后每个同学的照片A4打印测试10次,共100个负样本。这里与MobileNetsV2算法进行比较。对比实验结果,本文提出的SDChannelNet-S192算法平均耗时减少了3326ms,错误接受率降低了百分之一,错误拒绝率提升了百分之零点八。
5结语
经过本文上述算法优化,使得嵌入式设备在人脸识别系统存在的人脸较小样本下识别率低、活体检测困难这二个缺陷得到了显著改善。本文提出了一种新型的基于透视变换的人脸识别算法,并且提出一种新型卷积神经网络-共享且密集的深度可分离通道卷积SDChannelNets,做出了人脸识别和人脸活体检测在嵌入式设备上的优化,并经过测试,具有速度好,识别率高,安全可靠,有良好的应用前景。
作者:金千航 秦会斌 张建楠 单位:杭州电子科技大学电子信息学院CAE研究所