[Generative] Align your Latents:High-Resolution Video Synthesis with Latent Diffusion Models (CVPR’23)

2024. 3. 8. 01:55Developers 공간 [SOTA]

728x90
반응형
<구성>
0. Before Start ...
    a. 배경1 : DDIM
    b. 배경2 : Score-based
    c. 배경3 : ADM
    d. 배경4 : LDM
    e. Video Generation
1. Problem
2. Approach
    a. pre-trained Image LDM $f_{\theta }$
    b. Video fine-tuning $f_{\theta ,\phi }$
    c. Upsampler
3. Results
    a. Driving Video Synthesis
    b. Text-to-Video Synthesis

글효과 분류1 : 논문 내 참조 및 인용

글효과 분류2 : 폴더/파일

글효과 분류3 : 용어설명

글효과 분류4 : 글 내 참조

글효과 분류5 : 글 내 참조2

글효과 분류6 : 글 내 참조3


0. Before Start ... 

 

Diffusion을 활용한 다양한 Image Generation 기법들이 등장했지만, 이번 글에서는 Video Generation과 관련한 논문을 하나 소개하려고 합니다. 

 

기존의 Diffusion을 활용한 Image Generation 기법에서 어떻게 Temporal정보를 반영해 Video를 생성하도록 바꿨는지를 궁금해, 주목하며 찾아보았습니다. SVD(Stable Video Diffusion)에서는 다양한 데이터셋을 활용하고 다양한 모델을 참조해 구조를 구축했는데, 그중 baseline으로 삼은 모델이 바로 이 논문 Video-LDM입니다.
** Stable Video Diffusion : Scaling Latent Video Diffusion Models to Large Datasets (arxiv'23)

** SVD page : https://stability.ai/news/stable-video-diffusion-open-ai-video-model

** SVD에서는 이 논문과 다르게 모델 전체를 fine-tune했습니다.

 

Video-LDM에 설명하기 앞서, 알고 있으시면 좋은 내용에 대해 설명하고자 합니다. 알고계신다면 이번 챕터를 건너 뛰시는 것을 추천드립니다.


a. 배경1 : DDIM

 

[DDIM] Denoising Diffusion Implicit Models (ICLR'21)

 

DDPM에서 Sampling 과정은 T iteration을 통해 진행되는데, 이는 기존의 deep generative model들에 비해 굉장히 느리기 때문에, 이를 가속하기 위해 기존의 Markovian으로 정의되었던 forward process를 non-Markovian으로 정의해 deterministic한 sampling으로 만들어 step을 줄일 수 있음을 보인 논문입니다.
** 결과적으로 1000step에 가까운 diffusion timestep을 20~100step으로 줄였습니다.

 

DDPM에서 markovian chain을 활용해 Loss를 완성했다는 부분을 기억하시나요?

 

(복습) gaussian noise를 더하는 step들이 markov chain형태이기 때문에 forward process $q(x_{1:T}|x_0)$를 아래와 같이 나타낼 수 있었습니다. 이는 ELBO를 풀어나가는데 활용되었습니다.

$$q(x_{1:T}|x_0):=\prod^T_{t=1}q(x_t|x_{t-1})$$

물론 위의 Markov chain정의 덕에 Loss도 얻을 수 있었죠. DDPM에서 소개되었던 Loss도 다시 한번보이면 아래와 같습니다.

$$L(\theta ):= \mathbb{E}_{t,x_0,\epsilon }\left [\frac{\beta ^2_t}{2\sigma ^2 _t \alpha _t (1-\bar{\alpha}_t)} \left \| \epsilon - \epsilon _\theta (\sqrt{\bar{\alpha }_t}x_0+\sqrt{1-\bar{\alpha }_t}\epsilon ,t) \right \|^2 \right ]$$

 

(복습) forward 과정에 대한 정의도 기억해야합니다. 기억이 안나시는 분들은 아래 더보기를 클릭하세요

더보기

------------------------------------------------------

<Forward 과정에 대한 정의>

 

한 step에 대한 정의는 아래와 같았습니다

$$\begin{matrix}
q(x_t|x_{t-1})=N(x_t;\sqrt{\alpha _t}x_{t-1}, (1-\alpha _t)I)\\ 
x_t=\sqrt{\alpha _t}x_{t-1}+\sqrt{1-\alpha _t}\epsilon 
\end{matrix}$$

 

또한 Markov chain이 성립하지 않아도 아래같이 표현할 수 있었습니다. 

이를 본 논문에서는 “special property”혹은 “nice property”라고 합니다.

 

$$\begin{matrix}
q(x_t|x_0)=N(x_t;\sqrt{\bar{\alpha }_t}x_0, (1-\bar{\alpha _t})I)\\ 
x_t=\sqrt{\bar{\alpha }_t}x_0+\sqrt{1-\bar{\alpha }_t}\epsilon 
\end{matrix}$$

------------------------------------------------------

 

DDIM이 DDPM에 문제를 지적한 부분은 아래와 같습니다.

  • Marginals(주변 분포) $q(x_t|x_0)$에만 너무 집중 했다
  • Joint(결합 분포) $q(x_{1:T}|x_0)$자체에 집중을 해달라

따라서 다시 처음으로 돌아가 Markov chain이 아닌 non-markovian process로 위 forward process $q(x_{1:T}|x_0)$를 풀어 보았습니다

$$q(x_{1:T}|x_0):=q(x_T|x_0)\prod^T_{t=2}q(x_{t-1}|x_{t},x_0)$$

 

위 같은 결과가 나오게된 과정에는, 아래 그림과 같이 하나의 step이 markov chain을 통한 $q(x_t|x_{t-1})$ 였던 것과는 다르게 $q(x_t|x_{t-1},x_{0})$로 정의해서 풀어나간 결과입니다. 앞서 살펴본 Markov chain을 활용한 결과와는 좀 다른 것을 알 수 있습니다.

 

[DDPM(왼쪽) DDIM(오른쪽)]

 

또한 forward 과정에 대한 정의를 활용해 위 함수 중 $q(x_{t-1}|x_t,x_0)$를 정의할 수 있게 되는데, 이는 아래와 같습니다.

$$q(x_{t-1}|x_t,x_0)=N(\sqrt{\alpha _{t-1}}x_0 +\sqrt{1-\alpha _{t-1}-\sigma ^2_t}\cdot \frac{x_t-\sqrt{\alpha _t}x_0}{\sqrt{1-\alpha _t}}, \sigma ^2_tI)$$

 

1. pretrained DM활용이 가능한 Sampling

 

위 정의를 활용해 DDPM에서처럼 ELBO를 풀어나가 보면 결과적으로 아래와 같은 결론에 도달합니다.

$$L(\theta)=\mathbb{E}_q\left (\frac{1-\bar{\alpha }_t}{2\sigma ^2_t\bar{\alpha }_t}\cdot \left \| \epsilon - \epsilon ^{(t)}_\theta (x_t) \right \|^2\right )$$

 

위의 DDPM에서 활용했던 Loss와 비슷하죠? non-Markovian으로 정의한 posterior가 실제로 DDPM같은 Loss로 수렴한다는 사실이 입증될 수 있습니다. 즉, objective function의 변화가 없었기 때문에, DDPM으로 학습한 모델을 다른 sampling을 활용해 다시 학습할 필요 없이, pre-trained DM을 그대로 활용해 새로운 샘플링 방법만 적용해 사용할 수 있습니다.

2. deterministic한 Sampling

 

Reverse Process에 대해 DDPM과 같이 sample과정 전체를 표현하면 아래와 같습니다.

**아래 $x_0(x_t,\epsilon _\theta)$는, $x_t$에 더해졌을 것이라고 예측한 noise를 파악해 estimate한 결과 $x_0$입니다.

$$p_\theta ^{(t)}(x_{t-1}|x_t)=\left\{\begin{matrix}
N(x_0(x_t,\epsilon_\theta),\sigma ^2_1I)&\sim &if \ t=1\\ 
q(x_{t-1}|x_t,x_0(x_t,\epsilon _\theta ))&\sim &otherwise
\end{matrix}\right.$$

 

이는 아래와 같이 표현할 수도 있습니다

[DDIM의 sampling 과정]

 

만약, 위 random noise부분을 $\sigma _t^2 =0 \sim \forall t$ 라고 한다면 random noise 부분이 아예 사라져 variance가 없어진다는 것을 알 수 있습니다.

 

즉, $x_T$와 $x_0$가 1:1매칭이 되는 deterministic 한 generative process가 가능하다는 뜻입니다. 결과적으로 pretrained 된 DM모델을 가지고 sampling과정만 위와 같이 변화시키면 variance없이 step이 진행될 수 있습니다.

 

이런 특징 때문에 semantically interpolation이 가능한데, 궁금하신 분들은 아래 더보기를 참조하세요

더보기

--------------------------------------------------------------------

<Deterministic한 특성으로 인한 Semantically Interpolation>

 

DDIM은 deterministic하게 때문에 같은 noise에 대한 결과가 consistency한 특성이 있습니다. 따라서, latent space상에서 의미 있는 이미지들 간의 semantically interpolation이 가능해지게 됩니다.


GAN도 implicit probabilistic 모델이기 때문에, "inversion"이라는 컨셉으로 latent space상에서 원하는 input을 특정하는 vector를 얻을 수 있었습니다. 따라서, styleGAN 등에서는 이 vector를 찾아 원하는 대로 이미지를 edit할 수 있게 됩니다.

** Inversion과 관련해서는 다른 글에서 깊게 다루겠습니다.

 

이와 같이 DDIM도 간단히 $x_T$에서의 noise를 interpolation을 하면 의미있는 interpolation결과가 나온다는 것을 알 수 있습니다. 또한, 이는 high-level 에서 generated 된 이미지가 어떤 것이 될지를 컨트롤할 수 있다는 의미이기도 합니다.

[interpolation한 결과]

 

--------------------------------------------------------------------

 

3. 모든 Step에 대해 Sampling을 할 필요가 없음

 

추가적으로 위식을 자세히 보면 "$x_0$를 예측하고 나서 $x_t$로 복구하는 형태"를 가지므로, 중간의 step을 건너 띄더라도 이전 step에 대한 의존성이 없어 건너뛸 수도 있다는 내용도 있습니다.


b. 배경2 : Score-based

 

[Score-based] Score-Based Generative Modeling through Stochastic Differential Equations (ICLR'21)

 

DDPM에서 Forward 과정을 아래와 같이 표현했던 것 기억하시나요?

$$x_t= \sqrt{1-\beta _t}x_{t-1}+\sqrt{\beta _t}\cdot N(0,I)$$

 

이 식을 $\beta _t := \beta(t)\bigtriangleup t$로 수학적으로 정의해서 풀어나가는 논문이 바로 해당 논문입니다. 즉, 기존에 SMLD(Score Matching with Langevin Dynamics)Diffusion은 모두 "학습 데이터를 연속적으로 corrupting하고 noise를 늘려주는 형태"를 가지고 있습니다.

  • SMLD는 data에 대한 log probability density의 gradient를 “score”로 사용해 noise를 감소하는 scale로 활용
  • Diffusion은 일련의 function form을 활용해 noise를 줄여나가는 형태

이 두 모델이 모두 Score-based generative models이라고 볼 수 있다는 것을 보인 논문입니다. 

 

위 정의에 따라 기존의 식을 Taylor Expansion에 의해 풀어나가면 아래와 같이 표현할 수 있습니다.

$$\begin{matrix}
x_t&=& \sqrt{1-\beta _t}x_{t-1}+\sqrt{\beta _t}\cdot N(0,I) \\
&\approx &x_{t-1}-\frac{\beta (t)\bigtriangleup t}{2}x_{t-1}+\sqrt{\beta (t)\bigtriangleup t}\cdot N(0,I)
\end{matrix}$$

결과적으로 미분 방정식(ODE)처럼 생겼네요.

 

1. SDE 의 정의

 

이런 ODE 형태에 stochastic한 부분이 포함된 것을 Stochastic Differential Equation(SDE)이라고 하며 forward SDE는 아래와 같이 표현할 수 있습니다.

** SDE는 기존의 브라운 운동을 표현하기 위해 사용되던 표현이며, $\omega$는 standard Wiener process로 이를 표현하기 위한 sequence 단위입니다.

** 정확히는 SDE의 종류 중 $dx=[f(t)x+u(t)]dt+G(t)d\omega$형태인 linear SDE입니다.

$$\begin{matrix}
dx_t &=& -\frac{1}{2}\beta (t)x_tdt + \sqrt{\beta(t)}d\omega _t\\ 
&=&  f(t)x_tdt + g(t)d\omega _t
\end{matrix}$$

** SMLDDDPM 등 다양한 SDE 형태를 보고 싶으시면 아래 더보기를 참조하세요

더보기

-----------------------------------------------

<SMLD와 DDPM의 SDE형태>

 

사실 SMLD DDPMForward Process SDE를 Discretization을 통해 연속된 t를 N개의 step으로 나타낸 것과 같습니다.

 

먼저 SMLD는 N개의 perturbation kernel $p_{\sigma_i}(x|x_0)$이 아래와 같은 markov chain & 조건에 의해 성립됩니다.

** perturbation kernel (transition kernel) : 여러개의 노이즈 스케일을 통해 데이터를 perturbing하는 kernel이기 때문에 forward process와 관련 있습니다. 

$$\begin{aligned}
\text{Markov Chain }&&x_i&=&x_{i-1}+\sqrt{\sigma^2_i-\sigma^2_{i-1}z_{i-1}},&i=1,...,N\\ 
&&z_{i-1}&=&z(\frac{i}{N})\sim \mathcal{N}(0,\mathbf{I})&\\ 
&&x_i&=&x(\frac{i}{N})&x_0\sim p_{data}\\ 
&&\sigma_i&=&\sigma(\frac{i}{N})&\sigma_0=0\\ 
&&\Delta t&=&\frac{1}{N}&
\end{aligned}$$

 

이 때 $\Delta t\rightarrow0$ 혹은 $N\rightarrow \infty $를 하면 아래와 같은 SDE를 얻을 수 있으며, 분산이 exploding하는 구조이기 때문에 Variance Exploding(VE) SDE라고 부릅니다.

$$dx=\sqrt{\frac{d[\sigma ^2(t)]}{dt}}dw$$

 

다음으로 DDPM의 N개의 perturbation kernel $p_{\alpha_i}(x|x_0)$는 아래와 같은 markov chain & 조건에 의해 성립됩니다.

$$\begin{aligned}
\text{Markov Chain }&&x_i&=&\sqrt{1-\beta_i}x_{i-1}+\sqrt{\beta_i}z_{i-1},&i=1,...,N\\ 
&&z_{i-1}&=&z(\frac{i}{N})\sim \mathcal{N}(0,\mathbf{I})&\\ 
&&x_i&=&x(\frac{i}{N})&x_0\sim p_{data}\\ 
&&\beta_i&=&\beta(\frac{1}{N})=\bar{\beta}_i&\\
&&\Delta t&=&\frac{1}{N}&
\end{aligned}$$

 

이 때 $\Delta t\rightarrow0$ 혹은 $N\rightarrow \infty $를 하면 아래와 같은 SDE를 얻을 수 있으며, bounded된 variance를 유지하는 구조를 가지게 되므로 이들을 Variance Preserving(VP) SDE라고 부릅니다. (위에서 보던 식과 같습니다)

** 이때, initial distribution이 unit variance를 가지면 constant unit variance를 가집니다.

$$dx=-\frac{1}{2}\beta (t)xdt+\sqrt{\beta (t)}dw$$

 

Score-based논문에서는 likelihood 모델에서 특히 더 잘 수행되는 또다른 타입의 SDE를 제안하는데, 같은 $\beta (t)$를 활용하지만 위 VP SDE와 동일하게 variance가 bounded 되기에 sub-VP SDE라고 부릅니다.

$$dx=-\frac{1}{2}\beta (t)xdt+\sqrt{\beta (t)(1-e^{-2\int_{0}^{t}\beta (s)ds})}dw$$

 

이때, 위 세 SDE들은 모두 affine drift coefficient를 가지기 때문에, 각각 SDE perturbation kernel $p_{0t}(x(t)|x(0))$는 모두 "Gaussian 분포"이며, "Closed-form으로 계산 가능"합니다.

** perturbation kernel의 식 중 drift term이 affine하다면 평균과 분산이 closed form으로 표현되며 gaussian distributtion형태를 가지는 것으로 알려져있습니다.

** affine transformation : 직선/평면 등을 모두 보존하는 Linear Mapping 방법으로, 일반적으로 Wx+b형태를 가집니다.

 

정리하면 아래와 같습니다.

$$d\mathbf{x}=\left\{\begin{aligned}
\sqrt{\frac{d[\sigma^2(t)]}{dt}}&&(VE\ SDE)\\
-\frac{1}{2}\beta(t)\mathbf{x}dt+\sqrt{\beta(t)}dw&&(VP\ SDE)\\ 
-\frac{1}{2}\beta(t)\mathbf{x}dt+\sqrt{\beta(t)(1-{\rm e}^{-2\int ^t_0\beta(s)ds})}dw&&(sub-VP\ SDE)\\ 
\end{aligned}\right.$$

 

각각에 대한 perturbation kernel $p_{0t}(\mathbf{x}_t|x_0) $을 pdf형태로 나타내면 아래와 같습니다.

$$p_{0t}(\mathbf{x}_t|x_0) =  \left\{\begin{aligned}
\mathcal{N}(\mathbf{x}_t;&& \mathbf{x}_0,&\left[ \sigma(t)^{2}-\sigma(0)^{2}  \right ]\mathbf{I})&&(VE\ SDE)\\
\mathcal{N}(\mathbf{x}_t;&& \mathbf{x}_0{\rm e}^{-\frac{1}{2}\int ^t_0\beta(s)ds},&\ \mathbf{I}-\mathbf{I}{\rm e}^{-\int ^t_0\beta(s)ds})&&(VP\ SDE)\\ 
\mathcal{N}(\mathbf{x}_t;&& \mathbf{x}_0{\rm e}^{-\frac{1}{2}\int ^t_0\beta(s)ds},&\left[1-{\rm e}^{-\int ^t_0\beta(s)ds}\right ]^2\mathbf{I})&&(sub-VP\ SDE)\\ 
\end{aligned}\right.$$

-----------------------------------------------

 

즉, DDPM의 Forward process는 SDE 형태로 나타냈을 때, 아래의 두개 coefficient로 표현할 수 있습니다.

[Forward Process의 SDE]

f(t)를 포함한 drift term은 방향성을 나타내는 ODE이고, g(t)를 포함한 diffusion term은 stochastic한 부분을 표현합니다.

 

2. Reverse SDE

 

이제 관련논문에 따라 이 식에 대한 Reverse process를 표현할 수 있습니다. 아래는 Reverse SDE를 나타내며, 빨간 부분은 score function이라고 부릅니다.

**Stochastic Processes and their Applications (SPA'82)

[Reverse Process의 SDE]

 

근데 Reverse식에 보면 우리가 모르는 $p_t(x_t)$라는 pdf을 활용한 score function이 들어있습니다.

 

따라서 이 score function부분을 예측할 수 있는 neural network $s_\theta (x_t,t)$를 아래와 같이 학습하는 것이 목표입니다.

$$\underset{\theta}{min}\ \mathbb{E}_{t,x_t}\left \| s_\theta (x_t,t)-\triangledown _{x_t}log\ p_t(x_t|x_0) \right \|^2_2$$

** score function $\triangledown _{x_t}log\ p_t(x_t|x_0)$을 구하는 과정이 궁금하신 분은 아래 더보기를 참조하세요

** $p_t(x_t)$가 $p_t(x_t|x_0)$로 된 이유에 대해서는 아래 더보기를 참조하세요

더보기

-----------------------------------------------

<Score Function $\triangledown _{x_t}log\ p_t(x_t|x_0)$ 구하는 방법>

 

결국 우리가 학습해야하는 것은 아래와 같이 $s_\theta(x,t)$를 학습해야하는데, reverse SDE의 score function 내 $p_{0t}(x_t|x_0)$(0에서 t까지의 forward conditional pdf)를 모르고 있습니다.

$$\theta^*=argmin_{\theta}\mathbb{E}\begin{Bmatrix}
\lambda(t)\mathbb{E}_{x_0}\mathbb{E}_{x_t|x_0}[\left \| s_\theta(x_t,t)-\nabla_{x_t}log\ p_{0t}(x_t|x_0) \right \|^2_2]
\end{Bmatrix}$$

 

먼저, $p_{0t}(x_t|x_0)$에서 $x_0$가 condition되어 있는 이유는,  DDPM에서와 같이 $x_0$를 condition 하지 않으면 tractable하지 않기 때문입니다. 
$$\bigtriangledown _{x_t}log\ p_t(x_t) \rightarrow \bigtriangledown _{x_t}log\ p_t(x_t|x_0)$$

 

이제 forward SDE의 $p_{0t}(x_t|x_0)$를 알아내 보겠습니다. 

 

linear SDE $dx=[f(t)x+u(t)]dt+G(t)d\omega$의 경우는 $x_0$가 주어지면 gaussian 분포 $p_{0t}(x_t|x_0)$를 따르고, 평균과 분산은 closed form을 따릅니다.

 

이 때, closed form인 평균과 분산 f(t)와 g(t)로 이루어진 미분방정식이므로 구해낼 수 있습니다. 

 

하지만 다른 방법도 있습니다.

 

SDE가 $dx=f(x,t)dt+G(x,t)d\omega$ 형태로 있을 때, 이 SDE의 marginal pdf $p_{0t}(x_t|x_0)$는 아래와 같은 FPK(Fokker-Plank-Kolomogorov) 편미분 방정식을 구하면 구할 수가 있습니다.

$$\frac{\partial p(\boldsymbol{x}, t)}{\partial t}=-\sum _i\frac{\partial}{\partial x_i} [f_i(x,t)p(x,t)]+\frac{1}{2} \sum _{i,j}\frac{\partial^2}{\partial x_i\partial x_j}[G(x,t)^2]_{i,j}p(x,t)$$

 

단, 위 식을 풀때,

  • $x_0$가 있는 경우, 초기 condition $p(x,0)$는 $\delta(x-x_0)$이며, solution은 $p(x,t)=p_{0t}(x|x_0)$입니다.
  • $x_0$가 없는 경우, 초기 condition $p(x,0)$는 $p_{data}(x)$이며, solution은 $p(x,t)=p_{t}(x_t)$입니다.

즉, 위에서 closed form을 활용해 풀었던 방법은 초기값이 dirac delta일 때 풀었던 방법이었던 것이죠.

-----------------------------------------------

 

본 논문에서는 위식을 Reparametrization Trick 까지 활용해 식을 풀어나가다 보면 아래와 같이 결국 t step에서 더해진 noise를 예측하는 것이 목표가 됩니다. 이는 DDPM에서의 학습했던 방식과 비슷하다는 것을 보인다고 할 수 있습니다.

$$\underset{\theta}{min}\ \mathbb{E}_{t,x_0,\epsilon }\frac{1}{{\sigma _t}^2}\left \| \epsilon - \epsilon _\theta (x_t,t)\right \|^2_2$$

 

결국 SDE식에서 coefficient를 어떻게 정의하느냐에 따라 NCSM, DDPM 방식으로 나뉘었던 것이지, 실제로는 noise를 예측하는 같은 문제 였다는 것으로 결론내려집니다.

 

3. Deterministic Reverse ODE

 

또한 DDIM과 같이 reverse-time SDE를 deterministic하게 변화 시킨 것을 Probability Flow ODE라 합니다. 아래와 같이 기존의 SDE식에서 stochastic한 부분이 사라지며, drift term이 바뀝니다.

** SDE와 ODE는 같은 조건(초기값 $p_0(x_0)=p_{data}(x_0)$)을 활용해 풀었으므로 같은 marginal density $p_t(x_t)$를 가집니다. 즉, 같은 probability density를 다른 수식으로 풀 수 있다는 뜻이죠.

$$\begin{matrix}
dx&=&f(x,t)dt+G(x,t)d\omega&SDE\\
dx&=&\hat{f}(x,t)dt&ODE\\
\end{matrix}
$$

 

이 둘을 잘 비교해 놓은 그림이 있어 인용했습니다.

[https://youtu.be/uFoGaIVHfoE?si=0_F4KnlOqt8dc5Vg]

 

위 그림을 보면 왼쪽의 SDE 방식은 stochastic하게 진행되는 process를 볼 수 있지만, 오른쪽의 deterministic한 ODE는 결과를 위해 직접적으로 결과를 찾아가는 것을 볼 수 있습니다.

 

구체적으로 reverse process에서 어떻게 바뀌는지 살펴보겠습니다. 아래와 같이 기존 Reverse Process에서 Stochastic한 부분이 없어져 Deterministic해지며, coefficient가 변경됩니다.

[Reverse Process의 Probability Flow ODE로의 변화]

더보기

------------------------------------------------------------

<다양한 Sampling 방법>

 

SDE활용해 generation하는 방법에는 여러가지가 있습니다.

 

1. Reverse Diffusion : score-based 방식대로 revserse SDE를 시간을 쪼개 dx만큼 update

$$dx=[f(x,t)-G(t)G(t)^\top \nabla_xlogp_t(x)]dt+G(t)d\bar{\omega}$$

 

2. Ancestral sampling : discrete Marcov Chain을 이용한 DDPM에서 소개된 discrete한 update 방식

$$x_{i-1}=\frac{1}{\sqrt{1-\beta_i}}(x_i+\beta_is_{\theta*}(x_i,i))+\sqrt{\beta_i}z_i,\ i=N,(N-1),\dots,1$$

 

3. Probability Flow

 

4. PC(Prediction-Correction) Sampler 

  • Prediction : 위 Ancestral sampling, Reverse diffusion, Probability Flow 중 하나로, timestep을 옮길 때 사용되는 것
  • Correction SMLD에서 사용된 개념으로, Kalman Filter처럼 옮겨진 timestep을 correct하는 작업

------------------------------------------------------------

 

4. Class-Conditional

 

이 논문에서 추가적으로 class-conditional하게 생성하는 방법도 제안했는데,  classifier의 gradient를 사용해 pre-trained된 모델의 condition이 될 수 있다고 했습니다. 

 

이를 살펴보기 위해 기존의 Reverse SDE의 다른 표현법에서 score function에 Bayes Rule을 적용하면 아래와 같습니다.

[Score Function에 Bayes Rule을 적용한 결과]

 

즉, "noisy한 이미지 x_t로 class label y를 얻을 수 있는 classifier"의 gradient를 sampling process에 포함시키면 반영이 가능하다는 것입니다.

 

다시 score function을 자세히 살펴보겠습니다. unconditional 한 $p_\theta $에서 condition을 반영한 $p_{\theta ,\phi }$로 바꾼 식은 아래와 같이 표현할 수 있고, 몇개의 가정을 통해 아래와 같이 정리 될 수 있습니다.

** Z는 단순히 normalizing constant입니다.

$$\begin{matrix}
p_\theta (x_t|x_{t+1})\rightarrow p_{\theta ,\phi }(x_t|x_{t+1},y)&=&Z\cdot &p_\theta (x_t|x_{t+1})\cdot p_\phi (y|x_t)\\ 
&=&Z\cdot &logp(z) +C\ \\
\end{matrix}$$

이때의 z는 아래와 같습니다.

$$z\sim \boldsymbol{N}(\mu + \Sigma \bigtriangledown _{x_t}p_{\phi }(y|x_t,t), \Sigma  )$$

위 결과에서 상수를 제외하면 $x_t$에서 $x_{t-1}$을 sampling할 때의 평균 $\mu $에서 "condition의 gradient"만큼 shift된 새로운 분포에서 sampling을 해서 찾아내면 되는 상황이라는 것을 알 수 있습니다.

 

즉, 결과적으로 classifier 네트워크 $p_\phi$ 를 학습한 후,  "noisy 이미지 x를 넣었을 때의 class y에 대한 gradient값"을 분포에서 shifting하면 됩니다.

 

이는 아래 ADM에서 활용됩니다.


c. 배경3 : ADM

 

[ADM, Ablated Diffusion Model] Diffusion models beat GANs on image synthesis (NIPS’21)

 

Diffusion 모델을 활용해 "기존의 Generative 모델"보다 더 높은 quality의 이미지를 생성한 것이 contribution인 논문입니다.

 

새로 등장한 컨셉의 Diffusion 모델은 성능이 기존 GAN보다 FID/Inception Score/Precision 기준으로 성능이 좋지 않았습니다. 하지만 metric 자체가 diversity를 측정하기에 어려울 때도 있고, GAN은 likelihood-based 모델보다 상대적으로 diversity가 낮고 hyperparameter나 regularizer의 사용이 어려워 학습이 어렵다는 단점이 있었습니다.

 

따라서 이에 대응한 VQ-VAE와 같은 likelihood-based 모델이 등장해 diversity를 해결했지만, 반대로 visual sample quality가 낮은 단점이 있었습니다.

 

이 논문을 통해 같은 likelihood-based의 diffusion모델이 기존의 모델보다 high-quality 성능까지 보일 수 있음을 보였습니다. 본 논문에서는 아래와 같은 개선 사항이 있었습니다.

 

1. Improved DDPM의 DDIM과 에서의 step size를 줄일 수 있는 방법을 차용했습니다.

**Improved denoising diffusion probabilistic models (arxiv'21)

  • Improved DDPM : 기존 DDPM에서 활용한 Noise Schedule과 다르게 fixed variance를 사용하지 않았으며, 이를 이용한 hybrid objective function을 활용했습니다.
  • DDIM : non-Markovian noise process를 활용함으로써 reverse sampling을 deterministic하게 진행해 sampling step을 줄였습니다.

2. 다양한 ablation을 통해 FID를 높이기 위한 더 나은 UNet architecture를 제안했습니다. (Ablated U-Net)

 

기존 DDPM은 기존의 UNet을 활용해 구현했습니다.

**U-Net: Convolutional Networks for Biomedical Image Segmentation(MICCAI'15)

 

하지만 다른 논문에서는 sample quality를 높이기 위해 이전 구조를 개선했습니다.

Adversarial score matching and improved sampling for image generation (arxiv'20)

  • Residual layers + Downsampling convolutions 의 stack 
  • Residual layers  + Upsampling colvolutions의 stack
  • skip connection을 활용해 위 두 stack 간의 연결되어있습니다.
  • 16x16 layer : global attention 을 single head로 활용했습니다.
  • timestep embedding을 각각의 residual block에 projection 해 주었습니다.

이후에 Score-based 논문에서는 앞서 언급하지는 않았지만 U-Net의 depth를 증가시킴으로써 높은 성능을 보이기도 했습니다.

 

이에 이논문은 ablations를 통해 Sample Quality를 증가하기 위해 아래와 같은 변화를 주었습니다. (Ablated U-Net이라 불리는 이유)

  • Depth / Width를 키우면서, 모델 사이즈를 상대적으로 constant하게 유지합니다.
  • scored-based와 같이 BigGAN의 residual block을 upsampling and downsampling에 활용했습니다.
    ** BigGAN : Large scale gan training for high fidelity natural image synthesis (arxiv'18)
  • Attention을 16x16에서만 사용하던 것에서 (32×32, 16×16, and 8×8)로 변경하고, Attention head를 늘렸습니다.
  • residual connections들을 $\frac{1}{\sqrt{2}}$로 Rescaling했습니다. 
  • Improved DDPMAdaptive Group Normalization(AdaGN)과 같이 Group Normalization이후에 time step과 class embedding을 residual block에 포함시켰습니다.
    • $AdaGN(h,y)=y_s\cdot GroupNorm(h) + y_b$
    • h : 중간 activation
    • y : (timestep + class embedding)의 linear projection 값

 

3. classifier guidance를 통해 성능을 개선했습니다.

 

기존의 GAN은 conditional한 이미지 합성을 할때 class label을 활용합니다. 따라서 이런 label-limited한 특징이 fidelity~diversity의 tradeoff를 가능하게 했다고 합니다. 따라서 이를 반영한 classifier guidance를 제안해 이런 tradeoff를 가능하게 했다고 합니다.
**이미 앞서의 class embedding을 AdaGN을 통해 UNet에 반영했지만, 다른 접근방법을 추가했습니다.

 

Scored 논문에서 이미 class-conditional한 generation방법을 제안했었습니다. 즉, classifier의 gradient를 사용하면 pre-trained된 모델의 condition이 될 수 있다고 했습니다. 

 

본 논문에서는 이 classifier 모델로 (UNet의 downsampling 부분 + attention pool)을 활용해 구현했으며, ImageNet에서 학습했습니다. 또한 gradient scale s이라는 hyper-parameter를 통해 fidelity(precision+IS)와 diversity(recall)의 trade off를 조절할 수 있었다고 합니다. 

** FID는 fidelity와 diversity를 모두 반영하기 때문에 중간에서 최고의 성능을 냈습니다.
** 이 hyperparameter는 1보다 클때 더 class와 비슷한 결과를 낼 수 있었다고 합니다.

 

결과적으로, 추가적인 hyperparameter를 통해 adversarial example 없이 앞서 언급한 tradeoff 문제를 해결했습니다.

** Adversarial Example : 입력 이미지에 (인간도) 인지하기 어려운 미세한 노이즈를 삽입하여 생성한 이미지를 말합니다. 딥러닝으로는 이러한 적대적 예제를 잘 분류하지 못하는 것으로 알려져있습니다.

** Intriguing properties of neural networks(arxiv'13) 

** 이후에 등장했고, 많이 사용될 CFG에 대한 개념이 궁금하시면 아래 더보기를 참조하세요

더보기

------------------------------------------------------------

<CFG의 등장>

classifier free diffusion guidance(arxiv’22)

 

위와 같이 classifier를 활용하는 방법은 classifier를 따로 학습을 해야하는데다가, gradient를 구해 반영한 후 sampling하므로 부가적인 연산이 있는 등의 단점이 있었습니다.


따라서 학습이 필요한 추가적인 classifier를 추가하는 대신, classifier를 implicit하게 원래 모델에 포함시켜가는 학습을 할 수 있다고 주장한 논문입니다.

 

(복습) 기존 ADM에서는 아래와 같이 classifier model $p_\theta (c|z_\lambda )$를 아래와 따로 학습해 반영해 주었습니다.

$$\begin{matrix}
\tilde{\epsilon _\theta}(z_{\lambda}, c)&=&\epsilon _\theta(z_{\lambda}, c)-w\sigma _\lambda \bigtriangledown _{z_\lambda}logp_\theta(c|z_\lambda )\\ 
&\approx &-\sigma _\lambda \bigtriangledown _{z_\lambda}[logp(z_\lambda |c)+wlogp_\theta(c|z_\lambda )]
\end{matrix}$$

 

하지만 본 논문에서는 분리된 classfier model을 따로 만들지 않고, 기존의 Neural Network를 통해 class identifier를 null token $\phi $로 학습한 값과 class C로 학습한 값으로 나누어 아래와 같이 합쳐 주었습니다.

$$\tilde{\epsilon _\theta}(z_{\lambda}, c) = (1+w)\epsilon _\theta(z_{\lambda}, c)-w\epsilon _\theta(z_{\lambda}, c=\phi )$$

 

$\phi $와 class를 넣어주는 방법으로는, 기존의 timestep t를 넣어 주던 것과 같이 Diffusion Model에 입력해줍니다.

 

** 결과적으로 Classifier Guidance와 CFG의 경우 무조건 condition을 주기 위해 쓰여야할 것 같지만, 타 논문에서는 "선택적으로" 쓰였습니다.

즉 컨디션을 noise를 뽑아내는 $p_\theta $에 포함시킨 후, 위와 같은 parameter를 통해 합쳐주는 것을 선택적으로 사용해 실험했고, 실제로 CFG의 경우는 사용하는 것이 성능을 많이 향상하는 것으로 알려져있습니다.

------------------------------------------------------------

 

ADM에서의 Ablated-UNet구조는 LDM, Video-LDM등 다양한 곳에서 활용됩니다.


d. 배경4 : LDM

 

[LDM, Latent Diffusion Model] High-Resolution Image Synthesis with Latent Diffusion Models(CVPR'22)

 

기존의 DM은 특히나 high resolution의 결과를 내기 위해서는 굉장히 큰 UNet을 사용하기 때문에 큰 computationally demand를 필요로 합니다. 따라서 두가지의 DM 모델이 제안되었는데 그것이 LDMCDM입니다. 이 두 네트워크는 High Resolution을 위한 Super Resolution작업을 위해 Upsampler로 활용 되기도 합니다.

** Super Pixel : Image Processing의 일부로, 픽셀간 비슷한 색 정보 등을 가진 것들 끼리 묶는 작업
** Super Resolution : 저해상도의 영상을 고해상도의 영상으로 변환하는 기술

** Spatial Upsampling : 기존에 nearest neighbor interpolation, Linear interpolation, Lanczos interpolation와 같은 알고리즘을 활용해 이미지를 크게 만드는 방법으로, Super Resolution과 동일한 의미로 쓰입니다.

 

LDM은 Encoder/Decoder를 활용해 Latent space에서 연산량을 줄이고, UNet에 cross-attention layer를 추가함으로써 text와 같은 condition input을 받을 수 있도록 제안한 논문입니다.

 

Diffusion은 likelihood-based 모델이기 때문에 GAN과 같이 mode-collapse가 발생하거나 학습이 불안정한 단점이 없고, AR 모델과 같이 방대한 파라미터가 필요 없습니다. 오히려, parameter sharing을 통해 복잡한 distribution을 학습할 수 있다고 합니다.


** mode collapse : 생성자가 다양한 이미지를 만들어내지 못하고 비슷한 이미지만 계속해서 생성하는 경우


** mode coverage : diversity를 측정하는 지표

 

하지만 문제가 있습니다. high-resolution의 이미지 합성을 위해서 computationally demanding하며, 오래걸린다는 단점이있습니다.

 

DDPM에서 보았던 Rate-Distortion Plot을 다시 보겠습니다. DDPM에서 step에 따라 나타나는 양상에 대해 기억하시나요?

  • t가 클수록 : large scale feature(coarse contents)이 나타나기 시작합니다.
  • t가 작을수록 : fine detail(low-level details)이 나타나기 시작합니다.
더보기

------------------------------------------------------------

<Rate 와 Distortion>

 

Rate와 Distortion에 대해 간단하게 설명하려고 합니다. 먼저 Rate와 Distortion을 간단히 표현하면 아래와 같습니다.

 

  • Rate : 정보를 표현하는 bit의 수로, 압축 이후에 해당 정보를 표현하는데 필요한 Bit Rate를 의미합니다.
  • Distortion : 정보가 실제와 얼마나 다른지를 나타내는 수치로, 기존의 이미지와 압축이후의 이미지 사이의 차이를 의미합니다. MSE, SSIM 등 distance metric을 활용해 측정합니다.

이렇게 정의된 Rate와 Distortion을 활용해 압축의 목적을 나타내면,이 모든 주어진 Rate에서 Distortion을 최소화하는 것을 목적으로 합니다. DDPM에서는 Diffusion에서 생성하는 각 step을 압축으로 표현해, 해당 step별로 rate와 distortion을 나타내기 도 했습니다.

 

Autoregressive Generation의 시초인 PixelCNN++에서 bits/dim으로 활용되며 나온 개념이지만, 하기 논문에서 조금더 자세히 나와있으니 참조하시길 바랍니다.

** Masked Autoregressive Flow for Density Estimation (NIPS'17)

------------------------------------------------------------

 

본 논문에서도 비슷한 이야기를 합니다.

  • t가 클수록 (semantic compression stage) : semantic+conceptual을 담당하는 부분
  • t가 작을 수록 (perceptual compression stage) : high frequency 디테일을 담당하는 부분

[Rate- Distortion Plot과 각 부분이 뜻하는 의미]

 

따라서, 이 논문에서는 위와 같이 DM의 perceptual한 부분을 다른 autoencoder를 활용해 유지하면서, semantic한 부분만 DM으로 처리하겠다는 것입니다. 결과적으로 perceptual equivalent 하면서도 연산적으로 더 효율적인 방법을 제안합니다.

 

이 논문은 3가지 큰 Contribution이 있습니다.


1. perceptual equivalent한 autoencoder구조를 따로 학습합니다.

 

autoencoder를 따로 두어 perceptual한 부분을 담당하도록 합니다. 이런 구조를 만들면 아래와 같은 장점 이 있습니다.

  • perceptual한 부분이 유지되도록 학습을 진행 할 수 있으며, 이후에 DM이 perceptual한 부분을 제외하고 학습하기 때문에 sampling을 줄일 수 있다고 합니다.
  • lower-dimension로 줄인 후 동작할 수 있어, 이후에 DM이 이미지 생성을 연산측면에서 효율적으로 할 수 있습니다.
  • autoencoder는 한번 학습되고 나면 여러개의 DM 학습에 공통적으로 활용될 수 있습니다.

아래 Pixel Space로 나타난 부분이 잘 나타냅니다.

[LDM의 구조]

 

기존의 VQ-GAN에서의 "perceptual compression model"을 베이스로 구축했기 때문에, 아래와 같은 특징이 VQ-GAN과 같습니다.

  • autoencoder 구조 : $\tilde{x}=D(z) \approx  D(\varepsilon (x))$
  • perceptual loss 활용
  • batch-based adversarial objective : VQ-GAN과 같이 original 이미지와 생성된 이미지 간의 구분을 하는 patch-based discriminator $D_\psi $를 활용해 학습했습니다. 

** VQ-GAN에 대해 궁금하시면 아래 더보기를 참조하세요

더보기

------------------------------------------------------

<VQ-VAE>

Neural discrete representation learning(NIPS'17)

 

해당 논문은 기존의 VAE를 인풋 이미지를 convolutional한 구조를 통해 정보를 뽑고, vector quantization을 활용해 discrete 표현법(codebook)을 학습하는 형태를 가집니다. 이는 Posterior Collapse문제를 피할 수 있다고 합니다.

** Posterior Collapse : Autoregressive Decoder와 같이 사용할 때, Latent에 있던 정보가 무시되는 현상

[VQ-VAE의 구조]

 

뒤의 VQ-GAN에서 활용될 Loss에 대해 설명하기 위해 Loss에 대해서만 간단히 설명하겠습니다.

  • $z_q$ : decoder의 embedding
  • $z_e$ : encoder의 encoding
  • e : codebook
  • sg : stopgradient로, 해당 값은 업데이트하지 않겠다는 뜻
[VQ-VAE의 Loss]

 

  • Reconstruction Loss : 생성된 이미지와, 실제이미지간의 차이
  • VQ Loss : codebook 벡터와 encoder의 출력의 차이 (for codebook)
  • commitment loss : codebook벡터와 encoder의 출력의 차이(for encoder)

 

<VQ-GAN>

VQ-GAN : Taming transformers for high-resolution image synthesis (CVPR'22)

Transformer 구조와 CNN구조의 장단점은 아래와 같습니다.

  Transformer Convolutional
장점 input의 복잡한 long-range interaction 학습 local correlation을 학습

CNN으로 활용되는 경우 inductive bias를 제공할 수 있음
- locality bias
- spatial invariance
단점 inductive prior가 없어 locality interaction을 반영하기 어려움

computational cost가 높음
semantic level의 정보를 알기 어려움

본논문에서 제안하는 구조는 위 두개의 구조를 함께 고려하자는 것입니다. 본 논문에서 제안하는 개선점은 아래 세가지입니다.

  • convolutional한 접근으로 locality를 학습해 visual part를 만들고, codebook을 만듭니다.
  • transformer 구조로 long-range interaction을 학습해 global composition을 만들어냅니다.
  • + adversarial 접근을 활용해 local part의 dictionary들이 perceptual한 부분을 잘 학습할 수 있도록 합니다.
    (transformer의 low-level 모델링까지 가능하도록 하도록 하기 위해)

학습은 VQ-VAE와 같이 두단계로 진행했습니다

 

1. data의 encoding, 즉 codebook을 학습

 

Convolutional한 Encoder E와 Decoder G을 구성한뒤, codebook을 학습합니다. 아래 q()는 element-wise quantization입니다.

$$\hat{x}=G(q(E(x)))$$

[VQ-GAN의 첫번째 step]

 

또한 DiscriminatorPerceptual Loss를 활용해 더 많은 정보를 가진 Codebook을 만들수 있도록 했습니다.

 

즉, Loss인 $L_{VQ}$는 위 VQ-VAE에서의 Loss와 같지만, VQ Loss에서의 Reconstruction Loss를 perceptual loss로 대체합니다.

** Perceptual Loss :  Content Loss와 Style Loss로 구현됩니다. 측정 방법으로는 VGG와 같은 pre-trained된 네트워크의 pre-determined layer의 feature map을 얻어 distance metric으로 구하는 방법으로 진행됩니다.

  • Content Loss : 생성된 feature map이 실제 image간에 content가 얼마나 다른지를 측정
  • Style Loss : texture나 style이 얼마나 다른지를 측정

또한 Patch-based Discriminator D를 활용해 추가적인 Loss를 추가합니다. 이는 patch가 실제 이미지와 reconstructed된 이미지 중 어느 것에서 온 것인지의 구분을 하기 위해 사용합니다.

$$L_{GAN}(VQGAN, D)=[logD(x)+log(1-D(\hat{x}))]$$

 

 

2. 앞서 학습한 encoding의 probabilistic model을 transformer를 활용해 학습

 

완성된 codebook을 기반으로 Transformer는 autoregressive하게 "다음 index를 prediction"하는 형태로 이미지를 생성하며 학습합니다. 

$$L_{Transformer}=\mathbb{E}_{x\sim p(x)}[-logp(s)]$$

[VQ-GAN의 두번째 step]

 

결과적으로, VQ-GAN의 결과는 아래와 같이 얻습니다.

[VQ-GAN의 결과]

 

+ user control에 대해서는 따로 새로운 codebook을 학습해 해당 codebook을 condition으로 transformer를 활용해 autoregressive하게 생성합니다. 

 

+ transformer의 attention은 전체이미지를 보는 것이 아닌 Sliding Attention Window만을 보고 결정합니다.

------------------------------------------------------

 

LDM에서 활용하는 최종 Loss는 아래와 같습니다. 

[LDM Loss]

 

이때 Regularization의 경우 latent space 의 z가 zero-centered하면서도 작은 분산을 갖게 만들고 싶어 활용했다고 합니다. 다만, high fidelity한 결과를 얻기위해 굉장히 작은 weight를 주어 학습했습니다. 종류는 아래와 같은 두가지 입니다.

  • KL-reg : VAE와 같이 encoder의 결과 latent $N(z;\varepsilon _\mu , \varepsilon _{\sigma ^2})$와 $N(z;0,1)$간의 KLD 패널티를 제공합니다.
  • VQ-reg : VQ-GAN에서와 같이 Vector Quantization Layer를 추가해 latent space에서의 codebook을 학습하도록 했습니다.

 

2. 효율적인 Diffusion 모델 LDM(Latent Diffusion Model)


perceptual compression model로 인해 high frequency의 imperceptible한 detail들은 처리가 되었고, semantic한 부분들을 DM에서 처리하고 이를 LDM이라 부릅니다. 앞서의 과정을 통해 low-dimension에서 처리할 수 있게 되었기 때문에 연산적으로 효율적이게 처리할 수 있습니다.

 

기존의 방법들과는 다르게 image의 inductive bias를 그대로 제공할 수 있으며, UNet은 ADMAblated-UNet구조를 활용하고 기존의 Self-Attention을 (Self-Attention + Positionwise-MLP+Cross-Attention)으로 구성된 Shallow (unmasked) Transformer로 대체했습니다.

** Cross-Attention이 추가된 이유는 다음에 나옵니다.


3. Conditioning Mechanism

 

Transformer를 DM의 U-Net과 연결함으로써 token-based의 conditioning mechanism을 제안했습니다.


기존의 UNet backbone의 중간 표현으로 cross attention mechanism을 통해 projection되도록 구현했으며, 다양한 modality를 preprocess하기 위해서 domain specific 한 encoder $\tau _\theta$를 따로 만듭니다.

 

즉, 추가된 Cross Attention의 Query는 Unet의 중간표현을 의미하며, Key&Value는 $\tau _\theta$의 결과를 의미합니다. 

 

학습은 $\tau _\theta$와 $\epsilon  _\theta$가 jointly하게 학습됩니다.


 

 

LDM은 Super Resolution 및 Upsampler로도 활용되는데, 이때 작은 resolution의 이미지를 concat방법을 활용해 condition으로 주어 학습을 진행했습니다.


** LDM에서 condition을 줄 때 cross-attention을 활용한다고 했는데, concat을 통해 UNet의 input에 보내주기도 했습니다.

 

결과적으로 이런 LDM을 활용해 T2I Diffusion Model을 학습한 모델 시리즈가 SD(Stable Diffusion)입니다. SD는 오픈소스화되면서 커뮤니티에서 널리 사용되어 fine-tuning 등 베이스 모델로 많이 활용되고 있습니다.

더보기

--------------------------------------------------------
<Stable Diffusion이란>

 

Stable Diffusion은 LDM을 차용해 구축했지만, 설명되지 않은 특징들이 있어 정리했습니다.


1. Stable Diffusion

 

Resolution : 512x512 (SD1.5), 768x768(SD2.0)
Parameters : Autoencoder(Downsampling-factor 8),  860M UNet
Text Encoder : CLIP ViT-L/14 text encoder
+ Safety Checker : 모델의 결과가 NSFW concepts인지 확인하는 모듈입니다. 이는 reverse engineering의 가능성을 막기 위해 숨겨져 있으며, 생성된 이미지의 결과가 detect되면 까만 이미지의 결과가 나옵니다.

         **NSFW(Not Safe For Work) : 한국에서는 "후방주의"라는 인터넷 신조어로 쓰이며, 업무에 사용하기 적절하지 않은 데이터를 의미하는데 쓰입니다.
+ Invisible Watermarking : 이미지에 보이지 않는 watermark를 추가해 machine generated되었다는 것을 확인할 수 있게 만드는 모듈

 

2. SDXL
SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis(arxiv'23)

 

Resolution : 1024x1024

Parameters : 2.6B UNet
Text Encoder : 두개의 Text Encoder를 두고 prompt를 줄 수 있으며, 성능을 개선하는데도 도움을 주었다고 합니다.

[SD와 SD-XL의 비교]


SD-XL은 “ensemble of experts”라는 기법을 활용해 학습했는데, 초기 모델을 sub model들로 나누어 Divde & Conquer방식으로 구성하는 방법입니다.

 

즉, T2I base 모델과 Refiner라는 모델을 따로 두고, Refiner가 생성된 이미지의 quality를 높이도록 한 방법입니다.

--------------------------------------------------------

더보기

--------------------------------------------------------

 <CDM, Cascaded Diffusion Model>

Cascaded diffusion models for high fidelity image generation (arxiv’21)

 

high resolution의 결과를 내기 위한 또다른 효율적인 DM 모델로 제안된 모델이 CDM입니다. 


CDM은 아래 그림과 같이 작은 resolution의 image로부터 점점 연속적으로 upsample하며 resolution을 키워나가는 방식으로 학습을 진행했습니다.

[CDM의 방법]


pipeline 구조를 보면, low resolution을 z, high resolution을 x라 할때 두개의 네트워크를 합쳐 아래와 같이 표현할 수 있습니다.
$$p_\theta (z),\ p_\theta (x|z) \rightarrow p_\theta (x)=\int p_\theta (x|z)p_\theta (z)dz $$
따라서 lower resolution image를 bilinear 혹은 bicubic upsampling을 통해 원하는 resolution으로 만들어준뒤, concat되어 다음 super resolutional network로 넣어주는 방식입니다. 즉, LDM에서 concat을 통해 condition을 주는 것과 같이 진행했습니다.

 

또한 기존과 비슷하게 class label을 timestep와 함께 넣어주었습니다.

추가적으로 $p_\theta(x|z)$를 진행할 때 gaussian noise를 더해주거나 gaussian blur처리 해주는 방법으로 augmentation을 진행했는데, 이를 conditioning augmentation이라고 부릅니다.

CDM 구조는 이후에 T2V모델로 유명한 Imagen에서도 차용되었습니다.
**Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding(NIPS’22)

구조 자체가 Upsampling을 활용하는 구조이기 때문에, 역시나 LDM과 함께 Upsampler로 활용되기도 합니다.

-------------------------------------------------------- 

 


e. Video Generation

 

 

최근 Video Diffusion Model에 대해 간단히 살펴보고자 합니다.

 

Video Diffusion모델 중 잘 알려진 논문들은 아래와 같습니다.

  • LDM 기반이 아닌 모델
    • [VDM] Video diffusion models (NIPS’22)
    • [Imagen Video] Imagen video: High definition video generation with diffusion models (arxiv’22)
    • [Make-a-video] Make-a-video: Text-to-video generation without text-video data (arxiv’22)
  • LDM 기반의 모델
    • [Video-LDM] Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models (arxiv’23)
    • [Reuse and Diffuse] Reuse and diffuse: Iterative denoising for text-to-video generation (arxiv’23)
    • [Animatediff] Animatediff: Animate your personalized text-to-image diffusion models without specific tuning (arxiv’23)
    • [LVDM] Latent video diffusion models for high-fidelity long video generation (arxiv’23)
    • [Modelscope] Modelscope text-to-video technical report (arxiv’23)
    • [PixelDance] Make pixels dance: High-dynamic video generation (arxiv’23)
    • [Magicvideo] Efficient video generation with latent diffusion models (arxiv’22)[MagicVideo-V2] (arxiv’24)
    • [Gen-1] Structure and content-guided video synthesis with diffusion models (arxiv’23)

 

최근엔 LDM기반의 Video Diffusion 모델들이 많고, 이들은 아래와 같은 특징들을 가지고 있다고 합니다.

  • LDM을 활용해 Latent space에서 연산효율적으로 진행합니다.
  • pre-trained된 T2I UNet 모델을 활용해 추가적으로 학습합니다.
  • Coarse한 Frame Rate(Low-fps)에서 먼저 생성한 후, temporal 하게 upscale 해 24~32 fps(High-fps)의 smooth한 결과를 만들어냅니다.

 

이 중에 대표적인 논문 몇개만 간단히 보겠습니다.

 

가장 대표적인 Video Diffusion Model인 VDM은 기존의 UNet과 다르게 3D U-Net을 활용해 비디오 생성이 가능하도록 했습니다. 

** 3d u-net: learning dense volumetric segmentation from sparse annotation (MICCAI’16)

 

다음으로 MagicVideo는 아래 그림과 같이 일반적인 구조(a)를 가지고 있지만, UNet에 ST Attn이라는 것을 추가했습니다. STT Attn Adaptor는 (b)와 같으며 temporal dynamics를 조금더 잘 반영하기 위해 사용되었다고 합니다.

[Magic Video의 구조]

 

결과적으로, Video DM은 temporal 정보를 반영하기 위해 U-Net을 수정하는 등의 작업을 진행하는 형태로 진행되며, 다양한 논문 중 LDM기반의 Video-LDM을 소개하고자 합니다.


1. Problem 

 

기존 Video Modeling은 학습에 큰 computational cost가 들어간다는 단점이 있습니다. 또한 large-scale의 video datasets이 부족하기 때문에 low-resolution 혹은 짧은 길이의 video만 생성이 가능했습니다.

 

이에 따라 본 논문은 LDM의 아래와 같은 장점을 활용해 학습을 진행하고자 합니다.

  • high-quality의 image를 합성할 수 있습니다.
  • 방대한 compute demands를 피할 수 있습니다.

즉, Video Generation을 위해 기존의 image 기반으로 pre-trained된 image LDM을 가져와 Video fine-tune이라는 작업을 수행합니다.

 

결과적으로 효율적으로 high resolution이며 시간적으로 길이가 충분한 video들을 생성할 수 있습니다.

더보기

-------------------------------------------------------------------------------------------

<Fidelity vs Quality>

 

High Quality Image : 높은 품질의 이미지, 고품질 이미지
High Fidelity Image : (현실 또는 원본에 대해) 높은 재현율을 가진 이미지, (현실 또는 원본을) 잘 재현해낸 이미지

-------------------------------------------------------------------------------------------


2. Approach 

 

본 논문에서 수행하는 순서를 아래와같이 세개의 단계로 나누어 보았습니다.

 

  1. image 기반의 pre-trained LDM을 추가로 학습하거나, 그대로 활용합니다.
  2. Video fine-tune : Video Generator로 바꿔줍니다.
    • 특징1. 기존의 spatial layers들은 freeze합니다.
    • 특징2. DM의 latent space에서 temporal 차원을 잘 align해, fine-tune 학습을 진행하면 temporal consistency를 만들어줄 수 있습니다.
  3. Upsampler를 활용해 높은 해상도이면서 temporally consistent한 결과를 만들어 줍니다.


a. pre-trained Image LDM $f_{\theta }$

 

 

아래와 같은 LDM 모델을 가져온 UNet의 기존 layer들을 spatial layer $l^i_{\theta }$라 부릅니다. 이후에는 이 layer들을 freeze하고 학습을 진행할 것입니다. 

 

이렇게 pre-trained 모델을 활용해 학습을 진행하면 미리 거대한 이미지 데이터셋을 활용해 pre-train할 수 있습니다. 또한, spatial layer들은 이후에 학습한 이후에도, 기존 이미지 LDM의 역할 그대로 pixel 차원에서 처리할 수 있는 기능이 있습니다.

[기존 LDM의 구조]


b. Video fine-tuning $f_{\theta ,\phi }$

 

이제 앞서의 spatial layer를 freeze한 후, auto-encoder 형태로 "Video fine-tuning"을 진행합니다. 

 

Video fine-tuning을 위한 in/out을 먼저 살펴보겠습니다. Video input, 즉 RGB frame의 sequence는 아래와 같습니다.
$$x\in R^{T\times 3\times \hat{H}\times \hat{W}}$$

이렇게 들어온 Video input은 당연히 아래와 같이 encoder를 통해 latent representation으로 변환 됩니다.

$$z_0=\epsilon (x)$$

 

그리고 선택적으로 Text Prompt와 같은 Condition정보 c가 input으로 들어옵니다.

 

이제 Temporal Awareness를 추가위해 어떤 조치를 하는지를 살펴보겠습니다. Temporal 정보를 잘 학습하도록 하지 않으면 image sequence들이 시간적으로 coherent하지 않아 artifacts 들이 flickering하는 현상이 일어납니다. 따라서 아래와 같은 조치를 통해 이를 잘 반영할 수 있도록 합니다.

 

위에서 언급한 바와 같이 기존의 spatial layer를 freeze하고 새로운 temporal layer $l^i_\phi $를 추가합니다. video fine-tuning에서는 이 temporal layer만을 최적화하며, 이 layer들의 목적은 당연히 temporal consistence를 유지해주기 위함입니다.

 

또한, 앞서 말한 바와 같이 이렇게 추가된 temporal layer들은 skip이 가능하도록 설계됩니다. (자세한 내용은 뒤에서 다루겠습니다.)

[기존 LDM의 수정된 부분]

 

구체적으로 Temporal layer에 대해 살펴보겠습니다. 아래와 같은 두가지의 Temporal Mixing Layers를 추가했습니다. 

  • Conv3D layer : 기존 Temporal axis인 T를 유지하며 3D Convolution을 진행합니다.
  • Temporal attention layer : time 차원 내의 correlation을 알아내기 위해 사용합니다. 이때 attention에 사용되는 pos embedding은 UNet에서 사용하는 timestep과 같이 sinusoidal을 활용해 처리됩니다.

 

위 layer 중 Conv3D의 temporal 축을 활용하기 위해 alignment awareness를 제공하는 방법에 대해 조금 자세히 다뤄보겠습니다.

 

기존의 Spatial Layer에서는 $B\cdot T$를 batch 차원으로 묶어 활용했지만, Temporal Layer에서는 T 차원을 살려 연산을 할 수 있도록 변환했습니다. 자세한 dimension에 대한 설명은 아래 그림을 참조하면 좋습니다.

** Einops 표현법을 모르시는 분들은 아래 더보기를 참조하세요

더보기

---------------------------------------------------------

<Einops 표현법 : Einstein-Inspired Notation for OPerationS>

Einops: Clear and reliable tensor ma- nipulations with einstein-like notation. (ICLR’22)


코드의 code readability와 flexibility를 향상시키기 위한 차원에 대한 표현법입니다. 자세한 규칙보다는 예시에 대해 표현하고자 합니다. 


ex1) b c h w -> b h w c : transpose됨
ex2) b c h w -> b c : h,w가 reduce되어 없어짐(max-reduction 등)
ex3) b c -> b c h w : repeat되어 늘어남 (같은 값)
ex4) h w c -> (h w) c : h,w 를 합쳐서 reshape
ex5) () h w c -> h w c : squeeze 0
ex6) b t c’ -> (b t c) : flatten
ex7) h (LR w) c -> LR h w c : width를 left와 right로 나눈 것 (LR은 2임)
ex8) h w -> h (w 2) : width를 2배로 repeat 늘림
ex4) (h1 h2) (w1 w2) c -> (h1 w1) h2 w2 c : 이미지를 patch로 나누어 stack 함, 즉 (h2,w2)크기의 patch들을 stack 한 것


** ()안에 있는 것들은 곱해지는 대상입니다.

---------------------------------------------------------

 

또한 Spatial Layer의 결과 z와 Temporal Layer의 결과인 z'은 learnable parameter $\alpha ^i_{\phi}$를 통해 섞입니다. $\alpha ^i_{\phi}$는 C,H,W에 대해서는 constant이지만 temporal 차원마다 다르게 적용됩니다.

 

또한 이 값을 1로 고정하면, 기존 이미지 LDM 모델로 동작할 수 있게 되므로, 앞서 설명한 것과 같은 기능을 갖게 됩니다.

 

[Temporal Layer를 추가한 구조]

 


 

이외에도 추가적으로 Temporal 정보를 더 잘 학습하기 위해서 사용하는 것들이 있습니다.

 

먼저, auto-encoder의 decoder에 3D convolutions으로 구성한 Patch-wise Temporal Discriminator를 추가합니다. 이는 LDM에서도 활용되었던기법으로, 아래 그림과 같이 3D Conv를 통과한 결과가 옳은지 0/1로 나타내는 역할을 합니다. 

 

[Patch-wise Temporal Discriminator 활용]

 

이렇게 temporal 정보를 학습하기 위한 방법은 아래 표와 같이 FID에는 크게 영향이 없지만, FVD를 개선하는데 큰 역할을 하게됩니다. 

 

[Video fine-tune의 결과 비교]

 

 

또한 선택적으로 Prediction Model로 학습을 추가로 하기도 합니다. 위의 결과까지만 해도 Video sequence를 생성하는데 큰 역할을 하지만, 이들은 짧은 Video에 그치기 때문에 긴 Video를 생성하기 위해서는 prediction 모델로 학습하는 과정을 추가로 합니다.

 

T개의 frame들이 존재한다고 할 때, 학습하는 과정은 아래와 같습니다.

 

  1. T개 중 앞의 S개의 "context frame"들이 이미지 인코더 ε를 통하고, z를 만들어냅니다.
  2. Temporal Binary Mask $m_s$를 준비하고, 이들은 1.번의 결과에 곱해 $m_s\cdot z$를 만들어냅니다.
    ** 이 때 Mask는 S개의 frame외 T-S개에 대해 진행되며, T-S개는 predict해야하는 대상입니다.
  3. Mask $m_s$와 masked image $m_s\cdot z$를 concatenate해 $c_s$라 부릅니다.
  4. Learned Downsampling을 거칩니다.
  5. 이 값을 condition으로 주기위해 temporal layer $l^i_\phi $에 넘겨줍니다.

이 때 2번에서의 mask $m_s$는 categorical mask sampling 분포를 통해 0,1,2중에 선택하게 됩니다. 이는 context frame을 몇개 사용할지에 대한 것을 결정하는 분포입니다.

 

이제, Inference과정에서는 긴 비디오를 생성하기 위해서 Sampling을 iterative하게 연속적으로 진행합니다. 즉, 가장 최초의 이미지는 Base LDM에서 생성한 이미지를 사용하며, 이후 context frame은 이전에서 predict된 최근 이미지 2개를 활용해 iterative하게 진행합니다.

 

위 과정을 안정화하기 위해 CFG를 적용해 sampling했는데 수식은 아래와 같습니다. 이때 s는 guidance scale로 1보다 큰 값이며, 이 과정을 본 논문에서는 context guidance라고 부르겠다고 합니다.

$$f'_{\theta, \phi}(z_\tau ;c_S)=f_{\theta, \phi}(z_\tau )+s(f_{\theta, \phi}(z_\tau ;c_S)-f_{\theta, \phi}(z_\tau ))$$

[Context Guidance 과정]


c. Upsampler

 

Upsampling은 크게 Temporal하게 하는 방법과 Spatial하게 하는 방법으로 나뉩니다.

 

1. Temporal Upsampler

 

Temporal 하게 upsampling하는 과정을 Temporal Interpolation이라고 합니다. 이 과정을 통해 높은 frame rate의 비디오를 만들어줍니다.

 

즉, 아래 그림과 같이 앞서 만들어진 frame sequence를 "key frames"라고 칭하며, 이후에 다른 Upsampler 네트워크를 통해 key frame간의 frame들을 interpolation합니다. 즉, (T → 4T)를 통해 두 key frame 사이의 3개의 frame을 예측하고, (4T → 16T)를 통해 앞서 생성된 두 frame 사이의 3개의 frame을 예측합니다. 

[Temporal Frame Interpolation]

 

 

이 Upsampler를 학습하기 위해 앞서 설명한 masking-conditioning 메커니즘을 그대로 활용하지만, 앞과는 다르게 predict해야할 frame을 mask하는 것이 아닌 interpolated되어야 할 frame들을 mask합니다,

 

2. Spatial Upsampler

 

다음으로 Megapixel range를 위해 Spatial Upsampling을 진행하며, 이를 진행하는 모델을 Upscaler혹은 Upsampler라고 부르기도 합니다.

[Spatial Upsampling]

본 논문에서는 두개의 task에 대한 실험을 진행했는데, 각각에 따라 다른 구조를 활용해 upsampler를 구성했습니다.

  • Driving Video Synthesis : CDM
  • T2V : LDM

역시나 Upsamper할 때도 video-awareness를 제공하는 것이 중요하므로, temporal consistency를 제공하기 위해 Upsampler를 Video Aware하게 만들어주었습니다. 방법으로는, 앞서 진행한 것과 같이 temporal layer를 추가하고 fine tuning을 해주는 것입니다.

 

Upscaler는 low-resolution의 이미지가 concat된 sequence를 condition으로 받아 생성하는 구조이며, patch단위로 생성한 이후에 이 patch들을 convolutionally하게 적용해 줍니다.

 

그럼 왜 처음부터 upscaler급의 네트워크를 학습해서 사용하지 않았을까요? 

 

본 논문에서는 기존의 LDMprediction과 interpolation을 latent space에서 진행하고, upsampler는 prediction과 interpolation 없이 진행하기 때문에, 기존의 LDM은 큰 batch와 많은 frame들을 통해 효율적으로 긴 비디오를 학습하는 것이 가능하고 upsampler는 long-term temporal correlation과 무관하게 patch-wise하게 효율적으로 학습할 수 있었다고 말하고 있습니다.


3. Results 

 

본 논문은 두가지 Task에 대해 실험을 진행했으며, 각각의 결과에 대해 설명하기 전에 공통적인 셋팅에 대해 정리해보겠습니다. 

 

데이터셋은 두가지 task에 따라 다른 데이터셋을 활용했습니다.

  • Driving Scene Video Generation : in-house로 구축된 RDS(Real Driving Scene) 비디오 데이터셋
  • Text-To-Video : WebVid-10M

먼저 Driving Scene Video Generation에 활용한 데이터셋은 683,060개의 비디오(H512xW1024, ~30fps, 8secs)로 구성되어 있으며, 라벨로는 Night/Day에 대한 라벨과 차량 개수에 따른 Crowdness가 있습니다. 또한 차량 BBox들이 있으나 사용하지 않았다고 합니다.

 

다음으로 T2V에 활용한 데이터셋은 52K시간의 10.7M개의 비디오(H1280xW2048)로 구성되어 있으며, 라벨로는 caption이 존재한다고 합니다.

 

모델의 경우 공통된 부분은 아래와 같습니다.

  • Convolutional Encoder & Decoder : LDM구조를 차용했습니다.
  • UNet : LDM에서와 같이 ADM의 Ablated U-Net을 활용했습니다.
    ** Upsampler 또한 같은 UNet을 활용했습니다.
  • DM samplingDDIM에서 활용한 Sampling을 활용했습니다.

a. Driving Video Synthesis

 

 

차량 주행 영상을 합성한 Task에 대해 먼저 보이겠습니다. 이 Task를 위해 추가로 해준 Setting 아래와 같습니다.

  • resize : 512x1024→ 128x256
  • upsampler : 4x spatial upsampler로 CDM을 활용
  • condition : day/night 라벨과 crowdedness라벨을 활용
    ** CFG와 unconditional 모두 동작하도록 하게 하기 위해 random하게 라벨을 drop했습니다.

앞서 설명한 3개의 학습단계에 따라 설명하겠습니다. 

 

1. Image pre-training 

 

먼저, image backbone LDM(spatial layers)을 video frame에 대해 독립적으로 학습했습니다. (Image pre-training

 

2. Temporal Fine-tuning : Temporal Layers를 추가해 학습

 

하기 Table1은 128x256 해상도에서의 결과(왼쪽)과 Ablation Study를 보입니다. Ablation Study에 나와있는 Method의 구분은 아래와 같습니다.

  • Pixel-baseline : Temporal Fine-tuning이후의 결과입니다.
  • End-to-end LDM : Pixel-baseline처럼 Temporal Fine-tuning이후의 결과이지만, 1번 Step인 Image pre-training없이 학습한 결과입니다.
  • Attention-only : $c_S$를 활용해 prediction model로 학습하지 않았을 때
  • context-guided :  $c_S$를 활용해 prediction model로 학습하지 않았을 때

[Table1. Low resolution에서의 결과]

 

평가 Metric에 대해 궁금하신 분들은 아래 더보기를 참조하세요.

더보기

----------------------------------------------------------------

<Evaluation Metric>

 

1. Inception Score(IS) 
Improved techniques for training gans(arxiv'16)
높을수록 좋습니다.

모델이 얼마나 ImageNet의 class distribution을 잘 파악하는지에 대한 지표입니다. 하지만 class의 distribution을 얼마나 잘 커버하고 있는지에 대한 지표나 diversity에 대한 지표는 반영할 수 없는 단점이 있습니다. 왜냐하면 그냥 ImageNet의 어떤 subset을 잘 기억해뒀다가 높은 IS를 낼 수도 있기 때문입니다. 

 

2. Frechet Inception Distance (FID)
Gans trained by a two time-scale update rule converge to a local nash equilibrium (NIPS'17)
낮을 수록 좋습니다.

IS보다 diversity를 더 잘 반영하기 위해 등장했으며, Inception-V3의 latent space에 있는 image distribution을 측정하고 이 둘간의 거리를 측정하는 지표입니다. 인간의 판단이 반영되어야 한다는 관점에서 등장했으며, spatial한 관계를 잘 얻어 낼 수 있기 때문에 유용합니다.

 

3. Fréchet video distance(FVD)

Towards accurate generative models of video: A new metric & challenges(arxiv’18)

FVD: A NEW METRIC FOR VIDEO GENERATION(ICLR’19)

낮을수록 좋습니다.

 

FID의 비디오 버전으로, 실제 비디오와 생성된 비디오를 구분하기 위해 사용됩니다. FID에서는 temporal coherence를 고려하지 않기 때문에, pretrained I3D라는 Inception기반의 네트워크를 통해 중간의 feature를 비교하는 형식으로 진행됩니다.
하지만, 그렇게 믿을만한 지표는 아닙니다.

 

실제 LongVideoGAN에서는 각각의 frame의 realism이나 짧은 segment내에서의 motion에 민감하지만 long-term realism은 잘 측정하지 못한다고 한바가 있습니다.


**LongVideoGAN : Generating long videos of dynamic scenes (arxiv’22)



4. Improved Precision & Recall 
Improved precision and recall metric for assessing generative models.(arxiv’19)
precision과 recall모두 높을 수록 좋습니다.


sample의 fidelity를 data의 manifold 표현에서 precision으로 측정하고, diversity를 recall로 측정합니다. 

** AP50 : Precision 평균, IoU가 0.5 이상 되어야 맞은 걸로 평가
** AP75 : Precision 평균, IoU가 0.75 이상 되어야 맞은 걸로 평가

[Distribution상에서 측정한 Improved Precision & Recall]


5. CLIP(Contrastive Language-Image Pretraining) Similarity, CLIP-Score 

Godiva: Generating open-Domain Videos from Natural Descriptions(arxiv’21)


높을수록 좋습니다.

 

CLIP은 OpenAI에서 개발한 모델로, 이미지에서 text(caption)를 얻어낼 수 있습니다. 이 모델에 생성된 이미지와 caption을 넣어 각각 embedding을 얻은 다음, 비교를 통해 결과가 잘 나왔는지 확인할 수 있습니다.


----------------------------------------------------------------

 

아래는 직접 사람이 평가한 Metric의 결과입니다. 실제로 Video-LDM이 unconditional, conditional 모두에서 더 좋은 결과를 보인 것으로 보였다고 합니다.

[Table2. Human Evaluation]

 

 

3. Image Upsampler → 512x1024

 

아래는 128x256 30fps의 condition으로 하는 upsampler를 활용한 결과입니다. Temporal Awareness를 가진 Upsampler와 가지지 않은 Upsampler를 활용해 비교하니, FVD는 굉장히 영향을 많이 받은 것을 볼 수 있습니다. 하지만 FID는 크게 영향을 받지 않았습니다.

 

[Upsampling 결과]

 

 

Qualitative한 결과를 좀 보겠습니다. 초기 frame을 주어주고 Video-LDM을 활용해 prediction을 하는 결과를 보였습니다. 결과적으로 prediction model로 학습하는 방법이 있어서 그런지 5분 가량의 긴 비디오를 생성하는 것이 가능했다고 했다고 합니다.

[Driving Qualitative Result 결과]


b. Text-to-Video Synthesis

 

T2V Task를 위해 추가로 해준 Setting 아래와 같습니다.

  • Resize : H1280xW2048 → H320xW512
  • Upsampler : 4x spatial upsampler로 LDM을 활용
  • Condition : text 캡션을 조건으로 주었습니다.

역시나 앞서 설명한 3개의 학습단계에 따라 설명하겠습니다. 

 

1. Image pre-training

 

먼저 간단하게 Spatial Layers를 간단하게 fine-tune했습니다.

 

2. Temporal Fine-tuning

 

Temporal Layers를 추가해 학습했습니다.

3. Upsampler → 1280x2048

 

Upsampler를 활용해 학습을 진행했습니다. 이는 최종적으로 113개의 프레임을 생성했고, 24fps로 활용하려는 경우 4.7초, 30fps로 활용하려는 경우 3.8초가 됩니다.

 

아래는 Zero-shot으로 UCF-101과 MSR-VTT 데이터셋에서 평가한 결과입니다. 대부분보다 결과가 좋지만 Make-A-Video보다 결과가 좋지 않은 이유는, 더 많은 데이터(HD-VILA-100M)를 활용했기 때문이라고 합니다.

[Table 4&5. Zero-shot T2V 생성]

 

Qualitative한 결과도 살펴보겠습니다. 결과적으로 작은 데이터셋을 활용하더라도 굉장히 expressive하며, temporal consistent한 결과를 보였다고 합니다.

[T2V Qualitative 결과]

 


https://youtu.be/uFoGaIVHfoE?si=mhNlSSo4IKuqEw9I

https://yang-song.net/blog/2021/score/

https://bigdata-analyst.tistory.com/349

https://deepai.org/machine-learning-glossary-and-terms/perceptual-loss-function

https://junia3.github.io/blog/ddim

https://youtu.be/aFQEggfMgSQ?si=4B5sva-sWqHVVHxN

 

728x90
반응형