技术文库

基于GAN的高分辨率图像(包括说话脸和人体姿态动作)合成方法介绍

图像合成有不同的方式,比如像素或者补丁级别的、基于纹理模版的、基于模版梯度的、以及基于运动模版的。

深度学习,人工智能

本文作者:黄浴(自动驾驶科学家/工程师)

图像合成有不同的方式,比如像素或者补丁级别的、基于纹理模版的、基于模版梯度的、以及基于运动模版的。

现在讨论如何基于深度学习模型去实现这些合成模式,其中GAN起着非常重要的作用。

后面针对两个特别的领域介绍一下:一是高分辨率说话脸(talking face)合成,二是人体姿态(pose)和运动(movement)合成。


生成图像的三种主要方法是直接法,迭代法和分层法,如图所示。直接法只用一个生成器和一个鉴别器来完成所有操作,而另外两种方法有多个生成器和鉴别器。 分层法通常使用两层GAN,其中一个GAN与另一个GAN起着根本不同的作用。然而,迭代法有多个执行相同任务但分辨率不同的GAN。

• 直接法

该类方法都遵循用一个发生器和一个鉴别器的原理,并且发生器和鉴别器的结构是直接的,没有分支。如GAN,DCGAN,ImprovedGAN,InfoGAN,f-GAN和GAN-INT-CLS。 其中,DCGAN是最经典的之一(见第二章介绍),其结构被许多后来的模型使用。与分层法和迭代法相比,这种方法设计和实现相对更直接,并且通常可以获得良好的结果。

• 分层法

与直接法相反,分层法的算法在其模型中使用两个发生器和两个鉴别器,其中不同的发生器具有不同的目的。想法是将图像分成两部分,如“样式(style)和结构(structure)”和“前景和背景”。两个发生器之间的关系可以是并联的或串联的。

SS-GAN建议使用两个GAN,一个Structure-GAN用于从随机噪声zˆ生成表面法线图,另一个Style-GAN同时生成表面法线图和噪声z ̃输入,然后输出图像。 Structure-GAN使用与DCGAN相同的构建块,而Style-GAN略有不同。对于样式生成器,生成的表面法线图和噪声向量分别经过几个卷积和转置卷积层,然后将结果连接成一个张量通过样式生成器中的剩下层。对于样式鉴别器,每个表面法线图及其对应的图像在通道维度连接在一起,形成鉴别器的单个输入。另外,SS-GAN假定,应该使用良好的合成图像来重建良好的表面法线图。在此假设下,SS-GAN设计了一个全连接网络,将图像转换到其表面法线图,并使用逐像素损失强制重建的曲面法线逼近真实曲面法线。 SS-GAN的一个主要限制是它需要使用Kinect来获得表面法线图的基础事实(GT)。下图是SS-GAN的示意图,(a)生成流水线:Structure-GAN生成表面法线图作为输出,然后将该表面法线图作为输入给Style-GAN输出图像;(b)生成的表面法线图和图像例子;(c)Style-GAN作绘制引擎。

作为一个特例,LR-GAN(Layered Recurrent GAN)选择使用不同的生成器生成前景和背景内容,但是只有一个鉴别器用于判断图像,而递推图像生成过程与迭代方法有关。尽管如此,LR-GAN的实验表明,可以分离前景和背景内容的生成并产生更清晰的图像。

LR-GAN是分层法,前景层同时模拟三个主要变化因素:外观f,形状m和姿态a。LR-GAN中的生成器是递归的,图像使用递推网络递归构造。每个递归步骤的分层包括一个“粘贴”到生成图像的目标层。在时间步t的目标层由三个成分参数化 - “规范”的外观ft,形状(或掩码)mt,以及用于粘贴图像合成之前将目标变形的姿态(或仿射变换)at。

该模型具有用于变形目标的显式变换变量,因此它可以学习规范的目标表示,该表示可以被重新用于生成场景,其中目标仅仅做一些如尺度变化或旋转的变换。通过分解外观、形状和姿态,目标生成器可以分别捕获这三个构成目标因素的规则性。

如图是LR-GAN展开到3个时间步的结构图。用不同形状来指示不同类的层(卷积,分数卷积,非线性和线性等),模型由两个主要部分组成,背景生成器Gb和前景生成器Gf。Gb和Gf不共享参数。 Gb计算仅发生一次,而Gf随时间重复,即所有目标生成器共享相同的参数。

• 迭代法

迭代法有两点区别于分级法:1)不使用两个执行不同角色的不同生成器,此类模型具有相似或甚至相同结构的多个生成器,并且它们生成从粗到精的图像,每个生成器都会细化来自上一代生成器的结果细节;2)在生成器中使用相同的结构时,迭代法可以在生成器之间使用权重共享,而分层法通常不能。

LAPGAN是第一个使用迭代法通过拉普拉斯金字塔生成从粗到细图像的GAN模型,如图是LAPGAN的样本生成程序。

下图是LAPGAN的训练流程。LAPGAN的多个生成器执行相同的任务:从先前的生成器获取图像并将噪声向量作为输入,然后输出当添加到输入图像时能使图像更清晰的细节(残差图像)。这些发生器结构的唯一区别在于输入/输出的大小,而一个例外是最底层发生器仅输入噪声向量输出图像。 LAPGAN优于原始GAN 并且表明迭代法可以生成比直接法更清晰的图像。

StackGAN作为一种迭代法,只有两层生成器。第一个生成器输入(z,c),输出模糊图像,显示粗糙的形状和目标的模糊细节,而第二个生成器采用(z,c)和前一代生成的图像做输入,然后输出更大的图像,更具照片般逼真的细节。如图是StackGAN的架构图,以文本到图像的生成为目的,过程分为两个阶段:阶段I,根据给定的文本描述绘制对象的原始形状和基本颜色,并从随机噪声向量绘制背景图,生成低分辨率图像;阶段 II,再次阅读文本描述,纠正第I阶段低分辨率图像的缺陷,并完成目标的详细信息,生成高分辨率照片逼真图像。

迭代法的另一个例子是SGAN(Stacked generative adversarial networks),如图所示。(a) 原GAN;(b) 训练SGAN 的工作流程,其中每个生成器 Gi 试图生成合理的特征以欺骗相应的表示鉴别器 Di。在独立训练阶段每个生成器接收编码器的条件输入,在联合训练阶段发生器接收条件输入;(c) 向每个发生器 Gi 提供随机噪声,从 SGAN(在测试期间)生成新图像。

SGAN的堆叠生成器,将较低级的特征作为输入并输出较高级的特征,而底部生成器将噪声向量作为输入并且顶部生成器输出图像。对不同级特征使用单独生成器的必要性是SGAN关联编码器、鉴别器和Q网络(预测熵最大化的后验概率P(zi | hi),其中hi是发生器第i层的输出特征),以便约束和改善这些特征的质量。

使用权重共享的一个例子是GRAN(Generative Recurrent Adversarial Networks)模型,它是DRAW(Deep Recurrent Attentive Writer)模型的扩展,基于变分自动编码器(VAE)。如图是VAE(左边)和DRAW(右边)的框架比较。与DRAW一样,GRAN以递推方式生成图像,将前一步的输出提供给模型,当前步的输出将作为下一步的输入反馈。所有步骤都使用相同的生成器,因此权重在它们之间共享,就像经典的递推神经网络(RNN)一样。


人脸表情或者动作合成,最直接的应用就是说话脸(Talking Face)。下面通过论文【6】和【7】展开对深度学习在这个方面的应用讨论。

  • 【6】

说话面生成旨在合成对应于语音剪辑的一系列面部图像,如图所示:给定目标人物的单个面部图像,任务是在基于视频或音频表示的语音信息生成说话视频。这是一个有挑战性的问题,因为面部外观变化和语音语义耦合后表现在谈话脸上区域的微妙运动。现有方法要么在特定主角上构建特定的面部外观模型,要么模拟唇部运动和语音之间的变换。【6】结合了这两种方法,通过学习分解的视-听信息实现任意主角的说话脸生成。

说话面序列实际上是主角相关信息和语音相关信息的组合。【6】通过一个联想和对抗(associative-and-adversarial)的训练过程明确地解耦这两个空间。这种分解表示的优点是,音频和视频都可以作为生成的输入。如图所示,通过使用标签来指导信息流,以确保空间包含的是相互消除的鉴别性语义信息。假设Word-ID空间在视觉和音频信息之间共享,模型可以基于视频或音频重建面部细节。

实现这个技术路线的关键是视-听语音识别(又称唇读)作为视-听信息关联的任务,利用对抗学习来解开里面主题相关和语音相关的信息。首先,学习一个联合的视-听空间,其中说话脸序列及其相应音频嵌入在一起;这是通过强制从说话面获得的唇读取结果与从音频获得的语音识别结果对齐来实现的。接下来,进一步利用唇读通过对抗学习分解主题相关和语音相关的信息。

视-听解藕系统(DAVS)是一个端到端的可训练网络【6】,通过学习分解的视-听表示实现说话脸生成,下图是其框架图:编码器Evp编码从视觉源到pid(Person-ID space)空间的个人-身份(Person-ID)信息,Evw和Eaw是单词-身份(Word-ID)编码器,分别从视频和音频提取语音内容信息到wid空间。解码器G从pid空间和wid(Word-ID space)空间取任意特征组合生成脸。Dseq是计算GAN损失的鉴别器。对抗训练部分包含两个额外的分类器Cwp和Cpw。

整个流水线的想法是:首先学习视-听联合空间wid,然后将其与pid空间解藕,最后结合两个空间的特征来获得生成结果。为了学习wid空间,采用了三个监督信号:有共享分类器Cw的单词-身份标签监督,表示语义的听觉和视觉信号; 对比性损失LC,用于拉近成对的视频和音频样本;对音频和视频特征的对抗训练监督,使其难区分。至于pid空间,采用额外标注面部数据得到的个人-身份标签。为了解藕wid和pid空间,采用了对抗训练。而生成部分,引入L1-范数的重建损失LL1和时域GAN损失LGAN用于清晰度和连续性量度。

视-听语音识别有助于共享潜在空间的实现,通过视频和音频映射到文字标签创建一个鉴别空间,如图是视-听共享空间wid嵌入的示意图。

确保特征抛弃了所有有关语音信息的方法是,在发送到分类器Cwp之后为所有类产生相同的预测。如图是从pid空间去除wid信息的对抗训练程序,左边是分类器训练,右边是编码器训练。

将pid特征fpv与视频wid特征fwv或音频wid特征fwa结合,系统可以从解码器G生成说话脸的图像帧。

  • 【7】

在【7】中提出一种级联(cascade)GAN方法来生成说话脸视频,不是直接学习从音频到视频帧的映射,而是先将音频转换为高级结构(即面部关键点),然后生成基于关键点的视频帧。与直接的音频到图像方法相比,级联法避免了拟合与语音内容无关的视听信号之间的虚假相关。为了避免像素抖动问题并强制网络专注于视听相关区域,采用一种带注意机制的动态可调像素损失。此外,为了生成同步良好面部运动的清晰图像,采用一种基于回归的鉴别器结构,同时考虑序列级和帧级的信息。

下图是网络架构图,分为两部分:音频转换网络(AT-net)和视觉生成网络(VG-net)。蓝色部分是AT-net,图中显示基础网络是LSTM,将音频信号传输到低维关键点表示;绿色部分是VG-net,图中显示基础网络是CRNN,生成基于关键点的视频帧。在训练期间,VG-net输入是GT关键点(p1:T);推理时,输入是AT-net产生的虚假关键点(pˆ 1:T)。AT-net和VG-net分别训练可避免误差积累。

如图显示的是生成图像质量和关键点(a)和头部姿态(b)的关系。在推理时在生成的关键点处添加具有不同标准偏差的高斯噪声,并对生成视频做用户研究。 如果增加标准偏差,图像质量会下降(见图(a))。 这种现象也表明AT-net可以输出有希望的中间关键点。用相同的音频测试不同的姿态图像,如图(b)的结果证明对不同的姿态角算法的鲁棒性。


  • 【8】

一种姿态引导的人体生成网络(Pose Guided Person Image Generation,PG2)在【8】提出,基于该人的图像和姿态合成任意姿态的人物图像。生成框架PG2明确地利用姿态信息,包括两个关键阶段:姿态集成和图像细化。在第一阶段,条件图像和目标姿态馈送到类似U-Net的网络,生成具有目标姿态的人体初始但粗略的图像。然后,在第二阶段,通过对抗方式训练类似U-Net的生成器来细化初始和模糊的结果。如图是PG2架构图。

在阶段I,条件人体图像IA与目标姿态PB整合以产生粗略结果IˆB,捕获目标图像IB的人体整体结构。

为了避免姿态注释任务,应用姿态估计器(part affinity fields,PAF)获得近似的人体姿态。姿态估计器生成18个关键点坐标。直接依此作为模型输入则需要模型学习将关键点映射到人体位置。因此,姿势PB编码为18个热图。每个热图在相应的关键点4像素为半径的周围填充值1,在其他地方填充值0(参见下图,目标姿态)。将IA和PB连接起来作为模型的输入。这样,通过卷积层直接整合这两种信息。

第一阶段的生成器,类似U-Net的架构,即带跳连接的卷积自动编码器,如图11-16所示。具体来说,使用几个堆叠卷积层从小的局部邻域到大的局部领域集成IA和PB,这样外观信息可以整合并转移到邻近的身体部位。然后,使用全连接层,使得远端身体部位之间的信息也可以交换。之后,解码器由一组堆叠的卷积层组成,这些卷积层与编码器对称以生成图像。第一阶段的结果表示为IˆB1。在U-Net,编码器和解码器之间的跳连接有助于图像信息直接从输入传播到输出。此外,使用残差块作为基本组件可以提高生成的性能。特别地,简化原始残差块,其中仅保留两个连续的conv-relu。

为比较生成IˆB1与目标图像IB,采用L1距离作为阶段I的生成损失。然而,由于仅仅让条件图像和目标姿势作为输入,如果目标图像具有与条件图像不同的背景,则模型难以生成背景的样子。因此,为了减轻背景变化的影响,将姿态掩模MB添加到L1损失,使得人体被赋予比背景更多的权重,例子见上图所示。

第一阶段模型已经合成了一个粗略但接近目标图像的姿态和RGB图像,在第二阶段,纠正错误或缺失来集中精力生成更多细节,其中用条件DCGAN的变型作为基本模型。

考虑到初始结果和目标图像已经在结构上相似,第二阶段的生成器G2旨在生成使初始结果更接近目标图像的外观差别图(appearance difference map)。用类似于第一阶段的U-Net计算差别图,但是初始结果IˆB1和条件图像IA作为输入。不同之处在于,从U-Net移除全连接层。这有助于在输入保留更多细节,因为全连接层会压缩输入的信息。在模型训练中,差异图加速了收敛,因为模型侧重于学习缺失的外观细节而不是从头开始合成目标图像。特别是,训练从合理的结果开始。G2的整体架构如前面PG2架构图所示。

鉴别器区分真实的GT图像和伪造的图像(由随机噪声产生)。但是,在这个条件网络中,G2将条件图像IA而不是随机噪声作为输入。因此,真实图像不仅是自然的,而且还满足特定的要求。否则,G2会误导直接输出本身自然的IA,而不是改善第一阶段IˆB1的粗略结果。为了解决这个问题,将G2输出与条件图像配对,以使鉴别器D识别对的伪造,即(IˆB2,IA)vs(IB,IA)。这在图11-16中示出。这个成对输入鼓励D学习IˆB2和IB之间的区别,而不仅仅是合成图像和自然图像之间的区别。

与传统GAN的另一个不同之处是,由于生成器以图像IA为条件,因此不再需要噪声。 因此,对鉴别器D和发生器G2有以下损失函数

其中Lbce表示二值交叉熵损失。在这里,使用与第一阶段相同的掩码L1损失,比背景更注重目标人体的外观,即

下图是实验结果例子:在两个方面测试G1:(1)三种姿态嵌入方法,即坐标嵌入(coordinate embedding,CE),热图嵌入(heatmap embedding,HME)和G1-L1的姿态热图串联,(2)两种损失, poseMaskLoss 和标准的L1损失。 第7, 8和9列显示了一期的几个差别(G1),一期对抗模型(G1 + D)和两阶段对抗模型(G1 + G2 + D)之间的差异。 请注意,这三个都使用poseMaskLoss。 在拆分数据集时随机分配ID。

  • 【9】

这是一种“像我一样(Do as I do)”运动转移【9】的简单方法:给定一个人跳舞的源视频,可以在目标主体执行标准动作的几分钟后将该表现转移到一个新的(业余)目标。问题定义为具有时空平滑的逐帧“图像到图像”的转换。姿态检测作为源和目标之间的中间表示,学习从姿态图像到目标主体外观的映射。该方法也用于时域视频生成,包括逼真的面部合成。

设计的姿态棒图(stick figure)见图所示。

整个流水线划分为三个阶段:姿势检测、全局姿态归一化以及从标准化姿态棒图到目标主体的映射。在姿势检测阶段,给定来自源视频的帧,用预训练的姿态检测器状态来创建姿态棒图。 全局姿态归一化阶段考虑源体和目标体在形状与帧内位置之间的差异。 最后,一个系统学习从归一化化的姿态棒图到对抗训练的目标人体图像之间的映射。

如下图上半部分给出了系统训练的框图:给定原始目标视频的帧y,姿态检测器P获得相应的姿态棒图x = P(y);在训练期间,(x,y)对学习映射G,将给定姿态棒图x合成目标人物的图像。采用预训练的VGGNet,进行鉴别器D和感知重建损失dist的对抗训练,优化所生成的输出G(x)逼近GT目标主体帧y。 D试图区分“真实”图像对,即(姿态棒图x,GT图像y),和“假”图像对,即(姿态棒图x,模型输出G(x))。

运动转移显示在给出的下图下半部分。与训练过程类似,姿态检测器P从源帧y'提取姿态信息,产生姿态棒图x'。为了使源姿态更好地与目标的拍摄朝向对齐,用全局姿态归一化Norm将源的原始姿态x'变换后与目标视频x姿态一致。 然后,将归一化化的姿态棒图x传递到训练的模型G中,以获得目标人物的图像G(x),其对应于源y'的原始图像。

将pix2pixHD模型的对抗训练设置修改一下:(1)时间连贯的视频帧,(2)合成相关的人脸图像。修改单个图像生成设置以强制相邻帧之间的时间一致性,如图所示。

预测两个连续帧,而不是生成单个帧,其中第一个输出G(xt-1)取决于相应的姿态棒图xt-1和零图像z(一个占位符,因为之前时刻t - 2没有生成帧),第二个输出G(xt)取决于对应的姿态棒图xt和第一个输出G(xt-1)。 因此,鉴别器的任务是确定“假”序列(xt-1,xt,G(xt-1),G(xt))和“真实”序列(xt-1,xt,yt-1,yt)之间的真实性和时间一致性的差异。这个时域平滑体现在更新的目标函数中

一个专门的GAN模型,旨在为面部区域添加更多细节和真实感,如图所示。用主生成器G生成场景的完整图像之后,输入以面G(x)F为中心的较小部分图像和以相同方式分割的输入姿态棒图xF到另一个生成器Gf,其输出的残差r = Gf(xF,G(x)F)。 最终输出是添加具有原始面部区域r G(x)F的残差,该变化反映在完整图像的相关区域中。

然后,鉴别器Df尝试从“假”面对(xF,r+G(x)F)辨别“真实”面对(xF,yF),即(输入姿态棒图的面部区域,GT目标人物图像的面部区域),与原始pix2pix目标类似的目标函数是

最后整个图像GAN目标函数是:

而人脸GAN的目标函数是:

下图是一些运动转移的结果。顶行显示源视频主体,中间行显示归一化的姿态棒图,底行显示目标人体的模型输出。

 人工智能 深度学习