多层次生成对抗网络的动画头像生成方法研究

2022-05-15 06:35高文超任圣博赵珊珊
计算机工程与应用 2022年9期
关键词:网络结构残差分类器

高文超,任圣博,田 驰,赵珊珊

中国矿业大学(北京)机电与信息工程学院,北京100083

近几年由于动画题材被越来越多的人所接受,各种社交平台的用户对个性化头像的需求愈加强烈,但是喜欢动画又追求独特风格的部分群体并不具备作画和设计能力,且难以找到专业设计师设计头像,深度生成模型的诞生使计算机作画成为可能。

由Goodfellow等提出的生成对抗网络[1]是目前最成功的生成模型,具有强大的泛用性。目前GANs已经广泛应用于视频音乐语音合成、图像检索、人体姿态估计、超分辨率[2-5]等领域。但是原始GANs 是无监督模型,无法控制生成数据的模式。针对这个问题,CGAN[6]、ACGAN[7]等模型被提出,CGAN通过附加信息对模型进行约束,ACGAN 则是添加辅助分类器,最小化图像真假的对数似然性和图片分类的对数似然性,这些理论使得按条件控制GANs生成成为现实。但是GANs仍然存在难以训练的问题,容易生成多样性缺失的图像,即模式崩溃。文献[8-10]等方法,通过设计网络结构、调整目标函数、优化训练方法对模式崩溃的问题进行了改进。

人脸头像的五官、肤色和发色等特征相差较小,但动画头像根据不同主题其头发、眼睛、皮肤等都有所不同,所以在GANs 生成中保证多样性和真实性存在一定难度。在无条件人脸生成算法方面,ProGAN[11]、MSG-GAN[12]取得了不错的效果。ProGAN 使用逐级生成思想,从低分辨率开始训练,训练完成后添加新层以训练更高分辨率,循序渐进,能有效且稳定地训练高质量高分辨率模型。MSG-GAN 通过添加生成器中间层和判别器中间层的连接允许判别器的梯度流入生成器,解决了梯度消失问题。在文本生成图像算法中,为了能够生成高质量高分辨率图像,StackGAN++[13]通过将网络结构堆叠,为每一个阶段的网络配置一个判别器,缓解梯度消失和直接生成高分辨率图像难度大的问题。

实验发现使用DCGAN、WGAN等方法很容易造成模式崩溃、图像细节不足、扭曲等问题,同时这些方法不提供条件生成,限制了图像多样性。为解决上述问题,本文基于堆叠式结构思想,利用多尺度信息,提出以下改进方案:

(1)为提高网络表达能力,文献[13]通过在生成器中添加残差块增加网络深度以增加图像细节信息。其残差块由卷积层、BN层和ReLU激活组成,本文将残差块中的BN层删去。该方法能有效提升训练速度,小幅提升生成图像质量。

(2)设计辅助分类器对合成图像进行分类,增加合成图像的多样性,缓解模式崩溃。

(3)引入特征图空间损失和图像像素空间均值方差损失。特征图空间损失[14]要求合成数据特征和真实数据特征的均方误差较小;图像像素空间均值方差损失要求图像的颜色和数据分布基本一致。本文在目标函数中添加以上两种损失,引导模型收敛。

1 相关理论

1.1 生成对抗网络

生成对抗网络(generative adversarial networks,GANs)是Goodfellow 等在2014 年提出的生成式模型,源于博弈论中的二人零和博弈思想。不同于传统生成模型,GANs 至少包含一个生成模型和一个判别模型,二者交替训练相互竞争。生成器的目的是捕获到真实数据的分布,产生具有特定意义的图像,判别器的目的是尽量区分出输入的数据是生成数据还是真实数据。理论上,G和D只需要是能拟合相应生成和判别功能的函数即可,但因神经网络在图像方面的良好效果,一般使用深度神经网络表示。GANs网络结构见图1。

图1 生成对抗网络结构Fig.1 Generative adversial network structure

生成对抗网络的损失函数表示为:

其中,px为真实图像的数据分布;pz为输入噪声的数据分布。

GANs 两个模型的训练相互独立,其损失函数需要分为两部分,交替训练。

1.2 多层次结构

DCGAN 没有从根本上解决模式崩溃的现象,训练更高分辨率的图像仍然会产生图像扭曲和细节消失等问题,严重情况下还会模式崩溃。在文本生成图像领域,Zhang 等人于2017 年提出堆叠式生成对抗网络StackGAN[15],核心思想就是将生成任务分成两个阶段,第一阶段生成低分辨率图像,粗略勾画出物体的形状和颜色,第二阶段做出修正,生成细节丰富的高分辨率图像。每一个阶段的生成网络分别配置一个判别器,这样不仅减轻网络的生成压力,降低训练难度,还解决了梯度消失问题。

原始StackGAN 需要将训练网络分成两部分,且两部分网络不能实现协同训练,第二阶段的训练梯度不能流到第一阶段。深度学习研究员一般追求端到端的模型,希望由一个网络一次性完成任务。Zhang等人随后推出一个端到端网络:StackGAN++,将多阶段的任务合并到一个网络同时训练,实验表明相对于StackGAN 模型效果有了显著提升。

鉴于堆叠式结构有效改善了因网络深度增加造成的梯度消失问题,提升了深度卷积网络的性能,而且在生成高分辨率图像上表现优异,本文基于堆叠式结构设计了生成器。

1.3 带有辅助分类器的生成对抗网络

原始GANs是无监督模型,只能根据噪声输出合成图片,不能控制生成的细节信息。CGAN第一次将附加信息引入GANs,实现了对图像细节的控制。ACGAN是对CGAN的进一步扩展,实现了对输入图像的分类功能,不仅能够稳定训练,还提高生成图像的质量。

生成器输入包括两部分:类别信息c和噪声z,将c和z合并输入生成器得到合成图像,然后将合成图像和真实图像输入判别器得到分类和判别真假的结果。

ACGAN 的损失函数具有两部分,一是判别器损失LS,二是图像分类损失LC。损失函数定义如下所示:

Xreal表示真实的训练图像,Xfake表示合成训练图像,C代表分类信息。P(S|X),P(C|X)分别表示图像真假和类别。

1.4 门控线性单元

门控机制已经被证明对循环神经网络(RNN)有效,LSTMs通过由输入门和遗忘门控制的独立单元实现长期记忆,使信息不会很容易在时间步的转换中消失。相对于RNN,卷积网络不依赖于前一个时刻的隐藏层状态,无需遗忘门,可以方便地实现并行化,Dauphin 等[16]将无需遗忘门的门控卷积网络应用到语言建模,提出了门控线性单元GLU,不仅有效降低了梯度消失,还保留了非线性的能力。GLU操作定义为:

W和V代表不同的卷积核,具有相同的维度,b和c代表偏置参数;⊗是相同维度的矩阵按元素相乘;σ指sigmoid 非线性函数,控制了X*W+b中的那些信息传到下一层,即门控机制。StackGAN++将GLU作为激活单元,增加非线性。

2 多层次生成对抗网络的动画头像生成方法

神经网络的结构和损失函数是影响网络性能的重要因素。本文分别在这两方面作出改进。

2.1 网络结构

本文设计了一个由两个网络堆叠而成的生成器和两个带有辅助分类器的判别器。网络结构如图2所示。

图2 带辅助分类器的多层次结构生成对抗网络结构Fig.2 Auxiliary classification atteched multi-level generative adversial network

(1)生成器网络结构

生成器由两阶段网络堆叠而成,第一阶段网络包含三个上采样层;第二阶段网络包含一个联合训练层,两个残差块和一个上采样层。

F0和F1是第一阶段和第二阶段的网络,h0和h1是第一阶段和第二阶段的隐藏状态,S0和S1是低分辨率和高分辨率的图像。G0和G1是一个3×3卷积层,对隐藏状态进行降维得到3通道图像。

Z是一个从高斯分布中采样得到的噪声向量,与降维后的条件向量e拼接,输入F0进行上采样得到隐藏状态h0,然后将(h0,e)输入F1得到隐藏状态h1,将(h0,h1)分别输入(G0,G1)得到图像(S0,S1)。公式定义为:

F0将图像分辨率提升8 倍,由三个上采样结构组成,上采样结构如表1。

表1 上采样网络结构Table 1 Upsampling network

F1的主要任务是对低尺度图像的细节进行补充然后增大分辨率,结构包含一个联合训练层、两个残差块和一个上采样层。

其中残差块的任务是对上一阶段的细节进行修复。一般残差块由卷积层、BN层和ReLU组成,本文将BN 层去掉,以增加模型生成质量稳定性,节省显存,增加训练速度。

Batch norm(BN)是深度学习的一个重要技术,可以加速模型收敛,但是BN在图像生成和超分辨率方面表现欠佳。图像超分辨率任务要求网络输出的颜色、对比度、亮度和输入图像一致,只改变分辨率和细节信息。而BN会对色彩的分布进行标准化,破坏原来的对比度信息,去除BN反而得到较好的性能[17-19]。所以,本文将残差结构中的BN层删去。

残差结构如图3所示。

图3 残差结构Fig.3 Residual network

本文生成器所有激活单元采用GLU 结构,相比于ReLU,复杂程度更高,表达能力更强,很少产生梯度消失问题。实验发现,GLU在稳定模型上也具有一定效果。

(2)判别器网络结构

GAN 具有强大的生成能力,但是模型的稳定性一直是亟待解决的问题。实验发现StackGAN++虽然在条件生成上具有较好的生成效果,但是仍然会在多轮的训练中陷入模式崩溃,难以收敛。StackGAN++的判别器承担两个任务:一是判别图像真假;二是判断条件和图像相符程度,任务相对于GANs较为复杂。本文设计辅助分类器[7]承担图像分类任务,将一个复杂的判别任务分割成多个简单的小问题,实验表示辅助分类器减轻了判别器的任务,稳定了模型的训练。

通常判别器和生成器失衡较快的原因是简单的判别器容易训练,在短时间训练太强,无法为生成器提供有效梯度。为增加判别器训练的难度并减少显存消耗,本文将分类器和判别器特征提取层的参数共享,然后添加两个全连接层分别完成判别和分类任务。

判别器和辅助分类器网络结构如表2、表3。

表2 D0 网络结构Table 2 D0 network structure

表3 D1 网络结构Table 3 D1 network structure

实验发现增大判别器的卷积核大小会增加判别器的训练难度,延迟判别器和生成器失衡,使合成图像质量增加。如果判别器过于简单,生成器很容易模式崩溃。

2.2 损失函数

GANs通过JS散度衡量两个分布之间的距离,当两个分布之间完全没有交集的时候,JS 散度是一个常数,反向传播的梯度为0,这在深度学习训练中是一个致命问题。本文引入特征图空间损失、像素空间均值方差损失和分类损失辅助训练。

图像像素空间的L2距离经常用到机器学习模型的训练,但这经常导致图像模糊的情况出现。真实的图像是具有多个峰值的多模态数据,而采样得到的数据不能包含所有峰值,如果使用单峰数据分布拟合多峰数据分布会使图像较为单一、模糊。图像较高层次特征图会捕获高级内容,可以综合多种属性,不限制精确像素,产生更多的模式。相对于图像像素空间的L2 距离损失,特征图上的感知损失可以像人眼一样评估[20],具有更强的灵活性。本文模型引入特征图空间损失Lfeat,希望加速收敛的同时减少图像模糊化。

C是一个用来计算特征图的网络,可以嵌入判别器,作为判别器的一部分共享参数。Xi是低尺度和高尺度真实图像。

GANs 的最终目的是生成与真实数据分布相同的数据,那么最优模型生成数据的均值方差应该与真实数据的均值方差相同,但是特征图感知损失并不强调图像均值和方差的一致性。为了使图像的颜色和数据分布接近,本文引入图像像素空间均值方差损失Lcov,μ。

本文引入分类器辅助训练,当优化判别器时输入是真实图像和合成图像,标签是lreal和lfake;当优化生成器时输入是合成图像,标签是lreal。分类损失定义为:

H表示交叉熵。

判别器D通过最小化交叉熵损失判别输入图像的真假和类别。其对抗损失定义为:

生成器损失是图像像素空间均值方差损失、特征图空间损失、对抗损失和分类损失的加权和。

判别器损失是对抗损失和分类损失加权和:

本文参数设置为λ1=1,λ2=1,λcov,μ=0.1,λimg=0.1,λGC=1,λDC=0.5。

综上所述,本文设计了一个由两阶段网络堆叠的生成器和两个带有分类功能的判别器,并剔除生成器残差结构中的BN层,引入图像特征图空间损失、图像像素空间均值方差损失和分类损失。

3 实验结果和分析

3.1 实验数据

为训练本文的生成模型,从网上搜索了36 000 张96×96 的动画人物头像。本文的生成模型具有辅助分类器,需要对真实图像数据集进行分类。实验发现人物头发颜色相对明显,且通过DCGAN[7]、LSGAN[21]模型生成的图像会产生背景和头发杂糅,边界扭曲的现象,所以本文根据头发颜色进行分类,希望模型能够根据头发颜色进行合成。

本文实验环境为ubuntu 14.04系统,采用深度学习框架pytorch1.6+cuda10.1,NVIDIA 1080 加速运算。模型采用mini-batch 训练方式,batchsize 设置为64。使用Adam优化器,初始学习率设置为0.000 2,迭代50轮。

3.2 评价指标

评价合成图像主要考虑两个因素:图像清晰度和图像多样性。图像清晰度不足往往是网络的表达能力不足,不能再现图像细节,需要使用更复杂的网络结构;图像多样性不足往往是损失函数和训练方法的问题,常见现象就是模式崩溃。

本文选择Fréchet inception distance(FID)[22]衡量生成图片质量。FID 直接衡量合成数据和真实数据分布的距离,距离越小说明合成图像与真实图像越接近。FID 是通过Inception V3 模型[23]提取视觉特征向量,并假定该特征服从多维高斯分布,然后计算真实图像特征向量的均值、协方差(μx,Cx)和合成图像特征向量的均值、协方差(μg,Cg)。两个分布的Fréchet距离定义如下:

x代表真实样本集分布,g代表合成样本集分布,μ、C分别代表提取特征后特征向量的均值和协方差,tr 表示矩阵的迹。

FID值越小,说明合成图像和真实图像的分布越接近,合成图像的多样性和质量越好。FID对模式崩溃相对敏感,而且对噪声具有很好的鲁棒性,如果发生模式崩溃,生成的头像相似性太高,那么FID分数会很高,所以FID可以用来衡量生成结果的多样性。

3.3 模型结果对比和分析

基于多层次结构添加特征图空间损失Lfeat和图像像素空间均值方差损失Lcov,μ的提升效果不如DCGAN明显,所以本文将DCGAN加入实验参与对比。

模型分析分为无条件和有条件两种情况,在无条件情况下,将多层次结构与DCGAN模型对比,验证多层次结构的有用性;在有条件情况下,对DCGAN 添加Lfeat和Lcov,μ进行对比以验证本文损失,最后对StackGAN++和ACM-GAN对比分析验证本文最终模型的有用性。

3.3.1 无条件模型对比分析

DCGAN 在无条件下进行训练,第8 轮FID 分数最优,颜色较为鲜艳,但是图像颗粒感严重,视觉感受较差。随着迭代次数增加,颜色逐渐暗淡,FID 分数有所下降,视觉感受有所上升。原因是图像多样性降低和颜色变暗导致真实图像分布差距变大,这一缺点在多层次结构同样存在。

图4 是无条件模型结果对比,可以看出LSGAN 与DCGAN生成质量没有明显差异,多层次结构(无标签)的部分图像具有较高的清晰度和真实度,但是大多数图像比较扭曲。

图4 无条件模型结果对比Fig.4 Comparison of model results in unconditional models

无监督模型的FID 分数对比如表4 所示,多层次结构的FID分数相对于DCGAN下降17.11,改善较大。

表4 无监督模型FID分数Table 4 FID score of unsupervised model

多层次结构(无标签)是将ACM-GAN 的条件和辅助分类器去掉的模型。实验发现,无条件情况下模型在第二阶段很容易陷入模式崩溃,需要通过颜色一致性正则化[10]对第二阶段图像加以限制。

3.3.2 有条件模型对比分析

针对有条件情况,根据标签比例从训练集中挑选出10 000张图片与生成的10 000张图片计算FID分数。

首先对DCGAN 添加特征图空间损失Lfeat和图像像素空间均值方差损失Lcov,μ验证损失函数。实验结果如表5所示。

表5 基于DCGAN的模型FID分数Table 5 FID Score of different model based on DCGAN

本文DCGAN(有标签)模型是通过对噪声z拼接条件向量,在判别器中间层添加条件[3]实现条件控制。相对于无条件DCGAN 的FID 分数增加7.6,表现稍差,震荡程度稍高。虽然基本能够实现按照条件生成对应头发颜色的头像,但是图像模糊程度较高,多样性较差。

添加图像特征图空间损失Lfeat后收敛速度增加,震荡程度稍弱,FID分数降低到61.79。生成头像如图5第二行,头发颜色和条件对应程度增强,视觉感受增加。Lfeat虽然使FID分数有所下降,但合成图像仍然存在颜色暗淡,不鲜艳的问题。Lcov,μ损失要求合成图像和真实图像颜色和方差一致,在添加Lfeat的基础上添加Lcov,μ后FID分数降低到55.69。从生成结果看该模型生成的图像颜色鲜艳,细节丰富,更贴近真实图像,部分图像的眼部表达更加生动。

图5 有条件模型结果对比Fig.5 Comparison of model results in conditional models

表6 是StackGAN++和本文模型的FID 分数对比,可以看出本文方法均优于StackGAN++。StackGAN++的残差结构中带有BN,与残差块中带有BN 的ACMGAN的区别在于辅助分类器。相对于StackGAN++,辅助分类器使FID分数提升3.82,且生成的图像与颜色对应程度更高。

表6 Stack GAN++和ACM-GAN模型FID分数Table 6 FID Score of StackGAN++and ACM-GAN model

通常GANs 模型生成图像的质量在训练初期震荡提高,到达一定程度后质量就会震荡下降。ACM-GAN(BN)的图像质量震荡情况相对于StackGAN++较弱,在多次训练中遇到模式崩溃的次数低于StackGAN++。表7是StackGAN++和ACM-GAN平均模式崩溃次数和第一次崩溃epoch对比。

表7 50epoch模式崩溃次数对比Table 7 Frequency comparison of mode collapse during 50epoch

实验发现,StackGAN++和ACM-GAN 都具有模型修复的能力,可以在一定的epoch 内跳出模式崩溃。StackGAN++第一次崩溃是在第20 epoch,远早于ACMGAN,且在崩溃修复后再次陷入模式崩溃几率更大。ACM-GAN第一次崩溃epoch一般在45轮,平均崩溃次数为0.5次,稳定性较StackGAN++更高。

不同于StackGAN++将判断生成图像是否符合条件和判别图像真假的任务完全交给判别器,使得判别器压力较大,ACM-GAN 的辅助分类器只承担图像分类任务,对模式崩溃较为敏感。当发生模式崩溃时,分类损失较高,辅助分类器会引导模型修复。可以发现辅助分类器对于模型稳定性和避免模式崩溃具有重要作用。

辅助分类损失对模型收敛起引导作用,损失大小应小于对抗损失,如果分类权值过大,辅助分类器性能过强,可能对模型的引导起反作用。本文设置λGC=1,λDC=0.5,λDC应小于λGC,且权值应都小于1,两者允许±0.2以内的波动。

ACM-GAN 将残差结构的BN 层去掉,FID 分数具有小幅提升,训练时间减少8%。实验发现,在残差块添加BN层的ACM-GAN在batch-size较小的情况下,合成图像容易产生黑边或者白边甚至模式崩溃。ACM-GAN对这种情况有所改善,模型训练稳定性较强,模式崩溃的概率减少。

添加图像特征空间损失Lfeat,和图像像素空间均值方差损失Lcov,μ效果均有所优化,最优达到27.96,相对于StackGAN++提升23.1%,模型训练过程稳定更高,生成质量震荡程度进一步降低。Lfeat改善了图像的扭曲现象,并提升视觉感受,但是稍微导致图像颜色暗淡,不鲜艳。Lcov,μ关注合成图像和真实图像颜色上的差距和分布的方差差距,对于图像的颜色差异和模式崩溃较为敏感,减轻了图像模糊情况,生成的图像鲜艳度更高,细节信息丰富,视觉感受更好。

Lfeat的权值选择和特征图层数的选择对结果影响较大,实验发现,权值过低会导致损失项不起作用,过高会导致模式崩溃的发生;如果特征图过于靠近输入层,也可能导致模式崩溃,需要对应的减少Lfeat权值大小。特征图靠近输入层,那么特征图空间就更接近图像像素空间,不能充分提取更高层次的信息,会更加关注图像像素级别的误差,使图像出现模糊的情况;特征图过于靠近输出层,又会导致不能充分提取高层次信息,对网络引导作用过小。只有在大小合适的特征图上才能充分提取高层次信息,经过实验,本文第一阶段采用,第二阶段采用。

Lfeat和Lcov,μ的权值选择不应过大,设置在0.1±0.05之间。Lfeat和Lcov,μ是对图像的定性衡量,与对抗损失这种动态衡量方式不同,对抗损失关注图像的真假概率,对图像的像素值约束宽松。Lfeat和Lcov,μ只是对模型的收敛起部分引导作用,和分类损失一样不能太大。

由于数据集有样本不平衡的现象,Blue、Green、Purple样本较少,导致这三种颜色和头像的对应度较差。Yellow 和Black 两种颜色数据较多,所以生成效果略优于其他颜色。

4 结束语

本文基于堆叠式结构,结合辅助分类器并引入特征图损失和图像像素空间均值方差损失,提出了改进模型ACM-GAN 用于动画头像生成。实验结果表明,在图像生成清晰度、多样性和训练稳定性方面,相对于DCGAN、LSGAN、StackGAN++均有提升,证明了该方法的有效性。受限于数据集的分辨率,本文模型不能生成更高分辨率的图像,而且图像存在不平衡和分类信息不准确的现象,对生成结果造成一定的影响。在接下来的研究中,可以搜集更高分辨率的头像数据集,进行更细致的分类工作。此外,在网络结构上还可以引入注意力机制思想进一步提升网络的表达能力。

猜你喜欢
网络结构残差分类器
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于朴素Bayes组合的简易集成分类器①
基于残差学习的自适应无人机目标跟踪算法
基于特征选择的SVM选择性集成学习方法
基于AutoML的保护区物种识别①
基于递归残差网络的图像超分辨率重建
基于差异性测度的遥感自适应分类器选择
基于时效网络的空间信息网络结构脆弱性分析方法研究
基于互信息的贝叶斯网络结构学习