DiffSynth: Latent InIteration Deflickering for Realistic Video Synthesis(为视频生成实现潜在迭代去闪烁)学习笔记
motivation: 将图像生成模型用于视频生成模型会产生闪烁现象
contribution: 提出将迭代去闪烁框架应用于latent space,提出一种视频去闪烁算法,patch blending algorithm
method
Latent In-Iteration Deflickering(latent 域迭代去闪烁框架)
n帧,t步加噪得到的tensor
{
x
t
1
,
x
t
2
,
…
,
x
t
n
}
\{x_{t}^{1},x_{t}^{2},\ldots,x_{t}^{n}\}
{xt1,xt2,…,xtn} 直接按照原始去噪方式得到
{
x
t
−
1
1
,
x
t
−
1
2
,
…
,
x
t
−
1
n
}
\{x_{t-1}^{1},x_{t-1}^{2},\ldots,x_{t-1}^{n}\}
{xt−11,xt−12,…,xt−1n} 由于独立去噪,生成的latent tensor不一致
本文做法:
先估计
{
x
0
1
,
x
0
2
,
…
,
x
0
n
}
\{x_{0}^{1},x_{0}^{2},\ldots,x_{0}^{n}\}
{x01,x02,…,x0n}的值,使用公式:
x
^
0
i
=
x
t
i
−
1
−
α
t
ϵ
(
x
t
i
)
α
t
.
\hat{x}_0^i=\frac{x_t^i-\sqrt{1-\alpha_t}\epsilon(x_t^i)}{\sqrt{\alpha_t}}.
x^0i=αtxti−1−αtϵ(xti).
将估计得到的
{
x
^
0
1
,
x
^
0
2
,
…
,
x
^
0
n
}
\{\hat{x}_0^1,\hat{x}_0^2,\ldots,\hat{x}_0^n\}
{x^01,x^02,…,x^0n} 解码为image space
X
^
i
=
D
(
x
^
0
i
)
\hat{X}^i=\mathcal{D}(\hat{x}_0^i)
X^i=D(x^0i) 得到
{
X
^
1
,
X
^
2
,
…
,
X
^
n
}
\{\hat{X}^{1},\hat{X}^{2},\ldots,\hat{X}^{n}\}
{X^1,X^2,…,X^n}
采用video-level去闪烁方法
F
\mathcal{F}
F 来使视频连贯
{
X
‾
1
,
X
‾
2
,
…
,
X
‾
n
}
=
F
{
X
^
1
,
X
^
2
,
…
,
X
^
n
}
.
\{\overline{X}^1,\overline{X}^2,\ldots,\overline{X}^n\}=\mathcal{F}\{\hat{X}^1,\hat{X}^2,\ldots,\hat{X}^n\}.
{X1,X2,…,Xn}=F{X^1,X^2,…,X^n}.
再把处理过的视频帧encoder回latent域
x
‾
0
i
=
E
(
X
‾
i
)
.
\overline{x}_0^i=\mathcal{E}\left(\overline{X}^i\right).
x0i=E(Xi).
修改预测的噪声
ϵ
ˉ
(
x
t
i
)
=
x
t
i
−
α
t
x
‾
0
i
1
−
α
t
.
\bar{\epsilon}(x_t^i)=\frac{x_t^i-\sqrt{\alpha_t}\overline{x}_0^i}{\sqrt{1-\alpha_t}}.
ϵˉ(xti)=1−αtxti−αtx0i.
加噪得到
x
t
−
1
i
=
α
t
−
1
x
‾
0
i
+
1
−
α
t
−
1
ϵ
‾
(
x
t
i
)
.
x_{t-1}^i=\sqrt{\alpha_{t-1}}\overline{x}_0^i+\sqrt{1-\alpha_{t-1}}\overline{\epsilon}(x_t^i).
xt−1i=αt−1x0i+1−αt−1ϵ(xti).
(与之前的扩散生成模型不同)
Patch Blending Algorithm(视频去闪烁算法)
讲如何设计上述提到的
F
\mathcal{F}
F
主要思想:
X
^
i
\hat{X}^{i}
X^i中的物体,可能也存在于
X
^
j
\hat{X}^{j}
X^j中,将相应
X
^
j
\hat{X}^{j}
X^j中的区域remap到
X
^
i
\hat{X}^{i}
X^i中,然后混合
目的:融合的帧会显示出
X
^
i
\hat{X}^{i}
X^i 和
X
^
j
\hat{X}^{j}
X^j 的一致特征
问题:patch匹配可能会不准确
解决方式:patch matching algorithm(2009年),该算法将两帧
X
i
X^i
Xi和
X
j
X^j
Xj划分为一些重叠的小块,计算nearest neighbor field (NNF)(最近邻场)找到匹配的patches
具体匹配方式(比较复杂)
定义符号:
remapping operator
[
j
→
i
]
[j\rightarrow i]
[j→i],表示由第
j
j
j 帧
X
^
j
\hat{X}^{j}
X^j remap到第
i
i
i 帧
X
^
i
\hat{X}^{i}
X^i 的操作
X
^
j
→
i
\hat{X}^{j\to i}
X^j→i, 表示由第
j
j
j 帧
X
^
j
\hat{X}^{j}
X^j remap到第
i
i
i 帧
X
^
i
\hat{X}^{i}
X^i的结果
下标表示remap的次数
[
X
^
j
→
i
]
0
=
X
^
i
,
[
X
^
j
→
i
]
u
+
1
=
[
X
^
j
→
k
]
u
[
k
→
i
]
.
[\hat{X}^{j\to i}]_0=\hat{X}^i, \\ [\hat{X}^{j\to i}]_{u+1}=[\hat{X}^{j\to k}]_u[k\to i].
[X^j→i]0=X^i,[X^j→i]u+1=[X^j→k]u[k→i].
experiments
Pixel-MSE:计算了连续帧之间的光流,并使用光流将编辑后的视频中的每一帧warp到下一个帧,warp帧与其对应的目标帧之间的平均均方误差定义为 Pixel-MSE
关于deflickering algorithm(去闪烁算法)的消融实验,去除deflickering algorithm生成的灯光、天空颜色等不连贯