赵 青,余元辉
(1.集美大学理学院,福建厦门 361021;2.集美大学计算机工程学院,福建厦门 361021)
随着人工智能和生物特征识别技术的快速发展,人脸作为重要的生物特征,人脸识别技术在生物特征识别、计算机视觉、图像处理领域获得热门关注和高速发展,在金融、安防、安检、手机APP 等众多领域的相关应用也越来越广泛。二维人脸识别技术已经相当成熟,但识别率仍受光照、姿态、表情等因素的影响,相对而言三维人脸数据受其影响较小,具有更好的鲁棒性,同时包含的空间信息更加丰富,具有更高的防伪性,确保信息的安全性更高。因此,越来越多的学者将关注点转向三维人脸识别技术的研究。
传统的三维人脸识别技术主要是通过手工设计面部特征或将三维人脸数据投影为二维人脸图像提取图像特征[1],进行特征相似性度量实现识别。Drira 等[2]提出了一个几何框架,从鼻尖点构建径向曲线表示面部特征,通过弹性黎曼度量标准测量面部形状差异,该方法在GavabDB 数据库的仰视数据集取得了100%的识别率,但针对头部向左、右旋转的数据集识别率仅有70.49%和86.89%;在此基础上,Lei 等[3]在三维人脸模型的半刚性区域设计了角径向特征(Angular Radial Signature,ARS),并通过核主成分分析(Kernel Principal Component Analysis,KPCA)方法将原始ARS 映射为更具区分度的特征,通过支持向量机(Support Vector Machine,SVM)实现人脸识别,该方法开始进行大姿态数据的识别。机器学习算法兴起后,将人脸数据进行标签化处理,人脸识别问题转换为监督分类任务。Xu等[4]针对表情和姿态数据集进行人脸分类识别,基于深度图像和强度图像提取Gabor 小波特征,并获得深度、强度图像的融合特征,使用AdaBoost级联分类器完成人脸分类识别,在CASIA 数据库上取得了91.2%的识别率,在小姿态(头部偏转±20°~±30°)和较大姿态(头部偏转±50°~±60°)数据集上分别实现了82.4%和61.5%的识别率。近年来,众多研究人员进一步专注于利用深度学习框架自动学习数据特征并实现人脸识别[5-7]。Gilani 等[8]提出了第一个深度卷积神经网络FR3DNet(Deep 3D Face Recognition Network)进行三维人脸识别,基于gridfit算法生成三维人脸模型对应的深度图,以深度值、法向量的方向角、仰角三通道作为网络输入,在CASIA 数据集上的识别率较卷积神经网络(Convolutional Neural Network,CNN)算法提高5 个百分点以上。Mu 等[9]专注于低质量三维人脸的识别研究,提出了联合多尺度特征融合(MultiScale Feature Fusion,MSFF)模块和空间注意力矢量化(Spatial Attention Vectorization,SAV)模块的轻量级卷积神经网络Led3D(Lightweight and efficient deep approach to recognizing low-quality 3D faces),以深度图作为网络输入,采用二维人脸识别模式,在Bosphorus 数据库上获得91.27%的准确度。
基于深度学习的三维点云分类网络于2017 年兴起,Qi等[10]提出了PointNet 深度网络用以实现三维点云数据的分类和分割,解决了点云无序性的问题,作为首个直接以三维点云作为输入的轻量级网络,其分类网络提取点云数据的全局特征实现三维点云分类,但存在局部特征缺失的问题;在此基础上,Qi 等[11]针对PointNet 网络进行了改进,提出了PointNet++深度网络,在PointNet++分类网络结构中,通过采样、分组、PointNet三层结构实现从局部特征到全局特征的提取,分类精度大幅度提升。Li等[12]在2018年提出了PointCNN 网络,采用χ-卷积替换了PointNet 网络中的微网络T-Net,参数量极大减少,PointCNN 分类网络准确度较PointNet 分类网络有较大提升。2019 年,Cai 等[13]在PointNet++网 络 的 基 础 上 结 合PointSIFT[14]网络提出 了空间聚合网络(Spatial Aggregation Net,SAN)方法,基于多方向卷积提取三维点云空间结构特征,虽然点云分割取得最高精度,点云分类结果却略低于PointNet++分类网络。
PointNet 系列的分类网络主要应用于物体或场景三维点云的分类,三维点云人脸模型不同于物体或场景点云,因此本文探索性地在PointNet 系列的分类网络上进行三维人脸分类识别,并针对三维人脸模型存在因表情变化产生塑性形变、因姿态变化导致部分数据缺失的问题,提出了一种分层特征化网络,即HFN(Hierarchical Feature Network)方法,也属于轻量级网络。单独训练好PointNet++和SAN 的分类网络,进行特征提取的SA(Set Abstraction)模块和DSA(Directional Spatial Aggregation)模块均采用三层结构,将两种不同的特征进行等维度拼接,HFN 利用拼接特征进行识别时网络收敛更快,在CASIA数据集实现了96.34%的平均识别准确度,高于已有分类网络的识别结果。
三维点云图像在采集过程中,由于扫描设备或者外界环境等因素的影响,会出现数据缺损、离群点、数据冗余等问题,对识别结果造成影响;同时CASIA 数据库中三维人脸的数据类型并不能直接作为分类网络的输入,因此,需要进行相关的数据预处理操作,获取满足要求的三维点云人脸数据。
CASIA三维人脸数据库中人脸信息(图1(a))是以块方式存储的,包含点的坐标、颜色、法向量、坐标索引四个部分。为了成功输入分类网络,将CASIA 数据库中的WRL(3D virtual reality World object based on virtual Reality modeling Language)数据转换为点云数据,包含坐标值[x,y,z]和颜色信息[r,g,b],并生成每个对象的对应标签。利用统计学滤波器滤除原始点云数据的离群值,基于法向量结合周围点云的拓扑结构建立同构关系,构建三角网,进而实现点云的孔洞填充。
CASIA 数据库中人脸点云模型如图1(a)所示,可以表示为Fi=[xn,yn,zn,rn,gn,bn],其中,i=1,2,…,M表示点云模型的数量,n=1,2,…,N表示单个人脸模型中点云的数量。针对归一化后的三维人脸模型采用文献[15]中方法确定鼻尖点坐标{F1nose′,F2nose′,…,FMnose′}(不能确定侧脸的鼻尖点坐标),利用反归一化方法[16]获得原始人脸模型中的鼻尖点坐标{F1nose,F2nose,…,FMnose}。为了去除肩膀、脖颈、耳朵等冗余区域,结合文献[17]中方法裁剪出面部的有效区域(图1(b)、(c))作为实验数据。
图1 CASIA数据库中的三维人脸数据Fig.1 3D face data in CASIA database
受PointNet++、SAN 分类网络的启发,为了在CASIA 数据集上取得更好的识别结果,使得分类网络具有更好的鲁棒性,在满足网络输入要求的情况下,提出了分层特征化网络(HFN)。
整个网络结构分为两层,核心为SA 模块和DSA 模块,如图2 所示。网络输入点数为N,坐标维度为d,其他特征维度为C的点云,即点云大小为N×(d+C)。三个SA 模块进行层次化处理:第一个SA 模块提取点云局部区域的特征,第二个SA模块再一次提取点云局部区域的特征,最后一个SA模块采样操作后获得Ns个局部区域质心点,根据需要获取以坐标为特征的点云全局特征,记为(Ns,C1d);与SA 模块类似,三个DSA模块基于多方向卷积的操作更加丰富了点云在三维空间中的结构特征,解决了点云密度不均的问题,前一个DSA 模块的输出作为下一个DSA 模块的输入,故第三个DSA 模块基于八邻域搜索方法采样Ns个点,其特征记为(Ns,C2d);两个模块提取的点云特征拼接为(Ns,C1d+C2d),使得点云的特征较拼接之前的更加丰富,从而进一步解决了人脸表情、姿态导致点云数据缺失的问题。
SA 模块 包含采样层、分组层和PointNet 层。采样层的目的是确定局部区域质心点,以欧氏距离d(⋅,⋅)为依据,通过迭代最远点采样算法(Farthest Point Strategy,FPS)[18]在人脸点云中{F|p1,p2,…,pN}采样部分点云{Fs|ps1,ps2,…,psj},目的是在{F-Fs}找到psi满足式(1):
最远点采样算法选择的点分布均匀,令满足要求的{Fs|ps1,ps2,…,psj}作为质心点;分组层是为了确定质心点的特定邻域,以人脸点云N×d和质心点云Ns×d为输入,通过设置特定半径和特定点数的球形搜索邻域,确定各个邻域的点数B;PointNet 层作为SA 模块中的微网络,能够将分组层确定的邻域点的特征提取出来,提取多个局部区域特征并编码成更高维的特征向量。
DSA模块 包括采样层、八邻域搜索层和多方向卷积层。与SA 模块类似,DSA 模块采用最远点采样算法确定点云多个采样点Ns,并基于八邻域搜索方法获得采样点Ns的邻域点B,运用多方向卷积操作提取采样点的空间结构信息。多方向卷积包含从单个方向到两个方向、两个方向到四个方向、四个方向再到八个方向提取空间信息,最后经过最大池化层后输出点云局部特征的特征向量,该方法更加全面地提取了从点云局部结构到全局结构的空间结构特征。
SA 模块的点云全局特征和DSA 模块的点云空间结构特征进行对应拼接,经过全连接层实现三维人脸数据分类。
图2 HFN结构Fig.2 Architecture of HFN
损失函数用于衡量分类网络的分类能力,表现预测类别与实际类别的差距程度,损失函数收敛时,值越小表明分类网络的性能越好。为了衡量HFN 方法应用于三维人脸识别的分类性能,损失函数使用Softmax 的交叉熵函数,记为Loss:包含SA 模块、DSA 模块及HFN 方法的损失,并分配了相应的超参数:
其中:labTS和labS分别为首次训练SA 模块所在网络三维点云人脸数据标签的预测值和真实值,labTD和labD分别为首次训练DSA 模块所在网络三维点云人脸数据的预测标签值和真实标签值,labTH和labH分别为训练特征融合框架HFN 方法时三维点云人脸数据标签的预测值和真实值,α,β,γ为三部分损失函数对应的超参数。
实验主要分为两个部分:第一部分是在CASIA 数据集及相关的姿态数据集上进行PointNet、PointNet++、PointCNN、SAN 分类网络和HFN 方法的训练和测试,并对识别结果进行相应分析;第二部分进行了两种输入方式下多种分类网络的识别实验,并进行了分析。
CASIA 三维人脸数据库(http://biometrics.idealtest.org)是中国科学院自动化所采用Minolta Vivid910 三维数字扫描仪采集创建的,数据为WRL 三维图像及对应的BMP 二维图像,共包含123 个对象,每个对象有37 或38 张图像,图像中包含姿态、光照、表情、遮挡多种变化。本文使用WRL 三维图像转换的三维点云人脸图像作为CASIA 数据集,在整个数据集及三种姿态的子数据集上(图3 所示)进行三维人脸识别。数据库中每个对象的数据以表1的规律分布。
图3 CASIA数据库的三维人脸姿态图像Fig.3 3D face pose images of CASIA database
表1 CASIA数据库的数据分布情况Tab.1 Data distribution of CASIA database
CASIA 数据集中包含123个对象,4 624张三维人脸图像。本文在CASIA数据集上进行人脸识别,作为平均识别率;同时将整个数据集按姿态划分为Pose1 小姿态(头部偏转±20°~±30°)、Pose2 较大姿态(头部偏转±50°~±60°)、Pose3大姿态(头部偏转±80°~±90°)三个数据集。
CASIA 数据集:123 个对象,包含光照、表情、姿态变化每个对象的第1~26 张点云图像作为训练集,第27~37 张点云图像作为测试集。
Pose1 数据集:123 个对象,包含多种光照、表情因素,头部偏转角度为+20~30°、-20~-30°以及仰视角度为+20~30°、俯视角度为-20°~-30°的864张点云图像数据集。
Pose2 数据集:123 个对象,包含多种光照、表情因素,头部偏转角度为+50°~60°、-50°~-60°的369 张点云图像数据集。
Pose3 数据集:50 个对象,包含多种光照、表情因素,头部偏转角度为+80°~90°、-80°~-90°的160张点云图像数据集。
实验部分在Ubuntu16.04 系统下,搭载Python3.6 环境,基 于TensorFlow1.8 框 架,CUDA9.0,NVIDIA GEFORCE 1080Ti 的GPU 进行测试,对于CASIA 数据集中的点云图像,在预处理后,每张图像中点云数量约为5 000 左右,分类网络输入点云的数量设置为1 024,初始学习率设置为0.001,在微调网络时为0.000 1;batchsize 设置为16,decay_rate 设置为0.7,初始epoch 设置尽量偏大,在预测结果稳定后进行调整。损失函数的超参数设置包括α、β、γ,监测训练过程中损失函数的收敛速度调整α、β、γ的值,通过实验取α=0.4,β=0.4,γ=0.2。
在CASIA 相关数据集上进行了PointNet、PointNet++、PointCNN、SAN、HFN 等深度分类网络的三维人脸识别实验。从表2 中可以发现:与文献[4]中的主成分分析(Principal Component Analysis,PCA)以及文献[19]中的多种传统方法相比,深度分类网络PointNet 和PointCNN 方法识别率偏低,SAN方法由于从多个方向加强了对三维点云空间结构特征的捕捉,使得人脸的空间特征更加丰富,网络的识别率已有大幅度提升,接近传统方法的识别率,PointNet++在PointNet 分类网络结构的基础上增加局部区域的特征提取后,其识别结果已经高于文献[19]方法3.94个百分点,本文提出的HFN方法在CASIA 数据集上的识别率为95.51%,高于已有的多个深度网络方法和传统方法的识别率。
表2 不同方法在CASIA 数据集上的识别结果 单位:%Tab.2 Recognition results of different methods on CASIA dataset unit:%
表3 的识别结果表明,文献[4]中头部姿态对识别结果影响较大,在Pose1(头部偏转±20°~±30°)和Pose2(头部偏转±50°~±60°)数据集上,深度特征的识别率都高于强度特征的识别率,且Gabor 小波处理后的深度特征在Pose1 数据集上识别率最高,为82.4%,同时在Pose1 数据集上的识别率比Pose2 数据集最多高了34.5 个百分点,识别率相差较大,对于Pose3(头部偏转±80°~±90°)并未进行测试,由此可见,手工设计三维人脸的几何特征受姿态影响较大。相比之下,PointNet系列的深度学习方法是直接以三维点云作为输入,进而提取特征,受姿态变化的影响小,在Pose1、Pose2 的数据下识别率相差不大,PointNet++、SAN 分类网络的方法均取得了高于文献[4]的识别结果。同时,本文提出的HFN 方法在头部偏转±20°~±30°、±50°~±60°的数据集上取得了最高的识别率,分别为95.60%、96.48%。在Pose3 数据集中所有方法的识别率均偏低,其中,SAN 方法的识别率比PointNet++方法的高7.66个百分点,本文提出的HFN 方法在Pose3 数据集上的识别率比SAN 方法的高4.5 个百分点,但仍低于Pose1、Pose2 数据集上的识别率。可见,由于头部大角度偏转造成的点云数据大量缺失导致人脸点云空间结构的不完整仍会影响人脸识别结果。
表3 不同方法在CASIA数据库的姿态数据集上的识别结果 单位:%Tab.3 Recognition results of different methods on pose datasets of CASIA database unit:%
原始点云可以清晰地看出三维人脸的空间结构,如图4(a),但是原始点云的数量均不相同,而深度网络的输入是采用了特定点数的点云。因此,为了探究点云数量对识别率的影响,本文测试了两种点云数量的输入方式并应用于PointNet系列的网络进行了分类结果对比。一种是输入点云数量为2 048,另一种是输入点云数量为1 024,基于随机下采样算法将两种输入方式的点云进行可视化,点云数据更加稀疏,但整体空间结构仍保留,分别如图4(b)和图4(c)所示。
图4 三维人脸点云随机下采样可视化结果Fig.4 Visualization results of random downsampling of 3D face point cloud
从表4的识别结果可以看出,对于PointNet++、SAN 方法,三维人脸点云采样数量设置为1 024个点时,在多个数据集上的识别率略高,而HFN 方法,点云采样数量为2 048 时,在各个数据集上的识别率均高于采样点为1 024个点的识别率。
表4 不同方法采用两种点云输入方式的识别结果对比 单位:%Tab.4 Comparison of recognition results using two point cloud input methods in different methods unit:%
本文针对人脸表情、姿态同时存在时,人脸非刚性区域存在形变且三维点云数据缺失的问题,探究性地将CASIA 数据库的相关点云数据集在多个分类网络中进行了训练和测试,并提出了HFN 方法,HFN 中结合了SA 模块和DSA 模块中以不同方式获取的两种点云特征,加强了局部特征的优势,并且克服了点云分布不均的影响。HFN方法不仅在整个数据库上提高了平均识别率,在较小头部姿态、较大头部姿态以及极大头部姿态数据集上都有良好的识别结果。在接下来的研究工作中,提升HFN 在大姿态数据集上的识别率仍需进一步探索。