LAMP: Learn A Motion Pattern for Few-Shot-Based Video Generation学习笔记
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/59cbb9aa57d7270d0bd3bcb75f3140ad.png)
motivation:
直接训练T2V模型需要大量文本视频对数据集
利用视频template(模板),使用扩散模型操纵内容,可以实现one-shot或zero-shot,但给定视频模板的使用极大地限制了生成自由度。
contribution:
使模型理解运动的同时,实现训练负担和生成自由度之间的权衡
解决两个问题:
数据量有限,有可能过度拟合视频中的内容。解决方法:first-frameconditioned pipeline
T2I扩散模型的基本算子只适用于空间维度,这限制了它们捕获视频中时间信息的能力。解决方法:temporal-spatial motion learning layers设计了时空运动学习层,同时捕捉时间和空间维度的特征
method
Few-shot-based T2V Generation Setting
V
=
{
V
i
∣
i
∈
[
1
,
n
]
}
\textbf{V}=\{\mathcal{V}_i|i\in[1,n]\}
V={Vi∣i∈[1,n]} 表示描述特定任务的n个视频
P
\mathcal{P}
P 表示prompt
希望从一个小的训练集中学习常见的运动模式,而忽略内容。
调整后的模型可以从与运动相关的提示P中生成与V相似的运动模式的新视频V ’
First-Frame-Conditioned Pipiline
用来解耦motions(运动)和contents(内容)
训练过程:
V
=
{
f
i
∣
i
=
1
,
.
.
.
,
l
}
\mathcal{V}=\{f^i|i=1,...,l\}
V={fi∣i=1,...,l} 表示初始视频帧,编码为latent space
Z
=
{
z
i
∣
i
=
1
,
.
.
.
,
l
}
\mathcal{Z}=\{z^i|i=1,...,l\}
Z={zi∣i=1,...,l},训练模型时保留
z
1
{z}^{1}
z1,在后续视频帧
{
z
2
,
.
.
.
,
z
l
}
\{z^{2},...,z^{l}\}
{z2,...,zl} 加噪
L
=
E
Z
,
ϵ
∼
N
(
0
,
I
)
,
t
,
c
[
∥
ϵ
2
:
l
−
ϵ
θ
2
:
l
(
Z
t
,
t
,
c
)
∥
2
2
]
\mathcal{L}=\mathbb{E}_{\mathcal{Z},\epsilon\sim\mathcal{N}(0,I),t,c}[\|\epsilon^{2:l}-\epsilon_{\theta}^{2:l}(\mathcal{Z}_{t},t,c)\|_{2}^{2}]
L=EZ,ϵ∼N(0,I),t,c[∥ϵ2:l−ϵθ2:l(Zt,t,c)∥22]
第一帧不参与训练
推理过程:
使用SD-XL获得第一帧
f
^
1
\hat{f}^{1}
f^1,编码为
z
^
1
\hat{z}^{1}
z^1,
[
z
^
1
,
ϵ
2
,
.
.
.
ϵ
l
]
[\hat{z}^1,\epsilon^2,...\epsilon^l]
[z^1,ϵ2,...ϵl]送入UNet进行视频生成
在每一步,保留第一帧的latent并对后续帧进行去噪。
问题:原始的 T2I 模型将帧视为独立样本,第一帧信息如何利用,如何使模型在temporal level work
Adapt T2I Models to Video
Temporal-spatial motion learning layers.
1D convolution捕捉时间维度信息
2D convolution捕捉空间维度信息
videoprediction-based 1D convolution: 当内核通过帧 {fi−1, fi, f i+1} 的特征滑动时,我们基于videoprediction-based 1D convolution产生来自 i+1 的特征,而不是像1D convolution中那样产生 fi的特征
可以利用前两帧来预测后续帧
Attention layers
所有key和value特征都是从第一帧获得的
Attention
(
Q
i
,
K
1
,
V
1
)
=
Softmax
(
Q
i
(
K
1
)
T
d
)
V
1
\text{Attention}(Q^i,K^1,V^1)=\text{Softmax}(\frac{Q^i(K^1)^T}{\sqrt{d}})V^1
Attention(Qi,K1,V1)=Softmax(dQi(K1)T)V1
重新制定的self-attention层有助于后续帧参考第一帧建立的条件
Shared-noise Sampling During Inference
首先采样一个共享噪声
ϵ
s
∼
N
(
0
,
I
)
\epsilon^{s}\sim\mathcal{N}(0,I)
ϵs∼N(0,I)
噪声序列
[
ϵ
2
,
.
.
.
,
ϵ
l
]
[\epsilon^{2},...,\epsilon^{l}]
[ϵ2,...,ϵl] 与基本噪声分布相同
ϵ
i
=
α
ϵ
s
+
(
1
−
α
)
ϵ
i
,
\epsilon^i=\alpha\epsilon^s+(1-\alpha)\epsilon^i,
ϵi=αϵs+(1−α)ϵi,
experiments
使用 SD-v1.4 生成第一帧将会降低性能
没有第一帧条件pipeline的模型会产生低质量的结果。视频中不相关的对象(如栅栏和污垢)的存在表明了视频集内容的过拟合
没有共享噪声采样的模型也可以生成相对一致的帧,但结果缺乏平滑度。
去除时空运动学习层时,模型不能有效地捕捉复杂的运动模式
将video-prediction-based 1D convolution(基于视频预测的一维卷积)转换为一维卷积的原始版本时,视频的主要对象变得不一致。