GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models相关的知识,希望对你有一定的参考价值。

参考技术A 扩散模型(diffusion model)可以生成高质量的合成图像,尤其当基于某种条件引导(guidence)时,可以用多样性换保真性。针对基于文本条件的图像合成扩散模型,比较两种不同的指导策略:CLIP指导和无分类器指导。发现后者在照片写实度和标题相似性方面更受评估人员的青睐,并且通常会产生逼真的样本。使用无分类指导的 35 亿参数基于文本条件的扩散模型产生的样本比DALL-E的更受评估人员的青睐,即使DALL-E会使用昂贵的 CLIP 重排。此外,GLIDE(Guided Language to Image Diffusion for Generation and Editing)模型还可以微调进行图像修复,从而实现强大的文本驱动的图像编辑。本文在过滤后的数据集上训练了一个较小的模型,地址:https://github.com/openai/glide-text2im。

首先简单介绍扩散模型:

扩散模型通常包括两个过程,从信号逐步到噪声的正向过程/扩散过程(forward/diffusion process)和从噪声逐步到信号的逆向过程(reverse process)

逆向过程:

从一张随机高斯噪声图片 开始:

经过一个马尔可夫过程最终得到去噪结果 :

这个过程可以理解为基于上一步的生成结果 预测高斯分布的均值 和方差 ,然后在这个高斯分布中随机采样下一步的结果 。

正向过程:

基于预先设定的参数 逐步向图片中加入高斯噪声

其中:

DDPM的训练过程,采用一个U-net结构的Autoencoder来对t时刻的噪声进行预测:

,网络训练的目标函数定义为:

以加噪图片作为输入,目标是预测所添加的噪声,此训练目标希望预测的噪声和真实的噪声一致。

均值表示为:

方差采用常数项。

Guided Diffusion:

在利用扩散模型生成图片的过程中加入类别条件的引导,即在每一步逆向过程中用一个分类网络对生成结果进行分类,然后基于分类分数和目标类别之间的交叉熵损失计算梯度,用梯度引导下一步的采样,不需要重新训练扩散模型,在逆向时加入引导就能实现相应的生成效果。

带条件的逆向过程定义为:

基于类别条件的逆向过程,可以由无条件的逆向过程结合生成结果的分类损失来度量, 是常量, 表示单独训练的分类模型。给每一步的逆向过程的高斯分布的均值加上scale,方差和分类梯度项的乘积

这样,不需要重新训练扩散模型,只需要额外训练一个分类器,就能够有效地在添加类别引导。但是每一步都要过分类模型并求梯度会引入比较多的额外计算时间。

Guided Diffusion的过程和基于优化的图像生成算法(即固定网络,直接对图片本身进行优化)有很大的相似之处。这就意味着之前很多基于优化的图像生成算法都可以迁移到扩散模型上。

Language Guided Diffusion

利用CLIP模型的文本编码器和图像编码器,在某一时刻计算逆向过程生成图像的image embedding和给定描述的language embedding,经过L2归一化之后计算余弦相似度,基于该相似度损失来计算梯度,文本引导函数定义为:

但是CLIP中的图像编码器在训练时没见过噪声图像,因此需要用噪声图像finetune一下图像编码器。

Image Content Guided Diffusion

图片引导意思希望生成图片与一张参考图相类似,不妨将参考图片记为

根据当前扩散过程参数获得对应的加噪图片 ,通过对比加噪图片与逆向生成图片在CLIP空间中的相似度损失得到引导函数

进一步可以加入更强的引导,即在空间结构上的相似性,对比image encoder空间特征图的L2范数

Image Style Guided Diffusion

类似地,可以通过计算加噪图片特征Gram矩阵与逆向生成图片特征Gram矩阵之间的L2范数来引导生成图片的风格靠近参考图片

如果将上述引导函数以一定的比例相加,即可得到多模态的引导函数。

Classfier-Free Diffusion Guidance

上述的各种引导函数,基本都是额外的网络前向 + 梯度计算的形式,这种形式虽然有着成本低,见效快的优点。也存在着一些问题:(1)额外的计算量比较多;(2)引导函数和扩散模型分别进行训练,不利于进一步扩增模型规模,不能够通过联合训练获得更好的效果。因此DDPM的作者提出了Classfier-Free的扩散模型,给噪声估计加入额外条件:

训练扩散模型时,结合有条件和无条件两种训练方式,无条件时,将条件置为Null,从而得到一个同时支持有条件和无条件噪声估计的模型。在逆行过程中,该方法通过以下方式,结合有条件和无条件噪声估计得到结果(相当于时模拟了梯度):

采用这种形式,对于每一种不同的引导类型,都需要重新训练扩散模型。

GLIDE:

利用no-classfier guidance的思想,将引导条件设置为caption:

使用与DALLE相同的大规模文本-图像对数据集,2048的batch size,训练了250万轮。更大的模型:算法采用了Guided Diffusion方法中相同的Autoencoder结构,但是进一步扩大了通道数量,使得最终的网络参数数量达到了3.5 billion

文章:

GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

Denoising Diffusion Probabilistic Models

Improved denoising diffusion probabilistic models

Diffusion Models Beat GANs on Image Synthesis

More Control for Free! Image Synthesis with Semantic Diffusion Guidance

Classifier-Free Diffusion Guidance

Zero-Shot Text-to-Image Generation

On Fast Sampling of Diffusion Probabilistic Models

Vector Quantized Diffusion Model for Text-to-Image Synthesis

Towards Deep Learning Models Resistant to Adversarial Attacks

Madry A, Makelov A, Schmidt L, et al. Towards Deep Learning Models Resistant to Adversarial Attacks.[J]. arXiv: Machine Learning, 2017.

@article{madry2017towards,
title={Towards Deep Learning Models Resistant to Adversarial Attacks.},
author={Madry, Aleksander and Makelov, Aleksandar and Schmidt, Ludwig and Tsipras, Dimitris and Vladu, Adrian},
journal={arXiv: Machine Learning},
year={2017}}

利用特定的方法产生"坏"样本(Adversarial samples), 以此来促进网络的稳定性是当下的热点之一, 本文以实验为主, 比较PGD( projected gradient descent) 和 FGSM(fast gradient sign method)在不同数据下的表现, 以及由普通样本产生"坏"样本会出现的一些现象.

主要内容

Adversarial attacks 主要聚焦于下列问题:
[ ag{2.1} min_{ heta} ho ( heta) quad where quad ho( heta) =mathbb{E}_{(x,y)sim D}[max_{delta in S} L( heta, x+delta, y)]. ]

其中(S)是我们指定的摄动集合, 直接一点就是(|delta| <constant)之类.

通过FGSM产生"坏"样本:
[ x + epsilon : mathrm{sgn}( abla_x L( heta,x,y)). ]
这个思想是很直接的(从线性感知器谈起, 具体看here).

PGD的思路是, 给定摄动集(S), 比如小于某个常数的摄动(e.g. ({ ilde{x}:|x- ilde{x}|_{infty}<c})), 多次迭代寻找合适的adversarial samples:
[ x^{t+1} = prod_{x+S} (x^t + alpha : mathrm{sgn} ( abla_x L( heta,x, y)), ]
其中(prod)表示投影算子, 假设(S={ ilde{x}:|x- ilde{x}|_{infty}<c}),
[ x^{t+1} = arg min_{z in x+S} frac{1}{2} |z - (x^t + alpha : mathrm{sgn} ( abla_x L( heta,x, y))|_2^2, ]
实际上, 可以分开讨论第((i,j))个元素, (y:=(x^t + alpha : mathrm{sgn} ( abla_x L( heta,x, y))), 只需找到(z_{ij})使得
[ |z_{ij}-y_{ij}|_2 ]
最小即可. 此时有显示解为:
[ z_{ij}= left { egin{array}{ll} x_{ij} +c & y_{ij} > x_{ij}+c x_{ij} -c & y_{ij} < x_{ij}-c y_{ij} & else. end{array} ight. ]
简而言之就是一个截断.

重复几次, 至到(x^t)被判断的类别与初始的(x)不同或者达到最大迭代次数.

Note

  • 如果我们训练网络能够免疫PGD的攻击, 那么其也能很大一部分其它的攻击.
  • FGSM对抗训练不能提高网络的稳定性(在摄动较大的时候).
  • weak models may fail to learn non-trival classfiers.
  • 网络越强(参数等程度)训练出来的稳定性越好, 同时可转移(指adversarial samples 在多个网络中被误判)会变差.

以上是关于GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models的主要内容,如果未能解决你的问题,请参考以下文章

Towards Deep Learning Models Resistant to Adversarial Attacks

Evolutionary approaches towards AI: past, present, and future

论文阅读 Towards Unified Surgical Skill Assessment

论文阅读CodeTrans: Towards Cracking the Language of Silicon‘s Code......

论文阅读CodeTrans: Towards Cracking the Language of Silicon‘s Code......

每日一读Towards Understanding the Instability of Network Embedding