Bootstrap

DiffSynth: Latent In-Iteration Deflickering for Realistic Video Synthesis学习笔记

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}\} {xt11,xt12,,xt1n} 由于独立去噪,生成的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=αt xti1α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αt xtiαt x0i.
加噪得到
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). xt1i=αt1 x0i+1αt1 ϵ(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] [ji],表示由第 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^ji, 表示由第 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^ji]0=X^i,[X^ji]u+1=[X^jk]u[ki].
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

experiments

在这里插入图片描述
Pixel-MSE:计算了连续帧之间的光流,并使用光流将编辑后的视频中的每一帧warp到下一个帧,warp帧与其对应的目标帧之间的平均均方误差定义为 Pixel-MSE

关于deflickering algorithm(去闪烁算法)的消融实验,去除deflickering algorithm生成的灯光、天空颜色等不连贯
在这里插入图片描述

;