【论文阅读笔记】Taming Transformers for High-Resolution Image Synthesis

news2024/11/16 13:44:50

Taming Transformers for High-Resolution Image Synthesis

  • 记录
  • 前置知识
  • Abstract
  • Introduction
  • Related Work
  • Method
    • Learning an Effective Codebook of Image Constituents for Use in Transformers
    • Learning the Composition of Images with Transformers
      • 条件合成
      • 合成高分辨率图像
  • 实验
    • Attention Is All You Need in the Latent Space
    • A Unified Model for Image Synthesis Tasks
      • 高分辨率合成
    • Building Context-Rich Vocabularies、
    • Benchmarking Image Synthesis Results
      • Class-Conditional Synthesis on ImageNet
  • 结论
  • 附录

  • paper:https://arxiv.org/abs/2012.09841
  • code:https://github.com/CompVis/taming-transformers.git
  • affiliation:德国海德堡大学图像处理实验室 CompVis
  • project:https://compvis.github.io/taming-transformers

记录

简单来说就是使用VQGAN对图像进行压缩为离散的序列(存储于codebook),在codebook空间训练了一个基于transformer的自回归模型。
充分利用了CNN对于图像的编码能力和局部感知,再通过transformer建模每个局部的全局关系。减少了transformer随图片分辨率增长导致的平方倍内存消耗和计算需求。
在这里插入图片描述

前置知识

在这里插入图片描述

Abstract

  1. 旨在学习序列数据的远程交互,transformer继续在各种任务中展示最先进的结果。与 CNN 相比,它们不包含优先考虑局部交互的归纳偏差。这使得它们具有表现力,但对于长序列(如高分辨率图像)也在计算上是不可行的。
  2. 我们演示了如何将cnn的归纳偏差与变压器的表达能力相结合,使它们能够建模,从而合成高分辨率图像。
  3. 我们展示了如何 (i) 使用 CNN 来学习图像成分的上下文丰富的词汇
  4. 进而 (ii) 利用transformer有效地对它们在高分辨率图像中的组成进行建模。
  5. 我们的方法可以很容易地应用于条件合成任务,其中非空间信息,如对象类和空间信息,如分割,都可以控制生成的图像。特别是,我们展示了使用变压器语义引导合成百万像素图像的第一个结果。

Introduction

  1. transformer表达能力的提高伴随着对计算资源的提高,这在合成百万像素图像上带来了挑战
  2. 作者假设low level图像结构可以用CNN架构很好地描述,但在更高语义层面上失效。此外,还提到了CNN表现出强烈的局部偏见和空间不变性的偏见,这使它们在需要更全面理解输入时变得无效。
  3. 我们获得有效和富有表现力的模型的关键见解是,将卷积和转换器架构一起建模我们的视觉世界的组合性质
    • 使用CNN来有效地学习上下文丰富的视觉部分的codebook,然后Transformer学习它们的全局组合模型
    • 利用对抗性方法来确保局部部分的字典捕获了感知上重要的局部结构,以减轻使用 Transformer 架构对低级统计数据进行建模的需要
    • 允许变压器专注于其独特的优势来建模远程关系
    • 可通过调节有关所需对象类或空间布局的信息来直接控制生成的图像
    • 最后,实验表明,我们的方法优于以前基于codebook的基于卷积架构的最先进方法,保留了Transformer的优势

Related Work

  1. Transformer在序列化任务中考虑全局取得了SOTA,但开销随着序列的长度线性增长,面对图像力不从心
  2. CNN考虑局部,产生严重的归纳偏执,本文结合Transformer和CNN的优势进行建模
  3. 介绍了类似的二阶段方法,首先学习数据的编码,然后在第二阶段学习这种编码的概率模型

Method

高分辨率图像合成需要一个模型来理解图像的全局组合,使其能够生成局部逼真和全局一致的模式。

在这里插入图片描述
我们的方法使用卷积神经网络VQGAN来学习上下文丰富的视觉部分的码本,其组合随后使用自回归transormer架构建模。
离散码本提供了这些体系结构和基于补丁的鉴别器之间的接口,可以在保持高感知质量的同时实现强大的压缩。
该方法引入CNN提高了基于transormer的高分辨率图像合成的效率。

Learning an Effective Codebook of Image Constituents for Use in Transformers

  1. 直观理解,提前设定了一个长度为 n z n_z nz,数量为 K K K的codebook存储离散编码;对输入图像(HW3)使用VQGAN的encoder得到当前的编码 z ^ \hat{z} z^(hw n z n_z nz);根据最近邻搜索codebook中的离散编码并替换得到 z q z_q zq(hw n z n_z nz),经过decoder得到输出 x ^ \hat{x} x^
    note: 实际替换的公式: z q = z + ( z q − z ) . d e t a c h ( ) z_q = z + (z_q-z).detach() zq=z+(zqz).detach(),将解码器输入 z q z_q zq的梯度复制到编码器输出 z z z
    loss定义为:
    L V Q ( E , G , Z ) = ∥ x − x ^ ∥ 2 + ∥ sg ⁡ [ E ( x ) ] − z q ∥ 2 2 + β ∥ sg ⁡ [ z q ] − E ( x ) ∥ 2 2 \begin{aligned} \mathcal{L}_{\mathrm{VQ}}(E, G, \mathcal{Z})=\|x-\hat{x}\|^{2} & +\left\|\operatorname{sg}[E(x)]-z_{\mathbf{q}}\right\|_{2}^{2} \\ & +\beta\left\|\operatorname{sg}\left[z_{\mathbf{q}}\right]-E(x)\right\|_{2}^{2} \end{aligned} LVQ(E,G,Z)=xx^2+sg[E(x)]zq22+βsg[zq]E(x)22
  • 第一项约束图像层面的重建loss
  • 第二项根据VAVAEVQ 目标使用 l2 误差将嵌入向量 z_q 移动到编码器输出z
  • 第三项由于嵌入空间的体积是无量纲的,如果嵌入 z q z_q zq不像编码器参数那样快地训练,它可以任意增长。为了确保编码器嵌入并且其输出不会增长,我们添加了一个承诺损失。(我理解是限制编码器的更新速度,确保每一次encode的编码能够找到codebook中的编码,还望大佬请教)

解码器仅优化第一个损失项,编码器优化第一个和最后一个损失项,嵌入 z q z_q zq由中间损失项优化。

  1. 为了获得感知丰富的codebook,添加了GAN对抗性loss和感知LPIPSloss来替换一般的mse重建loss
    ganloss的权重自适应:

L G A N ( { E , G , Z } , D ) = [ log ⁡ D ( x ) + log ⁡ ( 1 − D ( x ^ ) ) ] \mathcal{L}_{\mathrm{GAN}}(\{E, G, \mathcal{Z}\}, D)=[\log D(x)+\log (1-D(\hat{x}))] LGAN({E,G,Z},D)=[logD(x)+log(1D(x^))]

Q ∗ = arg ⁡ min ⁡ E , G , Z max ⁡ D E x ∼ p ( x ) [ L V Q ( E , G , Z ) + λ L G A N ( { E , G , Z } , D ) ] \begin{aligned} \mathcal{Q}^{*}=\underset{E, G, \mathcal{Z}}{\arg \min } \max _{D} \mathbb{E}_{x \sim p(x)}\left[\mathcal{L}_{\mathrm{VQ}}(E, G, \mathcal{Z})\right. \\ \left.+\lambda \mathcal{L}_{\mathrm{GAN}}(\{E, G, \mathcal{Z}\}, D)\right] \end{aligned} Q=E,G,ZargminDmaxExp(x)[LVQ(E,G,Z)+λLGAN({E,G,Z},D)]

λ = ∇ G L [ L r e c ] ∇ G L [ L G A N ] + δ \lambda=\frac{\nabla_{G_{L}}\left[\mathcal{L}_{\mathrm{rec}}\right]}{\nabla_{G_{L}}\left[\mathcal{L}_{\mathrm{GAN}}\right]+\delta} λ=GL[LGAN]+δGL[Lrec]

Learning the Composition of Images with Transformers

图像经过encoder之后的编码在codebook中对应的索引假设为s。在选择索引的某种排序后(对应着图像encoder后的编码),图像生成可以表述为自回归下一个索引预测

  1. 给定索引 s<i,转换器学习预测可能的下一个索引的分布,即 p(si|s<i) 。
  2. 将完整表示的可能性计算为 p(s) = ∏i p(si|s<i)。这使我们能够直接最大化数据表示的对数似然:
    L Transformer  = E x ∼ p ( x ) [ − log ⁡ p ( s ) ] \mathcal{L}_{\text {Transformer }}=\mathbb{E}_{x \sim p(x)}[-\log p(s)] LTransformer =Exp(x)[logp(s)]

条件合成

任务是在给定此信息 c 的情况下学习序列的可能性:

p ( s ∣ c ) = ∏ i p ( s i ∣ s < i , c ) p(s \mid c)=\prod_{i} p\left(s_{i} \mid s_{<i}, c\right) p(sc)=ip(sis<i,c)

如果条件信息 c 具有空间范围,我们首先学习另一个 VQGAN 再次获得基于索引的表示 r ∈ {0,…, |Zc|−1}hc ×wc 与新获得的码本 Zc 由于变压器的自回归结构,我们可以简单地将 r 前置到 s 并将负对数似然的计算限制为条目 p(si|s<i, r)。

合成高分辨率图像

在这里插入图片描述
为了生成百万像素范围内的图像,因此我们必须处理补丁和裁剪图像,以在训练期间将 s 的长度限制为最大可行的大小。为了对图像进行采样,我们以滑动窗口的方式使用Transformer。
我们的VQGAN 确保可用的上下文仍然足以忠实地对图像进行建模,只要数据集的统计数据近似空间不变或空间条件信息可用。

实验

我们通常设置|Z|=1024,并训练所有后续的transformers模型来预测长度为16·16的序列

Attention Is All You Need in the Latent Space

transormers在很多任务上包括自回归图像生成取得了sota,那么现在的结构是否还能保证比CNN更强?

在这里插入图片描述
相比于SOTA的卷积自回归方法,相同epochs或者相同时间下的Transformer取得了更的负对数似然

A Unified Model for Image Synthesis Tasks

考察有条件生成,使用了类标签或分割图等附加信息c,目标是学习如式 p ( s ∣ c ) = ∏ i p ( s i ∣ s < i , c ) p(s \mid c)=\prod_{i} p\left(s_{i} \mid s_{<i}, c\right) p(sc)=ip(sis<i,c)所述的图像分布。

(i):语义图像合成,我们以ADE20K[72]、网络抓取景观数据集(S-FLCKR)和COCO-Stuff的语义分割掩码为条件。结果如图4、5和图6所示。

(ii):结构到图像,我们使用深度或边缘信息从 RIN 和 IN 合成图像(参见第 4.1 节)。得到的深度图像和边缘到图像转换如图4和图6所示。

(iii):姿势引导合成:图 4 显示了与之前实验相同的方法可用于在 DeepFashion 数据集上构建形状条件生成模型,而不是使用分割或深度图的语义丰富的信息。

(iv):随机超分辨率,其中低分辨率图像用作条件信息,从而进行上采样。我们在 ImageNet 上训练我们的模型上采样因子为 8,结果如图 6 所示。

(v):类条件图像合成:在这里,条件信息 c 是描述感兴趣类标签的单个索引。RIN 数据集的条件采样结果如图 4 所示。

在这里插入图片描述
在这里插入图片描述

高分辨率合成

第3.2节介绍的滑动窗口方法使图像合成超出256 × 256像素的分辨率。我们在LSUN-CT和FacesHQ上的无条件图像生成上评估我们的方法(见第4.3节),并在DRIN、COCO-Stuff和S-FLCKR上进行条件合成,我们在图1、6和补充中显示了结果(图17-27)。请注意,这种方法原则上可以用于生成任意比率和大小的图像,因为感兴趣的数据集的图像统计信息大致是空间不变的,或者空间信息是可用的。通过将该方法应用于S-FLCKR上语义布局的图像生成,可以获得令人印象深刻的结果,其中m = 5可以学习强VQGAN,使其码本和条件信息为变压器提供了足够的上下文,用于百万像素区域的图像生成。

Building Context-Rich Vocabularies、

为了研究这个问题,我们进行了 Transformer 架构保持固定的实验,而编码到第一阶段表示的上下文数量通过我们的 VQGAN 的下采样块的数量而变化。

  1. 我们根据图像输入和结果表示之间的边长的减少因子来指定编码的上下文量,即将大小为 H × W 的图像编码为大小为 H/f × W/f 的离散代码的第一阶段用因子 f 表示。对于 f = 1,我们重现的方法,并用 k = 512 的 RGB 值的 k-means 聚类替换我们的 VQGAN。在训练期间,我们总是裁剪图像以获得变压器大小为 16 × 16 的输入,即在第一阶段用因子 f 对图像进行建模时,我们使用大小为 16f × 16f 的裁剪。为了从模型中采样,我们总是以滑动窗口的方式应用它们,如第 3 节所述。

图7显示了FacesHQ上人脸无条件合成的结果,CelebA-HQ和FFHQ的组合。它通过增加变压器的有效感受野清楚地展示了强大的VQGAN的好处。对于小感受野,或者等效地小 f ,模型无法捕获连贯的结构。对于f = 8的中间值,可以近似图像的整体结构,但出现了半胡须脸和图像不同部位视点等面部特征的不一致。只有我们的完整模型off = 16可以合成高保真样本。对于 S-FLCKR 的条件设置中的类似结果,我们参考附录(图 10 和 Sec. B)。

在这里插入图片描述

为了定量评估我们方法的有效性,我们比较了**直接在像素上训练转换器的结果,并在具有固定计算预算的 VQGAN 潜在代码之上对其进行训练。**学习 CIFAR10 上 512 个 RGB 值字典,直接在像素空间上操作,并在我们的 VQGAN 之上训练相同的变压器架构,潜在代码大小为 16 × 16 = 256。我们观察到 FID 的改进为 18.63%,图像采样速度快 14.08×。

Benchmarking Image Synthesis Results

在这里插入图片描述
在这里插入图片描述

Class-Conditional Synthesis on ImageNet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论

本文解决了以前将transformer限制在低分辨率图像中的基本挑战。我们提出了一种将图像表示为感知丰富的图像成分的组合的方法,从而克服了直接在像素空间中建模图像时不可行的二次复杂度。使用 CNN 架构及其与 Transformer 架构的组合建模成分利用了它们互补优势的全部潜力,从而允许我们使用基于转换器的架构表示高分辨率图像合成的第一个结果。在实验中,**我们的方法通过合成百万像素范围内的图像,证明了CNN归纳偏差和transformer的表达能力,并优于最先进的卷积方法。**配备了条件合成的一般机制,它为新的神经渲染方法提供了许多机会。

附录

40页的俘虏就不摆放啦,做了非常多的实验,可以细看论文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1429317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ESP32 IDF]web server

目录 通过web server控制LED 核心原理解析 分区表 web server的使用 错误Header fields are too long的解决 通过web server控制LED 通过网页控制LED灯的亮灭&#xff0c;一般的ESP32开发板都可以实现&#xff0c;下面这篇文章是国外开发者提供的一个通过web server控制…

进程间通信的7种方式以及优点

七种通信方式为有名管道、无名管道、信号、消息队列、共享内存、信号灯集、套接字。 无名管道&#xff1a; 无名管道是没有名字的管道&#xff0c;是一个特殊的文件。 因为没有名字只能进行亲缘进程之间进行通信&#xff0c;也可以自己和自己进行通信。 无名管道打开会开启两个…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具&#xff1a;安装宝塔面板服务器至少一台、域名一个 前端&#xff1a;生成dist文件&#xff08;前端运行build命令&#xff09; 后端&#xff1a;生成jar包&#xff08;maven运行package命令&#xff09; 准备&#xff1a; 打开宝塔面板&#xff0c;点击进入软…

断电保持霍尔传感器

断电保持霍尔传感器的工作原理 断电保持霍尔传感器是一种利用变压器或共振电路的检测元件&#xff0c;通过检测物体与探头之间的物理距离控制电路的开关状态&#xff0c;从而实现对物体位置和状态的监测。该开关可以通过调试和校准以满足不同场合的要求。 断电保持霍尔传感器控…

【LeetCode】每日一题 2024_1_31 找出不同元素数目差数组(数组/哈希)

文章目录 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01;题目&#xff1a;找出不同元素数目差数组题目描述代码与解题思路 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 1 月的最后一天&#xff0c;每日一题又坚持了一个月呀 题目&#xff…

编程实例分享,电玩城计时电玩店计时收费管理系统软件,可以控制电视电源计时程序

编程实例分享&#xff0c;电玩城计时电玩店计时收费管理系统软件&#xff0c;可以控制电视电源计时程序 一、前言 以下教程以 佳易王电玩店计时计费软件V18.0为例说明&#xff0c;软件程序下载可以点击最下方官网卡片 如上图&#xff0c;开始计时图片改变&#xff0c;并记录…

智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

随着2024年春运帷幕的拉开&#xff0c;不少人的返乡之旅也即将开启&#xff0c;从这几日的新闻来看&#xff0c;高速上一路飘红。伴随恶劣天气&#xff0c;加上激增的车流&#xff0c;极易导致高速瘫痪&#xff0c;无法正常使用。为解决此问题&#xff0c;助力高速高效运营&…

K8s 集群可观测性-数据分流最佳实践

简介 在微服务架构下&#xff0c;一个 k8s 集群中经常会部署多套业务&#xff0c;同时也意味着不同团队、不同角色、不同的业务会在同一集群中&#xff0c;需要将不同业务的数据在不同的空间进行管理和查看。 在传统的主机环境下&#xff0c;这个是可以通过不同的主机部署 Da…

C语言项目---贪吃蛇

目录 一 、知识铺垫1.win32API介绍 二、贪吃蛇的数据结构的设计1.整体框架2.初始化界面3.贪吃蛇的运行4.游戏的退出 三、整体代码 一 、知识铺垫 贪吃蛇涉及的知识&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、win32API等 1.win32API介绍 Windows…

vue项目在线预览和下载文档

在线预览&#xff1a;利用微软提供的Office Online平台&#xff0c;即可实现在线预览doc、ppt、excel等文档。 地址为&#xff1a;https://view.officeapps.live.com/op/view.aspx 下载&#xff1a;若要实现下载功能&#xff0c;直接将url赋值给a标签的href属性即可 下载实现方…

如何从电脑恢复已删除的文件

意外删除文件可能会导致噩梦般的场景。即使文件被故意删除&#xff0c;您仍然可能需要恢复文件的过去草稿或版本。值得庆幸的是&#xff0c;有多种方法可以恢复电脑上已删除的文件&#xff0c;无论是否花钱。以下是四种最常见的已删除文件恢复方法。 如何从电脑恢复已删除的文件…

移动端常见布局

单独移动端页面&#xff08;主流&#xff09; 1&#xff0c;流式布局&#xff08;百分比布局&#xff09; 流式布局&#xff0c;就是百分比布局&#xff0c;也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩&#xff0c;不受固定像素的限制&#x…

第二十四天| 77. 组合

Leetcode 77. 组合 题目链接&#xff1a;77 组合 题干&#xff1a;给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。 思考&#xff1a;回溯法。把回溯法的搜索过程抽象为树形结构。 每次从集合中选取元素&#xff0…

京东广告算法架构体系建设--大规模稀疏场景高性能训练方案演变

一、前言 京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级&#xff0c;回顾近几年大致经历了两次大版本的方案架构演变。第一阶段&#xff0c;随着2016年Tensorflow训练框架的开源&#xff0c;业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和…

Android之命令行烧写OTA镜像(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

MySQL 备份恢复

1.1 MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了。 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数…

算法设计与分析实验:动态规划与回溯

目录​​​​​​​ 一、编辑距离 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、买卖股票的最佳时机 2.1 具体思路 2.2 思路展示 2.3 代码实现 2.4 复杂度分析 2.5 运行结果 三、单词拆分 3.1 具体思路 3.2 思路展示 3.3 代码实现…

【Nginx】Ubuntu如何安装使用Nginx反向代理?

文章目录 使用Nginx反向代理2个web接口服务步骤 1&#xff1a;安装 Nginx步骤 2&#xff1a;启动 Nginx 服务步骤 3&#xff1a;配置 Nginx步骤 4&#xff1a;启用配置步骤 5&#xff1a;检查配置步骤 6&#xff1a;重启 Nginx步骤 7&#xff1a;访问网站 proxy_set_header 含义…

Qt程序设计-左侧菜单栏实现

创建项目,在窗体左侧添加widget,右侧上面添加容器,容器里添加label、和关闭按钮,添加stackedwidget。 widget处理 widget里面添加几个toolButton按钮,按需添加,本例子添加4个,一个弹簧verticalSpacer 将几个按钮添加到同一个按钮组。 stackedwidget stackedwidge…

无人机激光雷达标定板

机载激光雷达标定板是用于校准和验证机载激光雷达系统的设备。由于机载激光雷达系统在测量地形、建筑物和植被等方面具有广泛的应用&#xff0c;因此标定板的使用对于确保测量结果的准确性和可靠性至关重要。 标定板通常由高反射率的材料制成&#xff0c;如镀金的玻璃或陶瓷&am…