一种利用年龄编辑改进年龄估计的方法
2021-02-24张辰昱徐树公黄剑波
张辰昱 徐树公 黄剑波
(1.上海大学上海电影学院, 上海 200072; 2.上海大学上海先进通信与数据科学研究院, 上海 200444;3.上海大学上海电影特效工程技术研究中心, 上海 200072)
人脸年龄估计, 即通过一张图片自动识别图中人物的年龄, 属于生物特征识别的范畴, 对于人脸识别具有辅助作用.人脸年龄估计技术有很多应用, 如视频监控、产品推荐、人机交互、市场分析、用户画像、年龄变化预测等[1].由于人脸的多样性、年龄的欺骗性, 人脸年龄的估计结果容易受光照、姿态、表情等外界因素的影响, 因此, 人脸年龄估计被认为是一个困难的任务.
传统的年龄估计基于图像处理知识, 对人脸图片进行特征提取, 再利用如支持向量机(support vector machine, SVM)[2]、贝叶斯理论[3]等机器学习的理论进行年龄估计, 这种方法运算耗时长, 准确率低.
随着深度学习理论的提出和网络大数据时代的来临, 基于深度卷积神经网络的人脸年龄估计技术已成为研究热点.尽管基于深度学习的人脸年龄估计研究已取得了巨大的进展, 但非受限条件下年龄估计的效果仍不能满足实际需求, 由于实际应用场景复杂, 容易导致人脸年龄估计效果不佳[4].另外, 虽然人脸识别的数据集很多, 但专注于年龄估计任务的数据集却很少, 并且许多数据集年代久远, 存在标注错误、标注不清晰等问题.生成对抗网络(generative adversarial network, GAN)的强大数据生成能力, 让学者们意识到GAN 可以在年龄估计任务中起到数据扩增的作用, 提升年龄估计准确率.
1 相关工作
1.1 年龄估计
基于深度学习的年龄估计算法大致分3 类: 用输入图片直接进行分类或回归; 使用预测值与概率相乘求期望; 引入排序和概率分布信息等[5].直接对人脸图片进行特征提取并判断年龄值是最基本的年龄估计算法, 但对于人眼都难以分辨准确的年龄值, 即使卷积神经网络(convolutional neural network, CNN)也难以准确估计, 因此, 简单地将年龄估计作为回归任务直接预测年龄值是不合理的.Levi 等[6]首次提出将年龄值划分为几个区间, 通过减少年龄的离散度来提高准确率, 把年龄估计作为一个分类任务.但是, 分类任务无法得到准确的年龄值,Rothe 等[7]提出把年龄估计这一回归问题用分类问题解决, 通过预测概率和标签值相乘的求期望方法, 可得到准确的年龄值.目前, 很多表现优秀的年龄估计算法[8-10]都是通过预测值与概率相乘求期望的方法进行预测的.本工作采用的软阶段回归网络(soft stagewise regression network, SSR-Net)[9]就是典型的第二种年龄估计算法.
根据人脸识别判断一个人的身份信息困难, 但判断两张人脸是否为同一人容易[11].基于上述观点, Niu 等[12]首次将年龄回归问题转为一系列有序的多个分类的子问题, 每个子问题只对是否比某个年龄大进行判别, 按照有序的回归问题进行年龄估计.
目前, 大多数年龄估计算法仅利用人脸检测出的区域进行预测, 人脸的其他区域例如头发部分则被丢弃.Rothe 等[7]认为这些信息对于年龄估计同样重要, 并提出利用3 种不同尺寸的区域同时进行学习的方法, 取得了更优异的结果, 本质上该方法也是一种利用数据扩增改进年龄估计的方法.
由于现有人脸年龄估计数据集的限制, 如何在不进行大量数据采集和标注的前提下实现数据扩增是未来人脸年龄估计研究的重要方向之一.
1.2 年龄编辑
年龄编辑(age editing), 即输入一张人脸图片, 通过某些方法改变该人脸的年龄并输出.基于GAN 的图像翻译(image translation)算法[5,13-15], 大多可以应用于年龄编辑中.
CelebA (large-scale celebFaces attributes dataset)是一个大规模面部属性数据库[16].目前, 利用GAN 进行年龄编辑的算法都是在CelebA 数据集上进行的, 这类年龄编辑的典型算法有CycleGAN[14]和StarGAN[17]等.CelebA 数据集由香港中文大学在2016 年提出, 包含40 种性别、发色、是否微笑等人脸属性, 是主流的人脸图片编辑的数据集.
由于CelebA 数据集的标注只有年轻或年老两种, 并不包含具体的年龄值, 因此这类算法只能学习单一映射, 无法进行指定年龄段人脸图片的生成.同时, 大多数算法只专注于年龄编辑后生成图片的视觉效果, 忽略了生成的图片在人脸年龄估计可以提供的作用.
本工作提出了一种利用年龄编辑改进年龄估计的方法, 并通过联合训练图像生成网络StarGAN 和年龄估计网络SSR-Net 提出了一种适应于年龄编辑的分阶段训练策略.在第一阶段训练StarGAN 进行年龄编辑时, 加入了SSR-Net 作为另一个鉴别器进行年龄的约束, 同时对StarGAN 中的鉴别器结构进行改进, 使其在判断图片是否为真和预测图片年龄域的同时, 也可以预测图片的身份信息; 在第二阶段利用StarGAN 的生成数据与原数据一同训练SSR-Net, 扩增用于年龄估计的数据集.实验结果表明, 本方法提高了非受限条件下的年龄估计准确率, 在Adience 数据集上达到了目前较好的结果.
2 方 法
2.1 网络结构
本工作的目标是训练StarGAN 在不丢失身份信息的同时学习不同年龄域之间的映射,并利用网络生成的数据扩增数据集, 提升年龄估计准确率.为了实现这一点, 本工作提出了一种分阶段联合训练的网络结构.整个网络使用了一个生成器G(generator)、一个鉴别器D(discriminator)和一个SSR-Net 网络.
2.1.1 图像生成
图1 为图像生成网络结构.可以看出, 图片生成阶段分为3 个部分: 图像重建、图像年龄编辑和循环一致.
图1 图像生成网络结构Fig.1 Image production network structure
(1) 图像重建.原图x和标注c作为输入送到生成器G进行图片的重建, 生成与原图一致的生成图片x′;图片x和x′作为输入送至鉴别器D进行真假判定, 并预测其身份和年龄信息;图片x和x′作为输入送至SSR-Net 网络中进行年龄估计, 两张图片的预测年龄应一致.
(2) 图像年龄编辑.原图x与one-hot 形式的年龄标注集C(c0,c1,···,cNage-1)作为输入送至生成器G生成不同年龄段的人脸图片; 为了平衡数据, 将原图复制Nage份, 并与这些生成的图片一同作为输入送至鉴别器D中进行真假判定, 预测其身份和年龄信息, 该过程同时受SSR-Net 对图片年龄预测结果的约束.
(3) 为了保证图片在编辑前后保持内容不变, 只改变年龄相关的部分, 仿照CycleGAN 的结构[14], 在网络中增加了循环一致部分, 将图像年龄编辑生成的图片和原标注c作为输入再次送入生成器G中, 生成符合原年龄域标注c的人脸图片, 并与原图作比较.
StarGAN 网络结构如图2 所示, 生成器由3 个下采样模块、3 个卷积Bottleneck 层(瓶颈)、3 个反卷积Bottleneck 层和3 个上采样模块组成.每个卷积结构都由卷积层、BN 层和Relu 激活函数组成.Bottleneck 层卷积核为3×3, 步长为2, 周围填充为1, 其余模块除第一层和最后一层卷积核为7×7 之外, 其余采样模块的卷积核均为4×4, 步长均为2, 周围填充为1.鉴别器由6个卷积层组成, 每一层之间均有BN 层和Relu 激活函数, 其中卷积核为4×4, 步长为2, 周围填充为1.最终经全连接层映射至3 个输出, 分别为2×1,Nage×1 和Nclass×1.
图2 StarGAN 网络结构Fig.2 StarGAN network structure
2.1.2 年龄估计
由于年龄信息的零散性和不易区分性, 以及大多数年龄数据集的分布特点, 将年龄划分0∼3, 4∼7, 8∼14, 15∼21, 22∼32, 33∼43, 44∼54, 55∼65 和66+共9 个区间, 年龄值转换为对应年龄区间为1, 其余区间为0 的one-hot 形式的年龄标注.
本工作采用SSR-Net 进行年龄估计, 原因如下: ①SSR-Net 网络采用预测值与概率相乘求期望进行年龄估计, 与上述年龄分段想法一致, 更好约束, 便于收敛; ②SSR-Net 网络结构简单, 即使加入复杂的GAN 网络, 也不会使得整个网络架构过大而出现无法训练的情况, 且网络易于配置, 是目前流行的年龄估计框架; ③SSR-Net 有提供预训练模型, 便于网络训练.
在图片生成阶段中, SSR-Net 充当另一鉴别器的作用, 将网络预测的年龄值与原图像年龄进行比较.作为StarGAN 网络训练的一个约束, 在图像生成过程中, SSR-Net 使更多的年龄信息被关注.
年龄估计网络结构如图3 所示.原图x与年龄标注c原图x和标注c作为输入送到固定网络参数的生成器G进行图像的重建, 生成与原图一致的图片x′; 图片x′作为扩增数据与原图x作为输入一同送至SSR-Net 进行年龄估计的训练.在这个过程中, 用于年龄估计的数据集直接被扩充为原来的2 倍, 且增加的数据并不是基于原图的简单旋转变换, 而是适用于年龄估计网络的含有隐藏年龄信息的人脸图片.
图3 年龄估计网络结构Fig.3 Age estimation network structure
2.2 损失函数
为了使生成的图片与真实图片难以区分, 本工作采用了一种对抗损失的方法,
式中:G(x,c)代表输入原图x和目标年龄标签c生成器生成的图片;Dsrc(x)是鉴别器对图片是否真实的预测值, 值越大代表越真实.生成器试图令Ladv最小, 而鉴别器试图令Ladv最大,整个网络的训练是一个博弈的过程.
对于一个给定的输入图片和一个目标年龄域标签, 目标是将输入图片转化为输出图片并正确分类到目标域.为了达到这个目标, 在鉴别器上添加一个输出用于判断图片的年龄, 并用于约束整个训练过程.因此, 训练的目标分为两个: 优化生成器和鉴别器.利用真实图片优化鉴别器, 分类损失函数定义为
式中:c代表输入图片的原年龄域;Dcls(c|x)代表鉴别器D预测的年龄域标签的概率分布.最小化, 鉴别器就学习到了如何正确分类一个真实的图片的年龄域.利用生成图片优化生成器的分类损失函数定义为
式中:c′代表要转换到的年龄目标域;G(x,c′)代表输入原图x和目标年龄标签c′生成器生成的图片.最小化, 生成器就可以生成能被正确分类到目标年龄域的图片.
通过最小化对抗性损失Ladv和分类损失,, 可以使得生成器在训练时生成真实的符合目标年龄域的人脸图片.然而, 这并不能保证转换后的图片保留其输入图片的内容, 而只改变与目标年龄域相关的部分.为了缓解这个问题, 本工作对生成器应用一个循环一致性损失函数[14],
式中:G取转换后的图片G(x,c′)和原始域标签c作为输入, 并尝试重建原始图片x.采用L1范数作为重建损失.值得注意的是, 这个过程使用了两次生成器, 首先将原始图片转换为目标年龄域中的图片, 然后利用转换后的图片重建原始图片.
为了保证图片转换前后人物的身份不变, 增加了一个身份信息的分类损失函数, 使用与尺度相关的Softmax 函数进行身份信息的判断:
另外, SSR-Net 作为另一鉴别器对整个训练过程也起到约束作用, 将图片输入SSR-Net 中得到的年龄预测值与原年龄值比对, 其年龄损失函数为
式中:p(k)代表图片属于第k段bin(年龄区间)的可能性;µ(k)代表第k段bin 所代表的年龄;每一个bin 的宽度为是bin 的索引.
综上所述, 整个网络的优化函数为
式中:λcls,λrec,λid,λage均是控制各损失函数的超参数.在实验中, 设置λcls= 5,λrec= 10,λid=0.1,λage=1.
2.3 训练策略
参考Yin 等[18]分段训练的思想, 整个联合训练过程分为图像生成和年龄估计.在第一阶段图像生成时, SSR-Net 网络参数保持固定, 充当另一鉴别器的作用, 只改变StarGAN 生成器和鉴别器的参数, 做对抗学习;在第二阶段年龄估计时, StarGAN 生成器参数保持固定, 利用其生成的图片作为扩增数据和原图训练SSR-Net 作年龄估计, 此时鉴别器处于失活状态.整个联合训练过程的算法如图4 所示.
图4 联合训练过程算法Fig.4 Joint training process algorithm
3 实 验
在Adience, MegaAge-Asian, Morph2 以及FG-NET 上进行测试, 分别验证本工作提出的方法在非受限条件和受限条件下的效果.所有网络模型均使用Adam 优化[9], 配置为β1=0.5,β2= 0.999.在训练过程中为了增加数据, 以0.5 的概率水平翻转图片.参照文献[19]中的做法, 在5 个鉴别器更新之后执行一个生成器更新, 每次送入网络的batch=32.
在训练阶段具体参数设置如下: 在步骤一图片生成阶段, 固定SSR-Net 网络参数, 更新生成器和鉴别器的参数, 设置学习速率lr= 0.001, 进行10 000 次迭代; 在步骤二年龄估计阶段, 固定生成器和鉴别器的参数, 更新SSR-Net 的参数, 设置lr= 0.000 1, 进行5 000 次迭代.根据Lage 的收敛情况决定重复步骤一、步骤二的次数.
3.1 年龄估计
在测试受限条件下年龄估计的准确率结果如表1 所示, 评价指标平均绝对误差(mean absolute error, MAE), 表示测试图片的年龄估计值和年龄真值的平均误差.MAE 越小, 年龄估计算法的性能越好.现有的年龄估计算法在网络复杂度上分为两类, 越复杂的网络, 其性能表现越好.可以看到: 本方法在不增加网络空间复杂度的同时, 对SSR-Net 在准确率方面获得了提升, 同时估计时间也和原网络时间一致; 唯一的不同仅体现网络的训练过程中, 增加了年龄编辑部分的耗时.
表1 年龄估计方法在受限条件数据集上的结果Table 1 Results of age estimation methods on constrained data sets
对于非限制场景下的Adience 数据集, 由于判断具体年龄值较为困难, 而判断一个大致的年龄区间较为简单, 因此采取单一分类准确率和1-off分类准确率的评教指标[20].
式中:A和A1-off分别为单一分类准确率和1-off分类准确率;Nacc,N1-off和Ntest分别表示预测为正确类别图片数、预测为正确或相邻类别图片数和测试集图片总数.与单一分类准确率不同, 1-off准确率将预测类别与实际类别相邻的两类一致也判别为正确.测试结果如表2 所示.本方法在非受限条件的数据集上表现优秀, 原因在于在StarGAN 进行人脸图像重建过程中增加年龄的约束, 使得原图中无关年龄的信息被剔除, 整个图像生成网络更多专注于年龄相关特征的恢复.
表2 年龄估计方法在Adience 数据集上的结果Table 2 Results of age estimation method on Adience data sets
在非受限条件MegaAge-Asian 数据集上进行实验, 结果如表3 所示, 本工作采用允许预测年龄与实际年龄误差在±3,±5 的准确率作为评测指标.结果显示, 利用StarGAN 生成的图片扩充数据集的方法, 可以获得年龄估计准确率的进一步提升, 尤其是在非受限条件的情况下.同时, 为了验证本方法中各个部件的效果, 进行消融实验.在训练图像生成时去掉年龄估计网络SSR-Net, 使得网络生成的图片不能用于年龄估计, 反而还会降低年龄估计准确率; 同时, 去掉人脸身份信息的约束, 年龄估计的准确率也会下降, 证明本方法提出的每一种约束在年龄估计任务中都是有效的.
表3 年龄估计方法在MegaAge-Asian 数据集上的结果Table 3 Ablation experiments on MegaAge-Asian data sets
将年龄编辑的范围控制在0,±1,±2 和±3 个区间, 以2, 4, 6, 8 倍扩充原数据集分别进行年龄估计准确率的实验, 结果如表4 所示.当编辑范围为1 个区间, 以4 倍扩充原数据时达到了较好的实验结果, 在Adience 数据集上年龄估计准确率提升1.3%, MrgaAge-Asian 上有3.8%的提升.随着年龄编辑范围的扩大, 年龄估计准确率反而下降, 因此并不是用于训练的图片数据越多越好.原因可能是经过年龄编辑之后的人脸图片仍是不真实的, 增加大量的错误训练数据反而会降低网络的识别精度.当跨度较小时, 本方法可以有效提升年龄估计准确率, 但年龄跨度过大时, 本方法不再适用.
表4 不同程度年龄编辑实验结果Table 4 Experiment results were edited at different ages
3.2 年龄编辑
在MegaAge-Asian 数据集上进行年龄编辑的可视化效果验证, 将原图片与年龄标注矩阵C(c0,c1,···,c8)一同送入训练好的StarGAN 中, 结果如图5 所示.第1 列为原图片, 后面9 列为年龄编辑结果.如图5 中第二行显示, 本方法可以应对较为复杂的背景.对于年龄估计任务,一致的看法是并不需要分辨率特别高的图片, 因此对于年龄编辑的效果不再进行优化.
图5 在MegaAge-Asian 数据集上的年龄编辑结果Fig.5 Age editing results on the MegaAge-Asian data sets
从图片的年龄编辑效果可以看出, 本方法在进行年龄编辑时只是对原输入图像增加老化或者幼化的人脸特征, 本质上还是原输入图片.当进行区间跨越过大的年龄编辑时, 得到的人脸图片与现实中位于该区间的真实人脸并不一致, 导致年龄估计的准确率反而下降的实验结果;在年龄区间跨越度不大时, 比如0 或者±1 个区间, 得到的人脸图片与现实中位于该区间的真实人脸基本一致, 因此本方法在判定人脸图片年龄时是有效的.
4 结束语
本工作提出了一种利用年龄编辑改进年龄估计的方法, 研究了在图片转换领域表现优秀的StarGAN 在年龄估计中的作用, 根据年龄值的零散性和不易区分性, 将年龄按区间分类, 形成one-hot 形式的年龄标注进行人脸图像的年龄编辑工作, 可以生成任意阶段的年人脸年龄图片.同时, 年龄估计网络SSR-Net作为另一鉴别器对于StarGAN 在生成人脸图片时具有指导意义, 使得生成的人脸图片拥有了更多隐含的年龄信息.原图与经过StarGAN 生成的扩增数据共同作为训练集去训练SSR-Net, 提高了年龄估计的准确率.
实验证明, 本方法对于受限条件下的年龄估计准确率提升有限, 但对于非受限条件下的年龄估计准确率提升明显, 在Adience 数据集上达到了目前较好的结果.本工作的年龄估计网络SSR-Net 结构参数少, 训练好之后易于部署.但总体来说, 年龄估计的准确率相比人脸识别准确率还是比较低, 在实际应用中仍存在许多问题.在今后的研究中, 如何在不进行大量数据采集和标注的前提下实现数据扩增, 获得更高的年龄估计准确率, 是未来人脸年龄估计研究的重要方向之一.