Post

[논문 리뷰] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models



Open AI PMLR 2022

Introduction


사진이나 그림같은 이미지를 텍스트로 쉽게 설명할 수 있지만, 이미지를 만드는 데는 전문적인 기술과 노동이 필요하다. 만약 자연어를 통해 사실적인 이미지를 생성할 수 있다면, 쉽고 풍부하게 시각적 컨텐츠를 만들 수 있다. 최근 text-conditional image model은 prompt를 사용하여 의미상 유사한 이미지를 합성할 수 있지만 text prompt의 모든 측면을 포함하는 사실적인 이미지 생성은 어렵다.

반면 unconditional image model은 사실적인 이미지를 생성할 수 있으며 실제 이미지와 구별하기 힘들 정도로 fidelity가 높다. 이러한 연구로 DIffusion model은 유망한 Generative model로 등장하여 SOTA 품질을 달성했다.

Class-conditional setting에서 photorealism을 위해 이전의 연구에선 diffusion model에 classifier의 label을 주어 condition을 주는 classifier guidance를 통해 diffusion model을 강화했다. 그리고 이후 trained classifier를 사용하지 않고도 유사한 성능을 달성한 classifier-free guidance가 등장하였다.

GLIDE_1.png

본 논문에서는 이러한 기존의 연구들을 바탕으로 text-conditional image synthesis 문제에 guided diffusion을 적용한다. Text Encoder를 사용하여 natural language description을 조건으로 하는 diffusion model을 학습시킨 후, CLIP guidance/classifier-free guidance 두 text prompt 가이드 방식에 대해 비교했다. 저자는 classifier-free guidance 방식으로 생성된 모델의 샘플이 더 사실적이며 광범위한 지식을 반영한다는 사실을 발견했다.

제안한 모델은 다양한 text prompt를 zero-shot으로 렌더링 할 수 있지만 복잡한 prompt에 대해서는 사실적인 이미지를 생성하는데 어려움이 있다. 따라서 저자는 zero-shot generation에 더하여, 복잡한 prompt와 일치할 때까지 직접 모델의 샘플을 iteratively 개선하는 editing 기능을 추가했다. 이러한 방법을 통해 prompt를 사용하여 기존 이미지를 사실적으로 편집할 수 있고, 인간이 전례 없는 속도와 편리함으로 맞춤형 이미지를 생성하는 데 도움이 될 수 있다.

저자는 본 논문의 방법을 Guided Language to Image Diffusion for Generation and Editing, 줄여서 GLIDE 라고 정의했다.





Background


1. Diffusion models

먼저, 논문에서는 diffusion의 기본 process에 대한 설명하고 있다. 해당 부분에 대한 자세한 설명은 블로그 내의 게시물 [Generative model 기초 3. Diffusion 정리]를 참조해보자.

Diffusion은 크게 두 단계로 이루어져 있다. Forward process에서 $x_0 ∼ q(x_0)$의 샘플에 대해 Gaussian noise를 점진적으로 추가하여 latent variable $x_1, …, x_T$의 Markov chain을 생성하고, Reverse process에서 noise를 점진적으로 제거하는 방법을 사용해 실제 posterior를 근사하기 위한 모델 $p_θ(x_{t−1}∣x_t)$를 학습하는 방법이다. 이 때, Gaussian noise $ε$을 $x_0$에 적용하여 샘플 $x_t ∼ q(x_t∣x_0)$를 생성한 다음 mean-squared error loss을 사용하여 추가된 noise을 예측하도록 모델 $ε_θ$를 학습한다.

GLIDE_2.png




2. Guided Diffusion

Diffusion models beat gans on image synthesis📄 논문에서는 class-conditional diffusion model이 classifier guidance를 통해 향상되는 것을 발견했다.

평균 $μ_θ(x_t∣y)$과 분산 $Σ_θ(x_t∣y)$을 갖는 class-conditional diffusion model은 classifier의 예측 결과를 가지고 조건을 부여받는다. 정확히는 classifier에서 예측된 target class $y$의 log-probability $\log p_\phi(y∣x_t)$의 gradient가 전달되면서 영향(교란)을 받는다. 조건을 부여하게 된다. 결과적으로 생성된 새로운 perturbed mean(교란 평균) $\hat{μ}_θ(x_t∣y)$은 아래와 같이 정의된다.

\[\hat{\mu}_\theta = \mu_\theta(x_t∣y) + s \; \cdot \; Σ_\theta(x_t∣y) \; \nabla_{x_t} \log p_\phi (y∣x_t)\]


Coefficient s는 guidance scale로, s를 높이면 diversity가 희생되지만 sample quality가 향상된다.




3. Classifier-free guidance

Classifier-free diffusion guidance📄 논문에서는 별도의 classifier model을 학습할 필요가 없이 diffusion model에 guide를 주는 classifier-free guidance를 제안했다.

Classifier-free guidance를 위해 class-conditional diffusion model $ε_θ(x_t∣y)$의 label $y$는 학습 중에 고정된 확률로 null label $∅$로 대체된다. 이렇게 label(condition)을 받은 경우 $ε_θ(x_t∣y)$, label(condition)을 받지 않은 경우 $ε_θ(x_t∣∅)$ 두 방법에 대해 학습을 진행하게 되고, sampling 중 모델의 출력은 아래의 식과 같이 두 방법에 대해 extrapolate 된다. ($ε_θ(x_t∣y)$ 방향으로)

\[\hat{\epsilon}_\theta(x_t∣y) = \epsilon_\theta(x_t∣∅) + s \; \cdot \;(\epsilon_\theta(x_t∣y) - \epsilon_\theta(x_t∣∅))\]


위 방법은 implicit classifier를 가정하는 것에서 시작되었다. 아래 (1)과 같은 classifier가 있다고 할 때, classifier의 gradient는 true scores $\epsilon^∗$의 관점에서 (2)와 같이 정의된다.

\[\quad p^i(y∣x_t) \propto \frac{p(x_t∣y)}{p(x_t)} \quad\qquad(1)\] \[\quad \nabla_{x_t} \log p^i(x_t∣y) \propto \nabla_{x_t} \log p(x_t∣y) - \nabla_{x_t} \log p(x_t) \quad\qquad (2)\] \[\propto \epsilon^*(x_t∣y) - \epsilon^*(x_t) \qquad\]


본 논문에서는 일반 text prompt로 classifier-free guidance를 구현하기 위해 학습 중 일부분의 경우에 text caption을 빈 시퀀스($∅$)로 대체한다. 수정된 prediction $\hat{\epsilon}$은 다음과 같다.

\[\hat{\epsilon}_\theta(x_t∣c) = \epsilon_\theta(x_t∣∅) + s \; \cdot \;(\epsilon_\theta(x_t∣c) - \epsilon_\theta(x_t∣∅))\]


Classifier-free guidance는 두가지 장점이 있다.

  1. 별도의 classification model의 knowledge에 의존하지 않고 모델이 자체적인 knowledge를 활용할 수 있다.
  2. Classifier로 예측하기 어려운 정보(예: Text)에 대한 Condition을 지정할 때 guidance를 단순화한다.




4. CLIP Guidance

CLIP 모델은 텍스트와 이미지 간의 joint representation을 학습하기 위한 방법으로, Image Encoder $f(x)$와 Caption Encoder $g(c)$라는 두 개의 부분으로 구성되어 있다. 학습 중 $(x, c)$ pair가 주어지면 올바른 pair에 대해 내적 $f(x) · g(c)$이 높아지도록 contrastive cross-entropy loss를 최소화한다. CLIP에 대한 자세한 내용은 블로그의 게시물 [논문 리뷰: CLIP]을 참조해보자.

CLIP은 이미지가 캡션과 얼마나 가까운지에 대한 점수를 제공하므로 GAN과 같은 여러 연구에서 이를 활용하였다. 동일한 개념을 diffusion model에 적용하기 위해 classifier guidance에서 classifier를 CLIP으로 대체할 수 있다. 2. Guided Diffusion에서 언급한대로, 이미지에 대한 내적(이미지 $\cdot$ 캡션) gradient를 reverse-process에 전달하여 reverse-process mean에 영향(교란)을 준다.

\[\hat\mu_\theta(x_t∣c) = \mu_\theta(x_t∣c) + s\; \cdot \; Σ_\theta(x_t∣c) \nabla_{x_t}(f(x_t)\;\cdot\;g(c))\]


Classifier guidance와 유사하게 reverse process에서 올바른 gradient를 얻으려면 noise가 있는 이미지 $x_t$에 대해 CLIP을 학습해야한다. 본 논문에서는 실험 전반에 걸쳐 noise를 인식하도록 학습된 CLIP model을 사용하며, 이를 noised CLIP model이라고 한다.


이전의 연구에서는 noise가 있는 이미지에 대해 학습되지 않은 CLIP model도 diffusion model을 guide하는데 사용될 수 있음을 보여주지만, 본 논문에서는 noised CLIP guidance가 data augmentation이나 perceptual loss 같은 추가 방법 없이 유리하게 학습된다는 것을 증명한다.

저자는 noise가 있는 이미지에 대해 학습되지 않은 CLIP을 사용하여 guide하는 것은 sampling 중의 noised intermediate image가 모델에 대해 out-of-distribution이기 때문에 sample quality에 부정적인 영향을 미친다는 가설을 세웠다.





Training


64 × 64 resolution 이미지에 대해 3.5B 매개변수 text-conditional diffusion model을 학습하고, resolution을 256 × 256 으로 높이기 위해 추가적인 1.5B 매개변수 text-conditional upsampling diffusion model을 학습했다. CLIP guidance를 위해 noised 64 × 64 ViT-L CLIP model을 학습했다.

GLIDE_3.png



1. Text-Conditional Diffusion Models

저자는 Diffusion models beat gans on image synthesis📄논문에서 제안한 ADM model을 사용하지만 text conditioning을 추가하였다.

noise image $x_t$와 해당 text caption $c$에 대해 모델은 $p(x_{t−1}∣x_t,c)$를 예측한다. Text를 condition으로 만들어주기 위해 $K$ token sequence로 encoding하고, 이 token을 Transformer model의 입력으로 넣는다. Transformer의 output은 두 가지 방식으로 사용된다.

  1. ADM 모델의 class embedding 대신 final token embeddin이 사용된다.
  2. Token embedding의 마지막 layer(sequence of $K$ feature vectors)는 ADM model의 각각의 attention layer의 차원에 맞게 별도로 project 된다. 그 다음 각 layer의 attention context에 concat 된다.


저자는 DALL-E[논문리뷰: DALL-E]와 동일한 데이터셋에서 학습했으며, ADM의 ImageNet 64 × 64 모델과 동일한 model 구조를 사용하지만 model width를 512 channel로 확장하여 약 2.3B 매개변수가 생성된다(visual part에만). Text Encoding Transformer의 경우 1.2B 매개변수가 생성된다. 또한 64 × 64에서 256 × 256로 reolustion을 올리기 위한 1.5 매개변수 Upsampling diffusion model을 학습했다.




2. Fine-tuning for classifier-free guidance

Initial training 후 unconditional image generation을 위해 모델을 fine-tuning 했다. Fine-tuning 과정은 text token sequence의 20%가 empty sequence로 대체된다는 점만 제외하고는 pre-training과 동일하다. 해당 방법을 통해 text-conditional output을 생성하는 기능을 유지하되, unconditional 하게 이미지를 생성할 수도 있다.




3. Image Inpainting

기존의 Diffusion model을 사용하는 연구에서는 Inpainting을 위해 따로 학습을 진행하지 않았다. Diffusion model에서 inpainting을 위해 각 sampling 단계 이후에 이미지의 알려진 부분을 $q(x_t∣x_0)$(noise)로 대체한다. 이외의 부분은 다른 작업과 유사하게 진행된다. 이 방법은 모델이 sampling process 동안 전체 context를 볼 수 없기 때문에(noised 부분만 보게 되므로) 실험 초기 단계에서 가장자리에 artifacts가 발생한다는 단점이 있다.

더 나은 결과를 얻기 위해 Inpainting을 위한 fine-tuning을 진행한다. Fine-tining 중에 training example의 random 영역이 지워지고 나머지 부분을 mask channel(additional conditioning)으로 모델에 공급한다. 즉, RGB 3 channel에 4개의 추가 입력 channel을 갖도록 모델 구조를 수정한다. fine-tuning 전에는 새로운 channel에 해당하는 weight을 0으로 초기화한다.

Upsampling model의 경우, 원래는 full low-resolution image를 입력으로 하지만, inpaining의 경우에 unmasked region에 대해서는 high-resolution image를 넣는다.




4. Noised CLIP models

Classifier guidance technique을 더 잘 일치시키기 위해 noised images $x_t$를 입력으로 하는 Image Encoder $f(x_t, t)$를 사용하여 noised CLIP model을 학습한다. Base model과 동일한 noise schedule을 사용하여 64 × 64 resolution으로 학습했다.





Experiments


1. Qualitative Results

아래 그림은 CLIP guidance와 classifier-free guidance로 이미지를 생성한 결과에 대해 비교하고 있다. 시각적으로 비교할 때 CLIP guidance를 사용한 모델보다 classifier-free guidance로 생성한 이미지가 realistic 해보이는 경우가 많다.

또한 MS-COCO 데이터셋에서 이전의 SOTA text-conditional image generation model과 비교하였을 때 GLIDE가 cherry-picking 없이도 더 realistic한 이미지를 생성하는 것을 볼 수 있다.

GLIDE_4.png



아래의 그림은 classifier-free guidance GLIDE가 다양한 prompt에 대해 generalizing 할 수 있음을 보여주고 있다.

GLIDE_5.png



저자는 inpatinting 작업에서 GLIDE가 Text prompt를 활용하여 객체, 그림자 및 반사를 삽입하여 기존 이미지를 현실적으로 수정할 수 있음을 발견했다.

GLIDE_6.png




2. Quantitative Results

먼저 quality-fidelity trade-off의 Pareto frontier를 살펴봄으로써 CLIP guidance와 classifier-free guidance의 차이를 평가한다. 아래 그림은 64×64 resolution에서 zero-shot MS-COCO generation에 대한 두 가지 방식을 모두 평가한 결과이다. Precision/Recall과 IS/FID, CLIP score/FID에 대해 조사했다.

GLIDE_7.png

앞의 두 curve의 경우에는 classifier-free guidance가 거의 Pareto optimal이라는 것을 알 수 있는데, 마지막 curve는 반대의 경향을 볼 수 있다. 특히 CLIP guidance는 classifier-free guidance보다 CLIP score를 boost 할 수 있는 것으로 보인다.

저자는 이에 대해 CLIP guidance가 prompt 일치와 관련하여 classifier-free guidance보다 실제로 뛰어난 것이 아니라 evaluation CLIP model에 대한 adversarial example을 찾는다는 가설을 세웠다. 이 가설을 검증하기 위해 human evaluator를 고용하여 생성된 이미지의 품질에 대해 평가했다. Human evaluator는 1) 주어진 caption과 더 잘 일치하거나 2) 더 사실적으로 보이는 샘플을 선택해야 한다.


human evaluation protocol을 사용하여 두 접근 방식에 대한 guidance scale을 검토했다. 결과는 아래 그림과 같다. 저자는 인간이 CLIP score에 동의하지 않는다는 것을 발견했다.

GLIDE_8.png


또한 두 가지 방법을 이전 단계의 best scale과 비교했다.

GLIDE_9.png


GLIDE를 다른 text-conditional generative image model과 비교했다. 결과는 아래 표와 같다.

GLIDE_10.png


마지막으로 human evaluation protocol을 사용하여 GLIDE와 DALL-E를 비교했다. GLIDE는 DALL-E와 거의 동일한 training computing을 사용하여 학습되었지만 훨씬 더 작은 모델(3.5B vs. 12B)을 사용했다.

GLIDE_11.png




This post is licensed under CC BY 4.0 by the author.