当前位置:网站首页>012_SSS_ Improving Diffusion Model Efficiency Through Patching
012_SSS_ Improving Diffusion Model Efficiency Through Patching
2022-08-05 10:17:00 【Artificial Idiots】
Improving Diffusion Model Efficiency Through Patching
本文主要是在思路上比较具有创新性. Diffusion需要成百上千的采样步, 这是Diffusion采样速度慢的重要原因. 因此, 很多加速Diffusion的方法关注于如何降低采样步数. 本文的作者则提出了另一种思路, 也就是通过将图像划分patch降低Diffusion模型每一步的采样效率和内存占用量.
1. Introduction
对于图像数据, 降级计算成本的一种很高效的方法就是处理图像数据的低维表示, 这种低维表示可以通过降采样或者编码器得到, 但是这两种方式还需要将低维的数据上采样或是解码器解码出来, 需要更多的网络. 本文采用了一种更方便的做法, 也就是将图像划分成patch然后直接concatenate起来.
本文作者的主要贡献:
- 对Diffusion训练目标进行深入分析, 表明在很多的采样步中, 高分辨率的卷积层是冗余的.
- 提出了一种Patched Diffusion Model(PDM), 而且证明可以明显降低采样的代价. 而且这种方法可以与现有的降低采样步的方法同时使用.
- 作者对不同训练目标的Diffusion效果进行比较, 发现不论是否有patch, 通过预测数据的方法比预测噪声的方法模型更鲁棒.
- 作者提出了一种将PDM用于更复杂,分辨率更高的数据的方法, 也就是将一个网络分为多个部分, 然后在256x256的ImageNet上可以得到高质量的结果.
2. Patch Diffusion Model
Diffusion模型的原理不再赘述, 只是这里作者用的标记与DDPM不太一样, 放张图一目了然.

训练的目标, 也就是重建出x

这里的 γ t \gamma_t γt 是常数. 但是训练的时候如果目标加入了 γ t \gamma_t γt 反而会导致采样的质量下降, 因为会 overemphasize 高频的信息. 所以作者在文中设置 γ t = α t 1 − α t \gamma_t = \sqrt{\frac{\alpha_t}{1-\alpha_t}} γt=1−αtαt, 来兼顾低频的信息.
Diffusion的训练过程, 也就是将 x 进行 perturb 得到 z t z_t zt, 然后训练网络 x θ x_{\theta} xθ 通过 z t z_t zt 重建出 x, 也就是上面图中训练目标.
2.1 Diffusion模型架构中的冗余
作者指出, 对于任意一个隐变量 z t z_t zt, 可能是很多的不同的 x x x 加入不同的噪声得到的. 但是这些 x x x 都能对应于这个 z t z_t zt, 只是概率不同. 这种情况在 t 比较大, 也就是噪声比较大的时候更明显. 怎么理解呢?


如图三个苹果颜色不同形状完全相同, 那么通过上边的隐实验结果分析:变量(也就是近似于噪声的图像)预测得到的 x 可能是这三个苹果中的任何一个. 在这种情况下, 模型优化后会得到的最优的结果是什么呢?
作者指出, 通过上面训练目标进行优化得到的最优的结果可以表示为:

推导的过程如下:

简而言之, 也就是说模型每一步收敛到最优的时候, 预测得到的 x ∗ x^* x∗ 是输入的 z t z_t zt 对应的所有的所有 x x x 的期望, 或者也可以看作是均值. 代入刚才的苹果例子里边, 模型预测的苹果会是三种颜色的一种平均. 这其实和众多用L2损失进行优化的情况相似, 也就是模型最终学到的是所有可能情况的均值, 从而会丧失diversity. 不仅体现在着色模型会倾向于将结果预测成灰色, 还体现在Diffusion模型可能会在预测时高频的信息会很模糊, 因为取的是平均值.
但是作者并没有说怎么解决模糊的问题, 而是基于这种模糊的事实, 指出既然在噪声比较大的时候直接预测的 x 是模糊的, 也就是高频信息并不能很好的得到, 那么就不需要那么高的计算代价, 反正都是模糊的. 于是就不需要在高分辨率上去做卷积.

2.2 Patched Diffusion Models(PDM)
首先来说作者怎么分Patch操作, 对于(H, W, C)的图像, 作者将其按照 P 的大小分成不重叠的Patch, 然后concatenate起来, 于是就将图像转变为 ( H / P , W / P , C × P 2 ) (H/P, W/P, C \times P^2) (H/P,W/P,C×P2) 的数据, 这个作为Unet的输入.

作者尝试了不同的patch大小2,4,8. 发现patch=4的时候, 既能有比较好的采样质量, 又能提高速度. 并且作者通过比较不同patch的RMSE证实了在噪声比较大时, 高分辨率做卷积是没多大用的.
之后作者尝试了不同的训练目标, 也就是重建 ϵ \epsilon ϵ, x x x, α t ϵ − 1 − α t x \sqrt{\alpha_t} \epsilon - \sqrt{1-\alpha_t} x αtϵ−1−αtx三种不同的目标对质量的影响. 结论是重建 x x x, α t ϵ − 1 − α t x \sqrt{\alpha_t} \epsilon - \sqrt{1-\alpha_t} x αtϵ−1−αtx 比重建 ϵ \epsilon ϵ 更鲁棒.

2.3 Scaling to more complex datasets
这个部分很简单, 就是用了两个Unet, 一个不分patch用在前半部分模糊的阶段, 另一个用在后半部分.

更多实验结果参考原文.
边栏推荐
- Pytorch Deep Learning Quick Start Tutorial -- Mound Tutorial Notes (3)
- Confessing in the era of digital transformation: Mai Cong Software allows enterprises to use data in the easiest way
- 多线程(进阶) - 2.5w字总结
- 2022 Huashu Cup Mathematical Modeling Ideas Analysis and Exchange
- Meteorological data processing example - matlab string cutting matching and R language date matching (data splicing)
- 第五章:多线程通信—wait和notify
- 第八章:activiti多用户任务分配
- 机器学习-基础知识 - Precision, Recall, Sensitivity, Specificity, Accuracy, FNR, FPR, TPR, TNR, F1 Score, Bal
- Data Middle Office Construction (10): Data Security Management
- 第四章:activiti流程中,变量的传递和获取流程变量 ,设置和获取多个流程变量,设置和获取局部流程变量「建议收藏」
猜你喜欢

深入理解 Istio 流量管理的超时时间设置

【温度预警程序de开发】事件驱动模型实例运用

Bias lock/light lock/heavy lock lock is healthier. How is locking and unlocking accomplished?

hcip BGP enhancement experiment

egg框架使用(一)

皕杰报表的下拉框联动

JS introduction to reverse the recycling business network of learning, simple encryption mobile phone number

NowCoderTOP35-40——持续更新ing

PCB布局必知必会:教你正确地布设运算放大器的电路板

FPGA: Use of the development environment Vivado
随机推荐
【综合类型第 35 篇】程序员的七夕浪漫时刻
第四章:redis 数组结构的set和一些通用命令「建议收藏」
SMB + SMB2: Accessing shares return an error after prolonged idle period
What is the function of the regular expression replaceFirst() method?
蚁剑webshell动态加密连接分析与实践
哪位大佬有20年4月或者1月的11G GI和ojvm补丁呀,帮忙发下?
华为轻量级神经网络架构GhostNet再升级,GPU上大显身手的G-GhostNet(IJCV22)
How does the official account operate and maintain?Public account operation and maintenance professional team
Analysis and practice of antjian webshell dynamic encrypted connection
Introduction to SD NAND Flash!
three objects are arranged in a spherical shape around the circumference
2022华数杯数学建模思路分析交流
Oracle临时表空间作用
NowCoderTOP35-40——持续更新ing
你最隐秘的性格在哪?
上位机开发C#语言:模拟STC串口助手接收单片机发送数据
[Android]如何使用RecycleView in Kotlin project
Brief Analysis of WSGI Protocol
Go编译原理系列6(类型检查)
还在找网盘资源吗?快点收藏如下几个值得收藏的网盘资源搜索神器吧!