새소식

Generative Models

[논문 리뷰] Animate Anyone

  • -

Animate Anyone Consistent and Controllable Image-to-Video Synthesis for Character Animation

 

Li Hu, Xin Gao, Peng Zhang, Ke Sun, Bang Zhang, Liefeng Bo

Institute for Intelligent Computing, Alibaba Group

 


 

1. Introduction

 

기존의 text2video 캐릭터 애니메이션 모델은 움직임이 일관적이지 않고 퀄리티가 떨어지는 등 한계점을 보였습니다. Animate Anyone은 이같은 한계를 극복한 모델입니다.

Animate Anyone은 Stable Diffusion 기반이며 ReferenceNet과 Denoising UNet으로 나눠져 있습니다. ReferenceNet은 Reference Image에 대한 feature를 Denoising UNet과 계속 공유하기 때문에 Reference Image의 디테일한 부분과 공간적인 Consistency(일관성)을 주는 역할입니다. 또한 Video이기 때문에 각 time step 간 부드러운 프레임을 위해서 temporal layer를 도입하였습니다.

 

장점:

  1. 시간적, 공간적 일관성을 가진 비디오를 생성해낼 수 있습니다.
  2. 깜빡임이나 불안정한 프레임 같은 문제가 없습니다.
  3. 특정한 도메인에 제약 받지 않고 모든 이미지를 애니메이션화가 가능합니다.

 

결과:

UBC fashion video dataset & TikTok dataset의 벤치마크에서 SOTA를 달성하였습니다.


2. Related Works

 

2.1 Diffusion Model for Image Generation

 

  • Latent Diffusion Model
  • ControlNet
  • T2I-Adapter
  • IP Adapter
  • ObjectSwitch
  • PaintbyExample
  • CLIP
  • TryOnDiffusion

 

2.2 Diffusion Model for Video Generation

 

  • Video LDM
  • AnimateDiff
  • VideoComposer
  • VideoCrafter

 

2.3 Diffusion Model for Human Image Animation

 

  • PIDM
  • LFDM
  • LEO
  • DreamPose
  • DisCo

3. Methods

 

3.1 Preliminariy: Stable Diffusion

 

모델은 계산 복잡도를 줄이기 위해 Stable Diffusion을 기반으로 만들어졌습니다. (LDM이라고도 하는데, 여기서는 Stable Diffusion으로 칭하겠습니다.) SD는 encoder $\mathcal{E}$와  decoder $\mathcal{D}$를 통해 Diffusion process 전/후에 영상을 latent vector화하고, 다시 원본 영상으로 복원합니다. ($z=\mathcal{E}(x)$, $x_{recon}=\mathcal{D}(z)$)

즉 SD는 정규 분포 noise $\epsilon$을 입력으로 하여 realistic한 latent $z$를 생성하는 것을 목표로 학습합니다. 수식으로 process를 표현하자면 다음과 같습니다.

$$L = \mathbb{E}_{z_t, c, \epsilon, t}(||\epsilon-\epsilon_\theta(z_t, c, t)||^2_2) \tag{1}$$

$\epsilon_\theta$는 Denoising UNet $c$는 condition, $t$는 timestep입니다.

 

3.2 Network Architecture

 

 

모델 구조는 위 그림과 같으며 multi frame noise가 모델의 입력으로 들어갑니다. 또한 다음 3가지의 중요한 특징을 가지고 있습니다.

 

ReferenceNet

 

image-to-video는 text-to-video 보다 Reference Image에 대한 일관성이 필요합니다. (text는 prompt에 대한 high-level semantic information을 가지고 있지만, image는 그렇지 않습니다.) 선행 연구에서는 이를 CLIP encoder의 feature를 cross-attention 하여 해결하려 했지만 detail이 부족하다는 단점이 있습니다.

이를 해결하기 위해서 저자는 ReferenceNet을 제안합니다. ReferenceNet은 temporal layer를 제외하고 denoising UNet과  형태가 동일합니다. 또한 Stable Diffusion의 pretrained weight를 사용합니다.

denoising U-net은 기존 self-attention을 spatial-attention으로 교체하여 사용합니다. 또한 위의 그림 오른쪽과 같이 ReferenceNet의 feature와 denoising UNet의 feature를 concat합니다. 이때 ReferenceNet은 temporal(video의 timestep)이 따로 없기 때문에 $t$만큼 복사하여 붙입니다. 그리고 이 두 feature에 대한 self-attention을 진행한다고 하는데, 그림을 보면 spatial-attention을 잘못 쓴것 같습니다.

 

 

그리고 이같은 모델 구조는 다음과 같은 이점을 가집니다.

 

  1. pre-trained 된 Stable Diffusion이 뽑아내는 feature를 사용할 수 있습니다.
  2. ReferenceNet과 Denoising UNet은 서고 같은 구조로써 ReferenceNet의 feature를 간접적으로 학습할 수 있습니다.
  3. CLIP Encoder로 Reference Image의 Semantic한 feature(text)를 같이 학습하기 때문에(Cross-Attention) 좀더 빠르게 훈련할 수 있습니다.

 

ControllNet과 비슷하지만, ControllNet은 공간적인 정보가 align된 값을 넣어줘야 합니다. 이게 무슨 의미냐면, target이 되는 결과물과 공간적으로 매우 비슷한 값만 입력 받을 수 있지만, Animate Anyone은 Reference Image에 대한 공간적인 의존성이 낮습니다.

또한 Video는 time step 별 프레임을 추출 해야하는데, 위와 같은 구조는 Reference Image에 대한 feature를 한번만 추출하면 모든 프레임에 사용할 수 있기 때문에 좀 더 효율적입니다. (이 부분은 SAM의 Encoder와 비슷한 느낌인 것 같습니다.)

 

Pose Guider

 

Animate Anyone의 ControllNet에 대한 차별점으로, Pose에 큰 추가적인 모델 없이, Pose guider라는 가벼운 Encoder로latent로 만들어 입력합니다. Pose Encoder는 4개의 Convolution layer를 가지고 있으며 마지막 projection 단계에서 zero Convolution을 사용했습니다. 그리고 이 latent와 noise를 합쳐 사용하였습니다.이렇게 합성된 latent가 denoising UNet의 입력으로 들어갑니다.

 

Temporal Layer

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.