人工智能的发展离不开计算机视觉的技术支撑, 计算机视觉[1]是使用计算机及其相关设备对生物视觉的一种模拟, 其主要侧重在图像底层特征提取、视频分析等方面. 其中人脸识别[2]就是基于计算机视觉的有关生物特征识别的研究技术之一. 近年来人们广泛关注有关特征的构建和识别, 例如MSER[3, 4]、HOG[5]、SIFT[6]、LBP[7, 8]等. 利用普通摄像头就能采集人脸数据模型, 通过后台相应的算法就可对个人身份进行识别和确认, 因而研究人脸识别本身就有着重要的意义, 并且其核心技术的实现展现了弱人工智能向强人工智能的转化.
随着深度学习的发展, 卷积神经网络(CNN)[9]也为人脸识别提供了新的思路, 其中经典的模型包含了AlexNet[10]、GoogleNet[11]、VGG[12], 同时也包含了ConvNet-RBM[13]、DeepFace[14]等深度网络人脸识别方法. 其中ConvNet主要是直接从具有混合深度网络的面部对的原始像素中学习表明身份相似性的关系视觉特征的一种模型. DeepFace则是使用显式3D人脸建模来重新审视对齐步骤和表示步骤, 以便应用分段仿射变换, 并从9层深度神经网络中得出人脸表示. 这两种方法都是使用大量的人脸图像样本对神经网络模型进行训练, 再手工选取中间层特征作为人脸的特征向量, 最后对特征向量进行相似性度量得到人脸识别结果.
ConvNet和DeepFace虽然提高了精度, 但是仍存在一定缺陷, 首先均需要人为选择特征向量, 这将会导致算法具有不确定性, 并且在大型数据库上训练神经网络模型时, 中间层神经单元个数会为了保持特征的完整性而不断增加, 导致最后提取的特征向量维度变高, 增加了计算成本. 其次使用神经网络进行提取全局特征增加了计算机及网络的荷载, 降低了人脸识别的速度.
针对以上问题, 本文提出基于前后端交互的人脸识别系统, 不仅提升了人脸识别的精度和鲁棒性, 也有效缓解了计算机及网络的荷载和压力, 同时系统的计算效率明显提升. 本系统拥有3个创新性:
1)使用了残差神经网络模型(ResNet)[1], 不用手工选取度量方法, 而是将高维度的人脸图像映射为128维特征向量, 再使用欧式距离进行人脸的相似性度量.
2)采用了前后端交互式系统, 提取特征值和特征值距离匹配分别运行于服务端和客户端, 同时通信间采用码流传输格式, 加快系统传输速率.
3)提出了基于GrabCut的人脸兴趣区域(Region Of Interest, ROI)提取算法, 先从系统输入帧图片中提取出人脸前景, 排除了带有冗余和干扰信息的背景, 提升了系统的计算效率和人脸识别精度.
1 基于前后端交互的人脸识别系统结构本文提出了一个基于前后端交互的人脸识别系统, 系统总体模块设计如图1所示, 主要包含客户端模块、数据库以及服务端模块. 客户端模块的功能是显示输入的视频流画面、收集待识别人脸图像、及对待识别人脸图像进行GrabCut图像预处理操作提取人脸前景, 并且将从服务端传递来的人脸特征与已知数据库中的人脸特征进行匹配, 显示人脸识别结果. 本系统实现了客户端与服务端的通信, 传递压缩后的人脸图像码流与人脸特征向量码流. 服务端模块的功能是通过残差神经网络(ResNet)提取待识别人脸的特征.
本系统可以实现快速高效准确的人脸识别功能, 首先在输入端对待识别人利用GrabCut算法进行图像预处理, 获得精准的ROI区域, 减少外界信息的干扰. 其次将通用的人脸识别算法拆分到系统的不同模块中, 其中将利用残差神经网络(ResNet)提取人脸特征的复杂操作单独布置在服务端, 而简单的人脸特征距离匹配, 即在128维空间中进行人脸相似性的计算布置在客户端. 整个系统通信过程中传输压缩码流, 通过多视频并行处理, 可以得出人脸识别算法精度提高, 并且系统的处理速度明显提升. 最后本系统采用SQL Server对需要传输的人脸图像进行序列化数据存储, 在通信过程中可以实现不同计算机间的数据准确接收, 从而避免信息在传输过程中的丢失.
2 算法介绍 2.1 基于GrabCut的ROI提取算法首先利用GrabCut算法对输入图像进行预处理操作, 排除了系统输入图片中的干扰信息, 得到准确的待识别人脸前景图像. 如图2所示, 在输入视频帧中设置人脸框, 图2(a)为固定的人脸框, 图2(b)为输入待识别人脸图像后的示意, 其中输入的待识别人脸图像可当作一组像素集合, 该像素集合可以分为区域项和边界项, 如图2(a)所示, 而区域项和边界项都需被划分为背景模型和前景模型, 最终图像预处理的目标就是获取前景, 即待识别人脸. 该算法结合人为设定的人脸框和GrabCut核心算法原理, 主要解决的就是判断某一个像素点属于前景模型还是背景模型, 一旦指定的人脸框内输入框选目标, 即待识别人脸, 则将人脸框外的像素集当作背景区域, 通过对人脸图像的区域像素点和边界像素点进行区分, 从而准确地提取人脸前景.
如流程图3所示, 该算法主要包含初始区和迭代区. 首先初始区得到描述前景的全协方差混合高斯模型(GMM)和描述背景的GMM的3个参数, 其次迭代区分配其余像素.
首先使用k个高斯分量(一般取k=5)的GMM来对背景和目标进行建模, 其中背景包含正确的背景像素和可能是背景的像素, 前景包含正确的前景像素和可能是前景的像素, 由此得到背景模型(BGM)和前景模型(FGM). 其次采用聚类算法将各自模型中的像素分到不同的模型样本中, 利用各自的样本来估计高斯模型内的参数, 如式(1). 其中
$D(x) = \sum\limits_{i = 1}^k {{\pi _i}{g_i}(x;{\mu _i},{\Sigma _i})} ,\sum\limits_{i = 1}^k {{\pi _i} = 1{\text{且}}0 \le {\pi _i}} \le 1$ | (1) |
图3中BGM和FGM中5个单高斯模型分量组合成了混合高斯模型, 一旦确定了各自GMM的3个参数, 其余未确定的像素中知道任一像素的RGB颜色值后, 代入前景或者背景的GMM, 从而得到该像素是前景或背景的概率, 重新分配未知的像素点, 这样每个模型的像素集合就已更新, 接着对估计的高斯模型重新更新参数, 最后将构建好的高斯模型中的区域项和边界项进行结合, 其中式(1)和式(2)是区域项像素的计算方法, 式(3)是边界项像素的计算方法, 式(3)中计算相邻两个相邻像素m和n之间RGB的欧式距离, 参数
$g(x;\mu ,\Sigma ) = \frac{1}{{\sqrt {{{(2\pi )}^d}\left| \Sigma \right|} }}\exp \left[ - \frac{1}{2}{(x - \mu )^T}{\Sigma ^{ - 1}}(x - \mu )\right]$ | (2) |
$V(\underline \alpha ,{\textit{z}}) = \gamma \sum\limits_{(m,n) \in C} {\left[{\alpha _n} \ne {\alpha _m}\right]} \exp - \beta {\left\| {{{\textit{z}}_m} - {{\textit{z}}_n}} \right\|^2}$ | (3) |
传统的图像传输大多是基于像素访问进行传输, 传输的大小是图像的分辨率和图像的通道数的乘积. 就一般普通摄像头拍摄到的单通道灰度图像而言, 其分辨率是640×480时, 一次要传输的数据量大小是640×480×1=307 200个字节, 若是彩色三通道图像分辨率则为640×480×3=921 600个字节, 可见采用基于像素访问的方式传输图像会对网络资耗费巨大, 从而造成视频的卡顿, 所以本文采用二进制码流的传输方式, 对图像进行压缩解压, 同时利用TcpSocket通信方式来传送图片二进制数据, 如图4所示, 通过压缩解压, 内存里的二进制图片数据和OpenCV中的图片格式相互转换, 本文的图片压缩了20%, 在不影响人脸识别精度的基础上, 一定程度使得系统的运行速度提升, 也缓解了网络的压力.
2.3 基于ResNet的人脸识别算法
人脸图像可以用维度很大的矩阵来表征, 人脸识别就是对比对的人脸进行矩阵提取的操作, 本系统先检测到人脸, 之后通过ResNet将人脸生成一个128维的向量, 该节算法着重介绍人脸特征提取和人脸特征距离匹配.
本系统所使用的实时人脸识别方法是深度残差网络ResNet-34, 并且利用了人脸识别模型和人脸关键点检测器. 首先提前制作了已知人脸图像的特征值库, 其次根据人脸识别模型和人脸关键点检测器, 得到待识别人脸图像的特征值, 最后计算待识别人脸图像的特征值和特征值库的欧式距离, 确定识别结果, 如果两个特征向量的欧式距离小于给定的人脸特征匹配阈值(本文阈值选定为0.5), 则判断两幅人脸图像为相同对象, 反之则为不同对象. 算法流程如图5所示.
2.3.1 深度残差网络
2015年由Kaiming He等4名华人共同提出的深度残差网络ResNet (Residual neural Network)[15], 通过增加shortcut connection (Identity Map)来直接连接深浅层网络, 使得梯度能够很好地传递到浅层, 其结构可以加速神经网络的训练, 也大大提高了模型的准确度.
图6是一个ResNet的残差学习单元(Residual Unit), 从残差学习单元可以看出ResNet是将学习目标进行改变, 将学习一个完整的输出H(x), 改变为学习输出和输入的差值H(x)–x, 即残差. 图6中假定某段神经网络的输入是x, 期望输出是H(x), 如果直接把输入x传到输出作为初始结果, 那么此时需要学习的目标为F(x)=H(x)–x.
2.3.2 人脸特征提取
本文采用ResNet-34模型提取人脸图像中具有代表性的特征向量, 在网络训练初始阶段, 每个特征向量表示为一个特征点, 所有的特征点以高斯分布的形式存在于特征空间中, ResNet-34模型可以使网络在训练过程中, 属于同一人的特征点能够逐渐聚合, 而不属于同一人的特征点能够逐渐分离, 从而对人脸特征点进行分类识别.
本系统在服务端首先使用预测算子获取得到的人脸区域中的五官的几何点区域, 加载68个特征点的人脸标准特征模型; 其次加载ResNet模型参数, 获得ResNet-34训练模型. 在系统输入图片或视频时, 如果存在人脸就使用ResNet-34的接口获取人脸特征向量. 提取人脸特征点中将ResNet-34网络的layer4作为人脸的特征层, 此时的特征才是人脸的特征. 提取的人脸的68个特征点(例如眼、嘴等位置)如图7所示.
2.3.3 人脸特征匹配
人脸特征匹配即距离匹配, 是在获取特征向量之后使用欧式距离和本地已知人脸特征数据集的特征向量进行匹配, 通过计算得到128维空间中两个点之间的真实距离.
如图8所示, 二维坐标图中点
$dist(A,B) = \sqrt {\sum\limits_{i = 1}^2 {{{({x_i} - {y_i})}^2}} } {\rm{ = }}\sqrt {{{({x_1} - {x_2})}^2} + {{({y_1} - {y_2})}^2}} $ | (4) |
$dist(A',B') = \sqrt {{{({x_1} - {x_2})}^2} + {{({y_1} - {y_2})}^2} + {{({{\textit{z}}_1} - {{\textit{z}}_2})}^2}} $ | (5) |
$\begin{split} & dist(A'',B'') = \sqrt {\sum\limits_{i = 1}^{128} {{{({x_{1i}} - {x_{2i}})}^2}} } \\ & =\sqrt {{{({x_{11}} - {x_{21}})}^2} + {{({x_{12}} - {x_{22}})}^2} + \cdots + {{({x_{1(128)}} - {x_{2(128)}})}^2}} \end{split} $ | (6) |
本文采用的人脸识别技术是使用残差神经网络模型将人脸图像映射为128维特征向量, 计算特征向量间的欧式距离, 进而比较人脸图像的相似度. 经过实际验证, 本文设置人脸特征匹配阈值为0.5, 如果两个特征向量的欧式距离小于给定的阈值0.5, 则判断两幅人脸图像为相同对象, 反之则为不同对象. 与上述深度学习人脸识别方法相比, 该方法的网络结构不受数据集影响, 也不需要人为地统计选择适合地中间层和特征度量方法.
3 实验结果分析 3.1 实验条件本实验的硬件支持是具有Intel(R) Core(TM) i7-8700型号的CPU和NVIDIA GTX2080Ti显卡支持的计算机, 用来处理人脸识别算法中的提取人脸特征点操作, 摄像头使用TL-IPC42A-4, 分辨率为1080 P, 采集频率15帧/秒. 本实验使用了Qt 5.10.1软件, 辅助环境为CUDA v10.0, OpenCV 3.4.0.
本文使用CeleA (CelebFaces Attribute, 名人人脸属性数据集)数据集进行实验, 该数据集包含了已做好特征标记的202 599张图片. 部分数据集图片如图9所示.
3.2 算法测试 3.2.1 基于GrabCut的ROI提取实验
输入待识别人脸图像, 经过图像预处理算法GrabCut处理后如图10所示. 精准提取人脸前景区域, 为提升人脸识别的算法精度作了铺垫, 系统采用基于GrabCut的ROI提取算法有明显的优势, 优势体现在两方面, 人脸识别精度和计算效率. 实验结果如表1和表2所示, 在表2中, 输入视频的帧率15帧/s, 每隔30帧识别一次.
表1中分别给出了在使用ROI提取算法和未使用ROI提取算法时姓名为000004的人与数据库中的人进行人脸特征距离匹配的结果, 即人脸识别结果, 最后给出了使用该提取算法对图像做预处理比未使用该算法时的人脸识别精度提高百分比值, 当000004号人与数据库中202 599进行人脸特征距离匹配时, 精度提高了5.4602%, 结果表明基于GrabCut的ROI提取算法在一定程度上提高了人脸识别的精度.
表2是分别计算了使用ROI算法在客户端和服务端的影响, 在客户端中主要测试了ROI提取算法的耗时, 与客户端总耗时进行了比对, 实验结果如表2中t/T所示, 其中t表示ROI提取算法耗时, T表示客户端总耗时, 当视频1输入系统时, ROI提取算法耗时仅占客户端总耗时的12.75%, 结果表明采用基于GrabCut的ROI提取算法在客户端耗时比例不大, 并不是影响系统计算效率的主要因素; 在服务端对提取人脸特征点的计算效率进行了测试, 在系统中, 由于采用基于GrabCut的ROI提取算法主要是服务于服务端的提取特征点操作, 所以实验对系统在没有使用ROI提取算法时服务端提取特征点的耗时, 和系统使用ROI提取算法进行了耗时对比, 计算出了使用ROI提取算法对提取人脸特征点的计算效率提高的百分比, 计算结果如表2中(T'–t')/T'所示, 其中t'表示系统采用ROI提取算法服务端耗时, T'表示系统未采用ROI提取算法时服务端的耗时, 当视频1输入系统进行测试时, 系统使用ROI提取算法时提取人脸特征点的计算效率提高了74.52%, 结果表明该ROI提取算法确实有效提升了系统中提取人脸特征点的计算效率.
3.2.2 基于ResNet的人脸识别实验已有人脸数据库如图11所示, 其中姓名为左上角数字, 人脸图像以及人脸特征值如图所示, 并且在数据库中采用通用唯一识别码UUID (Universally Unique IDentifier)来对样本进行编号, 人脸图像及人脸特征值均用二进制数据表示以码流的形式在前后端交互式系统中传递信息.
本实验选取了CeleA中的202 599张图片, 进行大样本测试的结果部分示意图如图12所示, 图内小框即为人脸的68个特征点区域, 下方字体所表示的是识别结果, 上方字体则代表了已有人脸数据库的本人身份. 若两个表示相同, 即代表识别正确, 反之则代表识别错误. 就姓名为000004的人而言, 与已知人脸数据库特征值比对结果如表1所示, 其中j表示已知人脸数据库的人脸姓名, i=000004表示待识别人脸正确识别结果的姓名应为000004, 判断的条件为在该列中找最小数值, 即为识别本人, 数值计算公式如式(6).
实验中判断系统人脸识别算法的优劣, 不仅需要精准率, 即人脸识别正确的结果占识别结果的比例, 同时需要考虑召回率, 即人脸识别正确的情况占本身系统输入中正确情况的比例, 表3给出了精准率和召回率评判的4个参数TP(True Positive), FP(False Positive), FN(False Negative)和TN(True Negative), 精准率P(Precision)和召回率R(Recall)的计算公式如式(7)和式(8)所示.
$P = \frac{{TP}}{{TP + FP}}$ | (7) |
$R = \frac{{TP}}{{TP + FN}}$ | (8) |
表4是针对人脸识别算法的评判标准, 评判指标包括, 已知人脸数据库的图像总数, 即样本总数, 人脸识别测试结果精准率, 召回率以及单帧图像识别平均耗时. 由表4可知, 在已知的具备人脸不同表情、不同背景、不同光照条件下的人脸数据库中, 通过实验结合式(7)和式(8)计算可得, 在20万余个样本的测试中, 识别精准率高达99.84%, 召回率达94.13%, 该结果说明了本文的人脸识别算法具有较高的识别精度, 同时极大地减少了误判、漏判等情况. 其中由于存在部分严重遮挡的图像, 导致仍有部分未能正确识别, 同时单帧图像识别平均耗时达到0.067 s, 实时性很高.
3.3 系统测试
基于前后端交互的人脸识别系统通过分别将人脸识别核心算法布置在服务端和客户端中, 其中服务端进行提取特征点, 客户端进行特征点距离匹配, 如表5所示, 分别对交互系统和非交互系统分别进行测试, 同时选用了5个视频进行测试来验证系统的各项处理耗时.
在表5中, 输入视频的帧率15帧/s, 每隔30帧识别一次, 作为该连续30帧的人脸识别结果,前后端交互式系统是将人脸识别算法中的提取特征点和特征点距离匹配拆分在两端并发进行, 而非交互式系统整个系统流程并未拆分. 从表中交互式系统和非交互式系统的系统总耗时和平均耗时2.0147帧/s和2.5409帧/s来看, 明显交互式系统的要高速. 交互式系统中的传输是在局域网内通过二进制形式传输, 耗时可忽略不计, 证明传输的码流以及图像预处理操作起到了作用. 系统提高了网络的传输速率, 首先, 系统采用的GrabCut算法提取人脸ROI区域, 减少了系统输入图像中的冗余和干扰信息; 其次, 将人脸识别算法中的人脸特征提取和人脸特征匹配分布于服务端和客户端, 均衡了服务端和客户端两端的网络以及计算压力; 最后, 在本系统客户端、数据库、服务端进行数据传输时, 图片均经过压缩, 使得数据能够快速地通过网络传输. 可见本系统有好的人脸识别效果和较快的系统处理速度.
4 结论
本文提出了一种基于前后端交互的人脸识别系统, 该系统提出了一种基于GrabCut的ROI提取算法对视频帧进行预处理, 实验结果显示可以精准地提取到ROI区域, 对输入的待识别图像帧进行提取人脸特征点和特征点距离匹配操作, 不仅具有准确的人脸识别效果, 而且减轻了网络的压力和计算机的荷载, 传输过程采用码流形式, 加快了系统的传输速率. 整个系统既提升了人脸识别的精度和鲁棒性, 又提升了人脸识别系统的快速性. 但目前发展的对于人脸识别特征提取以及相关的表情识别[15, 16]、图像预处理[17, 18]、网络的传输[19]等技术对整个系统的优化也有帮助, 因此在保证较高的识别效果和较快的系统处理速度的条件下又要增加新的实时性功能是本文需要进一步研究的问题.
[1] |
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 770–778.
|
[2] |
张剑, 何骅, 詹小四, 等. 结合特征适配与拉普拉斯形变的3维人脸重建. 中国图象图形学报, 2014, 19(9): 1349-1359. DOI:10.11834/jig.20140912 |
[3] |
Neumann L, Matas J. Real-time scene text localization and recognition. Proceedings of 2012 IEEE Conference on Computer Vision and Pattern Recognition. Providence, RI, USA. 2012. 3538–3545.
|
[4] |
Akbani O, Gokrani A, Quresh M, et al. Character recognition in natural scene images. Proceedings of 2015 International Conference on Information and Communication Techno-logies. Karachi, Pakistan. 2015. 1–6.
|
[5] |
慕春雷. 基于HOG特征的人脸识别系统研究[硕士学位论文]. 成都: 电子科技大学, 2013.
|
[6] |
Lowe DG. Distinctive image features from scale-invariant key-points. International Journal of Computer Vision, 2004, 60(2): 91-110. DOI:10.1023/B:VISI.0000029664.99615.94 |
[7] |
Chen D, Cao XD, Wen F, et al. Blessing of dimensionality: High-dimensional feature and its efficient compression for face verification. Proceedings of 2013 IEEE Conference on Computer Vision and Pattern Recognition. Portland, OR, USA. 2013. 3025–3032.
|
[8] |
Juefei-Xu F, Boddeti VN, Savvides M. Local binary convolutional neural networks. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 4284–4293.
|
[9] |
Hasani B, Mahoor MH. Spatio-temporal facial expression recognition using convolutional neural networks and conditional random fields. Proceedings of the 12th IEEE International Conference on Automatic Face & Gesture Recognition. Washington, DC, USA. 2017. 790–795.
|
[10] |
Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, NV, USA. 2012. 1097–1105.
|
[11] |
Szegedy C, Liu W, Jia YQ, et al. Going deeper with convolutions. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA. 2015. 1–9.
|
[12] |
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. Proceedings of 2015 International Conference on Learning Representations. San Diego, CA, USA. 2015. 1482–1496.
|
[13] |
Sun Y, Wang XG, Tang XO. Hybrid deep learning for face verification. Proceedings of 2013 IEEE International Conference on Computer Vision. Sydney, NSW, Australia. 2013. 1489–1496.
|
[14] |
Taigman Y, Yang M, Ranzato M, et al. DeepFace: Closing the gap to human-level performance in face verification. Proceedings of 2014 IEEE International Conference on Computer Vision and Pattern Recognition. Columbus, OH, USA. 2014. 1701–1708.
|
[15] |
袁姮, 王志宏, 姜文涛. 刚性区域特征点的3维人脸识别. 中国图象图形学报, 2017, 22(1): 49-57. DOI:10.11834/jig.20170106 |
[16] |
梁华刚, 易生, 茹锋. 结合像素模式和特征点模式的实时表情识别. 中国图象图形学报, 2017, 22(12): 1737-1749. DOI:10.11834/jig.170251 |
[17] |
Yu WS, Hou ZQ, Wang P, et al. Weakly supervised foreground segmentation based on superpixel grouping. IEEE Access, 2018, 6: 12269-12279. DOI:10.1109/ACCESS.2018.2810210 |
[18] |
Tang M, Gorelick L, Veksler O, et al. GrabCut in one cut. Proceedings of 2013 IEEE International Conference on Computer Vision. Sydney, NSW, Australia. 2013. 1769–1776.
|
[19] |
冯建文, 董剑. 改进的TCP应用层协议在远程实验系统中的应用. 计算机应用与软件, 2018, 35(12): 154-158. |