多任务及Resnet网络在人脸多属性识别中的应用
2019-01-24徐培超陈雯柏陈祥凤
徐培超,陈雯柏,陈祥凤,韩 琥
1(北京信息科技大学,自动化学院,北京 100101)2(中国科学院计算技术研究所,北京 100190)
1 引 言
人脸多属性识别是人脸认证、识别和搜索任务中的关键技术,由于人脸属性具有丰富的信息,人脸多属性识别也被广泛的应用在人机交互、公安系统、火车站等诸多领域.人脸属性具有微笑、棕色发、是否佩戴帽子等具体属性特征,人脸多属性识别是指当检测一张人脸的图像时,对图像信息进行分析,返回人脸表情、发色、配饰等多种信息.
多任务学习[1]是一种归纳迁移机制,利用相关任务中的领域特定信息来提高模型的泛化能力,采用共享特征和并行训练的方法学习多个任务.Li[2]等人提出一种基于深度卷积神经网络的单目图像人体姿态估计异构多任务学习框架,同时学习姿态回归器和滑动窗口身体部分检测器.对于图像质量评估,由于训练任务的样本少,可能导致过度训练的问题,Xu[3]等人引入多任务学习采用共享特征同时训练过多个IQA模型.在近10年中,目标属性识别取得了重要进展,传统的目标属性识别大多依赖手工设计的特征,如SIFT[4]、Gabor[5]、HOG[6],考虑到深度卷积神经网络(DCN)在图像分类等任务的出色表现,Razavian等[7]and Donahueet等[8]利用ImageNet[9]学习到的特征表示来训练属性分类器,在特征学习中,稀疏编码能够有效学习数据表示的结构[18].由于深度模型的计算代价[17],以机器学习算法为主构建基于单静态图像的感知模型.针对复杂环境的人脸属性识别问题,Liu[10]等人提出一个新的深度学习框架,通过级联两CNN——LNet和ANet,利用目标类别预训练LNet得到面部局部化,同时采用脸部特征预训练ANet实现属性预测.同时输入的图片质量会直接影响模型的预测结果,图像超分辨率重建技术[16]也已经成为计算机视觉领域的热点方向.
上述方法通过加深CNN解决人脸的多属性识别,增强模型的泛化能力,但是也增加了训练网络的复杂性,并且只能学习一个任务,在属性分类过程中,属性之间的相关性容易被忽略,降低模型的工作效率.而多任务学习可以联合学习目标的多个属性[11],充分挖掘了属性之间的相关性,降低了计算的复杂度.结合2015年He等人[11]提出的残差网络(Residual Network)的优势,本文提出基于多任务ResNet的人脸多属性识别.
2 基于多任务ResNet的人脸多属性识别方法
基于多任务ResNet的人脸多属性识别方法分为两部分,如图1所示,首先通过ResNet网络对输入的人脸图片进行特征提取,在底层卷积时学习的是边缘、纹理和颜色底层特征,随着层数加深学习抽象的高层特征,在ResNet网络最后一层全连接层后,采用共享特征[12]同时完成40个属性的多任务学习[13].
图1 基于多任务ResNet人脸多属性识别方法框图Fig.1 Face multi-attribute based on ResNet block diagram
2.1 属性识别的定义
属性是指在人脸图像中观察到的特征,例如,发色、微笑和眉毛.在基于属性学习的图像分类方法研究工作中,最有影响力的是由Lampert等人在文献[14]中提出的间接属性预测模型(IAP)和直接属性预测模型(DAP),根据属性的有无,可以判断样本在属性空间中的位置,最终可以确定样本的标签.属性又分为相对属性和二值属性,前者的值是连续的,后者是离散的.考虑到二值属性能够简化建模并且能够准确描述物体目标本的优势,本文利用二值属性进行监督学习.如果人脸图像含有该属性,对应的标签为1,否则为0.在本设计中,每副图像具有的40个面部属性见表1,其中典型的8个特征见图2.将每个图片的属性标签定义为40维向量A=[a1,a2,…,a40],ai表示第i个属性的真值,且ai={0,1}。把训练数据和标签向量同时输入训练网络,这样将多个二分类问题转化成一个向量回归问题,可以对原网络模型微调,最后实现多个属性识别任务.
图2 人脸典型特征Fig.2 Typical features of the face
2.2 ResNet模型分析
其他网络训练需要存储200M以上参数,ResNet只需要100M的存储空间,但是效果却一样很好,在2015年ImageNet比赛中错误率降低至3.57%,所以选择在ResNet结构的基础上进行fine-tuning.ResNet网络结构主要是残差模块堆叠而成,每个残差模块如图3所示.
包含两个3*3卷积层,用σ表示ReLU激活函数,有如下表示:
F(X)=W2σ(W1X)
(1)
在第二层中,将残差F(X)与上层输出X线性叠加,得到映射输出y,保证了本结构模块输出和上个结构块输出的向量维度相同,网络最终输出表示为:
y=F(X,{Wi})+WsX
(2)
图3 ResNet的基本结构典型特征Fig.3 ResNet basic structure typical features
ResNet原始模型的全连接层输出是1000维向量,因为人脸图片涵盖40个属性特征,微调成40维1*1向量,如图4所示.将二分类问题转换成回归问题,利用共享特征数据同时学习多个属性任务.
图4 训练模型网络结构Fig.4 Training model network structure
该网络利用欧氏距离[15]损失函数EuclideanLoss作为目标函数,如式(3)所示.
(3)
属性预测网络整体由5个大的卷积层组成:
1)第一层卷积conv1:64个7*7卷积核,步幅为2,输出64个(112,112);
2)最大池化层pool1:步幅为2,池化区域(3,3),输出64个(5,5);
3)第二大层卷积conv2_x:(64,1,1),(64,3,3),(256,1,1)的卷积核各3个;
4)第三大层卷积conv3_x:(128,1,1),(128,3,3),(512,1,1)的卷积核各4个;
5)第四大层卷积conv4_x:(256,1,1),(256,3,3),(1024,1,1)的卷积核各6个;
6)第五大层卷积conv5_x:(512,1,1),(512,3,3),(2048,1,1)的卷积核各3个;
7)平均池化层:pool5:步幅为1,池化区域(7,7),输出2048个(1,1);
8)全连接层fc40:输入2048个神经元节点,输出40维向量;
9)损失函数层:欧式距离回归函数.
当训练网络通过多次迭代,预测值不断向标签误差方向进行收敛,然后反向传播根据链式法则将参数更新到每一层中.每次迭代都会根据梯度下降的优化方向,尽可能减少传播误差,最终实现属性预测.
表1 40个面部属性
Table 1 40 face attributes
5_o_Clock_ShadowArched_EyebrowsAttractiveBags_Under_EyesBangsBig_LipsBig_NoseBlack_HairBlurryBrown_HairBushy_EyebrowsChubbyEyeglassesGoateeGray_HairHeavy_MakeupMaleMouth_Slightly_OpenMustacheNarrow_EyesOval_FacePale_SkinPointy_NoseReceding_HairlineSideburnsSmilingSmilingWavy_HairWearing_HatWearing_LipstickWearing_NecklaceWearing_NecktieBaldDouble_ChinNo_BeardWearing_EarringsBlond_HairHigh_CheekbonesRosy_CheeksYoung
2.3 基于多任务的属性学习
目前的深度网络框架多数是单任务学习,当对同一个目标的不同属性进行识别时,由于输入的数据源是相同的,针对每个属性单独训练一个分类器,耗费计算资源,所以采用共享特征表示,同时进行40个属性的多任务学习,多任务学习模型见图5.
图5 多任务模型Fig.5 Multit-asking model
3 实验结果及分析
3.1 实验数据库集
实验选取公开人脸数据集(CelebA),该数据提供超过20万幅图片以及40个人脸属性,例如头发颜色、微笑与否、性别和是否戴眼镜等,其中属性在数据集中的分布见表2.可以有效的作为属性分类的监督信息,使网络充分的学习属性分类任务.
3.2 数据的预处理
数据预处理在深度学习中占据重要位置,要同时保证数据的多样性和数据的数量,避免数据单一性造成网络模型泛化能力差,可以利用随机旋转和水平翻转增加数据的多样性.CalebA中的图片已经通2d仿射变换将人脸对齐,直接对图像进行resize,再经过lmdb格式数据库,将三通道BGR图像以矩阵的形式输入网络,图像处理结果如图6所示.
3.3 人脸多属性预测模型训练和测试
为加快模型的收敛速度,利用fine-tuning方法对ResNet-50的预训练模型进行微调.在训练之前对初始化模型进行可视化,卷积核可视化结果见图7,图像经过多层卷积处理的结果如图8所示,参考该结果可以调整初始化参数达到实验结果.
表2 20万样本集属性分布
Table 2 20 million sample set attribute distribution
属性阴影月眉魅力眼袋秃头训练2224153328102526409204475验证22035419103034122473属性模糊棕发浓眉丰满双颚训练101744106828450115349352验证1067406628691160921属性性别张嘴胡子细眼无胡训练8345696730831122940166952验证83419608818237816700属性浓胡微笑直发卷发耳环训练1133896375416686380137744验证11339614412065143729属性刘海厚唇大鼻黑发金发训练3029647915469714778629618验证30164766470448962929属性眼镜尖胡白发浓妆高颊训练130231258784167734390991验证1308124984177949109属性尖脸肤白尖鼻发线红脸训练567818590554561595813117验证5723908546515891326属性帽子口红项链领带年轻训练9720943432454814537154739验证96994332487141815525
图6 图像预处理结果Fig.6 Image preprocessing results
在Caffe中,常见的优化方法有随机梯度下降(Stochastic Gradient Descent,SGD)、AdaDelta、AdaGrad、Adam、Nesterov、
图7 卷积核可视化图8 Feature MapFig.7 Convolution visualizationFig.8 Feature Map
RMSProp等.每次迭代,通过前向传播计算网络的输出和Loss,经过反向传播计算网络梯度,根据学习率和学习方法对各层参数进行更新.在该实验中针对相同的训练集,选取不同个优化方式训练,损失值变化曲线见图9.
对比图9中的四种优化方法,可见自适应梯度下降方法(AdaGrad)的收敛速度更快,但是随机梯度下降法(SGD)的准确率稍高于其他优化方式.与此同时,为了提高模型训练效率,选20万张图片作为训练集,2万张作为验证集.设置Batch_Size为2,即模型每次输入2张图片用于训练.
图9 不同优化方法与loss值变化曲线Fig.9 Different optimization methods and loss curves
图10 最终损失与迭代曲线Fig.10 Final loss and iterative curve
通过梯度下降方式实验对比,选择随机梯度下降(SGD)作为优化方法,学习率策略(lr_policy)为step,且学习率成梯度3次下降,设置Gamma为0.1,间隔为10417,学习率的变化曲线如图11所示.设置模型的基础学习率 (Base_lr) 为0.0001,其中动量Momentum设置为0.9,权值衰减Weight Decay设置为0.0005,每进行3125次完成一次迭代,需要完成10次,所以最大迭代次数为31250.
在训练阶段,采用回归方法,将输入人脸图片的40个二值属性向量化为1*40的矩阵,将其输入训练的模型,使用欧氏距离损失函数作为模型的目标函数,通过SGD不断地更新参数,最后获得优化模型,模型的损失值随迭代次数的变化曲线见图10.
当最大迭代次数为31250时,收敛速度很快,Loss值从4.3直接降为2左右,通过继续学习,loss最后降到1.2左右且不断震荡,通过实验发现在迭代5000次左右达到收敛.
3.4 结果与分析
在验证集中随意抽取人脸图片进行多属性预测,经过多次实验,结果如图11所示,当分别输入六张不同人脸图片,选择其中输出的概率值最大的5种属性,例如以第一张图片作为输入,通过模型可以预测出该图片具有亚麻色头发属性的得分为1.13417和具有微笑的属性是0.50670,观察图片确实具有以上属性,同时第四个图片人脸具有微笑的属性得分为0.184828,观察图片无微笑属性,所以可以验证该模型能够正确的预测人脸多属性.最后,对比实验结果,一般的设置属性概率阈值为0.5,当属性的预测概率值大于0.5时,说明该人脸图片含有该属性.根据该标准,利用训练模型对5000张测试集进行测试,数据集的属性预测结果见表3.
图11 人脸属性预测结果Fig.11 Face attribute prediction results
表3 基于数据集的每个属性识别准确率
Table 3 Recognition accuracy of each attribute based on dataset
属性阴影月眉魅力眼袋秃头正确46314138398041924883占比%92.6282.7679.6083.8497.66属性模糊棕发浓眉丰满双颚正确48103928444747234768占比%96.2078.5688.9494.4695.36属性性别张嘴胡子细眼无胡正确48194412480944424703占比%96.3888.2496.1888.8494.06属性浓胡微笑直发卷发耳环正确48444558409841504449占比%96.8891.1681.9683.0088.98属性刘海厚唇金发大鼻黑发正确47463898428841333294占比%94.9277.9685.7682.6665.88属性眼镜尖胡高颊白发浓妆正确49404796425748604504占比%98.8095.9285.1497.2090.08属性尖脸肤白红脸尖鼻发线正确37604156465337634625占比%75.2083.1293.0675.2692.50属性帽子口红年轻项链领带正确49374615432443974783占比%98.7492.3086.4887.9495.66
4 结 论
本文在公开celeba人脸数据集上,利用基于多任务ResNet的人脸多属性识别方法,提高了模型的泛化能力和识别精确度,通过实验可得属性的精确度可以达到95%左右,但是个别属性的准确率只有78%,部分原因是由于数集属性分布不均,因此可以增加数据集的数量改善结果.
该网络结构不仅限于做人脸属性的识别,可以推广至其他具有属性特点的目标.但当前的属性学习都是基于二值属性,限制了属性的表示能力,接下来的工作可利用相对属性进一步改善属性预测模型,从而提高人脸多属性识别的精度.