Skip to main content

Text2Video-Zero

Text2Video-Zero(Khachatryan ら, 2023)は、追加の training をまったく行わずに、pre-trained な text-to-image diffusion model を使って video を生成する training-free な手法です。

課題

Latent code を単純にランダムに sample してそれぞれ画像に decode しただけでは、生成された frame 列に object や semantics の時間的整合性は保証されません。Text2Video-Zero は、この問題を二つの仕組みで解決します。

  • Latent code の sequence に motion dynamics を持たせることで、global な scene と背景の時間的整合性を保ちます。
  • Frame ごとの self-attention を、最初の frame に対する cross-frame attention に書き換え、前景 object の見た目や identity を保ちます。

Text2Video-Zero pipeline

画像出典: Lilian Weng, “Diffusion Models for Video Generation”。Text2Video-Zero のパイプライン概要です。

Motion を持たせた latent 系列の生成

Motion 付きの latent variable 系列 xT1,,xTm\mathbf{x}^1_T, \dots, \mathbf{x}^m_T は、次の手順で生成されます。

  • Global な scene と camera motion を制御する方向 δ=(δx,δy)R2\boldsymbol{\delta} = (\delta_x, \delta_y) \in \mathbb{R}^2 を定義します。既定では δ=(1,1)\boldsymbol{\delta} = (1, 1) です。Motion の量を制御する hyperparameter λ>0\lambda > 0 も定義します。
  • 最初の frame の latent code を xT1N(0,I)\mathbf{x}^1_T \sim \mathcal{N}(0, I) として sample します。
  • Pre-trained な image diffusion model(論文では Stable Diffusion)を使って、Δt0\Delta t \geq 0 step の DDIM backward update を行い、T=TΔtT' = T - \Delta t における latent code xT1\mathbf{x}^1_{T'} を得ます。
  • 各 frame について、δk=λ(k1)δ\boldsymbol{\delta}^k = \lambda(k - 1)\boldsymbol{\delta} で定義される warping 操作を適用し、x~Tk\tilde{\mathbf{x}}^k_{T'} を得ます。
  • 最後に、x~T2:m\tilde{\mathbf{x}}^{2:m}_{T'} に DDIM forward step を適用し、xT2:m\mathbf{x}^{2:m}_T を得ます。
xT1=DDIM-backward(xT1,Δt),T=TΔtWkwarping operation of δk=λ(k1)δx~Tk=Wk(xT1)xTk=DDIM-forward(x~Tk,Δt)for k=2,,m\begin{aligned} \mathbf{x}^1_{T'} &= \text{DDIM-backward}(\mathbf{x}^1_T, \Delta t), \quad T' = T - \Delta t \\ W_k &\gets \text{warping operation of } \boldsymbol{\delta}^k = \lambda(k - 1)\boldsymbol{\delta} \\ \tilde{\mathbf{x}}^k_{T'} &= W_k(\mathbf{x}^1_{T'}) \\ \mathbf{x}^k_T &= \text{DDIM-forward}(\tilde{\mathbf{x}}^k_{T'}, \Delta t) \quad \text{for } k = 2, \dots, m \end{aligned}

Cross-frame attention

Text2Video-Zero では、pre-trained Stable Diffusion の self-attention layer を、最初の frame を参照する cross-frame attention に置き換えます。これによって、前景 object の見た目、形状、identity を全体の video を通して保つことを狙います。

Cross-Frame-Attn(Qk,K1:m,V1:m)=Softmax ⁣(Qk(K1)c)V1\text{Cross-Frame-Attn}(\mathbf{Q}^k, \mathbf{K}^{1:m}, \mathbf{V}^{1:m}) = \text{Softmax}\!\left(\frac{\mathbf{Q}^k (\mathbf{K}^1)^\top}{\sqrt{c}}\right) \mathbf{V}^1

Background smoothing

Optional な仕組みとして、background mask を使って背景の整合性をさらに高めることもできます。kk 番目の frame に対する前景 mask Mk\mathbf{M}^k を別途求めておき、diffusion step tt において actual latent code と warped latent code を mask に従って混ぜます。

xˉtk=Mkxtk+(1Mk)(αx~tk+(1α)xtk),k=1,,m\bar{\mathbf{x}}^k_t = \mathbf{M}^k \odot \mathbf{x}^k_t + (1 - \mathbf{M}^k) \odot (\alpha \tilde{\mathbf{x}}^k_t + (1 - \alpha)\mathbf{x}^k_t), \quad k = 1, \dots, m

ここで、xtk\mathbf{x}^k_t は actual latent、x~tk\tilde{\mathbf{x}}^k_t は背景に対する warped latent です。論文の実験では α=0.6\alpha = 0.6 が使われています。

ControlNet との併用

Text2Video-Zero は ControlNet と組み合わせることもできます。各 diffusion time step t=T,,1t = T, \dots, 1 において、各 frame xtk\mathbf{x}^k_tk=1,,mk = 1, \dots, m)に対して ControlNet の pretrained copy branch を適用し、その出力を main U-Net の skip connection に加えます。

関連ページ