孙收余, 吴凤娇, 罗子江, 倪照风, 马原东, 候红涛, 刘宽, 赵凯, 徐斌
(1.贵州财经大学信息学院, 贵阳 550025; 2. 北京盛开智联科技有限公司, 北京 101300)
近年来,人脸属性估计在计算机视觉、模式识别中引起广泛关注,在人脸识别、表情识别、图像生成等领域具有重要应用[1]。随着卷积神经网络的发展,大量高精度的人脸属性估计算法百花齐放。Liu等[2]设计LNets+ANets进行特征提取,使用支持向量机(support vector machine, SVM)分类器进行属性估计,该类方法忽略属性之间的关联性;Zhang等[3]提出了PANDA,利用网络深层特征进行属性估计,该方法平等对待每个属性,兼顾属性内部关联性,在假定人脸未被遮挡的理想条件下取得不错的估计效果;然而,实际应用环境复杂多变,Mahbub等[4]为提高属性估计算法在复杂环境中的鲁棒性,把人脸局部区域与其属性进行一一对应,设计出NAS算法,NAS算法在人脸有遮挡的条件下依然能有效地进行人脸属性估计。Mao等[5]提出了DMM-CNN方法,针对困难属性和简单属性采用多种不同的卷积神经网络进行分类估计,此类高精度的人脸属性分类算法需以巨大的算力和模型量为代价,严重阻碍算法的应用场景;孔英会等[6]针对情感化的智能家居应用这一需求,提出了一种基于深度学习模型的移动端属性识别方法,此方法虽然模型大小为0.25 MB,但在CPU为麒麟960的华为P10手机上推理速度仅8 fps,不能有效地进行实时属性估计。
为进一步提高算法在计算资源受限的移动设备、嵌入式设备上的推理速度,借鉴文献[6]在表情属性识别中主干网络轻量化的思想,根据MobileFaceNet网络[7]和人脸属性估计任务特点进行分析,结合跨阶段融合网络 (cross stage partial network,CSPNet)[8]、空间金字塔网络 (spatial pyramid pooling network,SPPNet)[9]设计适合于嵌入式设备硬件的人脸属性估计共享特征提取网络,采用剪枝、知识蒸馏等方法对网络模型进行量化;在不同的属性估计任务中引入不同的学习策略,通过动态类别抑制损失函数(adaptive class suppression loss,ACSL)[10]进行损失度量,均衡样本数据、加快模型收敛。
基于嵌入式系统的多任务人脸属性估计算法主要包括:①创建人脸数据集并进行数据预处理;②构建轻量级卷积神经网络;③采用剪枝、知识蒸馏等方法进行模型优化;④采用动态类别抑制损失函数进行损失度量,人脸属性估计算法模块结构图如图1所示,在数据预处理阶段需进行人脸对齐、数据增强等处理。人脸属性估计算法随着卷积神经网络深度的加深,特征表达能力增强,属性估计效果显著提升,同时也造成推理速度慢、计算成本高、网络模型大等问题。目前轻量级卷积网络的设计原理包括:①限制网络深度和通道数;②使用小尺度卷积核代替大尺度卷积核;③使用深度可分离卷积,优化卷积运算,如MobileNet系列网络;④在残差块中融合CSPNet,实现特征分流,降低算力,节约网络推理时间。
深度可分离卷积(depthwise separable convolution,DwConv)是MobileNetV2[11]、MobileFaceNet[7]等轻量化卷积神经网络中都使用的卷积操作,深度可分离卷积在通道上对卷积操作进行拆分运算,大量缩减参数量和计算量的同时并不会造成性能的显著下降。
跨阶段融合网络 (cross stage partial network,CSPNet)[8]是一种丰富梯度组合的特征融合方法,该模块能有效节约算法推理时间和计算成本,CSP模块可与多种骨干网络中进行结合,跨阶段进行特征组合,丰富特征结构,轻量化网络结构的同时依然能保持足够的精度。CSPNet能与ResNeXt[12]、DenseNet[13]网络中的残差模块相结合节约算力、提升精度,在ResNet-10[14]中增加CSPNet相比ResNet-10缩减16%的算力,同时top-1的精度增加1.8%。
He等[9]提出了空间金字塔网络 (spatial pyramid pooling network,SPPNet),SPPNet在一个特征图上通过不同大小区域的池化产生固定尺寸的特征图而不用关注输入特征图的尺寸大小,增加特征图感受野。
通道注意力网络(squeeze-and-excitation networks,SENet)[15]在通道上探究特征之间存在的关系,自适应抽取感兴趣的特征,屏蔽权重贡献较少且几乎没有贡献的特征,进而形成一种极其类似人眼视觉注意力的机制,提高特征的表达能力。
轻量级卷积神经网络能有效缩减人脸属性特征的计算量和参数量,加快算法推理速度、提高算法在嵌入式系统中的资源利用率,缩减响应时间。本文的人脸属性估计属于多标签学习任务,使用共享网络对眼镜、性别、年龄属性的共同特征进行提取,共享网络结构设计如下。
表1为网络结构的输入尺寸、操作类型、重复次数、通道、步长等参数,所提出的人脸属性共享网络借鉴MobileFaceNet网络设计思想,为保证属性估计算法在嵌入式设备上高效运行,仅采用MobileFaceNet网络的前3个瓶颈结构块(bk:bottleneck)进行设计,并在每个瓶颈结构块中结合CSPNet、SPPNet设计跨阶段融合空间金字塔瓶颈结构(cross stage partial and spatial pyramid pooling bottleneck,CSPSPP_bk),如图2所示。
表1 主干共享网络结构Table 1 The backbone shared network structure
Conv、C、pool、SPP、Concat分别为卷积层、通道数、池化层、图像金字塔层、通道拼接层图2 CSPSPPNet_bk结构Fig.2 Structure of CSPSPPNet_bk
F(A)=Concat[A1,fDW(A2),fSPP(A3)]
(1)
式(1)中:F(A)为输出特征;Concat为通道融合;fDW为深度可分离卷积;A1、A2、A3分别为CSPSPP_bk结构块中第1、2、3条支路的输入特征;fSPP为经过特征金字塔结构得到的输出特征图。
由于SPPNet结构中主要是池化结构,故可学习的参数几乎为0,CSPSPP_bk结构块中算力主要集中于fDW(A2)、fSPP(A3),参数量仅集中在fDW(A2),相比MobileFaceNet网络的瓶颈结构特征全部参与运算,CSPSPP_bk降低约1/2的算力、3/4的参数量。
在卷积之后增加批次归一化层(batch normalization,BN),对特征进行归一化处理;避免特征损失和额外的运算操作,网络设计时均采用步长为2代替池化操作。
由于眼镜、性别、年龄3个属性估计的难易程度不同,故在3个属性分支中采用不同的策略进行估计,基于嵌入式系统的多任务人脸属性估计网络结构如图3所示。眼镜分支中,眼镜作为一个人脸局部属性,仅出现在人脸图片的中间区域,且边缘特征明显,故在眼镜分支选择较浅层的特征进行属性估计,并在眼镜分支引入SENet,由于直接引入SENet会大量增加计算量,故在眼镜分支首先通过一个1×1的卷积对CSPSPP_bk2的特征进行通道降维。SENet模块在通道上对特征图的重要性进行加权,有效屏蔽贡献小或几乎没有贡献的通道特征,SENet实现流程如图4所示。
图4中,对输入通道为C1的特征图B进行全局平均池化输出一个1×1×C1的特征,之后连接两个1×1的卷积分别进行升维和降维,得到通道注意力权重矩阵,将通道注意力系数矩阵的值利用Sigmoid激活函数限制到[0,1],Sigmoid表达式如式(2)所示,然后将输入特征图与得到的通道权重矩阵相乘
Image、SE、FC、ConvLiner、SoftmaxLoss、SoftmaxLoss-EuclideanLoss分别为输入图像层、通道注意力层、全连接层、在卷积层后使用线性激活函数(Conv后未标注Liner默认卷积之后使用非线性激活函数)、Sofamax损失层、SoftmaxLoss与EuclidenanLoss的组合损失层图3 人脸属性估计网络结构图Fig.3 Lightweight attribute classification network structure diagram
Conv、Avepool、Sigmoid、Scale、C分别为卷积层、全局平均池化层、Sigmoid激活函数层、图像缩放层、通道数图4 通道注意力模块建模图Fig.4 Modeling diagram of channel attention module
得到经过注意力激活的特征图,其表达式如式(3)所示。
(2)
式(2)中:x为注意力系数矩阵的值;W为经过Sigmoid函数激活后的输出值。
(3)
经过注意力激活后的特征图能将非眼镜区域的特征限制到一个较低的无响应状态,从而提升眼镜属性的估计性能。
性别和年龄作为全局的人脸属性,深层特征具备更多语义信息,选择CSPSPP_bk3的特征进行性别和年龄估计,采用96×112大小的图片作为输入,更贴合人脸长宽比例的同时降低特征输入。
在模型训练中采用模型蒸馏与模型剪枝进行网络优化。年龄的准确估计一直都是人脸属性中难以攻破的研究问题,在以往的研究中通过更深的卷积网络进行年龄估计,采用知识蒸馏[17]的方法进行年龄估计优化,平衡困难属性与简单属性的估计性能。
首先采用ResNet50[14]预训练一个年龄估计精度较高的网络作为Teacher模型,结合年龄的连续性特点,使用该网络对训练数据集的年龄属性进行标签软化,相比硬标签,软标签将年龄拟合到[0,100]之间的连续数值,体现不同年龄之间的内在关联性,所设计的基于嵌入式系统的多任务人脸属性估计网络作为Student模型,通过Teacher模型指导Student模型学习,同时使用硬标签和软标签进行模型训练。对知识蒸馏后的网络模型采用最小输出裁剪网络对输出特征重建误差的评价标准对共享层网络进行逐层剪枝,剪枝流程如图5所示。
模型剪枝在模型训练中需重复迭代进行,对网络单层进行裁剪时,通过较少的迭代训练进行网络性能恢复,剪枝结束后使用较多的迭代训练完成网络性能的整体修复。
图5 模型剪枝流程图Fig.5 Model pruning flow chart
动态类别抑制损失函数(adaptive class suppression loss,ACSL)[10]根据不同类别样本分布对每个类别的输出损失进行二值加权,消除大量样本类别对少量样本类别的学习抑制,样本数据达到均衡,动态类别抑制损失函数的表达式为
(4)
式(4)中:wj为权重值;pj为网络的预测为第j个类别的概率值;C为类别总数,wj的计算公式为
(5)
式(5)中:k为类别、ζ表示阈值、pj表示网络的预测为第j个类别的概率值。当前样本类别为k时损失权重被设置为1,对于其他类别的权重需由一个固定阈值来决定,当其他类别损失权重为1时表示该类别与当前样本类别学习存在混淆,因此需要保留对混淆性高的类别的梯度损失,加强判别性学习,当预测概率小于阈值时表示网络对该类别与样本类别的判断能力强,不需要继续学习。
在基于嵌入式系统的多任务人脸属性估计任务中必然存在样本数据分布不均衡问题,引入ACSL损失函数重点均衡年龄属性的样本数据分布。
本次实验中,以准确率Acc作为眼镜、性别和年龄属性估计的性能评价指标,Acc的计算公式为
(6)
式(6)中:N、i、Cattri、Acc分别为类别总数、所属类别、预测类别、精度;当Cattri=1表示属性估计正确,Cattri=0表示估计错误;眼镜和性别使用精确的Acc进行评估,年龄属性使用平均准确率±标准差的方法进行评估。
3.2.1 CelebA数据集
CelebA数据集[18]:CelebA包括202 599个人脸图像,对每个人脸的标注包括5个关键点(双眼、两个嘴角、鼻尖),共10 177个身份,对40个属性都有标注;CelebA数据集部分示例样本如图6所示。
3.2.2 Adience数据集
Adience数据集[19]:Adience数据集包括26 580张816×816大小的图片,共2 284个对象,将年龄分为8个年龄组(分组1:0~2、分组2:4~6、分组3:8~13、分组4:15~20、分组5:25~32、分组6:38~43、分组7:48~53、分组8:≥60),各年龄组数据样本分布情况如表2所示。
图6 CelebA数据集部分示例Fig.6 Example of CelebA dataset
表2 Adience数据集年龄数据分布Table 2 Age data distribution of the Adience dataset
3.2.3 实验环境配置
PC实验环境为Win7系统,硬件配置:CPU:Intel(R) Core(TM) i5-4590(3.3 GHz)嵌入式端选用RK3288开发板,硬件配置:CPU:Cortex-A17 1.8 GHz。
3.3.1 方法有效性结果分析
该实验中,MF表示仅用MobileFaceNet网络中3个瓶颈结构作为主干网络的基于嵌入式系统的多任务人脸属性估计网络,MF_CSP、MF_CSPSSP表示在MF基础上分别增加CSP模块、CSPSPP模块的网络,MF_CSPSPP+SE表示在眼镜分支增加注意力模块,ACSL表示采用动态类别抑制损失函数,方法MF、MF_CSP、MF_CSPSSP、MF_CSPSPP+SE都只采用Softmax损失进行损失度量,表3为在CelebA和Audience数据集上不同技巧消融实验比较,在测试推理时对网络中的BN和卷积进行合并处理,优化网络推理速度。
由表3可知,MF仅采用连接单一的瓶颈结构,MF_CSP对特征划按通道拆分为平等的两份,仅有一半通道特征参与瓶颈结构计算,MF_CSP的算力仅是MF的46.80%,平均精度降低1.23%,MF_CSPSSP在MF_CSP基础上引入SPPNet结构,对特征划按通道拆分为C/2、C/4、C/4,其中C/2的特征
表3 不同网络在CelebA和Audience数据集上不同技巧消融实验比较Table 3 Comparison of ablation experiments with different techniques on CelebA and Audience datasets
不参与计算、剩下特征的一半通过瓶颈结构,一半通过SPPNet结构,最终对通道进行合并,MF_CSPSSP相比MF_CSP算力降低10%,精度提升1.15%,其中年龄属性精度提升1.58%,MF_CSPSPP+SE在眼镜分支增加注意力模块,算力提升5%,眼镜估计精度提升1.13%;在多属性估计任务中无法避免样本分布不均衡问题,引入动态类别抑制损失函数有效解决样本分布不均衡问题,尤其是在年龄属性中,方法MF_CSPSPP+SE+ACSL在眼镜、性别、年龄属性的精度分别提升0.04%、0.07%、1.85%,其中年龄精度提升最大;通过实验验证,在基于嵌入式系统的多任务人脸属性估计网络中增加融合SPPNet的CSP特征提取模块、在局部属性中增加注意力模块、引入动态类别抑制损失函数等方法有效节约算力、均衡样本数据分布、提升人脸属性估计性能。
仅对年龄属性采用Resnet50[14]训练的年龄估计网络对其进行知识蒸馏,提升年龄估计性能,对人脸属性估计网络的各层模型参数通过迭代剪枝的方式进行模型压缩,模型优化前后的测试结果对比如表4所示。
表4 蒸馏和剪枝优化后的网络估计精度和模型大小Table 4 The network classification accuracy and model size after distillation and pruning were optimized
表4中,在PC上测试结果表明经过模型蒸馏和剪枝后的人脸属性估计网络速度能达到779 fps,模型量降低10%,且平均精度仅损失0.16%,速度提升约30.92%。
3.3.2 不同算法性能对比分析
在CelebA数据集上与LNet+ANet[2]、NAS[4]、DMM-CNN[5]进行属性估计精度、算力比较,具体结果如表5所示。本文算法对性别和眼镜估计效果最优,其中眼镜、性别估计精度相比DMM-CNN分别超过0.03%、0.60%,所提出的人脸属性估计网络的算力分别是LNet+ANet、NAS、DMM-CNN的0.62%、1.35%、0.39%,所提出的人脸属性估计网络在算法推理时间远小于LNet+ANet、NAS、DMM-CNN,网络前传推理速度占据绝对优势。
在Adience数据集上与4c2f-CNN[20]、CNN2ELM[21]、EGroupNet[22]进行年龄估计实验对比分析,具体对比数据如表6所示。
本文方法的年龄估计精度超过方法4c2f-CNN,与CNN2ELM、EGroupNet相比精度相差6.28%、9.57%,的方法的平均精度的标准差仅为3.01%,相比以上3种方法,本文算法的年龄估计稳定性最好、网络算力最低,方法4c2f-CNN、CNN2-ELM、EGroupNet需要的算力开销过大均不适合在嵌入式设备上进行实时的属性估计,为体现本文算法在速度和精度上的优势,在PC和RK3288开发板上与嵌入式年龄估计算法[23]进行前传推理时间比较,测试结果如表7所示。
表5 在CelebA数据集上性别和眼镜估计测试结果对比Table 5 Comparison of gender and eyewear classification test results on CelebA dataset
表6 在Adience数据集上年龄估计测试结果对比Table 6 Comparison of age classification test results on the Adience dataset
表7 在PC和RK3288处理器中网络前传推理时间测试Table 7 Network forward inference time test in PC and RK3288 processor
表7中DeepID和DeepID_best是文献[23]中设计的面向嵌入式应用的性别与年龄识别卷积网络,文献[23]使用卷积网络单独对年龄和性别进行特征提取,所提出的人脸属性估计算法属于多任务学习网络,通过共享网络仅做一次特征提取就可以对眼镜、性别、年龄3个属性进行估计,表7中,为方便测试时间比较,对文献[23]中的两种方法的测试时间等比放大到3个属性测试时间,所提出的基于嵌入式系统的多任务人脸属性估计算法在PC和RK3288上的前传推理时间分别是1.28、7.24 ms,相比4c2f-CNN、DeepID、DeepID_best推理时间最少且算力最低,在文献[23]中已经验证4c2f-CNN的年龄估计精度高于DeepID和DeepID_best的方法,在表6中的实验结果表明本文的年龄属性估计精度优于4c2f-CNN的年龄估计精度,故所提出的基于嵌入式系统的多任务人脸属性估计算法在精度和速度上均优于文献[23]的方法。
在实际应用中,性别和眼镜作为较开放的属性,估计性能往往要求极高,而年龄因环境因素存在巨大差异,更趋向于表象估计值,估计存在一定的误差是不能避免的,甚至在实际的应用中人们更希望估计的年龄相比真实年龄更年轻,所提出的基于轻量卷积网络的人脸属性估计算法对眼镜、性别的估计具有较高的精度,难免会牺牲年龄估计的精度,折中后的人脸属性估计算法均能满足实际应用需求,可在移动、嵌入式设备上实现高效的人脸属性估计。
3.3.3 实际应用测试结果分析
为验证本文算法在实际应用场景中的有效性,在Android系统的移动手机和iOS系统的iphone 11上进行不同性别、是否佩戴眼镜、单人脸和双人脸等条件下的人脸属性估计测试,效果如图7所示。
图7中性别、是否佩戴眼镜均能准确估计,年龄估计误差都在3岁范围以内,对单张人脸图片在安卓操作系统和iOS操作系统上进行属性估计的平均测试速度分别为250、520 fps,对双人脸图片进行属性估计的平均测试速度仍然可以分别保持在100、260 fps,完全满足实际应用需求。
(1)针对人脸属性估计算法存在模型量大、算力大、不利于算法在嵌入式设备、移动设备上使用等问题,提出基于嵌入式系统的多任务人脸属性估计算法,主干网络借鉴MobileFaceNet网络中的前3个瓶颈结构,并在瓶颈结构中增加CSPNet和SPPNet结构,缩减网络算力,针对不同属性的难易程度,
图7 移动设备实际应用效果Fig.7 Practical application effect diagram of mobile devices
在不同的属性分支中增加不同的估计策略,采用动态类别抑制损失函数均衡样本数据,平均性能提升0.65个百分点;在年龄属性中通过知识蒸馏方法对模型进行性能优化,使用模型剪枝方法缩减模型量,经过优化后的模型量仅1.8 MB。
(2)所提出的人脸属性估计算法在测试推理时将网络中的卷积与BN进行合并,优化推理速度。在CelebA数据集和Adience数据集上分别验证了方法的有效性,眼镜和性别属性的平均精度分为99.72%、98.89%,年龄标准差为3.01%的年龄精度为60.21%,在PC和RK3288开发板上的推理速度分别是779 fps、138 fps,在Android操作系统和Ios操作系统的移动手机上对单人脸和双人脸的平均测试速度分别为250 fps、520 fps。整体性能优于现有的其他嵌入式人脸属性估计算法。
(3)基于嵌入式系统的多任务人脸属性估计算法在速度和精度上进行权衡,眼镜和性别作为客观属性,在实际应用中的存在极高的精度需求,基于嵌入式系统的多任务人脸属性估计算法需以保障眼镜和性别估计性能的条件下对年龄估计性能进行折中,因此本文算法在年龄属性的估计精度略低于CNN2ELM算法和EGroupNet算法,在接下来的研究中将对年龄估计性能做进一步优化,减少年龄估计误差,提高算法在不同应用场景的鲁棒性。