[22’] DALL-E 2: Hierarchical Text-Conditional Image Generation with CLIP Latents

Date:     Updated:

카테고리:

태그:


0. Abstract

  • DALL-E 2(unCLIP)는 text caption으로부터 CLIP image embedding을 만드는 prior와 image embedding으로부터 image를 만드는 decoder로 이루어진 two-stage text-to-image generation model이다.
  • 이처럼 image representation을 명시적으로(explicitly) 생성하는 방법을 통해 이미지의 다양성이 향상되었다.


1. Introduction

OpenAI에서 2022년 출시된 DALL-E 2는 CLIP과 diffusion model을 이용한 text-to-image generation model이다. DALL-E라는 이름은 Pixar의 WALL-E와 스페인 화가 살바도르 달리(Salvador Dali)를 합성한 것이다. 1년 전 출시했던 DALL-E는 dVAE(discrete VAE) 모델을 사용한 반면 DALL-E 2는 diffusion 모델을 사용한다. DALL-E 2는 출시 이후 엄청난 반향을 불러일으켰으며, 지금까지도 해당 분야에서 중요한 milestone으로 평가받고 있다. 이번 논문 리뷰에서는 DALL-E 2의 구조와 성능을 살펴보고자 한다.


2. Method

논문에서는 DALL-E 2를 “unCLIP”이라고 명명하였다. 이 모델은 two-stage text-to-image generation model로 구성되어 있다. 저자들은 image $x$와 해당하는 caption $y$를 짝지어 데이터셋 $(x, y)$를 만들었다. $x$의 CLIP image embedding을 $z_i$, CLIP text embedding을 $z_t$라 하자. 이때 우리가 훈련시키고자 하는 모델은 다음 두 가지이다.

  • Prior $P(z_i \vert y)$
  • Decoder $P(x \vert z_i, y)$ ($y$는 optional)

그리고 pretrained CLIP이 있어 $x$로부터 $z_i$를, $y$로부터 $z_t$를 deterministic하게 얻을 수 있다고 가정한다. 모델의 골자는 $y$로부터 CLIP text encoder를 통해 $z_t$를 얻고, 이로부터 다시 prior를 통해 $z_i$를 예측하여 decoder로 $x$를 생성하는 것이다. 따라서 decoder는 CLIP image encoder의 반대 역할을 한다고 생각할 수 있고, prior는 $z_i$와 $z_t$ 사이의 관계를 학습하는 역할을 한다. 물론 더 깊게 들어가면 모델 구조가 이렇게 간단하지만은 않다. 이제 각 부분을 자세히 살펴보자.

2.1. Decoder

Decoder는 diffusion model을 사용한다. 이때 condition으로 CLIP image embedding $z_i$를 주며, optional하게 text caption 자체 $y$를 줄 수도 있다. Text caption $y$를 주는 방식은 이전 논문인 GLIDE에서 제안되었던 방식으로, CLIP이 포착하지 못하는 text의 특징을 추가적으로 반영할 수 있을 것으로 생각하여 추가하였다. 그러나 이후 실험을 통해 text caption을 주는 것이 큰 효과를 주지는 않았다고 한다.

CFG를 구현하기 위해 CLIP embedding $z_i$를 0으로 만드는 방식을 사용했고, 고해상도의 이미지를 얻기 위해 64x64에서 256x256으로, 그리고 1024x1024로 확장하는 두 diffusion upsampler model도 사용하였다. 모델 구조는 GLIDE의 것을 약간 변형하여 사용하였다.

2.2. Prior

Prior도 diffusion model을 사용한다. 논문에서는 AR(Autoregressive) model도 시도하였는데, diffusion의 성능이 더 좋았기에 diffusion 위주로 설명하겠다.

Prior $P(z_i \vert y)$는 원래 text caption $y$만 condition으로 줄 수 있으나, CLIP text embedding $z_t$가 $y$에 deterministic하게 결정되므로 다음과 같이 표현할 수 있다. 물론 실제로 아래 세 개의 케이스 중 어떤 것이 가장 좋은 성능을 보이는지는 실험을 통해 확인해봐야 한다.

\[P(z_i \vert y) = P(z_i \vert z_t) = P(z_i \vert z_t, y)\]

Prior의 모델 구조는 decoder와 달리 decoder-only Transformer 구조를 사용한다. 이때 condition으로 $y$, $z_t$, timestep $t$를 주게 되며 $z_t$는 $y$에 deterministic하므로 생략하여 objective를 다음과 같이 나타낼 수 있다. 주목할 만한 점은 일반적인 DDPM objective였던 $\epsilon$ prediction이 아닌 direct $z_i$ prediction을 사용한다는 것이다. 이 경우의 결과가 더 좋았다고 한다.

\[L_{\text{prior}} = \mathbb{E}_ {t \sim [1, T], z_ i ^ {(t)} \sim q_t} \left[ \Vert f_\theta (z_i ^ {(t)}, t, y) - z_i \Vert ^ 2 \right]\]

지금까지 우리가 얻을 수 있는 것들을 정리하면 다음과 같다.

1) CLIP image encoder: Image $x$ $\rightarrow$ CLIP image embedding $z_i$
2) CLIP text encoder: Text caption $y$ $\rightarrow$ CLIP text embedding $z_t$
3) unCLIP Decoder: CLIP image embedding $z_i$ (+ optional $y, z_t$) $\rightarrow$ Image $x$
4) unCLIP Prior: CLIP text embedding $z_t$ (+ optional $y$) $\rightarrow$ $z_i$


3. Image Manipulations

이러한 구조를 통해 image $x$를 bipartite latent representation $(z_i, x_T)$로 encode할 수 있다. $z_i$는 CLIP image encoder로 얻으며, $x_T$는 DDIM의 forward process를 통해 얻는다. (DDIM은 latent vector가 deterministic하다는 것이 장점이었다.) 이때 DDIM의 input으로 $x$, condition으로 $z_i$를 주게 된다. 이렇게 얻은 latent representation의 의미는 다음과 같다.

  • $z_i$: CLIP이 얻은 image의 content 정보
  • $x_T$: 그 외에 decoder가 $x$를 생성하기 위해 필요한 모든 정보

이러한 bipartite latent representation을 통해 다양한 image manipulation을 수행할 수 있다. 저자들은 Variations, Interpolations, Text Diffs의 세 가지 방법으로 manipulation을 수행하였다.

3.1. Variations

DDIM의 stochasticity $\eta = 0$이면 deterministic하다. 즉 이때 $(z_i, x_T)$로부터 원본 이미지 $x$를 정확히 reconstruct할 수 있다. 그러나 샘플링 시 $\eta \gt 0$으로 설정하면 $x$와 같은 의미를 담고 있으면서 실제로는 다른 여러 샘플을 얻을 수 있다. $\eta$가 커질수록 더 stochastic하게 sampling되며 $x_T$는 무의미해지므로, 실제로 CLIP image embedding $z_i$가 어떤 정보를 담고 있는지 간접적으로 확인할 수 있다. 위 그림은 $\eta \gt 0$으로 샘플링한 결과이다.

3.2. Interpolations

Interpolation도 가능하다. 두 이미지 $x_1$과 $x_2$의 latent representation을 각각 $(z_{i_ 1}, x_{T_ 1})$과 $(z_{i_ 2}, x_{T_ 2})$로 얻은 후, $z_i$와 $x_T$를 각각 interpolation하여 새로운 이미지를 생성할 수 있다. Interpolation은 다음과 같은 간단한 식으로 진행된다. 이때 선형보간(lerp, linear interpolation)이 아닌 구면선형보간(slerp, spherical linear interpolation)을 사용한다.

\[z_{i _ \theta} = \text{slerp}(z_{i_ 1}, z_{i_ 2}, \theta) \quad x_{T _ \theta} = \text{slerp}(x_{T_ 1}, x_{T_ 2}, \phi) \quad \theta, \phi \in [0, 1]\]

3.3. Text Diffs

Text diffsimage를 text description $y$에 의해 변형시키는 것을 의미한다. 이는 CLIP의 장점, 즉 image와 text를 동일한 latent space로 embedding시킬 수 있다는 것으로부터 가능하다. 먼저 image-text pair $(x, y_0)$와 text description $y$가 있다고 하자. 이때 CLIP text encoder를 사용해 $y_0 \rightarrow z_{t_ 0}$과 $y \rightarrow z_t$를 얻는다. 그리고 text diff vector $z_d = \text{norm}(z_t - z_{t_ 0})$를 계산한다. 그리고 $x$로부터 CLIP image embedding $z_i$를 얻고 다음과 같이 interpolation하여 새로운 이미지를 생성한다.

\[z_ \theta = \text{slerp}(z_i, z_d, \theta) \quad \theta \in [0, 0.5]\]


4. Probing the CLIP Latent Space

DALL-E 2의 decoder는 CLIP image encoder와 완벽히 정반대의 역할을 수행하므로, 반대로 CLIP image encoder가 무엇을 보고 encoding을 수행하는지 decoder를 통해 시각화하여 볼 수 있다. 저자들은 아래와 같은 typographic attack에서 CLIP image encoder가 어떤 정보를 encoding하는지 확인하였다.

놀랍게도 CLIP classification 시에는 iPod이라고 분류되었던 이미지가 decoder를 통해 사과 사진을 복원하는 것을 알 수 있다. 즉, CLIP image encoder는 지금까지 이미지를 iPod으로 잘못 분류하기는 했지만, 실제로 encoding하는 정보 속에는 사과의 정보가 포함되어 있었던 것이다.

저자들은 PCA reconstruction을 통해 또 다른 방식으로 분석했다. Image embedding의 dimension을 조절하며 실험한 결과 고차원으로 갈수록 디테일들을 더 잘 포착하는 것을 알 수 있다. 예를 들어 첫 줄의 이미지를 보면, 저차원에서는 음식이 있다는 정보 정도만 알고 있었다면 고차원에서는 토마토와 병 등이 있다는 정보까지 구현하는 것을 확인할 수 있다.


5. Text-to-Image Generation

5.1. Importance of the Prior

이론적으로 prior가 text-to-image generation에 꼭 필요한 것은 아니다. GLIDE와 같이 diffusion decoder만 두고 text caption을 condition으로 주는 $P(x \vert y)$로도 이미지를 생성할 수 있다. 저자들은 상상력을 발휘하여 prior 없이 decoder만으로 이미지를 생성하는 여러 방식들을 제안했다. 이를 통해 아래 세 가지의 결과를 비교했다.

  • Caption: Training 시 $P(x \vert z_i, y)$로 훈련하고, sampling 시에는 $P(x \vert \varnothing, y)$로 샘플링하는 방식
  • Text embedding: Training 시 $P(x \vert z_i, y)$로 훈련하고, sampling 시에는 $P(x \vert z_t, y)$로 샘플링하는 방식
  • Image embedding: Prior를 사용한 원래 방식

결과는 위와 같다. Caption만을 이용하는 방식은 확실히 text similarity가 떨어지는 모습이지만 그 외의 두 방식은 단순히 보아서는 큰 차이가 없다. 이를 quntitative하게 비교하기 위해 FID evaluation을 진행하였고 결과는 text embedding, image embedding 각각 FID가 9.16과 7.99로 prior를 사용한 원래 방식이 가장 우수하다는 것을 증명하였다. Human evaluation 결과에서도 prior를 사용한 원래 방식이 가장 좋은 결과를 보였다. 이를 통해 저자들은 prior가 text-to-image generation에 필요하다는 것을 입증하였다.

한편 저자들은 GLIDE와의 비교도 진행하였다. GLIDE와 DALL-E 2의 차이는 다음과 같다.

  • DALL-E 2: Training 시 $P(x \vert z_i, y)$, Sampling 시 $P(x \vert z_t, y)$를 사용한다.
  • GLIDE: Training 시 $P(x \vert y)$, Sampling 시 $P(x \vert y)$를 사용한다.

즉 DALL-E 2와의 차이는 prior model의 유무라고 할 수 있다. Human evaluation을 통해 두 모델을 비교한 결과 diffusion prior를 사용한 DALL-E 2의 경우 photorealism 부분은 GLIDE와 비슷하고, caption similarity 부분에서는 GLIDE보다 떨어지지만 diversity 부분에서는 GLIDE보다 우수하다는 것을 확인할 수 있었다.

GLIDE와 비교해보니 DALL-E 2의 prior가 정말 효과적이었는지에 대한 의문이 생긴다. Diversity가 높아지긴 했지만 caption similarity가 낮아졌기 때문이다. 저자들도 이를 설명하기 위해 다음 분석을 진행하였다.

5.2. Improved Diversity-Fidelity Trade-off

먼저 저자들은 qualitative analysis를 시행했다. Guidance가 커질수록 GLIDE의 semantic information, 즉 카메라 각도나 색깔, 크기 등은 점점 수렴하는 모습을 보인다. 그러나 DALL-E 2의 경우 guidance가 커져도 semantic information이 동일한 $z_i$에 의해 보존되기 때문에 diversity가 유지되는 모습이다.

저자들은 더 자세한 quantitative analysis도 시행했다. 즉, GLIDE에서 guidance를 줄여서 diversity를 높이고, caption similiarity를 낮추면 DALL-E 2와의 차이가 어떻게 나타나는지 확인하였다. 그 결과 guidance scale 2 정도에서 photorealism, caption similiarity는 DALL-E 2와 GLIDE가 비슷하게 나타나지만 diversity에서는 DALL-E 2가 더 우수하다는 것을 확인할 수 있다.

추가로 저자들은 guidance에 의해 diversity(FID)가 어떻게 변하는지도 quantitative하게 확인하였다. DALL-E 2는 guidance가 커져도 diversity가 유지되는 반면, GLIDE는 guidance가 커질수록 diversity가 낮아진다. 이는 DALL-E 2의 prior가 text-to-image generation에서 더 나은 diversity-fidelity trade-off를 보여준다는 것을 의미한다.

5.3. Aesthetic Quality Comparison

이 부분은 상당히 재미있는데, DALL-E2가 얼마나 예술적인(aesthetic) 이미지를 생성할 수 있는지에 대해 실험한 것이다. 먼저 GPT-3을 통해 512개의 artistic caption을 생성하였다. 얼마나 미적인지 평가하기 위해 CLIP linear probe를 훈련하였다. 결과는 아래와 같고, 특징적으로 DALL-E2는 guidance scale이 커져도 recall, 즉 diversity가 유지되는 것을 확인할 수 있다.


6. Limitations

이러한 모델에도 한계는 있다. GLIDE에 비해 DALL-E2는 속성(attribute)을 물체(object)에 결합시키는 역할을 잘 하지 못한다. 예를 들어 아래 그림에서 큐브(object)와 색깔(attribute)이 잘 대응되어 있지 않은 것을 볼 수 있다. 이는 CLIP embedding이 명시적으로 object-attribute binding을 하지 않기 때문인 것으로 보인다.

마찬가지로 아래와 같이 decoder가 attibute와 object를 섞어서 생성하기도 하는 문제가 발생한다.

마찬가지 이유로 text가 있는 이미지를 잘 생성하지 못한다.

DALL-E 2는 또한 복잡한 이미지에서의 디테일들을 놓치는 모습을 보여준다. 아래 그림에서 개의 모습이나 배경이 부자연스럽거나, 타임스퀘어의 전광판이 잘 재현되지 않는 등의 문제가 발생한다. 저자들은 이것이 저화질의 이미지로부터 upsampling을 진행하는 방식의 한계라고 설명한다. 따라서 처음부터 고화질로 생성하는 것이 좋지만 이는 더 많은 계산량을 요한다.


💡 Summary

  • DALL-E 2CLIP image embedding을 예측하는 diffusion prior와 image를 생성하는 diffusion decoder로 이루어진 two-stage text-to-image generation model이다.
  • DALL-E 2image manipulation, CLIP latent space probing, text-to-image generation 등 다양한 역할을 할 수 있다.
  • 전 모델인 GLIDE에 비해 DALL-E 2는 prior model을 도입하여 guidance scale이 커져도 diversity를 유지하는 모습을 보여준다.
  • DALL-E 2의 한계는 object-attribute confusion (including text-included image generation), detail loss in complex images 등이 있다.
  • Opinion: 2024년 현재 DALL-E 3이 출시되었으며 ChatGPT와 연동되어 놀라운 결과를 보여주고 있다. 앞으로의 발전이 기대되며 DALL-E 3 논문 리뷰도 진행해야겠다.


📃 Reference


Generation 카테고리 내 다른 글 보러가기

댓글 남기기