본문 바로가기

논문 리뷰/Diffusion Model

Make-A-Video : Text-To-Video Generation Without Text-Video Data

Meta AI에서 공개한 Text-to-Video 모델.

추후 코드 공개되면 수정.

 

Project Page

Arxiv

 

 

 

Abstract

Text-to-Image(T2I)의 엄청난 발전을 Text-to-Video(T2V)로 변환하기 위한 접근 방식을 제안한다. Make-A-Video(이하 MAV)는 T2V 모델의 훈련을 가속화하고 텍스트-비디오 데이터 쌍이 필요하지 않으며 발전된 이미지 생성 모델의 장점을 계승한다. 또한 full temporal U-Net과 attention tensor를 분해하여 시간과 공간에 근사하고 다양한 응용을 위해 비디오 디코더, 보간 모델, 초해상도 모델을 사용하여 시공간 파이프라인을 설계한다.

 

 

 

Previous Work

Cascade Diffusion Model

GLIDE

Imagen

Dall-E2

 

 

 

Introduction

MAV는 T2I 모델을 활용하여 텍스트와 시각적 세계 간의 대응 관계를 학습하고 레이블 지정이 되지 않은 비디오 데이터에 대한 비지도 학습을 사용하여 사실적인 동작을 학습한다.

 

Function-preserving transformation을 사용하여 모델 초기화 단계에서 공간 계층을 확장해 시간 정보를 포함한다. 확장된 시공간 네트워크에는 비디오 모음에서 temporal world dynamics를 학습하는 새로운 attention 모듈이 포함되며 이 절차는 미리 훈련된 T2I 네트워크에서 T2V 네트워크로 지식을 전송하여 훈련을 가속화한다. 또한 품질을 위해 초해상도 모델과 보간 모델을 훈련한다.

 

본 논문의 기여 :

  • Make-A-Video : 확산 기반 T2I 모델을 시공간 인수분해 확산 모델을 통해 T2V로 확장하는 효과적인 방법을 제시한다.
  • Text-video 데이터의 필요성을 우회하기 위해 text-image prior를 활용한다.
  • 사용자가 제공한 텍스트 입력을 통해 최초로 고화질, 높은 프레임률의 비디오를 생성하는 초해상도 전략을 제시한다.

 

 

 

Method

MAV는 세 가지 구성요소로 구성된다.

  • 미리 훈련된 T2I 모델
  • 시간 차원 확장을 위한 시공간 컨볼루션 및 attention 계층
  • 시공간 네트워크와 보간 네트워크

 

(출력 비디오 y, 초해상도 모델 SR, 프레임 보간 네트워크 F, 시공간 디코더 D, Prior P, CLIP 인코더 C, 입력 텍스트 x)

 

Text-to-Image Model

미리 훈련된 T2I 모델, Dall-E2와 핵심 구성요소를 공유함.

(사전 훈련된 모델도 아마 쓸 수 있겠지만 자체적으로 훈련했고 논문에 pretrain이라는 단어는 사용하지 않음. 그래서 '미리 훈련된' 표현으로 계속 사용함.)

 

Spatiotemporal Layers

시간 차원의 확장을 위해 컨볼루션 계층과 attention layer를 수정한다. FC layer는 그냥 쓸 수 있음. 시공간 디코더 Dt는 수정 후 64x64인 RGB 프레임 16개를 생성한다. 

 

초해상도에는 hallucinating 정보가 포함되는데 깜박이는 아티팩트가 발생하지 않으려면 프레임 간 hallucination이 일관되어야 한다. SRlt은 시공간 차원에서, SRh는 메모리와 데이터의 제약으로 인해 공간 차원에서만 작동한다. 프레임 전반에 걸쳐 일관된 detail hallucination을 장려하기 위해 각 프레임에 대해 동일한 노이즈 초기화를 사용한다.

 

Pseudo-3D Convolution layers

3D 변환의 무거운 계산 부하를 피하기 위해 separable convolution에서 영감을 받아 2D 컨볼루션 이후 1D 컨볼루션을 쌓고 시간-공간 정보 공유를 원활하게 한다. 또한 미리 훈련된 2D conv 레이어와 새로 초기화된 1D conv 레이어 사이에 구체적인 파티션을 만들어 공간 컨볼루션 가중치에서 이전에 학습한 공간 지식을 유지하면서 시간 컨볼루션을 처음부터 훈련할 수 있다. (2D 컨볼루션도 얼리지 않고 훈련은 같이 함.)

 

입력 텐서 h의 크기는 B×C×F×H×W.

Pseudo-3D Convolution layer는 다음과 같이 정의된다.

(T는 시간-공간 차원을 스왑 하는 transpose operator)

 

Conv1D 계층은 identity function으로 초기화되고 이미지에 대해 훈련하는 동안은 identity function으로 유지.

초기 네트워크는 시간적 일관성이 부족한 k개의 이미지를 생성한다.

 

Pseudo-3D Attentional Layers

메모리 효율을 위해 컨볼루션의 차원 분해 전략을 attention에서도 사용한다.

기존의 공간 2D attention 이후에 시간 1D attention 적용.

(Flatten(h) = B×C×F×HW, 1D attention의 초기화도 똑같이 identity function으로)

 

Frame Interpolation Network

U-Net에 RGB 마스킹된 비디오 입력을 위한 3개의 채널과 마스킹된 프레임을 나타내는 추가 이진 채널을 추가하고 video 데이터로 훈련하는 동안 D에서 finetuning 된다.

 

추론 동안 다양한 프레임률 업샘플링을 위해 가변 프레임 스킵 및 fps 컨디셔닝과 함께 finetuning 함. 프레임 스킵 5를 적용하여 16 프레임을 76 프레임((16-1) × 5+1)으로 업샘플링한다.

 

이 부분은 비디오 처리에 대한 지식이 없어서 명확하게 이해를 못 하겠다. 코드를 봐야 좀 이해가 될 듯...

 

Training

텍스트를 입력으로 받는 유일한 구성요소인 prior P는 text-image에서 훈련되고 video에서는 조정되지 않음.

 

디코더, 두 초해상도 모델은 먼저 image에서 훈련되고 이후에 video에서 finetuning 됨.

보간 모델은 video에서만 훈련됨.

 

16개의 프레임은 임의의 fps 범위로 원본 비디오에서 샘플링됨.

샘플링을 위해 베타 함수? 사용함. 비디오 샘플링을 말하는 거겠지?

 

디코더를 훈련하는 동안 높은 fps 범위(프레임 간 동작이 작음 = 적은 움직임)에서 낮은 fps 범위(많은 움직임)로 전환된다.

 

 

 

Experiments

정성적 평가는 링크 참고

https://make-a-video.github.io./