본문 바로가기

논문 리뷰/Diffusion Model

AnimateZero: Video Diffusion Models are Zero-Shot Image Animators

[Project Page]

[Github]

[arXiv](Current version v1)

 

Generated Image
+ happy and smile
+ angry and serious
+ open mouth

 

Abstract

AnimateDiff에서 정확환 외관 및 모션 제어 능력을 향상한 AnimateZero 제안

 

 

 

Preliminaries: AnimateDiff

AnimateDiff

사전 훈련된 T2I 확산 모델에 모션 모듈을 추가하여 비디오 데이터에서 훈련한다.

 

Self-attention의 입력 Zin = {z1, ..., zf}에 위치 임베딩 p를 더하여 일반적인 self-attention을 수행한다.

(아래첨자 = token index, 윗첨자 = frame positional index)

 

 

 

Method

AnimateZero는 공간적 제어와 시간적 제어로 나뉜다.

 

Spatial Appearance Control

먼저 AnimateDiff의 T2I 모델에서 이미지 I1를 생성하고 그 중간 latent를 이용한다.

 

각 단계에서 video latent의 첫 번째 프레임을 zt1로 교체한 뒤, 공간적 self-attention에서 모든 프레임이 첫 번째 프레임의 K, V를 공유한다. (이 '공유'가 '대체'인지 'concat'인지는 안 나와있는데 참조 논문 찾아본 바로는 '대체'가 맞는 듯?)

 

Temporal Consistency Control

시간적 일관성을 보장하기 위한 Positional-Corrected Window Attention 제안.

 

From Global Attention to Window Attention

일반적인 attention은 첫 번째 프레임의 의미에 대한 정렬이 부족하다.

 

따라서 K, V의 길이는 유지하되 이전 프레임과만 attention을 하도록 하고 부족한 프레임 길이는 첫 번째 프레임으로 채운다.

 

Correct Position Embedding Makes Better Results

근데 생각해보면 복사된 첫 번째 프레임의 K, V는 모두 같은 위치 인코딩을 가지고 있으므로 같은 결과값이 나오고, 사실상 복사를 한 의미가 없다.

 

따라서 다음과 같이 Q는 무조건 최대 프레임 인덱스로 인코딩하고 K, V는 그냥 순서대로 위치를 인코딩한다.

 

제안된 window attention은 시간적 일관성을 향상하지만 global attention은 포기할 수 없는 품질의 강점이 있다.

따라서 U-Net의 인코더 모션 모듈에는 window attention을, 디코더 모션 모듈에는 global attention을 사용한다.

(개인적으로 당연하지만서도 엄청 스마트한 판단이라고 생각한다. 인코더는 낮은 주파수만 남기고 디코더는 높은 주파수를 생성하니까)

 

추가적으로 Time-Travel Sampling Strategy를 사용하여 더 부드러운 결과를 생성한다.

Time-Travel Sampling은 일정한 timestep마다 해당 step을 반복적으로 수행하는 것이다.

 

 

 

Experiments

Project Page

 

AnimateZero

"A girl is running in the forest, grassland"

vvictoryuki.github.io