图像合成有不同的方式,比如像素或者补丁级别的、基于纹理模版的、基于模版梯度的、以及基于运动模版的。
现在讨论如何基于深度学习模型去实现这些合成模式,其中 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。在独立训练阶段每个生成器接收编码器的条件输入,在联合训练阶段发生器接收条件输入;© 向每个发生器 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】中提出一种级联(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 的目标函数是:
下图是一些运动转移的结果。顶行显示源视频主体,中间行显示归一化的姿态棒图,底行显示目标人体的模型输出。
作者介绍
黄浴,奇点汽车美研中心总裁和自动驾驶首席科学家,上海大学兼职教授。曾在百度美研自动驾驶组、英特尔公司总部、三星美研数字媒体研究中心、华为美研媒体网络实验室,和法国汤姆逊多媒体公司普林斯顿研究所等工作。发表国际期刊和会议论文 30 余篇,申请 30 余个专利,其中 13 个获批准。
原文链接
注:本文源自黄浴的知乎:https://zhuanlan.zhihu.com/p/79080156
评论