基于人脸分块近似对称性预处理的人脸识别算法

2021-04-23 05:50张佳鹏
软件导刊 2021年4期
关键词:分块识别率人脸识别

朱 叶,李 琳,张佳鹏

(上海理工大学光电信息与计算机工程学院,上海 200082)

0 引言

人脸识别技术是当前人工智能领域研究热点之一。随着电子科技的发展,人脸识别技术在生活中应用日趋广泛,人脸图像的唯一性、易于采样等优点,使得人脸识别技术发展迅速,如手机面部识别、视频监控、电子门禁等都应用了人脸识别技术。随着人脸识别技术的不断发展,其准确率和稳定性也在不断提升,人脸识别技术日趋完善。

人脸识别是一个典型的图像模式分析、理解与分类计算问题,涉及多个交叉学科。传统的人脸识别方法有主成分分析法(Principal Components Analysis,PCA)[1]、拉普拉斯特征图法[2]、局部保值映射[3]、卷积神经网络(Convolutional Neural Networks,CNN)[4]以及Wright 等[5]提出的稀疏表示(Sparse Recognition based Classification,SRC)方法等。近几年,人脸识别技术在不同场景下应用越来越广,人们对其要求也不断提升。随着传统人脸识别方法的不断改进,人脸识别在可控场景下已经有了极高的准确率。但是人脸识别应用往往是处于非限制场景下[6]的,在真实场景下[7]进行人脸识别时,获取的人脸图像往往受到光照、姿势、表情和遮挡等因素影响[8],如果使用传统的人脸识别方法,识别准确率会大大降低。如何提高在非限制场景下的人脸识别准确率问题成为研究热点。研究人员已经提出一些减少照明对面部识别的影响方法[9],如Xie 等[10]提出整合人脸图像的大小特征将人脸图像标准化;Zhang 等[11]提出一种基于非局部均值的归一化方法作为用于鲁棒人脸识别的图像预处理技术等。

针对非限制场景下有遮挡的人脸识别问题,2016 年Xu 等[12]提出一种人脸近似对称性预处理的人脸识别方法。该方法根据人脸左右近似对称,采用梯度下降迭代算法,将被遮挡的半张人脸进行对称恢复,从原始面部图像生成对称的虚拟面部图像,减少姿势和光照变化对人脸识别的影响,该算法大大提高了遮挡条件下人脸识别的准确率。但在真实情况下被遮挡部分可能为人脸较小区块,并且人的左右脸不可能完全一致,存在一定差异。如果进行整个左右脸恢复,其恢复的人脸图像与原始人脸图像会有一定差别,其对识别准确率有一定影响。

针对上述问题,本文在人脸近似对称性预处理算法上作相应改进。首先将人脸部分采用特征点定位算法[14]进行分块,将分块后的人脸进行遮挡判断,对于有小部分遮挡的人脸块利用人脸近似对称性预处理,将遮挡部分的人脸块进行恢复,恢复后的人脸面部图像与真实人脸面部图像的几何形状更加一致。恢复后的人脸用SRC 算法进行人脸识别,得到的结果鲁棒性较好,识别速度较快,识别率有所提高。

1 基于人脸分块的识别算法

1.1 MTCNN 算法

MTCNN 算法[13]采用三级联的网络P-Net(Proposal Network)、R-Net(Refine Network)和O-Net(Output Network),由粗到细,通过减少滤波器数量、设置小的卷积核和增加网络结构深度,在较短时间内获得很好性能[14]。

第一级网络模型称为推荐网络P-Net,主要功能是获得脸部区域的窗口与边界Box 回归,对获得的脸部区域窗口与边界Box 回归的结果进行校正,然后使用非最大压制(Non-Maximum Suppression,NMS)合并重叠窗口。

第二级网络模型称为优化网络R-Net,通过一个能力更强的CNN 网络过滤掉绝大部分非人脸候选窗口,然后继续校正Bounding Box 回归结果,使用NMS 合并重叠窗口。

第三级网络模型称为输出网络O-Net,对输入第二阶段数据进一步提取,通过一个能力更强的网络找到人脸上面的5 个标记点。

MTCNN 算法能检测出人脸的5 个关键点,其网络结构如图1 所示,网络训练流程如图2 所示。

Fig.1 MTCNN network structure图1 MTCNN 网络结构

Fig.2 MTCNN training process图2 MTCNN 训练流程

1.2 人脸分块

MTCNN 算法进行人脸特征点定位,定位结果包括左眼中心、右眼中心、鼻尖、左侧嘴角、右侧嘴角,如图3 所示。

Fig.3 Location of feature points图3 特征点定位

左眼中心坐标为(xleye,yleye),右眼中心坐标为(xreye,yreye),鼻尖中心坐标为(xnose,ynose),左侧嘴角坐标为(xlmouse,ylmouse),右侧嘴角坐标为(xrmouse,yrmouse)。

根据这5 个定位点从人脸图像裁切出6 个人脸区块[15],包括左眼区块、右眼区块、左鼻区块、右鼻区块、左嘴区块、右嘴区块6 个部分[16],具体裁切方法如下:

(1)将图像调整为256×256 大小。

(2)根据左右眼坐标裁剪出64×64 大小的左眼区块和右眼区块,裁剪区域为:

左眼区块:

右眼区块:

(3)根据鼻尖坐标裁剪出64×64 大小的左鼻区块和右鼻区块,裁剪区域为:

左鼻区块:

右鼻区块:

(4)根据左右侧嘴角坐标裁剪出64×64 大小的左嘴区块和右嘴区块,裁剪区域为:左嘴区块:

右嘴区块:

区块裁剪样例如图4 所示,对裁剪的6 个人脸区块进行遮挡判断。

Fig.4 Example of face block results图4 人脸分块结果示例

1.3 遮挡判断

将剪裁出的6 个人脸块分为Vleye、Vreye、Vlnose、Vrnose、Vlmouse、Vrmouse。其中,Vleye表示左眼区块特征,Vreye表示右眼区块特征,Vlnose表示左鼻区块特征,Vrnose表示右鼻区块特征,Vlmouse表示左嘴区块特征,Vrmouse表示右嘴区块特征。分别对6 个区块进行特征提取。为了处理遮挡问题,本文基于InceptionV3[17]网络进行fine-tune,训练一个用于判别人脸区块是否被遮挡的网络。因为左右眼、左右鼻、左右嘴的区别较小,所以在分类训练集构造时,将左右眼合并为眼睛,左右鼻合并为鼻子,左右嘴合并为嘴巴,即构造出的训练集分为4 类:眼睛类、鼻子类、嘴巴类和背景类。测试集经过运算后输出每个类的“得分”,最终选取得分最高的类别作为人脸块类别。若最终测试结果为背景类得分最高,则该人脸块为有遮挡的人脸。遮挡判别示例如图5、图6 所示。

Fig.5 Occlusion discrimination example 1图5 遮挡判别示例1

Fig.6 Occlusion discrimination example 2图6 遮挡判别示例2

1.4 人脸近似对称性预处理

用V1、V2、V3、V4、V5、V6向量表示原始面部图像各个区块的矢量,V1、V2、V3、V4、V5、V6都为列向量。

Vleye区块为V1向量,Vreye区块为V2向量,Vlnose区块为V3向量,Vrnose区块为V4向量,Vlmouse区块为V5向量,Vrmouse区块为V6向量。

V1、V2、V3、V4、V5、V6向量定义如下:

V1、V3、V5通过第1 列到第64 列逐一连接,V2、V4、V6通过第64 列到第1 列逐一连接。

上述程序的简单例子如图7、图8 所示。

Fig.7 Example of converting an image into V1,V3,V5vectors图7 将图像转化为V1、V3、V5矢量的示例

使用梯度下降算法迭代更新[12]。函数f(x) 为梯度下降函数:

其中,η为学习比率,xt、xt+1分别为时间t 和t+1 的x值。通过梯度下降算法可以快速得到f(x) 的最小值和对应的x最佳值。定义L(V1,V2)=表示为L(V1,V2)的最小值。

迭代更新V1、V2得:

为了使解值稳定,将η设置为η=为迭代次数,因此η随着t 增加而减小,得到了最优的后连接它们,新合成的近似轴对称人脸图像就生成了。同理,V3、V4、V5和V6都可以照此进行操作。

Fig.8 Example of converting an image into V2,V4,V6vectors图8 将图像转化为V2、V4、V6矢量的示例

具体步骤为:

(1)得到人脸分块的特征向量V1、V2、V3、V4、V5、V6,其初始值为

(2)通过迭代梯度下降算法更新V1、V2、V3、V4、V5、V6,直至满足下面条件中的任何一个才终止迭代更新。①迭代次数大于预设最大值;②‖V1-V2‖<ε,表示时间t 处的V1值,ε表示尽可能小的正数。

原始人脸图像和恢复的人脸图像示例如图9、图10、图11 所示。

Fig.9 Image after the original image is restored to the right eye block图9 原始图像与恢复右眼区块后的图像

Fig.10 Original image and image after restoration of right nose block图10 原始图像与恢复右鼻区块后的图像

Fig.11 Original image and image after restoration of left eye and left nose block图11 原始图像与恢复左眼和左鼻区块后的图像

1.5 SRC 算法

将所有类别的训练样本组合成一个矩阵X=[X1,X2…Xc],其中Xi∈是第i类的数据矩阵,每列Xi表示第i类的训练样本。给定测试样本y∈Rm,将其表示为y≈Xβ,其中β=[β1;…,βi;…,βC]。βi是与第i类相关联的系数向量。通常,如果y 来自第i类,则y≈Xi βi,表明βj,j≠i中的大多数系数几乎为零。

2 实验结果

2.1 六部分人脸区块遮挡判断实验

实验选取AR 数据库,从中随机抽1 000 张人脸,将人脸分成6 部分人脸区块,共6 000 张,将各个人脸区块图作为数据集。背景类数据集的采集包括真实被遮挡的人脸区块图,因为左右眼、左右鼻和左右嘴的区别较小,因此在做分类训练构造时,将左眼和右眼的类别合并为眼睛类,左鼻和右鼻的类别合并为鼻子类,左嘴和右嘴的类别合并为嘴巴类。真实背景图和人工加入遮挡的人脸区块图共1 000 张,随机选取每个人脸区块4 800 张和背景800 张图作为训练集,剩下的每个人脸区块1 200 张和剩余背景图200 张作为测试集。

使用fine-tune 方法和Hard Negative Mining 的负类选择方法,二分类器在较短的训练后取得不错的效果。在人脸区块分辨率足够的情况下,训练的局部人脸区块遮挡判别模型都可以进行准确预测。判别结果见表1。

Table 1 Occlusion discrimination results of local face blocks表1 局部人脸区块遮挡判别结果

2.2 单区块有遮挡的人脸识别实验

根据人脸分块和遮挡判断可以实现局部有遮挡的人脸识别算法。

实验选取Yale B 数据库,包含38 个人的2 432 张人脸图像,含人脸的不同表情、不同光照条件和不同遮挡情况。选取30 张人脸,从每人36 张无人脸图像中随机选取20张作为训练集,其他每人两张遮挡左眼、两张遮挡右眼、两张遮挡左鼻、两张遮挡右鼻、两张遮挡左嘴、两张遮挡右嘴,作为测试集。首先将原始图像标准化,使得两只眼睛在同位置对准,并将面部区域剪裁成256×256 像素图像。将图像标准化后进行人脸图像分块,分块后的人脸训练按人脸区块遮挡判别模型进行,如果输入的人脸区块被二分类器判别为遮挡,则该局部特征用近似对称预处理进行恢复。恢复后的人脸用SRC 算法进行分类实验。本文对比实验采用经典的RSC[19]、SRC[5]、近似对称预处理[12]算法,实验结果如表2 所示。

Table 2 Comparison of recognition rate of one block occlusion with eye,mouth and nose表2 眼睛、嘴巴、鼻子遮挡一类区块中的识别率对比 (%)

由表2 可知,在遮挡眼睛区块时,本文算法识别率为95.4%,遮挡嘴巴区块时,本文算法的识别率为96.6%,遮挡鼻子区块时,本文算法识别率为97.6%。与RSC 算法、SRC算法和近似对称性预处理算法相比,本文算法取得了非常好的识别效果,这是因为SRC 算法和RSC 算法识别时其遮挡的部分会影响其识别率,而近似对称性预处理算法直接恢复半张人脸,恢复后的人脸虽然没有遮挡,但人脸会略微失真,影响识别率。本文算法对人脸小区块进行恢复,恢复的人脸完整性较强,其识别率高于其它算法,本文算法在小区块遮挡情况下取得了很好的效果[20]。

2.3 多区块有遮挡人脸识别实验

多区块有遮挡人脸识别实验仍然选择Yale B 数据库,从每人36 张人脸图像中随机选取8 张作为训练集,其余分别选取每人的人脸图片遮挡两类区块中的各两张作为训练集,具体情况如表3 所示。由于本文算法依赖于MTCNN 算法结果,在多区块遮挡情况下,本文加入了一定的人工进行辅助定位工作。实验结果与RSC 算法、SRC 算法、近似对称预处理算法进行对比,结果如表3 所示。

Table 3 Comparison of recognition rate of one eye,one mouth and one nose block表3 眼睛、嘴巴、鼻子遮挡两类区块各一个的识别率对比 (%)

本实验延续上一个实验中所用的训练集,将每人两张人脸图片遮挡三类区块各一个作为测试集。与RSC、SRC、近似对称预处理算法进行对比,实验结果见表4。

Table 4 Comparison of recognition rates of one eye,one mouth and one nose block表4 眼睛、嘴巴、鼻子遮挡三类区块各一个的识别率对比 (%)

由表3、表4 可知,遮挡眼睛和嘴巴各一个区块时,本文算法的识别率为93.4%,遮挡嘴巴和鼻子各一个区块时,本文算法的识别率为90.9%,遮挡鼻子和眼睛各一个区块时,本文算法的识别率为92.9%。在大面积人脸区块被遮挡的情况下,本文算法的识别率仍优于其它算法的识别率。随着遮挡区块的增加,当遮挡部分为半张人脸时,SRC和RSC 算法的识别准确率都下降得很快,近似对称性预处理本身就是恢复半张人脸,所以其识别的准确率没有太大变化,而本文算法识别率为81.3%,虽然随着遮挡区块的增加识别准确率有所下降,但较其它算法仍旧有较高的识别率。当遮挡3 个区块时,情况类似于近似对称性预处理,所以识别的准确率也与之相似。综上,本文所提出的算法在一个或两个人脸区块遮挡的情况下,识别准确率较其它算法有所提高。

3 结语

本文提出一种基于人脸分块的近似对称预处理算法,用特征点定位进行人脸分块,分块后的人脸进行遮挡判断后用区块近似对称预处理进行恢复。本文算法在单个区块遮挡情况下有较高的识别准确率。在多区块遮挡情况下,本文算法仍能保持较高的识别准确率。通过对人脸分块的近似对称预处理算法研究,对有遮挡的人脸识别技术有一定提高。但是本文算法只适用于有遮挡条件下的人脸图像,且人脸图像为正面单样本图像,对其它条件下的人脸识别还需继续研究。同时,本文实验中所用数据库的人脸图像已对齐,对于真实场景中的非对齐样本还需作进一步的处理与分析。

猜你喜欢
分块识别率人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于类图像处理与向量化的大数据脚本攻击智能检测
分块矩阵在线性代数中的应用
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
提升高速公路MTC二次抓拍车牌识别率方案研究
反三角分块矩阵Drazin逆新的表示
高速公路机电日常维护中车牌识别率分析系统的应用
基于自适应中值滤波的分块压缩感知人脸识别
基于多分辨率半边的分块LOD模型无缝表达