论文阅读:High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs

Abstract


方法:

一种新的对抗性损失函数以及新颖的多尺度生成器和判别器架构,生成了2048×1024分辨率的图像。
加入了两个用于交互式视觉操作的新功能。

  1. 整合了对象实例分割信息,使得能够进行对象的操作,例如移除/添加对象以及更改对象类别。
  2. 提出了一种方法,在相同输入下生成多样化的结果,允许用户交互式地编辑对象外观。

1. Introduction


讨论了一种新的方法,产生高分辨率图像的语义标签映射。
首先仅通过对抗性训练获得结果,而不依赖任何手工制作的损失或预先训练的网络进行感知损失。
然后,如果预训练网络可用,则添加来自预训练网络的感知损失可以在某些情况下略微改善结果。
利用实例级对象分割信息,将同一类别内的不同对象实例进行分割。
提出了一种方法来生成不同的结果,给定相同的输入标签映射,允许用户交互编辑相同对象的外观。

2. Related Work


Generative adversarial networks(生成对抗网络):

旨在通过强制生成的样本与自然图像不可区分来模拟自然图像分布。

Image-to-image translation(图像到图像的转换):

在给定输入输出图像对作为训练数据的情况下,将输入图像从一个域翻译到另一个域。
基于感知损失的直接回归目标,并生成了第一个能够合成2048×1024图像的模型。(高分辨率)

Deep visual manipulation(深度视觉操作):

基于GANs学习的先验知识的对象外观编辑优化方法。
专注于对象级语义编辑,允许用户与整个场景交互并操纵图像中的单个对象。
系统允许更灵活的操作,并产生实时高分辨率的结果。

3. Instance-Level Image Synthesis


提出了一个条件对抗框架,用于从语义标签地图生成高分辨率照片真实感图像。

3.1 The pix2pix Baseline——像素到像素基准模型


生成器G的目标是将语义标签图转换为逼真的图像,而判别器D的目标是区分真实图像与生成的图像。
训练数据集是由对应图像对{(si, xi)}组成的,其中si是语义标签图,xi是对应的自然照片。
输入语义标签图的真实图像的条件分布:
min ⁡ G max ⁡ D L GAN ( G , D ) \min_G \max_D L_{\text{GAN}}(G, D) GminDmaxLGAN(G,D)
目标函数:
L GAN ( G , D ) = E ( s , x ) [ log ⁡ D ( s , x ) ] + E s [ log ⁡ ( 1 − D ( s , G ( s ) ) ) ] L_{\text{GAN}}(G, D) = \mathbb{E}_{(s, x)}[\log D(s, x)] + \mathbb{E}_s[\log(1 - D(s, G(s)))] LGAN(G,D)=E(s,x)[logD(s,x)]+Es[log(1D(s,G(s)))]
采用U-Net作为生成器,采用基于Patch的全卷积网络作为判别器。
输入判别器的是语义标签图和对应图像的逐通道拼接。

3.2 Improving Photorealism and Resolution——提高图片真实感和分辨率


Coarse-to-fine generator(粗糙到精细的生成器):

image.png
将生成器分解为两个子网络:G1 和 G2,生成器表示为一个元组 G = {G1, G2}。将 G1 称为全局生成器网络,将 G2 称为局部增强器网络。
全局生成器网络在 1024 × 512 的分辨率下运行,局部增强器网络输出的图像分辨率是前一网络输出的 4 倍(每个图像维度上增加 2 倍)。
为了生成更高分辨率的图像,可以使用额外的局部增强器网络。

全局生成器网络包含 3 个组件:卷积前端 G(F)1、一组残差块 G®1和反卷积后端 G(B)1。
局部增强器网络同样由 3 个组件组成:卷积前端 G(F)2、一组残差块 G®2 和反卷积后端 G(B)2。

G1 输入分辨率为 1024 × 512 的语义标签图,输出分辨率为 1024 × 512 的图像。
G2 输入分辨率为 2048 × 1024 的语义标签图,输入到残差块 G®2 的特征图是两个特征图的逐元素和:G(F)2 的输出特征图和全局生成网络 G(B)1 后端的最后一个特征图。这有助于将来自 G1 的全局信息整合到 G2 中,有效地整合全局和局部信息。

Multi-scale discriminators(多尺度判别器):

使用 3 个判别器,它们的网络结构相同,但在不同的图像尺度上运行,称为 D1、D2 和 D3。
将真实和合成的高分辨率图像分别按 2 倍和 4 倍的比例进行下采样,创建一个包含 3 个尺度的图像金字塔。
判别器 D1、D2 和 D3 分别在这 3 个不同的尺度上训练,以区分真实图像和合成图像。
运行在最粗尺度的判别器具有最大的感受野,对图像有更全局的视角,能够引导生成器生成全局一致的图像。
运行在最细尺度的判别器则专注于引导生成器生成更精细的细节。
这使得训练粗到细生成器变得更容易,因为将低分辨率模型扩展到更高分辨率只需在最细级别添加一个额外的判别器,而不必从头开始训练。

加入判别器后的公式:
min ⁡ G max ⁡ D 1 , D 2 , D 3 ∑ k = 1 3 L G A N ( G , D k ) \min_G \max_{D_1, D_2, D_3} \sum_{k=1}^{3} \mathcal{L}_{GAN}(G, D_k) GminD1,D2,D3maxk=13LGAN(G,Dk)

Improved adversarial loss(改进的对抗损失):

在 GAN 损失中加入基于鉴别器的特征匹配损失来改进损失函数。
从判别器的多个层中提取特征,并学习匹配这些来自真实图像和合成图像的中间表示。
特征匹配损失 L F M ( G , D k ) L_{FM}(G, Dk) LFM(G,Dk) 为:
L F M ( G , D k ) = E ( s , x ) ∑ i = 1 T 1 N i [ ∥ D k ( i ) ( s , x ) − D k ( i ) ( s , G ( s ) ) ∥ 1 ] L_{FM}(G, D_k) = \mathbb{E}_{(s, x)} \sum_{i=1}^{T} \frac{1}{N_i} \left[ \left\| D^{(i)}_k(s, x) - D^{(i)}_k(s, G(s)) \right\|_1 \right] LFM(G,Dk)=E(s,x)i=1TNi1[ Dk(i)(s,x)Dk(i)(s,G(s)) 1]
判别器 Dk 的第 i 层特征提取器表示为 D ( i ) k D(i)_k D(i)k(从输入到 Dk 的第 i 层),T 是总层数, N i N_i Ni​ 表示每层中的元素数量。
GAN 判别器特征匹配损失与感知损失相关。
整体目标将 GAN 损失和特征匹配损失结合为:
min ⁡ G ( max ⁡ D 1 , D 2 , D 3 ∑ k = 1 , 2 , 3 L G A N ( G , D k ) + λ ∑ k = 1 , 2 , 3 L F M ( G , D k ) ) \min_G \left( \max_{D_1, D_2, D_3} \sum_{k=1,2,3} L_{GAN}(G, D_k) + \lambda \sum_{k=1,2,3} L_{FM}(G, D_k) \right) Gmin D1,D2,D3maxk=1,2,3LGAN(G,Dk)+λk=1,2,3LFM(G,Dk)
λ 控制两个项的相对重要性。对于特征匹配损失 L F M L_{FM} LFM​, D k D_k Dk​ 仅作为特征提取器,并不优化损失 L F M L_{FM} LFM​。

3.3 Using Instance Maps——使用实例级映射


现有的图像合成方法仅使用语义标签图,这种图像中每个像素值表示该像素所属的对象类别。这个图像不能区分同一类别的不同对象。
实例级语义标签图包含每个独立对象的唯一对象 ID。

结合实例图方法:
直接将其传递到网络中或将其编码为一个独热向量。难实现。
为每个类别预分配一个固定数量的通道。但当数量设置得过小或过大时都会出现问题:数量过小时无法覆盖所有对象,数量过大时则浪费内存。

实例图提供的最重要的信息是对象边界。
image.png
实例边界图中如果对象 ID 与任何 4 个邻域的对象 ID 不同,设像素为 1,否则为 0。
然后,将实例边界图与语义标签图的独热向量表示进行连接,并输入到生成器网络中。
同样,判别器的输入是实例边界图、语义标签图和真实/合成图像的通道级连接。

3.4 Learning an Instance-level Feature Embedding——学习实例级特征嵌入


image.png
为图像中的每个实例添加额外的低维特征通道作为生成器的输入。
通过操控这些特征,可以对合成过程进行灵活控制。
由于添加的特征是连续量,模型在原则上能够生成无限多的图像。

训练一个编码器 E 来学习一个与真实图像对应的特征图。
为了使每个实例中的特征一致,在编码器的输出上添加了一个实例级的平均池化层。
然后,将平均特征广播到同一实例的所有像素位置。
获取特征图 E(x) 后,在 Eq. (4) 中用 G(s, E(x)) 替代 G(s),通过将标签图 s 和 E(x) 连接起来,并将编码器与生成器一起端到端地训练,这使得编码器能够捕捉生成器使用的最具代表性的特征。

在推理时进行交互式编辑时,编码器训练完成后,首先在训练图像中的所有实例上运行它,并记录获得的特征。
对这些特征进行 K-means 聚类,以每个语义类别为单位,每个聚类编码了特定风格的特征。
在推理时,随机选择一个聚类中心并使用它作为编码特征。

4. Results


Implementation details(实现细节):

权重 λ 设置为 10 , K-means 的 K 设置为 10。
使用三维向量来编码每个对象实例的特征。
在目标函数中添加感知损失:
λ ∑ i = 1 N 1 M i [ ∥ F ( i ) ( x ) − F ( i ) ( G ( s ) ) ∥ 1 ] \lambda \sum_{i=1}^{N} \frac{1}{M_i} \left[ \lVert F^{(i)}(x) - F^{(i)}(G(s)) \rVert_1 \right] λi=1NMi1[F(i)(x)F(i)(G(s))1]
λ = 10,F(i) 表示 VGG 网络的第 i 层,具有 Mi 个元素。
将这两种变体命名为“ours”和“ours (w/o VGG loss)”。

Datasets(数据集):

Cityscapes 数据集
NYU Indoor RGBD 数据集
ADE20K 数据集
Helen Face 数据集

Baselines(基准模型):

pix2pix
CRN

4.1 Quantitative Comparisons——定量比较


对合成图像进行语义分割,并比较预测的分割结果与输入的匹配程度。
分割准确率:
image.png

4.2 Human Perceptual Study——人的感知实验


AMT平台
Cityscapes 数据集

Unlimited time(无限时间):

image.png

Limited time(有限时间):

image.png
合成结果示例:
image.png

Analysis of the loss function(损失函数分析):

GAN 损失、基于鉴别器的特征匹配损失和 VGG 感知损失。
添加特征匹配损失显著提高了性能,而添加感知损失进一步增强了结果。

Using instance maps(使用实例图):

使用实例图提高了结果的真实感。

Additional datasets(额外数据集):

image.png

image.png

Network architectures(网络架构):

粗糙到精细生成器和多尺度鉴别器都可以稳定 GAN 训练,并生成更具视觉吸引力的结果。

4.3 Interactive Object Editing——交互式对象编辑


在这里插入图片描述

更改图像中的对象标签,以快速创建新场景。
更改单个汽车的颜色,或改变道路的纹理。

image.png
更改面部颜色以模拟不同的化妆效果或在面部添加胡须。

5. Discussion and Conclusion


条件 GAN 能够合成高分辨率的逼真图像,而无需任何手工设计的损失函数或预训练网络。
加入感知损失可以略微改善结果。
在需要高分辨率结果但没有可用预训练网络的领域(如医学成像和生物学)中可能会非常有用。
图像到图像合成管道可以扩展以产生多样化的输出,并在适当的训练输入输出对下实现交互式图像操作。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ug871-vivado-high-level-synthesis-tutorial.pdf是有关Vivado高级综合教程的文档。该文档提供了使用Vivado高级综合工具的指南和教程,以帮助开发人员更高效地进行数字设计。 Vivado是赛灵思公司开发的综合工具套件,用于设计和实现数字电路。高级综合是一种将高级语言(如C或C++)转换为硬件描述语言(如VHDL或Verilog)的技术。它使开发人员能够使用更高级的语言进行设计,并将其转换为硬件电路,从而加快设计过程的速度。 在ug871-vivado-high-level-synthesis-tutorial.pdf中,开发人员将学习如何使用Vivado高级综合工具来创建和转换高级语言设计。文档以简单易懂的方式介绍了Vivado高级综合工具的基本概念和操作步骤。 该教程包含以下主要内容: 1. 介绍了高级综合的基本原理和优势,以及该技术可以加快设计速度的原因。 2. 解释了Vivado高级综合工具的功能和特点,以及如何进行安装和配置。 3. 提供了使用Vivado高级综合工具进行设计的具体步骤和操作指南。其中包括创建高级语言设计文件、设定综合目标和选项、运行综合和优化过程等。 4. 展示了如何生成和验证转换后的硬件电路,并进行仿真和测试。 5. 提供了一些示例案例,帮助开发人员更好地理解和应用Vivado高级综合工具。 通过学习和应用ug871-vivado-high-level-synthesis-tutorial.pdf中的内容,开发人员可以更有效地利用Vivado高级综合工具进行数字设计。这将使他们在开发过程中节省时间和精力,并且能够更快地实现设计目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值