- sd turbo
- https://static1.squarespace.com/static/6213c340453c3f502425776e/t/65663480a92fba51d0e1023f/1701197769659/adversarial_diffusion_distillation.pdf#page=5.83
- https://github.com/Stability-AI/generative-models
- 问题引入
- 1-4 steps fast diffusion model sampling;
- 提出了adversarial diffusion distillation(ADD)方法来减少inference时候的step数,使用score distillation+adversarial loss来实现,效果比gan以及lcm要好,整体的;
- 其中adversarial loss是用来使模型直接生成lie on the manifold of real images的sample结果,避免其他distiallation操作常见的模糊和artifact;
- 在推理的时候,该方法不使用CFG,进一步降低了显存需求;
- 之前的progressive distilltion和guidance distillation可以减少采样steps,但是生成效果会变差,还有lcm的方法可以降低采样step;这些方法存在一个统一的问题就是采样结果模糊或者存在artifact,还有gan的方法;
- 之前有一些工作使用Score Distillation Sampling或者adversarial training来进行训练,本文结合使用两种方法来实现减少采样步骤并且保持采样效果的目的;
- methods
- 包含三个模型,ADD-student模型( θ \theta θ),参数使用预训练模型进行初始化,discriminator模型( ϕ \phi ϕ)以及DM-teacher模型( ψ \psi ψ),一个加噪的 x s = α s x 0 + σ s ϵ x_s=\alpha_sx_0 + \sigma_s\epsilon xs=αsx0+σsϵ,ADD-student生成 x θ ^ ( x s , s ) \hat{x_\theta}(x_s,s) xθ^(xs,s),定义 T s t u d e n t = { τ 1 , ⋯ , τ n } T_{student}=\{\tau_1,\cdots,\tau_n\} Tstudent={τ1,⋯,τn},包含 N = 4 N=4 N=4个steps,其中 τ n = 1000 \tau_n=1000 τn=1000, s s s从其中进行采样;
- 对应adversarial loss,生成的
x
θ
^
\hat{x_\theta}
xθ^和
x
0
x_0
x0送到discriminator中,discriminator模型由冻结参数的feature network
F
F
F和可训练的head
D
ϕ
,
k
D_{\phi,k}
Dϕ,k组成,其中head的输入是
F
k
F_k
Fk,
k
k
k表示层数,训练的损失函数是hinge loss,对于ADD-student损失函数
对于discriminator的损失函数 - 对应distillation loss,生成的
x
θ
^
\hat{x_\theta}
xθ^会进一步加入噪声得到
x
^
θ
,
t
\hat{x}_{\theta,t}
x^θ,t,之后teacher模型进行denoising得到
x
^
ψ
(
x
^
θ
,
t
,
t
)
\hat{x}_\psi(\hat{x}_{\theta,t},t)
x^ψ(x^θ,t,t),损失函数
其中 s g sg sg是stop-gradient operation, d d d表示距离的度量; - 总的噪声是两部分噪声的加权和,该方法在使用到ldm模型上面的时候可以在pixel或者latent空间计算distillation loss,但是本文在pixel空间,因为得到的结果更加稳定;