Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网

2024-05-25 23:12

本文主要是介绍Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.概述

扩散模型是最近出现的强大的深度生成模型,可用于生成高质量图像。扩散模型发展迅速,可应用于文本到图像生成、图像到图像生成、视频生成、语音合成和 3D 合成。

除了算法的改进,骨干网的改进在扩散建模中也发挥着重要作用。一个典型的例子是基于卷积神经网络(CNN)的 U-Net,它已被用于之前的研究中。 基于 CNN 的 UNet 的特点是一系列下采样块、一系列上采样块以及这些组之间的长跳接UNet 基于 CNN。它在图像生成任务的扩散模型中起着主导作用。

另一方面,视觉变换器(ViTs)在各种视觉任务中都取得了可喜的成果:在某些情况下,ViTs 的表现不亚于或优于基于 CNN 的方法。这就自然而然地提出了一个问题:是否有必要在扩散模型中依赖基于 CNN 的 U-Nets?

本评论文章提出了一种基于 ViT 的 UNet(U-ViT)。所提出的方法在 ImageNet 和 MS-COCO 上生成的图像达到了最高的 FID(衡量图像质量的标准)。
论文地址:https://arxiv.org/abs/2209.12152
源码地址:https://github.com/baofff/U-ViT.git

2.U-ViT构架

上图 是 U-ViT 的概览。该网络获取扩散过程的时间(t)、条件(c)和噪声图像 ( x t ) (x_t) xt,并预测要注入到图像中的噪声 ( x t ) (x_t) xt。 按照 ViT 的设计方法,图像被划分为多个补丁,U-ViT 处理所有输入,包括时间、条件和图像补丁,并将所有输入视为标记(词)。并将所有输入视为标记(词)。

与基于 CNN 的 U-Net 一样,U-ViT 在浅层和深层之间使用长跳转连接。训练扩散模型是一项像素级的预测任务,对低层特征非常敏感。长跳转连接为低层特征提供了捷径,便于噪声预测网络的训练。

此外,U-ViT 还可选择在输出前添加一个 3x3 卷积块。这是为了防止变换器生成的图像中出现潜在的伪影。

以下各小节将提供有关 U-ViT 各部分的更多详细信息。

3.1 实施细节

本节将通过 CIFAR10 中生成图像的图像质量(FID)来优化 U-ViT 的结构。整体结果概览见下图 。

如何结合长跳转连接起来
首先让 h m , h s R L × D h_m,h_sR^{L×D} hm,hsRL×D成为主分支和长跳分支的嵌入。在将它们送入下一个变换块之前,考虑一些将它们组合起来的方法:

  1. h m , h s h_m,h_s hm,hs连接起来,然后执行线性投影: L i n e a r ( C o n c a t ( h m , h s ) ) Linear(Concat(h_m,h_s)) Linear(Concat(hm,hs))

  2. 直接添加 h m 、 h s : h m + h s h_m、h_s:h_m+h_s hmhshm+hs

  3. h s h_s hs上进行线性投影,并将其添加到 h m : h m + h s h_m:h_m+h_s hmhm+hs

  4. 添加 h m 、 h s h_m、h_s hmhs,然后进行线性投影: L i n e a r ( h m + h s ) Linear(h_m+h_s) Linear(hm+hs)

  5. 删除长跳线连接

如上图所示,在这些方法中,第一种使用连接 LinearConcat ( h m , h s ) \text{Linear} \text{Concat}(h_m,h_s) LinearConcat(hm,hs)的方法效果最好。特别是,与不使用长跳转连接的方法相比,生成图像的质量明显提高。

如何输入时间条件

将时间条件 t 输入网络的方法有两种。方法(1) 是将它们视为标记,如图 1 所示。 方法(2)是在转换器模块中将层归一化后的时间纳入,这与 U-Net 中使用的自适应组归一化类似;第二种方法称为自适应层归一化(AdaLN)。 将时间视为标记的方法(1) 比 AdaLN 性能更好。

如何在变压器后添加卷积块

在变换器后添加卷积块有两种方法。(1) 在将标记嵌入映射到图像补丁的线性投影之后添加 3×3 卷积块。 (2)在线性投影之前添加一个 3×3 卷积块。此外,还可以将其与去掉附加卷积块的情况进行比较,在线性投影后添加 3×3 卷积块的方法(1) 的 性能略优于其他两种方案。

补丁嵌入法

传统的补丁嵌入是将补丁映射到标记嵌入的线性投影。除了这种方法,我们还考虑了另一种将图像映射到标记嵌入的方法,即使用 3 × 3 卷积块堆叠,然后再使用 1 × 1 卷积块。但是,如图 2(d) 所示,传统的补丁嵌入法效果更好,因此最终模型采用了这种方法。

位置嵌入方法

本文使用的是原 ViT 中提出的一维可学习位置嵌入。 也有一种替代方法,即二维正弦位置嵌入,一维可学习位置嵌入的效果更好。我们也尝试过不使用位置嵌入,但该模型无法生成清晰的图像,这表明位置信息对图像生成非常重要。

3.2 网络深度、宽度和补丁大小的影响

这里,我们在 CIFAR10 中研究了 U-ViT 的缩放特性,以考察层数、宽度和贴片尺寸的影响。如上图所示,将层数从 9 层增加到 13 层可提高性能,但对于深度超过 17 层的模型则没有影响。同样,增加宽度也能提高性能,但超过一定宽度就没有效果了。

减小贴片尺寸可以提高性能,但低于一定尺寸时性能就会下降。在扩散模型中,小补丁尺寸被认为适合低水平噪声预测任务。另一方面,对于高分辨率图像来说,使用小尺寸贴片的成本较高,因此必须先将图像转换为低维潜在表示,然后再用 U-ViT 进行建模。

4.试验

4.1 数据集和设置

U-ViT 的有效性在三个任务中进行了测试:无条件图像生成、类条件图像生成和文本到图像生成。

无条件图像生成实验在 CIFAR10(50,000 幅图像)和 CelebA 64×64 (162,770 幅图像)上进行。对于类别条件图像生成,在64×64 和 256×256ImageNet 数据集(包含来自 1,000 个不同类别的 1,281,167 幅训练图像)和 512×512 分辨率数据集上进行了实验。MS-COCO (82,783 幅训练图像和 40,504 幅验证图像)用于文本到图像的训练。

在生成256 × 256 和 512 × 512分辨率的高分辨率图像时,使用由潜在扩散模型(Latent diffusion models,LDM)[Rombach et.al, 2022]提供的预训练图像自动编码器,分别将 32 × 32 和 64 × 64 分辨率的潜在表征分别生成 32 x 32 和 64 x 64 分辨率的潜表征。然后使用 U-ViT 对这些潜表征进行建模。

在MS-COCO 中生成文本到图像时,使用 CLIP 文本编码器将离散文本转换为嵌入序列,然后将这些嵌入序列作为标记序列输入 U-ViT。

4.2 无条件和类条件图像生成

表 1.无条件图像生成和类别条件图像生成的结果

在这里,U-ViT 与之前基于 U-Net 的扩散模型和 GenViT 进行了比较,GenViT 是一种较小的 ViT,它没有长跳接,并在归一化层之前加入了时间。FID 分数用于衡量图像质量。

如表 1 所示,U-ViT 在无条件的 CIFAR10 和 CelebA 64×64 中表现出与 U-Net 相当的性能,并且比 GenViT 性能更好。对于有类别条件的 ImageNet 64×64,我们首先尝试了 U-ViT-M 配置,参数为 131M。如表 1 所示,其 FID 为 5.85,优于使用 U-Net 且参数为 100M 的 IDDPM 6.92。为了进一步提高性能,我们采用了 U-ViT-L 配置(287M 个参数),将 FID 从 5.85 提高到 4.26。

在有类别条件的 ImageNet 256×256 中,U-ViT 的最佳 FID 为 2.29,优于之前的扩散模型。表 2 显示,在使用相同采样器的不同采样步骤中,U-ViT 的表现优于 LDM。U-ViT 的表现也优于 VQ-扩散模型,后者是一种以变压器为骨干的离散扩散模型。同样,在参数和计算成本相同的情况下,U-ViT 也优于 UNet。

对于带有类别条件的 ImageNet 512×512,U-ViT 的表现优于直接对图像像素建模的 ADM-G。图 4 显示了 ImageNet 256×256 和 512×512 的部分样本以及其他数据集的随机样本,证实了图像的高质量和清晰度。

表 2:ImageNet 256×256 不同采样步数下的 FID 结果。

4.3 使用 MS-COCO 生成文本到图像

这里,我们使用 MS-COCO 数据集来评估 U-ViT 在文本到图像生成任务中的表现。我们还使用 U-Net 训练了另一个潜在扩散模型,模型大小与 U-ViT 相同,并与 U-ViT 进行了比较。

FID 分数用于衡量图像质量:从 MS-COCO 验证集中随机选取 30K 个提示,并利用这些提示生成样本来计算 FID。如表 3 所示,即使在生成模型的训练过程中不需要访问大型外部数据集,U-ViT 也能获得最先进的 FID。通过将层数从 13 层增加到 17 层,U-ViT-S(Deep)可以获得更好的 FID。

图 6 显示了 U-Net 和 U-ViT 使用相同的随机种子生成的样本,以进行定性比较;U-ViT 生成的样本质量更高,图像内容与文本的匹配度更高。

例如,给定文本 “棒球运动员挥棒击球”,U-Net 不会生成球棒或球,而 U-ViT 会生成球,U-ViT-S(Deep)会进一步生成球棒。这可能是由于与 U-Net 相比,U-ViT 中文本和图像之间每一层的交互更为频繁。

表 3.MS-COCO 的实验结果

5. 结论

U-ViT 将所有输入(时间、条件和噪声图像片段)视为标记,并在浅层和深层之间采用长跳转连接。U-ViT 已在无条件和有条件图像生成以及文本到图像生成等任务中进行了评估。

U-ViT 的性能与类似规模的基于 CNN 的 U-Nets 不相上下,甚至更好。这些结果表明,长跳接对于基于扩散的图像建模非常重要,而基于 CNN 的 U-Nets 并不总是需要向下向上采样运算符。

U-ViT 可以为未来的扩散建模骨干研究提供信息,并有利于在具有不同模式的大型数据集中进行生成建模。

这篇关于Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002878

相关文章

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

ViT:4 Pruning

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。 视觉转换器(ViT)架构已经广受欢迎,并广泛用于计算机视觉应用。然而,随着 Vi

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

直线一级倒立摆微分建模

建模内容如下:         https://mp.weixin.qq.com/s?__biz=Mzg5OTIyNDEzMg==&mid=2247483673&idx=1&sn=c4e8024ebffd87611b757f7fd570f3c4&chksm=c057c632f7204f2442d0aab652847e342447fa604f04d74faafb798f022fb30e

【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下

最新版本v2.17.1 https://github.com/mudler/LocalAI/releases Stable diffusion 3 You can use Stable diffusion 3 by installing the model in the gallery (stable-diffusion-3-medium) or by placing this YAML fi

Anaconds3安装jieba 用于pycharm

1、从官网下载jieba压缩包 https://pypi.org/project/jieba/ 2、将压缩包解压到anaconda的pkgs目录。 (譬如我的如下 3、打开anaconda prompt 参考:https://blog.csdn.net/xavier_muse/article/details/94440563?utm_medium=distribute.pc_relevant

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法   本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取 微信公众号 🎇 相关内容视频讲解 B站 🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机

图像编辑技术的新篇章:基于扩散模型的综述

在人工智能的浪潮中,图像编辑技术正经历着前所未有的变革。随着数字媒体、广告、娱乐和科学研究等领域对高质量图像编辑需求的不断增长,传统的图像编辑方法已逐渐无法满足日益复杂的视觉内容创作需求。尤其是在AI生成内容(AIGC)的背景下,如何利用人工智能技术对图像进行高效、精准的编辑,已成为当前研究的热点问题。尽管基于学习算法的图像编辑技术取得了显著进展,但仍存在诸多挑战,例如模型的泛化能力、编辑的自然性

开源C++版AI画图大模型框架stable-diffusion.cpp开发使用初体验

stable-diffusion.cpp是一个C++编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型进行AI画图,以及作为依赖库集成的到应用程序中提供类似于网页版stable-diffusion的功能。 以下基于stable-diffusion.cpp的源码利用C++ api来开发实例demo演示加载本地模型文件输入提示词生成画图,这里采用显卡CUDA加速计算,

【java问答小知识19】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点

Java中的"java.util.concurrent.locks.StampedLock"的"tryConvertToReadLock()"方法如何工作? 回答:尝试将当前的写锁转换为读锁,并返回一个表示锁定状态的戳记。 Java中的"java.util.concurrent.locks.StampedLock"的"tryConvertToWriteLock()"方法有什么特点?