陈济楠,李少波,2,高 宗,李政杰,杨 静
CHEN Jinan1,LI Shaobo1,2,GAO Zong1,LI Zhengjie1,YANG Jing1
1.贵州大学 现代制造技术教育部重点实验室,贵阳 550025
2.贵州大学 机械工程学院,贵阳 550025
1.Key Laboratory of Advanced Manufacturing Technology of Ministry of Education,Guizhou University,Guiyang 550025,China
2.School of Mechanical Engineering,Guizhou University,Guiyang 550025,China
年龄和性别作为人重要的生物特征,可以应用于多种场景,如基于年龄的人机交互系统、电子商务中个性营销、刑事案件侦察中的年龄过滤等。然而基于图像的年龄分类和性别检测在真实场景下受很多因素影响,如后天的生活工作环境等,并且人脸图像中的复杂光线环境、姿态、表情以及图片本身的质量等因素都会给识别造成困难。
目前的研究主要是利用传统的图像分类模式进行年龄分类和性别识别,即手工提取图像特征,建立特征分类模型。常用于人脸年龄估计的特征有BIF(Bioinspired Features)、AAM(Active Appearance Model)特征、LBF(Local Binary Feature)特征、SIFT(Scale-Invariant Feature Transform)特征和Gobar特征以及一些颜色特征。Kwon和Lobo[1]首先提出年龄分类问题。Lanitis等[2]采用主动外观模型(AAM),耿新等[3]提出了年龄成长模式子空间(Aging Pattern Subspace,AGES),Gunay等[4]将LBP特征应用于基于人脸图像的年龄估计中,也取得了很好的效果。但LBP特征只是局部纹理特征,不具有描述人脸形状的能力。在性别检测上,文献[5]采用Webers Local Texture Descriptor方法,文献[6]采用先通过LZM和LBP进行特征提取再利用AdaBoost或SVM算法分类,都在FERET数据集上表现优异。但是人为设计的特征通常不能应对多变的复杂环境,也无法捕获不同任务的高层语义信息,而在第一个步骤中所挑选的特征可能无法与第二个步骤中的分类算法很好匹配,从而造成人脸分析方法性能的下降。以上所述的方法都不能满足复杂多变环境下的人脸图像,往往在经过过滤和严格对齐的数据集上表现良好,这些数据集都是正面人脸,光照和姿态都有限制,并且背景单一,比如FG-NET、MORPH等数据集。对于Adience数据集(如图1所示),往往难以达到满足要求的精度,很难将其应用于自然条件下光照多变、姿态各异和图片质量欠佳等现实场景。
图1 Adience数据集示例
自从Hinton提出了深度学习(多层神经网络),并且在图像分类任务中首次验证了CNN的有效性后,基于CNN的人脸检测方法研究又开始得到重视。近年来,Levi等[7]结合Hinton的方法[8]提出了利用CNN分别进行人脸性别识别和人脸年龄分类,显著提高了人脸性别和年龄的识别率。Levi采用3个卷积层和2个全连接层的网络在Adience数据集上表现良好,但是受限于过拟合的问题,该网络层数不够深,无法更进一步地学习更加充分的图像特征,达到更高的识别精度。
针对复杂多变的应用场景,本文提出一种深度卷积神经网络模型(CNN-CNiN),首层使用级联3×3卷积核提取更丰富的空间结构信息,利于提取人脸更丰富的纹理特征,提高识别精度;跨连卷积层既考虑了高层次特征,又考虑了低层次特征;加入Batch Normalization(BN)层取消局部归一化层(Local Response Normalization,LRN),设置较高的学习率和较小的Dropout比率,有效提高训练的收敛速度,防止过拟合;采用1×1卷积核与全局平均池化(Global Average Pooling)取代全连接层能解决数据集小而训练层数多带来的过拟合问题。
1986年,Rumelhart提出 Backpropagation(BP)算法[9]。1998年LeCun等将BP算法应用在LeNet-5中取得成功[10-11]。2006年,Hinton等提出“逐层初始化”的方法,解决深度网络无法训练的问题[12]。
使用不同的卷积核对上一层中不同组合的特征图进行卷积,同一卷积核权值共享,加上偏置得到当前层的特征图。卷积计算过程如下式:
若对矩阵M进行不重叠的分块,设每块的大小恰为p和q,第ij块用矩阵表示,其构造如下:
式中,s∈[(i-1)×p+1,i×p],t∈[(j-1)×p+1,j×p],的下采样定义为:
用大小为p×q的不重叠块对矩阵M的下采样定义为:
对矩阵A进行倍数为p×q的不重叠上采样定义为:
式中,Ep×q为元素全1的矩阵;⊗为克罗内克积。
随机梯度下降算法是训练深度网络的主流算法,优点是简单高效,缺点是需要人工选择参数(如学习率、参数初始化、权重衰减系数和Dropout率等),而这些参数对训练结果有很大影响。Batch Normalization(BN)算法[13]可以免去人工参数选择的随机性,有效提高收敛速度,具有一定正则化的作用,可以减少Dropout的使用,取消LRN层。因为BN使得训练过程更快,能够检测的样本次数变少,能减少图像的扭曲,使得网络学习更真实的图像特征。BN前向传导过程如图2所示。
图2 BN算法前向传导
BN实现方法是在每一层输入时,插入一个归一化层,将输入数据归一化为均值0、方差1。图2中μB为mini-batch均值,σB为mini-batch标准差,图2中阶段①实现输入样本归一化,由于层与层之间归一化处理将改变数据分布,破坏学习特征。所以利用图2中的阶段②实现变换重构,以恢复某层学习的特征。其中γ、β是需要学习的参数。
训练阶段用每个mini-batch中的方差和均值替代整体训练集的方差和均值,作为对整体的估计。测试阶段,均值和方差不是针对某一个batch,而是对整个数据集而言的。因此在训练中除了正常的前向传播和反向求导之外,还需要记录每一个batch的方差和均值,以便训练完成后按如下计算整体的均值和方差:
式中,E[x]为整体均值;Var[x]为整体方差。
使用BP算法和梯度下降算法更新权值和偏置,表1给出网络结构信息,在学习权值中特别注意的是L7层跨过3层直接与L11层连接,因此L7层的反馈误差应为两部分反馈误差之和。梯度下降算法需要计算损失函数对节点权值和偏置的导数。
表1CNN-CNiN网络结构
式中,nl为最终输出层;为第l层i节点残差;为输入到第l层i节点的值;为第nl层i节点激活值;sl+1为第l+1层节点数。L7层的反馈误差为:
其余各层反馈误差计算方式与CNN计算方式相同。
本文提出的网络结构针对于人脸数据集Adience,该数据集为非约束评测集,满足实际环境情况要求。年龄和性别识别采用同一个网络结构,复用网络结构减少训练的时间空间开销。
输入数据采用3颜色通道,原始图片816×816大小重新调整为256×256,然后对重新调整大小的图片随机剪裁为224×224,并将其作为网络的输入。网络结构具体配置由表1给出。CNN-CNiN采用级联的3×3卷积核作为底层特征提取,为保证输出尺寸不变,采用边缘扩充(Pad设置为1);3个级联的3×3卷积核(stride设置为1)感受野为7×7,但是需训练权值参数将成倍减少,7×7卷积核权值参数为7×7×64=49×64,级联小尺寸卷积核权值参数为3×3×3×64=27×64。在分类时,底层的特征对分类也有一定帮助,因此融合多层次抽象特征有利于提高分类准确率,CNN-CNiN网络结构借鉴Deep ID[14-16]的思想并结合具体应用进行了改进,通过跨越卷积层实现中层特征和高层特征的融合。表1中L11层后不需要使用ReLU层,因为ReLU会将负数信息删除,而存在于这一层的负数特征对分类有帮助。L9层和L10层在每个局部感受野进行复杂计算,提取各种潜在的非线性特征,L11_a采用全局平均池化,有效减少因尽可能多提取潜在特征造成过多的参数。L7层跨越L8~L10层直接与最后一个隐层全连接,加入BN层起到归一化的作用。
年龄与性别估计模型网络的前几层皆可以共用,不同的是年龄模型的输出层为8个类别,而性别模型的输出层为2个类别。最后采用softmax loss作为损失函数,多分类器采用softmax。模型结构如图3所示。
图3 本文网络模型(CNN-CNiN)结构
Adience数据集由志愿者使用智能手机拍摄上传,故其图像的光照、噪声、姿态和遮挡等条件都是多变的。数据集共26580张图片,对象共2284个,年龄标签分为8类(0~2,4~6,8~13,15~20,25~32,38~43,48~53,60~),性别分为两类。本文采用5折交叉验证,其中4折用于训练,1折用于测试。表2和表3给出研究中训练测试的数据分布。
表2 性别标记数据分布
表3 年龄标记数据分布
设计5组对比实验:第1组实验采用AlexNet训练测试;第2组实验采用文献[7]的网络训练测试;第3组为CNN-CNiN网络实验;第4组实验将CNN-CNiN级联小尺寸卷积核替换为单个7×7卷积核(CNN-CNiN-a);第5组将CNN-CNiN跨连卷积层取消(CNN-CNiN-b);第6组将CNN-CNiN中L9、L10和L11_a替换为卷积池化和全连接层(CNN-CNiN-c)。实验评价标准为训练收敛速度、损失函数的loss和识别准确率。
(1)训练
所有层的权值采用0均值的高斯函数初始化,损失率为0.01。由于数据集小,为防止过拟合,使用BN层和Dropout层(随机设置神经元输出为0),传统网络在设置Dropout比率时一般比较大(50%),由于本文网络结构采用BN层,可以将Dropout比率设置为0.2~0.5之间的值。第二种防止过拟合的方法是:在数据输入层对数据进行随机剪裁和翻转处理,将原始图像调整为256×256,再随机抽取224×224的5个切片(中间和四角),训练数据集扩展为原来的10倍。标准神经网络最大池化层步长(stride)s和池化核(kernel_size)k大小相等,不会重叠采样,本文网络设置为s=3,k=2,重叠采样能减少过拟合风险,同时能保持空间不变性。学习率的调整采用multistep策略,总迭代次数为30000,初始学习率设置为0.01,调整的“stepvalue”设置为5000、15000、25000。
在训练时,因为BN层根据每个mini-batch更新权值,所以将“use_global_stats”设置为“false”,而在测试阶段和新样本预测时,将其设置为“true”。
(2)预测
将新的数据应用在训练完成的模型上,采用重叠取样方法可以提高识别精度,对新的人脸图像数据随机取5个切片,并求取5个切片的平均值作为预测数据输入。
图4为AlexNet对年龄和性别识别的训练损失(loss)与迭代次数的函数,图5为本文网络结构对年龄和性别识别的训练损失(loss)与迭代次数的函数。实验表明本文采用Batch Normalization层后,网络的收敛速度更快,训练的loss更稳定,有效避免过拟合问题。最终所需的迭代次数由50000步减少为30000步,减少训练时间。
表4显示,增加跨连卷积层后,性别识别率增加1.4%,年龄识别率增加1.5%,因为加入跨连卷积层后融合了不同尺度的图像信息,所以获得了更好的分类性能。级联小尺寸卷积核替换单个7×7卷积核实验结果不低于直接使用7×7卷积核的方法,底层特征存在冗余,两种方法的感受野相同,在分类性能上相仿。使用1×1卷积核和全局平均池化的方法不低于直接使用全连接层的方法。
图4 AlexNet年龄loss曲线
图5 本文CNN网络年龄loss曲线
表4 不同方法结果对比
表5和表6为各种方法在Adience数据集上的性别年龄识别精度结果。实验表明,使用CNN自动提取特征并进行分类的方法识别率普遍高于手工特征提取的识别率。在年龄识别上,CNN-CNiN识别准确率比AlexNet高4.5%,比文献[7]方法高5.1%;在性别估计上,CNN-CNiN网络识别准确率比AlexNet高3.6%,比文献[7]方法高6.5%。图6为本文网络、文献[7]和AlexNet方法识别精度对比图,本文网络具有更高的识别精度,收敛速度更快,最终迭代次数减少20000步。
表5 性别检测结果
表6 年龄检测结果
图6 年龄识别准确率对比图
本文提出一种改进CNN的年龄与性别检测模型CNN-CNiN,该模型使用级联3×3卷积核降低参数数量防止过拟合,采用跨连卷积层和使用1×1卷积核的方法,融合不同尺度图像特征,获得更好的识别性能。实验结果表明,与现有的主流年龄性别识别方法相比,本文方法在Adience数据集上具有较高的识别正确率。下一步将研究结合目标检测方法,完成多目标条件下年龄与性别的识别任务,并将模型应用到具体的生产环境中。