苏俊峰,刘振宇
(沈阳工业大学信息科学与工程学院,沈阳110870)
近年来随着模式识别与计算机视觉技术的快速发展,人脸识别成为身份识别领域非常热门的研究内容。人脸在不同个体之间存在差异而个体自身长时间不会有明显改变,基于这一特性,人脸识别相比于其他的生物特征识别方法更具有直观性,应用场景更为丰富。在公安系统、证件审查和金融等领域都有良好的应用效果[1]。
人脸识别的方法分为基于几何特征的方法、基于子空间的方法、基于局部特征的方法、基于稀疏表示的方法以及基于深度学习的方法等[2]。其中,基于几何特征的人脸识别方法在遇到表情与姿态变化较大的情况时,识别率偏低;基于子空间的方法由于缺乏投影矩阵,实用较为困难;基于局部特征的方法特征计算过程复杂,应用受到限制;基于稀疏表示的方法在对原始信号分解过程中丢失很多原始的信息,影响了识别效果。这几类传统方法各有局限,人脸识别准确不佳,相比之下,基于深度学习的方法为人脸识别领域提供了全新的研究方向。
基于深度学习的方法不用特意去设计出人脸特征,而是可以利用深度卷积神经网络自动地从海量人脸图片数据中学习到人脸特征。2015年,何恺明等人[3]提出了ResNet残差网络结构,其包含的残差单元有效解决了随着网络深度的增加,准确率饱和后出现退化的问题,在ILSVRC-2015分类任务以及ImageNet detection等任务中均获得第一名。ResNet残差网络具有很高的人脸特征提取能力与人脸识别准确率。
在此,运用ResNet残差网络在人脸识别上的研究成果[4],针对原模型结构复杂而导致人脸特征提取时间较长的问题,设计出改进残差网络模型,以加快提取速度。训练数据为CASIA-WebFace人脸数据集,对模型性能分析比较,结合Chinese whispers及k-means聚类算法形成多个方案,在LFW测试集进行人脸聚类识别。
ResNet引入了残差单元来优化深层网络的学习。一个残差单元包含两部分:恒等映射(Identity Mapping)和残差映射(Residual Mapping)。残差单元结构如图1所示。残差映射在前向传播中增加捷径连接,执行恒等映射[5],这样不会增加额外参数和计算复杂度,比原有映射更易优化。在每个卷积层之后采用批量归一化算法[6],算法原理如下:
其中,ε为小偏置,用以防止分母为0;γ为缩放因子,β为偏移因子。通过BN算法可以增强反向传播信息流动性,提升训练速度,使收敛速度加快,改善正则化策略,提高网络模型泛化能力并防止过拟合现象。
另有前向传播公式:
以图1为例,x、y分别表示输入和输出,W1、W2为两个卷积层权重张量,σ为激活函数,F(x,{Wi})为表示残差映射的函数,BN为批量归一化操作。
图1 残差单元结构图
用人脸数据训练深度残差网络的过程中,需要考虑模型的准确率、训练时间、模型大小、设备的计算能力等。在实际应用中,结构复杂的模型占用内存大且加载时间长,导致识别速度慢,故此提出改进设计方案。设计的目的是以保持较高准确率为前提,能够满足在实际工程中缩短模型加载时间的要求,并为后续聚类算法提供较好的人脸特征向量输出接口。图2是以ResNet-30残差网络模型为例对这一设计进行说明。
图2 ResNet-30残差网络整体结构图
由图中可以看出,残差网络含有5个卷积块,各卷积块包含的卷积层数分别为6层、8层、6层、4层和4层,加上Input image后的1个卷积层和全连接层,共同构成30层的ResNet网络模型。下采样过程使用2×2大小、stride=2的平均池化,为特征图降维。在此采用Triplet Loss度量损失函数[7];反向传播算法采用小批量梯度[8]下降法(Mini-Batch Gradient Descent),因此算法速度更快、精度更高、更容易接近最优解。为提高模型的特征表达能力,需要引入非线性激活函数。在此处采用ReLU(Rectified Linear Unit)激活函数。
三种改进模型与ResNet-34、ResNet-18残差网络模型结构的对比情况如表1所示。由表中可知,改进残差网络模型在各卷积块中的卷积核数量相比于原模型大幅减少,训练参数也有减少,实现了网络模型的精简,同时由于卷积块数量增加,使生成特征图更为简化,提升了模型泛化能力。输入人脸图片后,经过一系列卷积、激活、下采样运算后,再进行全局平均池化[9](Global Average Pooling,GAP),最后经过Fc全连接层输出多维人脸特征向量。
表1 5种残差模型结构对比
多线程训练模式原理框图如图3所示。完成训练需要如下几步:首先,从训练集中随机选取批量图片加载至6个线程中,采用MSRA方法[10]初始化模型参数,将模型参数从内存加载到GPU显存中;然后,调用GPU用于加速训练过程[11],运用CUDA并行运算架构将图片输出为多维特征向量,再通过损失函数计算平均损失和梯度,通过反向传播将梯度传递至GPU中;最后,把各线程更新参数值的平均值作为本次迭代模型参数最终更新值,完成模型参数的更新并调回内存。迭代进行上述过程,直至训练完成。
图3 多线程训练模式
训练数据采用CASIA-WebFace人脸数据集[12],包含10575个人的49万张人脸图片。使用CPU为Intel Core i7-7700HQ、显卡为NVIDIA GeForce GTX 1060的笔记本电脑。将Fc全连接层节点数设置为128,每次迭代的批量设定为36,引用Momentum[13]方法进行优化。初始学习速率为0.1,当有1.1万次迭代的损失值未减少,则把当前学习率乘以0.1后作为新的学习率继续训练,直至学习率降至10-4。训练完成后对验证集的300组样本对进行交叉验证,训练结果如图4曲线所示。
图4 基于不同模型的平均损失变化曲线图
从图中的训练损失结果来看,模型的变化曲线都是在训练开始时呈快速下降趋势,而后下降变慢,曲线总体趋于平缓;接下来会在某个迭代区间产生突降,这是因为随着训练的逐步进行会有局部最优解产生,从而导致平均损失变化幅度不大,这时降低学习速率可以有效解决局部最优解的问题,为实现全局最优解奠定基础;最后损失曲线呈小幅下降趋势直至训练结束。训练结果详细数据如表2所示。由表可知,从模型大小上看,三种改进模型相比于ResNet-34与ResNet-18模型大幅度减少,且训练时长缩短。从模型加载时间上看,三种改进模型的加载时间相比于原ResNet-34与ResNet-18模型缩短约37%,在实际应用中可以起到快速加载以提升整体识别速度的作用。用验证准确率评估模型的泛化能力,ResNet-34模型验证准确率最高,ResNet-30次之,两个模型精确度较高且泛化能力强,其余模型验证准确率则较低。
表2 不同模型训练情况对比
为研究Fc全连接层节点数对于模型性能的影响,在此将ResNet-30模型Fc层节点数分别设置为64、128与256,分别命名为ResNet-30A、ResNet-30A、ResNet-30C,再次进行训练,得到的训练结果如图5所示。
图5 基于ResNet-30的平均损失变化曲线图
如图5所示,在改变全连接层节点数后,由平均损失与迭代次数关系曲线可知与图4中曲线变化趋势相似。训练完成时ResNet-30B模型平均损失值最低,同时在改变全连接层参数后模型性能也随之发生变化,详细情况如表3所示。
表3 不同设置下的ResNet-30模型训练情况表
由表可知,基于ResNet-30的不同设置的三个模型的模型大小、加载时间与训练时长基本相似,但在验证准确率上区别较大。其中ResNet-30B的验证准确率最高。由本组实验可知低维向量不足以精准表达人脸特征,而高维向量过于拟合原始样本会使泛化能力变差。
综上所述,模型性能受到网络结构以及参数设置的影响,所以在构建模型时需要保持适当的模型深度以便提取深层人脸特征,同时还要选择恰当的参数确保训练高效可靠。
聚类分析是指根据数据集之间的相似度将其聚类为若干个簇或类,使得同一簇或类之间的数据相似度尽可能大、不同类或簇之间的数据相似度尽可能小。聚类方法是非监督学习中很重要的领域,学习不依赖于标签的数据。在人脸聚类匹配时,除了要求提取精确的人脸特征向量外,还需要选择合适的聚类方法。
Chinese whispers图聚类算法具有如下优点:第一,无需预先设定聚类中心数,更适用于复杂环境的聚类;第二,适用于处理不同规模的数据,算法可伸缩性较好[14]。
设X、Y为m维空间内两点,其空间向量分别为X=(x1,x2,...,xm),Y=(y1,y2,...,ym),则这两个点的欧式距离为:
欧式距离越小,相似度越大,其中的原理为[15]:1)构造无向图,每张人脸都作为一个节点;
2)设定一个阈值,如果人脸之间的欧氏距离比阈值小,则两个人脸对应的节点间有关联边,相似度权重作为节点的边,反之则两个人脸没有关联边;
3)迭代开始时,每个节点都是一个类别,随机选取一个节点,选择与其有关联边的节点中相似度权重最大的节点所对应的类作为该节点的类别,完成该节点类别的更新;
4)如果在关联节点中有属于相同类别的节点,则将此类节点的相似度权重相加作为新权重进行比较。遍历所有节点后,就完成了一次迭代,按照上述方法重复迭代至迭代次数。采用相似度权重归一化,计算方法可由下式表示:
对应的算法流程如图6所示。
图6 Chinese whispers算法流程图
该算法对于特征向量的精确性要求高,因此算法准确度回归到深度卷积神经网络的核心要求:尽量减小类内间距及增大类间间距。
综上所述,该算法的影响因素有两个:设定的阈值与提取的特征向量。因此通过残差网络模型可以更精确地提取人脸特征,再通过改变阈值,从而达到准确聚类的目的。
k-means方法是当前聚类分析中使用最广泛的算法之一,其算法实现过程为:
①从样本集合中随机选取k个点(k为真实类别数)作为初始簇中心,共分k个类;
②计算其余各点到这k个簇中心的距离,每个点归属于距离最小的中心点的类簇中。在此将距离度量选择为欧氏距离;
③根据每个类簇中的所有点重新计算该类簇的中心点,计算公式为:
式中,Cl表示第l个类簇的中心,满足1≤l≤k;|Sl|表示第l个类簇中样本个数;Xi表示第l个类簇中第i个对象的空间向量,满足1≤i≤|Sl|;
④重复步骤②与③直至最大迭代次数或簇中心点不再变化为止。
k-means算法适用于不同规模数据的聚类处理,可伸缩性较好[16],聚类形状为球形,故当样本特征空间符合欧氏距离且不同类别之间的区别较明显时,k-means能取得较好的聚类效果。
以TP(True Positive)表示同类人脸被分到同一簇的样本对数量;以TN(True Negative)表示异类人脸被分到不同簇的样本对数量;以FP(False Positive)表示异类人脸被分到同一簇的样本对数量;以FN(False Negative)表示同类人脸被分到不同簇的样本对数量。则精确率(Precision)、召回率(Recall)、F1-Measure指标分别为:
精确率和召回率是信息检索和统计分类领域用来评价检索或分类结果质量的度量。精确率和召回率两者越高,聚类效果越好,但实际上随着图片数量的增多,两者具有一定的互斥性,即随着精确率升高召回率降低;或召回率升高精确率降低。F1-Measure是综合了精确率和召回率的评估指标,反映了整体的聚类效果。另外,在聚类评价中可以采用信息熵(entropy)表示聚类的混杂度:信息熵越低,聚类后每一簇中所含人脸类别数目越少,聚类的混乱程度越低;反之,聚类后每一簇的人脸类别数越多,聚类的混乱程度越高。信息熵的定义可由下式表示:
其中Pmn=cmn/cm,cmn为第m个簇中类别n的数量,cm是第m个簇的样本总量。
人脸测试集采用LFW数据集[17],一共包含来自5749人的13233张人脸图像。实验选用其中部分数据进行人脸聚类识别。人数20~50人,每人2~19张图像,共计300张。实验使用的部分测试集如图7。
图7 测试集部分人脸图片
首先用Dlib软件库中的人脸检测器[18]对测试集图片做人脸检测,采用仿射变换将人脸对齐,将每个人脸缩放至规格为150×150的样本;然后将相同尺寸的样本载入到前文训练出的残差网络模型中,输出多维特征向量;最后把得到的人脸特征向量进行标注,存储到本地。在多维矢量空间中,来自于同一个人的矢量将彼此接近,而来自不同人的矢量将距离很远。
选取前文验证准确率较高的模型,结合CW图聚类算法,统计在不同阈值下的聚类结果。此处实验采用的阈值范围为0.5~0.8,并对聚类结果进行对比分析。
4.2.1 不同阈值下各参数对比
不同阈值下各方案召回率变化对比实验结果如图8所示。
图8 不同阈值下各方案召回率变化对比
总体看来,随着阈值的增大,各曲线呈逐渐增长的趋势,召回率从开始时的较小值逐步增大至接近于1。在设定阈值较小时不能把人脸姿态表情有变化的同一类图片匹配在一簇,从而也导致了较低的召回率。
不同阈值下各方案精确率变化对比实验结果如图9所示。
图9 不同阈值下各方案精确率变化对比
从总体上看,随着阈值的增大,各曲线呈逐渐下降的趋势,精确率从开始时的接近于1逐步减小至较低点。在设定阈值较大时会把不同类人脸匹配至同一簇而导致精确率较低。
不同阈值下各方案的F1-Measure变化对比实验结果如图10所示。
从整体上看,随着阈值的增加,各方案的F1-Measure值呈先升高后下降的趋势。结果显示不同方案在不同阈值处取得F1-Measure最大值,ResNet-30B模型F1-Measure最大值为0.962,此时阈值为0.59;ResNet-34模型在阈值为0.62时取得F1-Measure最大值,为0.964。由此可见,当取得最优阈值时,上述两种方案的F1-Measure值较其余模型的F1-Measure值大,因此聚类效果较好。部分聚类结果如图11所示。
图11 部分聚类结果
不同方案的信息熵指标的实验对比结果如图12所示。由图中曲线可以看出,随着聚类数目的增加,各条曲线的信息熵也随之增长,在聚类数目为50时,ResNet-30A+CW方案的信息熵最高,ResNet-30B模型与ResNet-34模型各自与CW算法结合的信息熵指标较低,可知簇内杂乱程度较低,聚类效果相比于其余方案较好。
图12 不同方案的信息熵指标对比
综上所述,以F1-Measure与信息熵指标来看,ResNet-30B模型和ResNet-34模型为性能较优的模型,故选择这两个模型进行人脸特征提取。
4.2.2 不同聚类方法效果对比
采用不同聚类方法在实验中获得相应的F1-Measure指标,对比情况如图13所示。
图13 不同聚类方法的F1-Measure指标对比
选择ResNet-30B与ResNet-34模型,通过对比k-means算法与CW算法的F1-Measure指标,可以看出随着聚类数目的增加,四条曲线均呈下降趋势;两种模型与CW算法结合的聚类效果要优于与kmeans算法结合的效果;ResNet-30B+CW与ResNet-34+CW这两种方案的F1-Measure相似,说明两者性能相似。
采用不同聚类方法进行实验,获得的信息熵指标如图14所示。
图14 不同聚类方法的信息熵指标
从整体上看,四条曲线的信息熵随聚类数目的增多而增加;两种模型与k-means算法结合的信息熵要高于与CW算法结合的信息熵;在聚类数目为50类时,ResNet-30B+CW的信息熵略高于ResNet-34+CW的信息熵。故ResNet-34+CW方案的混杂程度最低,ResNet-30B+CW次之,这两种方案较优。
综上所述,ResNet-30B+CW和ResNet-34+CW的聚类效果要优于ResNet-30B+k-means与ResNet-34+k-means方案,且ResNet-30B+CW的综合性能略差于ResNet-34+CW的综合性能。但根据前文可知ResNet-30B比ResNet-34的加载时间短,在人脸特征提取阶段加速效果提升约37%,故ResNet-30B+CW方案能在保证聚类效果较优的情况下更快地完成人脸识别任务。在实际工程中既需要良好的聚类效果又要兼顾识别速度,因此ResNet-30B+CW为实验中各方案当中的最优选择。
通过改进残差网络模型提取人脸特征向量,获得了比原模型更快的提取速度,将CW与k-means聚类算法相结合,分别进行人脸识别。测试图片来源于LFW数据集,更接近于实际环境。采用F1-Measure、信息熵等评价指标,在大量实验数据的基础上,找到各模型在CW算法中的最优阈值,并分析不同模型、不同聚类方法与聚类效果之间的关系。实验结果表明采用改进的ResNet-30B残差网络模型可以达到提升整体识别速度的作用,结合CW聚类算法比k-means算法更有效。因此,采用改进残差网络与CW聚类的方案可以在保证良好聚类效果的同时加快识别速度。本研究选用的测试人脸数据分布比较均匀且类别数较少,在进一步研究中,还应着重考虑非均匀分布、类别较多的大规模数据集的更接近于现实的情况,对模型结构与性能再作深入探索并加以完善。