LDM

High-Resolution Image Synthesis with Latent Diffusion Models

TL;DR

本文提出一种DM(diffusion mode)的改进模型,称为latent diffusion model, 在图像合成和其他领域取得了极高的效率和性能。原始的DM模型直接在像素空间操作,训练需要数百个GPU小时且推理时需要顺序执行。为了在训练资源有限的条件下维持高性能,本文讲DM应用在一个预训练自编码模型的latent space里。这样的表达方式在计算量缩减和维持细节两方面实现了比较好的tradeoff。 通过引入cross-attention,作者把扩散模型变成对一般条件输入(文本or bounding box),并且可以通过卷积方式实现高分辨率合成。

  • 不那么激进的下采样,可以提升质量的上界。

Method

  • 避免高维度图像的上计算之后,扩散模型的计算更加高效。得到的通用压缩模型的潜在空间可以用来训练多个生成模型,并且也可以用于其他下游应用,例如单图像CLIP引导的合成。

Perceptual Image Compression

  • 感知压缩模型由自编码器构成,训练时采用perceptual loss 和 patch-based 对抗loss
  • 为了避免在latent space 上出现高维的方差,作者使用了两种正则化方式:(1)KL正则化,使latent space 空间更加趋向于正态分布 (2)VQ-reg, 向量量化正则化,在解码器中使用了VQ层,这部分模型可以当作VQGAN。该模型的DM部分是为了处理二维结构的潜在空间,这和之前的1d 潜在空间是不同的,作者认为这样能更好的保持内在结构

Latent Diffusion Models

Diffusion model

  • DM 被建模成概率模型,通过逐渐对一个正态分布的变量进行降噪,从而学到数据分布p(x)。这个逐渐降噪的过程对应固定的马尔可夫链的逆过程。

  • 对所有的训练图像 x,噪声分布ǫ(服从标准正态分布N(0,1)),和扩散步骤t,计算噪声和模型预测的去噪版本 $\epsilon_{\theta}(x_t, t)$ 之间的欧氏距离的平方(即 L2 范数的平方),然后对所有的 $\epsilon , \theta , {t}$ 求期望。这个期望的计算可以通过在训练数据上进行平均来实现。

Generative Modeling of Latent Representations

  • 在潜在空间里,所有的抽象高频信息都被抽离。相比高分辨率空间,这个空间更适合进行似然的生成模型。有两点好处(1)专注于数据相关,语义相关的信息 (2)在一个计算效率更高的维度进行训练。
  • 和一些基于注意力的Transformer, 潜在空间压缩,离散自回归模型不同. 可以更好的使用针对图像的归纳偏差,这包括使用2D卷积层构建底层UNet的能力,以及通过重新加权边界进一步将目标集中在视觉上最相关的位上。
  • latent diffusion 中的Unet 是time-condition的,是希望不同时刻的T能处理不同时刻的噪声,它的权重也应该是随着t变化的。

  • 为了处理多模态数据,还是使用了cross-attention 方法:
    $$
    Attention(Q, K, V) = Softmax(\frac{QK^T}{\sqrt{d}})V
    $$

其中$Q=W_Q^{(i)} * \varphi_{i}(z_t)$ , $K=W_K^{(i)} * \tau_{i}(z_t)$, $V=W_V^{(i)} * \tau_{i}(z_t)$ 。

  • $\varphi_{i}$ 表示Unet 处理后再经过flatten 的向量
  • $\tau_{i}$ 表示表示对多模态进行融合的网络

Towards Robust Blind Face Restoration with Codebook Lookup Transformer

Towards Robust Blind Face Restoration with Codebook Lookup Transformer

TL;DR

Blind face restoration 有两个挑战。(1)改善从降质输入到对应输出的映射(2)对输入进行高质量的细节补偿。本文把盲人脸恢复转变为码本预测任务,证明了在一个代理空间中用可学的codebook可以显著减少该任务的不确定性和歧义。文章提出Codeformer, 是一种transformer-based 的结构用于建模人脸的全局组成和上下文。

Code:https://github.com/sczhou/CodeFormer

Motivation

Untitled

  • (a) 上图表示连续的生成式先验,下图表示码本先验。(b)t-sne 可视化对高清 / 低清图像进行可视化操作 (d/e)是前者的典型代表,(f/g)则是离散码本。

Methodology

Untitled

  • (a) 第一阶段学习离散的码本和decoder来恢复高质量图像 (2)把码本/ decoder固定住,引入Transformer 模块来对码本序列进行预测。同时引入一个可控模块来调节从LQ encoder 来的信息流,主要目的是在恢复程度和保真度之间做一个trade-off

Codebook Learning Stage I

  • pre-train 一个向量量化的auto-encoder,从而获得一个高质量的码本。可以保持网络的有效性同时也提升鲁棒程度
  • 一个H x W x 3的高清图像被编码成 m x n x d 的压缩编码Zh。Zh中的每个像素被替换成码本中最近的一个子项,从而获得quantized feature 和对应码本的token 序列

Untitled

  • 训练带codebook 的auto encoder 用了三种loss。l1 / perceptual loss / adv loss ; 同时也用了code-level loss, 减少codebook 和 embed feature 之间的距离

Untitled

  • Codebook 的压缩倍率是32。子项的数量被设为1024

Codebook Lookup Transformer Learning II

  • 为了解决最近邻match 失败的问题,引入Transformer;包含9个self-attention block 。将Codebook / Decoder 固定住,然后去finetune encoder. 首先将Feature 展开成(mn)d,接着送给Transformer block. 最终预测出 (mn)的序列

Untitled

  • 既训练Transformer,同时也训练Encoder。(1)cross-entropy loss for code token (2)l2 loss 拉近 El 和 Code之间的距离

Controllable Feature Transformation Stage III

  • alpha / beta,是输入Fe,Fd. CFT模块作用在encoder / decoder feature 之间的4个尺度。在训练过程中除了维持stage2 的tf loss, 还用上stage 1 的image level loss。

Untitled

Experiment

  • 训练集合 FFHQ + 降质
  • 设置上用 16X16的code 代替512 X 512的图像。batchsize 16,lr 一阶段 8e-5;4块V100

Untitled

Untitled

  • Ablation Study
    • wo-codebook 就是标准的encoder / decoder 。CNN based 方法在序列预测上表现不如Transformer
    • fixed decoder 是重要的。

MaskGIT-Masked Generative Image Transformer

MaskGIT: Masked Generative Image Transformer

TL;DR

在此之前,最好的transformer 模型做法是把图像先编码成token 序列,然后line-by-line 的进行解码,作者认为这种方式不是最优也不是最高效的。本文提出MaskGIT, 一种的图像合成领域的新范式,使用一种双向的transformer decoder. 在训练阶段,MaskGIT从所有方向上实行attention机制,从而预测随机masked token。在推理阶段,模型先同步生成图像的所有token,然后不断refine之前生成的结果。该方法相比之前的AR方法,有64x 的加速。

Untitled

Method

Untitled

  • MaskGit 的目标是提升二阶段的效果,一阶段和VQGAN方法保持一致

3.1 Masked Visual Token Modeling(MVTM)

  • $Y = [{y_i}]_{i=1}^N$ 把图像输入VQ Encoder,获得的latent tokens。 N表示把token matix reshape 后的矩阵长度。
  • $M=[{m_i}]_{i=1}^N$ 表示对应的binary mask
  • 在训练过程中,获得的latent token 被【Mask】token随机替换。采样过程是首先从0,1之间的均匀分布采样出一个ratio的值。然后从N个token 中采样出 $[\gamma * N]$ 个token
  • $Y_{\overline M}$ 表示把Mask apply 到token Y上

Untitled

Iterative Decoding

  • 图像压缩得到的所有token可以并行被decoder,这是提出的双向 self-attention所带来的feature。每个算法迭代,可以分为如下几个步骤

    • predict:在第t 次迭代,给定masked token,模型输出所有掩模位置的概率分布 - $p^{(t)} \in R^{N \times K}$
    • sample :对于每个mask 位置,根据codebook中的所有token的概率分布进行
    • mask schedule:根据上述的mask schedule function 来确定采样token 的单位
    • mask

    $$
    m_{i}^{t+1} = \begin{cases}
    1, & \text{if } c_i \geq \operatorname*{sorted}_{j} (c_j)[n] \
    0, & \text{otherwise}
    \end{cases}
    $$

    • 简单描述decoder过程,模型同时预测出所有的token,并且只保留置信度最高的一项。剩余的token 会被mask住并且重新预测。mask ratio逐步减小,直到T次迭代生成所有的token为止。

Mask Design

  • masking design对生成图像的质量影响很大,因此mask schedule function 很关键。在测试阶段,mask ratio 分别为 $0/T,1/T, …… ,(T-1)/T$ ti
  • 提出一种新的mask schedule function,首先从性质上它必须是有界且连续,其次要单调递减。这里分别分成了三个组的function来表示这些函数。• Linear /Concave / Convex 。后面有实验会比较

Experiment

  • Settings:
    • (1)One encoder / one decoder for each dataset, 1024 token codebook. 图像尺寸256x256。这个token 尺寸在512 x 512上的图也是适用的。
    • (2)24 layer, 8 attention head, 768 embed dimensions, 3072 hidden dimensions.
  • 相比BigGAN而言效果提升不少

Untitled

Untitled

Image Editing

  • 一些 inpainting / outpainting的应用

Untitled

Untitled

Thoughts

有限次数去逐渐decoder token, 替代了line-by-line的方式。

Neural Discrete Representation Learning

Neural Discrete Representation Learning

TL;DR

无监督情况下获取有用Representations 很有挑战,本文提出一种生成式模型来提取离散的representation. Vector Quantised- Variational AutoEncoder (VQ-VAE) 和 VAE 主要有两点不同:(1)encoder输出离散的codes(2)prior是学来的不是静态的。使用VQ方法能够让模型比较好的绕过「后向坍塌」问题

Method

VAE主要包括以下几个部分:(1)编码器,参数化成一个后验概率分布q(z|x), x为给定的输入分量,其中z为离散潜在随机变量;(2)一个先验概率分布p(z),(3)带有输入分量p(x|z)分布的解码器。

Discrete Latent variables

Untitled

首先定义了一个潜在的embed 空间,空间的大小表示为K x D; K 则是种类,D是每个embedding vector的长度。给定输入x, 把它送给编码器得到 z_e(x), 然后在embedding 空间中用最近邻的方法进行搜索,得到离散潜在的变量z. 该模型的所有参数包括编码器 / 解码器 / embedding 空间的参数。

Untitled

Untitled

在语音 / 图像 / 视频上,每个vector的分别为 1D / 2D / 3D

Learning

上述公式2中的梯度并没有定义,于是采用STE来近似得到梯度。或者将解码器的输入的梯度替换到编码器输出的梯度上。论文这里表示都可以,取决于使用场景。

Untitled

损失函数主要分为几个部分,reconstruct loss(data term)优化编码器和解码器;在这个过程中由于STE的存在,embedding space 部分是没有梯度的。embedding 空间的优化采用向量优化的算法,VQ项用l2 loss 来使得embeding 与编码器输出相靠齐。

  • sg 表示stop gradient操作。 forward 是 identity。

Prior

在图像任务上,使用Pixel CNN, 语音任务上用WaveNet

Experiment

  • Comparison with continuous variables

和连续的隐变量做对比的实验,对比了普通的VAE,VIMCO(独立高斯 / 分类先验)和 VQ-VAE。VAE、VQ-VAE和VIMCO模型的比特/维度(bits/dim)分别为4.51、4.67和5.14。说明结果是相当的。

  • Images

图像上大部分的信息是冗余且带噪,实验中将128X128图像压缩至32X32 的隐空间中,压缩了大约42倍,但是重建的图像有些blur

Untitled

Untitled

  • Video

给定前几帧和动作,生成后续帧。

Untitled

Restormer Efficient Transformer for High-Resolution Image Restoration

TL;DR

CNN方案有如下缺陷:limited receptive field, 随着高分辨率暴增的算力。本文提出 Restormer - Restoration Transformer, 在去雨,去噪,去模糊任务上取得了不错的效果

Method

目标是设计一种efficient transformer 来处理高分辨率图像的图像复原任务。Key Design: Multi-head SA layer & multi-scale hierarchical, 相比single - scale 的网络可以显著减少计算量。

Untitled

  • Multi-Dconv Head Transposed Attention

    • 主要开销来自于self-attention layer,其中key-query dot- product interaction 随着分辨率的增大而增大,为$O(W^2H^2)$。 因此,本文提出MDTA模块,复杂度是线性的。主要做法是self-attention 作用在channel上而不是空间分辨率上,channel 上产生的是global context,因此又同时引入了depth-wise conv来增强local context,这里用的conv都是不带bias的。

    Untitled

  • Gated-Dconv Feed-Forward Network

    • 常规的transformer 前向网络: 1X1 扩大channel数,减少回原始channel数。
    • 本文做法:(1)引入gate机制 (2)可分离卷积。 将输入分为两路,每路是1X1 + 3X3 D-conv,其中一路使用GRelu作为激活函数
  • Progressive Learning

    • 传统训练方法:从CNN中crop 一个小patch,然后进行训练
    • 在early epoch使用小patch训练,然后逐步增大训练图像的尺寸。类似不断用大尺寸finetune。这样的好处使得transformer可以encoder整个大图的feature。训练过程中尺寸变大,batchsize也相应变小,从而维持相同的训练时间

MuLUT Cooperating Multiple Look-Up Tables for Efficient Image Super-Resolution

TL;DR

将LUT 和 SR相结合,为了解决single lut 感受野不足的问题,将SR-Lut扩展至 Mutiple-luts。(1)设计了两种互补的pattern ,同时构造multiple luts (2)re-indexing 机制来实现 hierachical indexing 。 这种做法使得mulut 的size 和 本身的index capacity 呈线性关系。

  • contributions
    • casecade 方法 + re-index 机制,实现多级index
    • Mulut 用在 demosaicing 任务上,证明其优于SR-LUT

Method

Untitled

  • SR-lut 的获取方式,基于一个训练好的SR网络,带着有限的感受野。LR pixels 作为query,从Lut 中恢复出HR的像素
  • 通过Multi-Lut, 把感受野从3X3 → 9X9. 由于Lut 的size 是指数级增长的,因此本方法在这里进行了约束。

Untitled

  • Mulut 包含三个平行的branch, 并且2个casecade阶段。训练是 end-to-end 进行的

Untitled

  • Parallelizing Lut . 分别代表三个index pattern。 indexing pixels
    of MuLUT-S, MuLUT-D, and MuLUT-Y are (I0, I1, I3, I4), (I0, I2, I6, I8), and
    (I0, I4, I5, I7),

Untitled

  • 图像中的index 是采样的,并且存在int8的数据格式里。previous Mulut 的值会在forward时quantize成整数

Untitled

  • Lut-aware finetune策略。 一方面是lut 中的值是trainable的,另一方面在训练过程中,lut值适应了这种采样和插值过程

Composer Creative and Controllable Image Synthesis with Composable Conditions

TL;DR

这篇论文介绍了一种新的生成模型的范式,称为“Composer”,该范式可以在保持合成质量和模型创造力的同时,灵活地控制输出图像,如空间布局(layout)和调色板(platte)。该模型的核心思想是分解图像为代表性的factor,并使用所有这些factor作为条件来训练扩散模型以重新组合输入。在推理阶段,由于中间表示丰富,从而可以产生巨大的生成设计空间。该方法支持各种级别的条件,例如文本描述作为全局信息,深度图和草图作为局部指导,颜色直方图用于低级细节等。除了改善可控性外,该方法还证实了作为通用框架的优势,可以方便地支持各种经典生成任务而无需重新训练。

Method

Untitled

  • Composer是一种扩散模型,可接受多个条件,从而实现无分类器指导的各种方向.

Untitled

  • 通过指定一个权重参数 ω 来控制这些条件。属于 c2 但不属于 c1 的条件会被赋予权重 ω,属于 c1 但不属于 c2 的条件会被赋予权重 (1-ω),而属于 c1 与 c2 的交集的条件会被赋予权重 1.0
  • 通过对图像x0进行反向编码,得到其潜在表示xT,然后使用另一个条件c2对xT进行采样,可以以一种解耦的方式操纵图像,其中操纵方向由c2和c1之间的差异定义。

Untitled

Decomposition

  • 将图像分为8个方面,每个方面都可以在训练中动态提取。

    • Caption:直接使用文本-图像的训练数据,或者从预训练的模型中获得。
    • Semantics and style
    • Color:CIELab histogram
    • Sketch
    • Instance: Yolov5
    • Depthmap
    • Intensity: 灰度图
    • Masking:ROI区域

    Untitled

Composition

  • 全局化条件:including CLIP sentence embeddings, image embeddings and color palettes
  • 局部化条件:sketches、segmentation masks、depthmaps、intensity images和masked images等本地表示,将它们投影到与噪声潜变量xt相同空间大小的统一维度嵌入中,使用堆叠的卷积层进行处理。然后计算这些嵌入的总和,并将结果连接到xt之前,将其送到UNet中
  • 联合训练:在每个条件的训练采取类似dropout的策略

SR3 Image Super-Resolution via Iterative Refinement

TL;DR

通过Repeated Refinement 来实现SR。SR3 采用的是 denoising diffusion probabilistic models来进行图片生成,通过随机迭代降噪点过程来进行超分。从纯高斯噪声模型起步,用不同降噪力度的降噪模型来经过不断迭代Noisy 图像,从而生成图像

Method

Untitled

  • 生成范式
    • conditional DDPM经过T个步骤生成最终图像,首先从一个pure gaussian images开发,经过T个步骤连续的迭代。每个迭代都需要学习conditional transition distributions. 前向过程:通过固定的马尔可夫链将高斯噪声不断地添加至信号当中。 反向过程:是主要需要学习的部分,即从噪声中逆转得到信号的过程。使用神经去噪模型fθ学习反向链,该模型将源图像和噪声目标图像作为输入,并估计噪声。
  • 训练
    • 输入:低分辨率图像; 带噪声图像,尺寸和高分辨率图像一致。
    • 损失函数:使得模型输出的噪声和随机的高斯噪声分布尽可能一致。

Untitled

Untitled

  • Inference 阶段:输入为低分辨率图像x以及 yt高斯噪声,输出为高分辨率图像。输入通过公式重复迭代T次得到SR图像。可以理解为迭代的从图像中去除噪声,当迭代的次数足够多,就能将噪声都去除,得到一个效果较好的SR结果。

Untitled

  • Model Arch:
    • UNet 架构,用迭代的方式从输出去除各level的噪声。将低分辨率图像upsample到高分辨率,再和噪声图concat,作为网络的输入。

Dancing under the stars video denoising in starlight

Dancing under the stars: video denoising in starlight

TL;DR

A GAN-tuned physics-based 噪声建模来表示暗光下的噪声,文章表示高斯-泊松噪声在极暗条件下并不是很受用,这种条件下的噪声经常是sensor-specific的,比较难被建模。

Method

Untitled

  • 第一个步骤是训练 noise generator 和 discriminator, 它用于区分 real noise & synthetic noise. 文章用长曝 + low gain 获得noiseless 的图片, 短曝光 + 高gain 来获取noisy 的图像。 经过训练后,该noise geerator 可以获取合成的realistic noise。
  • 第二个步骤是训练denoiser,训练数据同时使用 synthetic clean 和 noisy video. 其中motion 数据是由 noise generator 生成的,noisy still是由 数据获得的。

Untitled

  • Noise Generator 包括一些比较经典的噪声建模。例如random 的 read noise 和 shot noise, FPN , 行噪声,量化噪声,周期性噪声等等。在这些噪声的基础上,再由一个UNet 来做一个调整。

Untitled

  • GAN 训练:为了使得在每一次forward中生成不同的噪声sample,选取了GAN的训练方法。文章选取了WGAN作为框架。

Untitled

  • 降噪的架构,每一个HRNET的输入是三帧图像,类似二叉树一样两两融合。

Untitled

Experiment

Untitled

  • 最后两列的比较是是否采用residue来学习,residue 增加了overfit 的风险。指标用的是KL distance。

SwinIR Image Restoration Using Swin Transformer

TL;DR

为Image Restoration 任务提供了一种Baseline 的 Transformer Based 方法

Method

Untitled

  • 主要由三部分构成:shallow feature extraction / deep feature extraction and highquality (HQ) image reconstruction
  • shallown feature extraction 由 3X3 的conv 构成
  • deep feature feature由若干RSTB模块构成,RSTB模块其实就是若干组Swin Transformer Blocks 和 Conv。外围有一个大的Residue
  • 最后一个模块则是把高频和低频feature整合到一块
  • Swin Transformer Layer:给定 H x W x C 的输入,把它reshape 成若干 M x M 的block。然后对每一个window 计算self-attention, 其中 query, key, value等三个vector的计算方式如下

Untitled

  • MLP / MSA之前有LayerNorm层

Untitled

Experiment

Ablation Study

Untitled

Untitled

Untitled