Training Generative Adversarial Networks in One Stage

Training Generative Adversarial Networks in One Stage

生成对抗网络(GANs)在各种图像生成任务中表现出前所未有的成功。然而,这些令人鼓舞的结果是以繁琐的训练过程为代价的,在这个过程中,生成器和鉴别器要在两个阶段交替更新。在本文中,我们研究了一种通用的训练方案,该方案只需在一个阶段就能有效地训练GANs。基于生成器和判别器的对抗性损失,我们将GANs分为两类,即对称GANs和非对称GANs,并引入一种新的梯度分解方法来统一这两类,使我们能够在一个阶段内训练这两类,从而减轻训练工作。我们还对所提方法的效率进行了计算分析,并根据经验证明,所提方法在各种数据集和网络结构中产生了1.5倍的坚实加速。此外,我们还表明,所提出的方法很容易适用于其他对抗性训练场景,如无数据知识提炼。

The code is available at https://github.com/zju-vipa/OSGAN

1. Introduction

生成对抗网络(GANs),自其在[17]中被介绍以来,在各种图像生成任务中产生了前所未有的令人印象深刻的结果。由于生成器和鉴别器这两个关键组件的对抗性,GANs提供的合成图像在视觉上很有吸引力,在许多情况下与真实图像无法区分。最近,许多GANs的变体被引入并集中在设计的不同方面,包括图像质量[30, 6, 12]、训练稳定性[43, 74, 46]和多样性[8, 68, 40]。除了生成图像这一最终目标外,GANs还被应用于其他任务,如无数据知识提炼[44, 13, 60, 71]和领域适应[14, 56]。

然而,GANs所带来的有希望的结果是以繁琐的训练过程为代价的。如图1的上行所示,现有的GANs依赖于一个耗时的两阶段训练过程,我们称之为两阶段GANs(TSGANs)。在第一阶段,由生成器合成的假图像与真实图像一起被送入判别器进行训练;在这个过程中,判别器被更新,但生成器是固定的。在第二阶段,鉴别器将损失函数得出的梯度传递给生成器,在此过程中,生成器被更新,但鉴别器被固定。因此,在每一轮对抗中,生成器和鉴别器都进行了两次前馈步骤,而鉴别器又进行了两次后向传播步骤,正如我们将在方法部分分析的那样,这涉及到许多重复计算。

为了减轻GANs繁琐的训练过程,人们已经做出了努力。例如,[14]的工作采用了一种高效的对抗性训练策略,用于无监督领域的适应,其中学习特征提取器和分类器只需要一轮正向推理和反向传播。[48]的方法也利用了单步优化来更新生成器和鉴别器的参数,并展示了其在生成视觉上真实的图像方面的力量。

尽管效率提高了,但[14, 48]的方法只限于适用于GAN的一个子集,其损失函数采取特定的形式。具体来说,在这种GANs中,生成器和判别器中的对抗性损失项是相同的;因此,我们把这种模型称为对称GANs。然而,许多其他流行的GANs采用了对生成器和判别器持有不同对抗项的损失函数,我们将这些模型称为非对称GANs。不幸的是,[14, 48]所采用的加速优化技术已不能胜任处理这种非对称模型。

我们在本文中提出了一种新的单阶段训练方案,被称为单阶段GANs(OSGANs),它可以推广到对称和非对称GANs。我们的关键想法是在前向推理过程中整合生成器和判别器的优化,并在反向传播过程中分解它们的梯度,在一个阶段内分别更新它们。对于对称情况,由于判别器损失持有一个与生成器损失相同的项,我们只需要计算一次这个项的梯度,并将其用于两个损失。这样一来,生成器和判别器的更新可以安全地在一个前向和后向步骤中进行。

训练非对称GANs更加棘手,因为我们不能再把从判别器中得到的梯度复制到生成器中。为此,我们仔细研究了判别器梯度的组成。我们发现,从不同的adversarial terms中得到的梯度,实际上在从最后一层一直到第一层判别器的总梯度中保持了它们的比例。梯度的这一有趣特性反过来又为我们提供了一个可行的解决方案,即分解不同对抗项的梯度,然后更新判别器和生成器,实现非对称GANs的单阶段训练。最后,我们将这两类GANs统一起来,并表明对称GANs实际上可以被视为非对称GANs的一个退化案例(degenerate case )。

因此,我们的贡献是一个通用的单阶段训练方案,很容易适用于各种GAN变体,包括对称和非对称GANs。在几个数据集和网络结构上的实验结果支持的计算分析表明,所提出的OSGANs比普通的对抗性训练策略实现了1.5倍的加速。

2.1. Generative Adversarial Networks

GAN[17]的开创性工作引入了一种对抗性策略,即生成器被训练成合成假图像以迷惑鉴别器,鉴别器试图将合成的图像与真实的图像区分开来。当生成器和鉴别器收敛到一个竞争平衡点时,生成器最终可以从潜在的变量中合成真实的图像。

GAN的主流研究集中在提高图像质量[30, 6, 12]、训练稳定性[43, 74, 46]和多样性[8, 68, 40]。最近,GANs在各种图像生成任务中展示了其可喜的成果,如超级分辨率[34, 65, 3, 62, 64]、图像编辑[76, 7, 75, 18, 20]、图像内画[49, 24, 51]和图像翻译[26, 77, 63]。

扫描二维码关注公众号,回复: 13395362 查看本文章

2.2. One-Stage and Two-Stage Framework

最近的物体检测方法可分为一阶段和两阶段框架[36]。对于两阶段框架[16, 15, 54, 11],实现了一个类别无关的区域提议模块,以找到图像中可能的物体位置,然后由特定类别的分类器为每个位置分配类别标签,其中实现了多个前馈。另一方面,单阶段检测方法[58, 38, 53, 33]将物体边界框和类别预测统一在一个前馈中,这大大降低了计算成本。

与物体检测类似,实例分割也可分为一阶段和两阶段管道。对于两阶段框架[50, 19, 37, 9, 10],模型首先执行对象检测,以获得每个对象实例的边界框,然后在每个边界框内实施二进制分割,以获得最终结果。在与检测类似的动机下,单阶段实例分割[66, 5]统一了实例掩码预测和类别预测,有效地提高了推理效率。然而,其他任务,如分类,主要依赖于单阶段方案[70, 73, 69, 27, 28]。

以上的单阶段方法主要是针对其任务的推理效率的提高,然而我们提出的方法更关注GANs的训练效率的提高。

3. Method

在这一节中,我们将详细描述所提出的onestage GANs的方法。我们首先描述了两类 GANs, 对称GANs和非对称GANs, 然后 然后分别讨论了上述情况的单阶段解决方案。最后,我们分析了所提出的OSGANs的提速因素。

3.1. One-Stage GANs

3.1.1 Background

[17]提出的vanilla GAN在判别器D和生成器G之间引入了一个minmax博弈,以引导生成器合成真实的图像。其目标表示为:

在这里插入图片描述

其中x表示从数据分布 p d p_d pd获得的真实样本,z表示从Guassian分布pz采样的潜在变量。为方便起见,我们将上述目标改写为D和G的分离损失,如下所示。

在这里插入图片描述

其中 L D \mathcal L_D LD L G \mathcal L_G LG对G(z)有相同的对抗项: l o g ( 1 − D ( G ( z ) ) log(1-\mathcal D(\mathcal G(z)) log(1D(G(z))。因此,我们将这样的GANs命名为对称GANs

为了缓解生成器的梯度消失问题,提出了一个非饱和的损失函数[1],具体如下:

在这里插入图片描述

其中他们关于G(z)的对抗性项是不同的。我们把具有这种损失的GAN称为非对称GAN。上述对抗性学习方案只是一个实例。许多其他的对抗性公式可以在补充材料中找到,如WGAN[43]和LSGAN[42]。

一般来说,GANs目标中的对抗项是关于虚假样本 G ( z ) \mathcal G(z) G(z)的对抗项,如公式2中的 − l o g ( 1 − D ( G ( z ) )   v s   l o g ( 1 − D ( G ( z ) ) ) -log(1-\mathcal D(\mathcal G(z))\ vs\ log(1-\mathcal D(\mathcal G(z))) log(1D(G(z)) vs log(1D(G(z))),以及公式3中的 − l o g ( 1 − D ( G ( z ) )   v s   − l o g ( D ( G ( z ) ) ) -log(1-\mathcal D(\mathcal G(z))\ vs\ -log(\mathcal D(\mathcal G(z))) log(1D(G(z)) vs log(D(G(z)))。因此,为了分析清楚,我们把一般的 L D \mathcal L_D LD分成两部分:关于真实样本的项 L r D ( x ) \mathcal L_rD(x) LrD(x)和关于虚假样本的项 L D f ( x ^ ) \mathcal L^f_\mathcal D(\hat x) LDf(x^),其中 x ^ = G ( z ) \hat x=G(z) x^=G(z)。更多的讨论可以在补充材料中找到。最后,一般GANs的目标可以写成如下。

在这里插入图片描述

为简洁起见,我们省略输入 x 和 x ^ x和\hat x xx^,如 L D 、 L D r 、 L D f 和 L G \mathcal L_D、\mathcal L^r_D、\mathcal L^f_D和\mathcal L_G LDLDrLDfLG。基于公式4,我们可以正式区分对称GANs和非对称GANs:对于对称GANs,我们有 L G = − L D f \mathcal L_G = -\mathcal L^f_D LG=LDf,而对于非对称GANs,我们有 L G ≠ − L D f \mathcal L_G \ne -\mathcal L^f_D LG=LDf

3.1.2 Symmetric OSGANs

\mathcal L_G \ne -\mathcal L^f_D$。

3.1.2 Symmetric OSGANs

对于对称的GANs(例如公式2), L G 和 L D \mathcal L_G和\mathcal L_D LGLD包含关于虚假样本 x ^ \hat x x^的相同损失项。 L D f \mathcal L^f_D LDf。它们的梯度相对于 x ^ \hat x x^可以分别表示为 ∇ x ^ L D = ∇ x ^ L D f 和 ∇ x ^ L G = − ∇ x ^ L D f ∇_{\hat x}\mathcal L_D = ∇_{\hat x}\mathcal L^f_D和∇_{\hat x}\mathcal L_G =-∇_{\hat x}L^f_D x^LD=x^LDfx^LG=x^LDf。我们可以从 ∇ x ^ L D ∇_{\hat x}\mathcal L_D x^LD中得到 ∇ x ^ L G ∇_{\hat x}\mathcal L_G x^LG,只需将 ∇ x ^ L D ∇_{\hat x}\mathcal L_D x^LD乘以-1,然后从 ∇ x ^ L G ∇_{\hat x}\mathcal L_G x^LG中计算G的梯度w.r.t.参数。总之,我们可以用 ∇ x ^ L D ∇_{\hat x}\mathcal L_D x^LD来更新G的参数,而 ∇ x ^ L D ∇_{\hat x}\mathcal L_D x^LD是在训练D的过程中计算出来的。这种方法将对称GAN的训练从两个阶段简化为一个阶段。

猜你喜欢

转载自blog.csdn.net/weixin_37958272/article/details/119378760