WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型(三)

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型

1.2 SAGAN


跟踪图像中复杂的几何轮廓需要long-range dependencies(长距离依赖),但是,卷积的特点就是局部性,受到感受野大小的限制,卷积的操作很难提取到图像中的这些长距离依赖。虽然可以通过加深网络或者扩大卷积核的尺寸的方法在一定程度上解决该问题,但是这会使卷积网络丧失了其参数和计算的效率优势。SAGAN聚焦的问题就是:如何找到一种能够利用全局信息的方法,具体的,SAGAN把 Attention 机制引入到 GANs 的图像生成当中。



图1 SAGAN的自注意力模块。⊗表示矩阵乘法,对每一行进行softmax操作

SAGAN的架构如图1所示,其核心就是用带有自注意力的特征图去代替传统的卷积特征图,建模像素间的远距离关系,即在一层获取远距离的依赖关系而非多层卷积操作获得依赖关系。首先,图17中的f(x)、g(x)和 h(x)都是普通的 1x1 卷积,差别只在于输出通道大小不同(这是1x1 卷积的特性,可以通过控制1x1 卷积的通道数来实现特征通道的升维和降维。然后,将 f(x)的输出转置,并和 g(x)的输出相乘,再经过 softmax 归一化得到一个 attention map。最后,将得到的 attention map 和 h(x)逐像素点相乘,得到自适应注意力的特征图:

其中,γ是一个可学习的标量,初始化为0。γ允许网络首先依赖局部附近的线索,然后逐渐学会为非局部线索分配更大的权重。在SAGAN中,将自适应注意力模块同时应用于生成器和鉴别器,通过最小化 hinge version of the adversarial loss 以交替的方式进行训练。


SAGAN当中提出了两种优化方式以实现稳定训练的 GANs,分别是Spectral Normalization与TTUR(Two Timescale Update Rule),前者稳定了训练和生成过程,后者平衡了D与G的训练速度。

1)Spectral Normalization。SAGAN为D和G加入了谱范数归一化的方式,让D满足了1-lipschitz限制,同时也避免了G的参数过多导致梯度异常,使得整套训练较为平稳和高效。

2)TTUR。在以前的工作中,鉴别器的正则化通常会减慢GAN学习过程。实际上,使用正则化鉴别器的方法通常在训练期间每个生成器需要多个更新步骤。本文建议专门使用TTUR来补偿正则化鉴别器中慢学习的问题,使得对于每个鉴别器步骤使用更少的生成器步骤成为可能。


当前 SOTA!平台收录SAGAN共 43 个模型实现资源。

项目 SOTA!平台项目详情页
SAGAN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/sagan-2


1.3 BIG-GAN


BIG-GAN希望应对的是从像ImageNet这样的复杂数据集成功生成高分辨率、多样化的样本的问题。BIG-GAN的基线方法是SAGAN,它使用hinge损失,类别条件BatchNorm向G提供类别信息,用投影向D提供类别信息,通过调整网络提高GAN模型生成图像的真实性和多样性,同时,保证GAN模型的稳定性。

BIG-GAN的很多参数都是在SAGAN上调整的,batch size的大小为原来的8倍,将隐藏层的变量数量扩充到4倍以后,进行训练获得了很好的图片生成的效果。优化设置遵循SAGAN(特别是在G中使用谱范数)的修改,BIG-GAN将学习速率减半,在训练一个Step时训练D两次,训练G一次。



图2. (a) BigGAN的典型架构;(b) G中的残差块(ResBlock up);c)D中的残差块(ResBlock down)


由图2,在G中使用单一的共享类别嵌入,并跳过潜在向量z的连接(skip-z)。特别是,采用分层的潜在空间,使潜在向量z沿着其通道维度被分割成大小相等的块(图18的示例中是20-D),每个块被连接到共享类别嵌入,并作为调节向量传递给相应的残差块。每个块的调节被线性投影,以产生块的BatchNorm层的每个样本的增益和偏置。偏置投影以零为中心,而增益投影以1为中心。由于残差块的数量取决于图像分辨率,128×128图像的z全维度为120,256×256为140,而512×512的图像为160。



图3. (a) BigGAN-deep的典型架构。(b) G中的一个残差块(ResBlock up)。(c)D中的一个残差块(ResBlock down)


BigGAN-deep模型(图3)在几个方面与BigGAN不同。它使用了一个更简单的skip-z conditioning的变体:不是先将z分割成块,而是将整个z与类别的嵌入相连接,并通过skip connection将得到的向量传递给每个残差块。BigGAN-deep基于带有瓶颈的剩差块,其中包含两个额外的1×1卷积:第一个在3×3卷积之前将通道的数量减少了4倍;第二个产生所需的输出通道数量。在BigGAN中,每当需要改变通道数量时,都会在skip connection中使用1×1的卷积,而在BigGAN-deep中,使用了一种不同的策略,旨在保持整个skip connection的特性。在G中,如果需要减少通道的数量,只需保留第一组通道,并放弃其余的通道以产生所需的通道数量。在应该增加通道数量的D区,将输入通道不加扰动地通过,并与1×1卷积产生的剩余通道串联起来。就网络配置而言,鉴别器是发生器的精确反映。每个分辨率有两个块(BigGAN使用一个),因此BigGAN-deep比BigGAN深四倍。

当前 SOTA!平台收录 BIG-GAN 共 29 个模型实现资源。

项目 SOTA!平台项目详情页
BIG-GAN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/biggan


1.4  CSGAN

CSGAN是一种新的周期合成生成对抗网络,主要服务的目标是image-to-image transformation,在一个域合成图像和另一个域循环图像之间使用了一种新的目标函数循环合成损失(CS)。



图4. CSGAN的网络结构,用于图像-图像转换。本文提出的循环-合成损失是为了利用两个图像域中合成图像和循环图像之间的关系。因此,除了对抗性损失和循环一致性损失之外,还使用了循环合成损失来训练网络。对抗性损失用蓝色的矩形表示,它是在1)生成器G_AB和鉴别器D_B,以及2)生成器G_BA和鉴别器D_A之间计算的。循环一致性损失用黑色表示,为真实图像和循环图像之间的L1损失。循环-合成损失以红色显示,为合成图像和循环图像之间的L1损失


如图4所示,CSGAN方法的总体工作是将图像R_A从域A转化为B,并将其交给生成器网络G_AB,从而得到合成的图像S_ynB。将合成的图像S_ynB从域B转化为原域A,并将其交给生成器网络G_BA,得到循环的图像C_ycA。以同样的方式,来自B域的真实图像R_B首先被转换到A域作为合成图像S_ynA,然后通过使用生成器网络G_BA和G_AB分别转换回B域作为循环图像C_ycB。鉴别器网络D_A用于区分真实图像R_A和合成图像S_ynA。同样地,鉴别器网络D_B用于区分真实图像R_B和合成图像S_ynB。为了生成最接近真实图像的合成图像,它们之间的损失要最小化。这就意味着需要有高效的损失函数。CSGAN引入了一种新的损失函数循环合成损失(CS loss),它可以在降低伪影的情况下提高结果的质量:




其中,L_CSA是A域(即S_ynA和C_ycA之间)的循环合成损失,L_CSB是B域(即S_ynB和C_ycB之间)的循环合成损失。CSGAN方法的目标函数(L)结合了所提出的Cyclic-Synthesized损失与现有的Adversarial损失和Cycle-consistency损失,如下所示:







CSGAN的生成器网络由3个卷积层、9个残差块和3个去卷积层组成,使用实例归一化,而不是批量归一化。源域中256×256维的输入图像输入到网络。该网络通过一系列的下卷积和上卷积,将256×256的图像保留在另一个域中。鉴别器网络是一个70×70的PatchGAN,由4个卷积层组成,每个卷积层都是convolution-instance-norm-swing-ReLU的序列,然后是1个卷积层,产生1维的输出。鉴别器网络采用256×256维度的图像,输出为表征图像真假的概率(即0代表假,1代表真)。斜率为0.2的Leaky ReLUs被用作鉴别器网络的激活函数。


当前 SOTA!平台收录 CSGAN共 1 模型实现资源。

项目 SOTA!平台项目详情页
CSGAN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/csgan


1.5 LOGAN

LOGAN是一种受CSGAN启发的潜在优化(latent optimisation),核心思想是加强鉴别器和生成器之间的交互来改善对抗性。如图5,首先,令潜在变量z通过生成器和鉴别器进行前向传播。然后,用生成器损失(红色虚线箭头)的梯度来计算改进的z’。在第二次前向传播中,使用优化后的z’。其后,引入潜在优化计算鉴别器的梯度。最后,用这些梯度来更新模型。


图5. LOGAN示意图。首先计算一个通过G和D的前向传递,有一个 sampled latent z,然后,使用来自生成器损失的梯度(红色虚线箭头)来计算一个改进的latent z’。在第二次正向传递中使用这个改进的latent后,通过latent优化计算出鉴别器的梯度,返回到模型参数θ_D、θ_G中


LOGAN的完整计算过程见下述Algorithm 1:



当前 SOTA!平台收录 LOGAN 共 2 个模型实现资源。

项目 SOTA!平台项目详情页
LOGAN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/logan-ngd


1.6  UNet-GAN


GANs面临的主要挑战之一是:生成全局和局部一致的图像,使得其物体形状和纹理与真实图像无法区分。UNet-GAN是一个致力于解决这一问题的基于U-Net的替代性鉴别器架构。基于U-Net的架构允许向生成器提供 per-pixel反馈,同时通过提供全局图像反馈,保持生成图像的全局一致性。在鉴别器的per-pixel 响应支持下,进一步提出了一种基于CutMix数据增强的per-pixel 一致性正则化技术,鼓励U-Net鉴别器更加关注真实和虚假图像之间的语义和结构变化。



图6. U-Net GAN。U-Net鉴别器在全局和局部per-pixel层面对输入图像进行分类。由于编码器和解码器之间的skip connections(虚线),输出层的通道既包含高层次信息也包含低层次信息。解码器输出中较亮的颜色表征鉴别器对像素是真实的信任程度(颜色越暗表征越怀疑是假的)

Unet-GAN通过重复使用原鉴别器分类网络的构件作为编码器部分,以及生成器网络的构件作为解码器部分,来扩展鉴别器形成一个U-Net,即,鉴别器现在由原来的下采样网络和一个新的上采样网络组成。这两个模块通过一个瓶颈连接,以及,从编码器和解码器模块复制和串联特征图的skip connections。将分类器表征为D^U。原始的D(x)将输入的图像x分类为真实和虚假,而U-Net鉴别器D^U(x)则在per-pixel层面额外执行这种分类处理,将图像x分割为真实和虚假区域,同时还有来自编码器的x的原始图像分类。这使鉴别器能够学习真实和虚假图像之间的全局和局部差异。把鉴别器的原始编码器模块称为(D^U)_enc,把引入的解码器模块称为(D^U)_dec。现在,新的鉴别器损失可以通过从(D^U)_enc和(D^U)_dec中获取决策来计算:




(D^U)_dec的这些per-pixel输出是基于来自高级特征的全局信息,通过瓶颈的上采样过程实现的,以及来自低级特征的更多局部信息,由编码器网络中间层的skip-connection介导的。最终生成器的目标函数为:



进一步,提出了D^U鉴别器的一致性正则化,鼓励解码器模块(D^U)_dec在真实和虚假样本的CutMix转换下输出等值预测值。图7中展示了CutMix的增强策略和D^U的预测。


图7. CutMix增强和U-Net鉴别器对CutMix图像的预测的可视化。第一行:真实和虚假的样本。第二行和第三行:采样的真/假CutMix比率r和相应的二进制掩码M(颜色代码:白色为真,黑色为假)。第四行:从真实和虚假样本中生成的CutMix图像。第5行和第6行:相应的真/假D^U的分割图及其预测的分类分数

具体的,通过将x和G(z)∈RW×H×C与掩码M混合,为鉴别器D^U合成一个新的训练样本x˜



鉴于CutMix操作,训练鉴别器通过在鉴别器目标中引入一致性正则化损失项,以提供一致的per-pixel预测:




最终生成器的目标函数为:



当前 SOTA!平台收录 UNet-GAN 共 1 模型实现资源。

项目 SOTA!平台项目详情页
UNet-GAN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/u-net-gan



相关文章
|
机器学习/深度学习 编解码 PyTorch
使用Pytorch实现频谱归一化生成对抗网络(SN-GAN)
自从扩散模型发布以来,GAN的关注度和论文是越来越少了,但是它们里面的一些思路还是值得我们了解和学习。所以本文我们来使用Pytorch 来实现SN-GAN
204 0
|
6月前
|
机器学习/深度学习 编解码 算法框架/工具
使用Python实现深度学习模型:图像超分辨率与去噪
【7月更文挑战第17天】 使用Python实现深度学习模型:图像超分辨率与去噪
172 4
|
8月前
|
人工智能 计算机视觉
论文介绍:MDTv2——提升图像合成能力的掩码扩散变换器
【5月更文挑战第18天】MDTv2是掩码扩散变换器的升级版,旨在增强图像合成模型DPMs处理语义关系的能力。通过掩码操作和不对称扩散变换,MDTv2能学习图像的完整语义信息,提升学习效率和图像质量。MDTv2采用优化的网络结构和训练策略,如长快捷方式、密集输入和时间步适应损失权重,实现SOTA性能,FID分数达到1.58,训练速度比DiT快10倍。尽管计算成本高和泛化能力待验证,MDTv2为图像合成领域开辟了新方向。[链接: https://arxiv.org/abs/2303.14389]
216 1
如何使用变分自编码器进行图像生成
如何使用变分自编码器进行图像生成
103 0
|
机器学习/深度学习 自动驾驶 定位技术
【论文解读】SMOKE 单目相机 3D目标检测(CVPR2020)
 SMOKE是一种用于自动驾驶的实时单目 3D 物体检测器。为什么会注意这边文章呢?是因为这两天发布的百度Apollo 7.0 的摄像头障碍物感知,也是基于这个模型改进的;于是令我产生了一些兴趣。
497 0
|
机器学习/深度学习 自然语言处理 算法
WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型(二)
WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型(二)
207 0
|
机器学习/深度学习 人工智能 搜索推荐
WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型(四 )
WGAN、CSGAN、ADC-GAN…你都掌握了吗?一文总结图像生成必备经典模型
283 0
|
机器学习/深度学习 编解码 算法
DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了吗?一文总结图像分割必备经典模型(二)(1)
DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了吗?一文总结图像分割必备经典模型(二)
188 0
|
机器学习/深度学习 人工智能 搜索推荐
DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了吗?一文总结图像分割必备经典模型(二)(2)
DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了吗?一文总结图像分割必备经典模型(二)
406 0
|
机器学习/深度学习 编解码 算法
CVPR 2023 | IGEV-Stereo & IGEV-MVS:双目立体匹配网络新SOTA!
CVPR 2023 | IGEV-Stereo & IGEV-MVS:双目立体匹配网络新SOTA!
808 0

热门文章

最新文章

相关实验场景

更多