본문 바로가기

프로젝트/DALL-E 프로젝트

DALL-E2 : Hierarchical Text-Conditional Image Generation with CLIP Latents

728x90
반응형
CV 프로젝트 (5) - DALL-E 2 논문 리뷰

2023.11.05 - [프로젝트/DALL-E 프로젝트] - DALL-E: Zero-Shot Text-to-Image Generation (논문 리뷰)

 

DALL-E: Zero-Shot Text-to-Image Generation (논문 리뷰)

CV 프로젝트 (4) - DALL-E 논문 리뷰 해당 프로젝트의 핵심이 되는 모델은 DALL-E 모델이다. DALL-E 모델은 text to image task를 수행할 수 있는 모델로, openAI가 현재 서비스 중인 모델이다. 지금은 DALL-E 2까

tjddms9376.tistory.com

이전 글을 통해 DALL-E 모델의 시초가 되는 논문을 리뷰했다. 

이번 포스팅으로, DALL-E 2 모델의 논문을 리뷰해볼 예정이며, 이전 모델과 어떤 차이점이 있는 지 살펴보면서 공부를 하면 더 좋을 것 같다.

해당 논문과 코드를 바탕으로 CV 프로젝트를 중점적으로 진행해나갈 예정이다.

 

[논문 링크]

https://arxiv.org/pdf/2102.12092.pdf

 


Abstract


 

  • CLIP (Contrastive Learning Image Pretraining) 과 같은 Contrastive model들은 이미지의 robust한 representation들을 잘 학습한다.
  • 이런 representation 방법을 이미지 생성에 활용한다.
  • 2-stage model 제안
    • prior : 텍스트로 CLIP image embedding을 생성
      • autoregressive / diffusion model (실험에선 diffusion model을 prior로 선택)
    • decoder
      • prior의 image embedding을 condition으로 받아서 diffusion model로 이미지 생성
  • caption (text)이 주어졌을 때 caption과의 유사성을 유지하면서도 사실성이 높은 이미지 생성
  • 또한, 주요 의미와 style을 유지하면서도 variation이 다양한 이미지 생성

여기서 CLIP이란?

→ OpenAI에서 발표 image-text pair 데이터를 학습할 수 있는 모델을 의미한다. 이 모델은 같이 학습한 덕분에 image와 text간의 align 학습이 가능하다는 특징이 있다.

 


1. Introduction


  • CLIP embedding
    • image distribution shift에도 robust
    • zero-shot capabilities가 뛰어남
    • 다양한 vision 및 언어 작업에서 SOTA를 달성하기 위해 fine-tuning되어 있다.
  • diffusion model
    • image와 video generation task에서 SOTA를 달성하는 유망한 생성형 모델
    • guidance technique 사용하여 샘플 신뢰도를 향상

이 2가지 접근을 image generation 문제에 결합

  • CLIP image encoder를 invert한 diffusion decoder를 훈련
    • 이 inverter는 non-deterministic하며, 주어진 image embedding에 해당하는 여러 이미지를 생성할 수 있다.
    • GAN은 일일이 검사해도 의도한 결과에서 벗어나는 불확정성을 띔
    • 하지만 CLIP은 text vector의 direction을 이동함으로써 이미지를 의미적으로 수정할 수 있다.

  • 위는 CLIP
    • text와 image의 joint representation space를 학습
  • 아래는 unCLIP : 이 논문의 접근법
    • text embedding → image embedding → image → super resolution


2. Method


  • training dataset = (x,y)
    • x는 image, y는 caption(text)
  • encoder를 거쳐 나온 embedding
    • $z_i$ : CLIP image embedding
    • $z_t$ : CLIP text embedding
  • text로부터 image를 생성
    • $P(z_i|y)$ : y로부터 CLIP image embedding 생성 (prior)
    • $p(x|z_i,y)$ : prior에서 생성한 z_i로부터 이미지 x 생성 (decoder)

전체 과정은 다음과 같다.

2.1 Decoder

Diffusion model을 사용하며 prior로 만든 CLIP image embedding을 활용하여 image generation

  • GLIDE의 모델을 수정
    • 기존 timestep embedding에 CLIP embedding을 projecting & adding
    • 4개의 추가적인 token을 받아들이고 이를 GLIDE text encoder에 concat
  • 2개의 diffusion unsampler model (ADMNet) 학습
    • 저화질의 이미지를 순차적으로 화질을 향상시키며 학습 진행
      • gaussian blur → BSR degradation corrupt

 

2.2 Prior

  • 위가 AutoRegressive prior (AR)
    • CLIP image embedding을 PCA를 통해 차원을 줄인다. (1024 → 319)
    • PCA를 적용한 후, eigen value가 감소하는 순서대로 정렬하고 causal attention mask가 있는 transformer model을 사용하여 결과 예측
    • token 수가 3배 감소 / 훈련 안정성 향상
  • 아래가 diffusion prior
    • Decoder only transformer 학습
    • AR과 같이 $z_i$, $z_t$ 2개를 condition으로 안 받음
    • 대신, time step에서 2개의 $z_i$를 생성 → $z_t$와 dot product가 더 큰 $z_i$를 고른다.
    • mean-squared error를 사용

mean-squared error

 


3. Image manipulations


unCLIP 구조를 통해 주어진 이미지 x를 bipartite latent representation ($z_i, x_T$)로 encoding 가능 → 이 latent space를 조작하여 새로운 이미지 생성

  • $z_i$ : CLIP에서 인식하는 이미지에 대한 정보
  • $x_T$ : decoder가 image x를 재구성하는 데 필요한 모든 information을 encoding
    • DDIM inversion을 통해 얻음

3.1 Variations

image x가 존재할 때, 동일한 essential content는 보유하고 있으면서도 shape나 orientation과 같은 측면이 다른 이미지들을 생성할 수 있다.

이를 위해, DDIM을 사용하여 Nu를 적절히 변경해주면 이미지의 특성을 유지하면서 세부 사항을 조금씩 변경 시킬 수 있다.

3.2 Interpolations

CLIP embedding space의 모든 concept을 거치며 서로 혼합하는 것도 가능하다.

즉, 두 이미지 x_1, x_2에 대하여 이미지를 blend할 수 있다.

이게 가능한 이유는, $x_1$과 $x_2$ 각각의 CLIP image embedding을 $z_{i1}$, $z_{i2}$라고 하면

$z_\theta = slerp (z_{i1}, z_{i2}, \theta)$

를 통해 얻을 수 있다.

3.3 Text Diffs

CLIP을 사용하므로 image와 text를 같은 latent space에 embedding이 가능하다.

⇒ Language-guided image manipulation (=text diffs)가 가능하다.

새로운 caption y를 반영한 $z_t$와 기존 caption의 CLIP text embedding인 $z_{t0}$이 있다고 가정하자.

text diff vector = $z_d = norm(z_t - z_{t0})$

그리고 이 $z_d$를 $z_i$에 spherical interpolation을 적용하여

$z_\theta = slerp (z_{i1}, z_{i2}, \theta)$

를 적용한다. 이 때, $\theta$를 선형적으로 증가 시키면서 representation을 decoding → language-guided로 이미지를 manipulation할 수 있다.

 


4. Probing the CLIP Latent Space


decoder 모델이 CLIP latent space를 직접 visualize할 수 있는 기회를 제공한다. 또한 CLIP image encoder가 보는 것을 직접 확인할 수 있다.

‘Granny Smith (초록색 사과)’의 이미지 위에 텍스트를 오버레이하는 typographic attack에서도, graany smith의 예측 확률이 0.02%밖에 되지 않지만 여전히 사과 이미지를 생성하는 모습을 보여주며, ipod으로 예측하고 있더라도 절대 ‘ipod’의 그림을 생성하지 않는 모습을 보여준다.

 

- 여기서 typographic attack이란?

CV 및 NLP 모델에 대한 공격 기술 중 하나로, 이미지나 텍스트를 조작하여 모델의 예측을 왜곡하거나 변경하는 것을 목표로 한다.

일반적으로 모델이 예측을 왜곡하거나 원하지 않는 결과를 출력하게 만들기 위해서 ‘텍스트 수정’, ‘이미지 노이즈 삽입’, ‘픽셀 조작’과 같은 기술을 사용한다.

대표적인 공격의 예

  • 미묘한 패턴
  • text overlay (위의 그림)
  • 특정 단어 또는 문구의 삽입 (using noise)

또한, auto regressive prior에서 PCA를 이용하여 time complexity를 줄였다고 언급했었는데, 위의 그림은 PCA를 이용한 차원 축소의 정도에 따라 어디까지 이미지가 발전하는 지를 확인할 수 있다.

왼쪽부터, (20, 30, 40, 80, 120, 160, 200, 320 dimensions) 이며 차원이 적을 때는 이미지의 concept 정도만 이해할 수 있는데 차원이 높아질 수록 더 디테일한 이미지가 생성되는 것을 확인할 수 있다.

  • 소수의 원본 이미지의 CLIP image embedding을 가져옴
  • 점차 더 많은 PCA 차원으로 재구성
  • 일정한 시드에서 decoder와 DDIM을 사용하여 재구성된 image embedding을 시각화


5. Text-to-image Generation


5.1 Importance of the Prior

  • 1번째 행 : decoder에 text caption만 전달
  • 2번째 행 : decoder에 text caption과 caption의 CLIP text embedding을 전달
  • 3번째 행 : decoder에 text와 prior에서 생성된 CLIP image embedding을 전달

caption에서 CLIP image embedding을 생성하는 prior를 훈련 시키지만, 이는 strictly하게 말하면 꼭 필요한 건 아니다. 우리는 caption만 제공해서 모델을 훈련 시킬 수도 있다.

결과로 보았을 때, caption만 줬을 때는 worst

하지만 prior에서 생성된 CLIP image embedding 대신, caption의 CLIP text embedding을 전달하는 것도 어느정도 reasonable한 결과를 보여준다. → 그럼 이걸 대안으로 사용해도 될까 ?

이런 대안 접근 방식의 효과를 측정하기 위해 2가지 모델을 훈련

  • CLIP text embedding으로 conditioning된 작은 decoder와 작은 unCLIP stack
  • text-embedding decoder와 unCLIP stack으로부터 나온 sample들을 비교
  • unCLIP stack에서 나온 sample의 결과가 가장 best
    • 따라서, prior를 사용하지 않은 결과가 reasonable한 것처럼 보여도 결과적으로 prior가 있어야 함.

또한, 모든 prior에 대한 결과를 확인 → AutoRegressive prior보다, diffusion prior가 더 좋은 성능을 냄

 

5.2 Human Evaluations

과거 모델과 이미지 퀄리티를 비교할 수 있지만, 인간의 판단과 항상 맞지 않기 때문에 photorealism (얼마나 사실적인가?), caption과의 유사성, sample의 diversity를 비교하는 체계적인 인간 평가를 수행한다.

⇒ 결과는 Table 1에 있음.

unCLIP의 경우, guidance scale이 커져도 그림의 변화가 크지 않음.

반면에 GLIDE는 점차 가까워지거나 퀄리티가 낮아지는 모습을 확인할 수 있다.

photorealism과 caption similarity 부분에서 비슷하지만, diversity 부분에서 unCLIP이 훨씬 성능이 좋음.

Figure 11의 경우, FID score가 낮을수록 좋은데 guidance scale을 늘리면 늘릴수록 GLIDE의 FID score가 굉장히 커짐.

 

5.3 Improved Diversity-Fidelity Trade-off with Guidance / 5.4 Comparison on MS-COCO / 5.5 Aesthetic Quality Comparison

전반적으로 unCLIP 모델에 대한 타 모델과의 비교를 담은 내용이다.

diversity를 유지하면서도 fidelity를 확보하는 정도가 unCLIP 모델이 상당히 좋았으며, 타 모델과 FID score를 비교해도 유의미한 결과를 얻을 수 있었으며 MS-COCO dataset으로 평가한 FID score도 좋았다.

unCLIP 모델이 현실적인 이미지를 잘 생성해내는 모습을 확인할 수 있다.

 


6. Related Work


image generation은 잘 연구된 문제이며, text-to image generation에도 적용되었다.

  • GANs을 훈련하여 text-conditional image generation
  • VQ-VAE가 autoregressive transformers를 훈련 (text token뒤에 image token이 뒤 따르는 형태) 하여 text-conditional image generation
  • 일부 연구는 diffusion model을 적용
    • auxiliary text encoder와 함께 continuous / discrete diffusion model을 학습 시키는 방향

과거 연구에서도 고품질의 이미지를 생성하기 위해, hierarchical gerative process를 사용한 연구들이 있다.

  • sample coarse-grained latent codes / multi-layer discrete autoencoder
  • VAE with hierachy of latent codes
  • segmentation mask를 활용한 image model

latent space를 활용한 computational benefit

  • diffusion model로 latent codes를 image로 rendering → 2번째 diffusion model를 latent code를 생성하는 데에 사용


7. Limitation and Risks


비슷한 object의 attribute를 binding하는 문제에서 좋지 않은 성능을 보인다.

ex. 파란 큐브 위에 빨간 큐브를 그려줘

 

caption을 기반으로 이미지를 재구성할 때도, color가 반대로 들어간다거나 크기를 잘 반영하지 않는 경우가 생김.

또한, 다양성을 추구하기 때문에 ‘Deep Learning’이라는 단어 마저 변형해서 이미지를 생성하는 경우가 발생.

간단한 배경에선 high-quality, 하지만 복잡한 장면을 그려낼 때는 간판, 색상 등의 detail한 부분이 떨어짐.


느낀 점


 

최근, vision-language model에도 관심을 가지게 되면서 이 모델을 공부하는 것이 꽤나 흥미로웠다.

CLIP 모델이 여러 문헌에도 자주 등장했었는데, 이 모델을 프로젝트에 활용하기 위해서 자세하게 공부해야 하다보니, CLIP 모델에 대해서도 어느정도 알고 넘어갈 수 있게 되었다.

해당 모델은 diffusion model을 generator로 사용했었는데, 다른 generator 모델로도 사용하면 어떨까? 생각해보기도 했으며 마지막에 단점과 한계점에 대해 설명해줄 때, 어떤 방식으로 극복할 수 있을까, 라는 고민도 하게 되었다.

자세하게 파고 들기엔 아직 너무 모르는 것이 많지만, 모델의 한계가 명확하다는 것은 그만큼 발전 가능성이 높다는 이야기라 생각하기에 연구 열정을 불태우게 만드는 것 같다.

728x90
반응형