📌 목차

1. DALL∙E 2
2. Imagen

3. Stable Diffusion
4. 🦩Flamingo
5. 요약

 

🧐  preview:  Multi-modal..?

멀티모달학습은 2종류이상의 data사이변환을 위해 생성모델을 훈련시킨다.
이번시간에는 총 4가지의 txt2img, Visual Language Model에 대해 살펴볼 것이다.
 - [DALL∙E 2]_ OpenAI
 - [Imagen]_ Google Brain
 - [Stable Diffusion] _ Stability AI & CompVis & Runaway
 - [Flamingo] _ DeepMind

txt2img는 txt프롬프트가 주어졌을때, 최신 img생성에 초점을 맞춘다.

[추가적 과제]:
- 두 Domain간 전환방법 학습
- 정보손실없이 txt2고화질img이 되도록하는 공유표현을 학습.
- 이전에 본 적 없던 개념과 style결합

 

 

 

 

 

 

 


1. DALL∙E 2

prev.

DALL∙E 2는 txt2img모델로 2022년 4월에 출시되었다.
사람에게만 있다 여겨진 창의성에 대한 AI의 역할에 대한 질문을 던진 전환점이 되었다 볼 수 있었다.

 

구조

구조에 대해 총 3가지를 살펴볼 것이다.
1. text Encoder:  encoder통과후 txt embedding벡터 생성
2. Prior: txt embedding벡터를 img embedding벡터로 변환
3. Decoder: img 생성

한계점: attribute binding
주어진 txt prompt에서 단어간 관계(특히 속성이 객체와 어떻게 관련된지 이해해야하는 모델 능력)에 대해
DALLE는 GLIDE같은 이전모델보다 다소 어려움을 겪긴하나 다양하고 우수한 품질이 가능하다.

또한, txt를 정확하게 재현할 수 없는데, 이는 CLIP embedding이 txt의 고수준표현만 담을 수 있기 때문이다.
즉, 전체 단어를 구성할 만큼 충분히 이해하지 못한다.

 

text Encoder

목적: txt prompt를 embedding벡터로 변환
embedding벡터 = latent space내 txt prompt의 개념적 의미를 나타냄


∙ CLIP

DALL∙E 2는 OpenAI에서 만든 CLIP이란 기존 모델을 사용한다.
CLIP논문: CLIP이란, '자연어 감독으로부터 시각적 개념을 효율적으로 학습하는 신경망'

CLIP은 contrastive learning으로 img와 txt설명을 매칭한다.
모델의 목표: 이미지와 가능성있는 txt목록 중, 실제로 일치하는 설명을 찾는 것.
대조학습 핵심 아이디어: txt encoder와 img encoder(ViT VQ-GAN) 두가지 신경망을 학습:
txt encoder: txt를 txt로 embedding
img encoder: img를 img로 embedding
이후, cosine similarity로 모든 txt와 img embedding간 비교,
가장 일치하는 쌍을 최대화, 잘못된 쌍의 점수를 최소화하도록 훈련.

이때, CLIP은 판별능력을 기준으로 평가된다.

흥미로운점:
모든 라벨을 표현할 수 있는 공통영역으로 언어를 사용하기 때문에 Zeroshot prediction이 가능하다.
(= 즉 새로운 작업에 적용하기 위해 CLIP신경망을 재훈련할 필요가 없다.)


앞서 훈련된 txt encoder가중치를 고정.
이후 DALL∙E 2같은 더 큰 모델의 한 부분으로 사용한다.

 

prior

txt embedding을 CLIP Img embedding으로 이제 변환을 해야하며,
이를 위한 prior모델로 2가지방법을 시도했는데, Diffusion이 AR보다 성능 및 계산효율이 좋다는 사실을 발견했다.

∙ AR Model

AR모델은 출력토큰에 순서를 지정, 이전 토큰을 다음 토큰의 조건으로 삼아 순차적으로 출력을 생성한다.
DALL∙E 2의 AR prior는 Encoder-Decoder Transformer로 
CLIP txt embedding이 주어지면 CLIP img embedding재현을 돕는다.

input txt embedding은 transformer Encoder에서 처리되고
현재생성된 출력 img embedding과 Decoder로 공급되는 또다른 표현을 생성한다.
출력은 한번에 한 원소씩 생성되며
Teacher Forcing으로 예측된 다음 원소를 실제 CLIP img embedding과 비교한다.

다만, 순차적으로 생성되는 속성으로인해 AR모델은 계산효율이 좋지않다.

∙ Diffusion Model

Transformer와 함께 Diffusion모델은 선호되는 모델이 되었다.
AR Prior는 DALLE1에서 사용되었으나, DALLE2부터는 Diffusion prior가 사용되게 되었다.
훈련 시, txt와 img embedding들은 서로 단일벡터로 연결된다.
이후 img embedding과 random noise가 구별되지 않을때까지 1000번이상의 time step을 거친다.
이후 이전 time step의 noise가 추가되기 전 img embedding을 예측하도록 Diffusion Prior를 훈련한다.

이때, Loss function은 전체 Denoising단계에 걸친 MSE이다:

 

Decoder

txt prompt와 prior가 출력한 img embedding을 기반으로 최종 img를 생성한다.

DALLE2: 초기 txt prompt 정보를 전달하는데 CLIP embedding을 사용 
GLIDE: Denoising U-Net구조를 사용해 하나의 Diffusion Model로 훈련, 전체 생성모델을 처음부터 학습시킴.


 

DALLE 2 Decoder도 Denoising으로 U-Net을 사용하고 txt encoder로 transformer를 사용한다.

다만, GLIDE와 차이점은 추가로 예측된 CLIP img embedding을 조건으로 사용한다는 점이다.

UpSampler를 사용하기에 고차원 img처리를 위한 대규모 모델구출의 필요성은 없다.
즉, UpSampler만으로 마지막 단계까지 작은 img로 작업이 가능하여
parameter절약 및 훈련과정을 효율적으로 유지할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


2. Imagen

prev.

Imagen 또한 txt encoder와 Diffusion model Decoder를 사용한다.

 

구조

Frozen Text Encoder는 T5-XXL이다.
이는 CLIP과 달리 img가 아닌 txt로만 학습되었기에 multi-modal모델은 아니다.
다만 txt encoder로 잘 작동하기에 아래 사실을 확인할 수 있었다.
Txt Encoder를 잘 확장 >> Diffusion모델 Decoder 확장

DALL∙E 2처럼 Imagen의 Decoding Diffusion model은 txt embedding을 사용하는 U-Net구조를 기반으로 한다.
이때, 생성된 img를 64×64에서 1024×1024 pixel로 변환하는 Super-Resolution Upsampler모델도
UpSampling과정을 가이드하는데 Txt embedding을 사용하는 Diffusion모델이다.

DrawBench

Imagen논문의 또 다른 Contribution으로 txt2img를 평가하는 txt prompt모음이다.

위와 같은 방식으로 두 모델간의 비교를 진행한다.
이때, 두 모델간 비교를 위해 각 모델에 DrawBench txt prompt를 전달, 평가자에게 출력을 제공, 2개의 평가지표를 평가한다:
∙ Alignment: 어떤 img가 caption을 더 정확하게 설명하는가?
 Fidelity: 어떤 img가 더 진짜처럼 보이는가?


다만, DALL∙E 2는 Imagen에는 없는 추가기능을 제공하는데, CLIP을 이용하기에 img를 입력으로 받아 img embedding을 생성할 수 있다.
즉, DALL∙E 2는 img편집 및 변형기능을 제공할 수 있으나 Imagen은 순수 txt모델이기에 img입력방법이 없다.

 

 

 

 

 

 

 

 

 

 

 

 


3. Stable Diffusion

prev.

마지막으로 살펴볼 txt2img Diffusion모델은 그 유명한 Stable Diffusion이다.
Stable Diffusion은 Hugging face 🤗에 코드와 모델가중치가 공개되었다는 점에서 전술한 두 모델과 차별화된다.
즉, 독점적인 API를 사용하지 않고 누구나 자신의 하드웨어에서 이 모델을 사용할 수 있다는 점이다.

 

Architecture

Stable Diffusion은 기본생성모델로 Latent Diffusion을 사용한다는 점에서 전술한 두 모델구조와 차이가 있다.
LDM(Latent Diffusion Model)논문에서의 핵심아이디어:
"Diffusion모델을 AE로 감싸서 Diffusion과정이 img자체가 아닌, img의 latent space representation에서 작동한다는 것."

이 획기적인 방법은 전체 img에서 작동하는 U-Net모델보다 
Denoising U-Net모델을 상대적으로 가볍게 유지할 수 있다.

AE에서 img detail을 latent space로 encoding
latent space를 high resolution img로 다시 decoding
즉, Diffusion모델은 Latent space에서만 수행되기에 train과정의 속도 및 성능이 크게 향상된다.

다만, Stable Diffusion 2부터는 처음부터 맞춤형으로 훈련된 CLIP모델인 OpenCLIP을 사용한다.

 

 

 

 

 

 

 

 


4. Flamingo

prev.

전술한 세 종류의 txt2img모델과 달리 Flamingo는 다음과 같다:
"visual data stream이 주어지면, txt를 생성하는 멀티모달 모델"
이를 VLM(Visual Language Model)이라 한다.

 

Architecture

가장 핵심구성요소에 대해 알아보자:
∙ Vision Encoder
∙ Perceiver Resampler
∙ Language Model

 

Vision Encoder

전술한 DALL∙E 2, Imagen 같은 순수 txt2img모델과의 첫번째 차이점이다.
바로 🦩는 txt와 visual data(img, video, ...)의 조합을 사용가능하다는 점이다. 

∙ 역할: CLIP의 img encoder와 유사하게 입력에 포함된 visual data를 embedding 벡터로 변환하는 것.

Vision Encoder는 Pretrained NFNet(Normalizer-FreeResNet)을 사용한다.
CLIP: ViT사용
Vision Encoder: ResNet사용

Vision Encoder는 CLIP논문에 소개된 것처럼 Contrastive Loss를 사용해 img-txt쌍에 대해 훈련한다.
훈련 후 weight는 frozen되기에 🦩모델의 추가훈련이 vision encoder의 가중치에 영향을 주지는 않는다.

Vision Encoder의 출력은 feature의 2D grid로 Perceiver Resampler로 전달전에 1D벡터로 펼쳐진다.
cf) Video는 각 snapshot을 vision encoder에 독립적으로 통과시킨 후 여러 feature grid를 생성.

Perceiver Resampler

BERT같은 기존 encoder transformer의 메모리 요구사항은 input sequence length에 따라 제곱으로 늘기에 정해진 token수로 제한해야한다.
하지만 Vision Encoder의 출력은 가변길이 벡터이기에 매우 길 수 있다.

Perceiver 구조는 긴 input seq를 효율적으로 처리하기위해 특별히 설계되었다.
전체 input_seq에 대해 self-attention대신, 
고정 길이의 latent 벡터와 input_seq로 cross attention을 수행한다.
Q: latent 벡터
K, V: input_seq와 latent 벡터를 연결한 것

Language Model

LM은 예측 txt를 출력하는 Decoder transformer스타일의 블록을 여러개 쌓아 구성된다.
LM은 대부분 pretrained Chinchilla모델에서 가져오는데, GPT등장이후, GPT를 많이 사용한다.

🦩논문의 Main Contribution:
언어데이터(Y)에 포함된 비전데이터(X)를 친칠라에서 어떻게 처리하는가?

1. Vision data를 <image>태그로 대체, <EOC>태그를 사용해 txt를 chunk로 나눈다.
각 chunk에는 최대 하나의 img가 포함되며, 이 img는 항상 chunk의 시작부분에 있다.
즉, 뒤따르는 txt는 해당 img와만 관련있다 간주한다.
seq의 시작부분도 <BOS>태그로 표시된다.

2. seq가 토큰화된 후 각 토큰에는 앞선 img인덱스에 해당하는 인덱스(phi)가 다음과 같이 부여된다:
chunk에 앞의 img가 없다면 0
이때, txt token(Y)이 마스킹을 통해 특정 chunk에 해당하는 img토큰(X)과만 cross attention되게 강제할 수 있다.


∙ [Masked Cross Attention 역할]:
파란색 LM층은 친칠라의 frozen층이므로 훈련과정에서 update되지 않는다.
보라색 GATED XATTN-DENSE층은 플라밍고의 일부로 학습되며 언어와 시각정보를 혼합하는 Masked Cross Attention과 FFN층을 포함한다.

이 층은 Cross Attention과 FFN의 출력을 2개의 서로다른 tanh게이트에 통과시키며, 이 게이트는 모두 0으로 초기화된다.
결과적으로 신경망이 초기화될 때, GATED XATTN-DENSE층이 기여하는 바가 없고, 언어정보가 바로 전달된다.
alpha게이트 parameter가 신경망에 의해 학습되어 훈련이 진행됨에 따라 ivsion data의 정보를 점차 혼합시킨다.

 

ex).

각 예제를 보면 진정한 멀티모달 스타일로 플라밍고가 txt와 img의 정보를 혼합함을 확인할 수 있다.

1번 예) 단어 대신 img를 사용, 적절한 책을 제안해 prompt를 계속 진행
2번 예) video frame을 보여주며 🦩는 작동결과를 정확하게 식별
마지막 3개 예) 모두 🦩를 대화형으로 사용하는 예시, 대화를 통해 추가정보를 제공하거나 질문을 하면서 정보확인이 가능.




 

 

 

 

 

 

 

 


5. 요약

prev.

[DALL∙E 2]-OpenAI
1. pretrained CLIP모델로 input txt prompt의 txt embedding생성
2. prior라는 Diffusion Model로 img embedding으로 변환
3. GLIDE스타일의 Diffusion Model로 prior가 예측한 img embedding과
transformer로 encoding된 input prompt에 맞는 output img 생성.


[Imagen]-Google Brain
Txt Encoder와 Diffusion모델 Decoder 등 DALL∙E 2와 상당히 유사.
DALL∙E 2와의 주요 차이점: 
 ∙ Imagen txt encoder: 순수한 txt data로 훈련됨
 ∙ DALL∙E 2: txt encoder의 훈련과정에는 img data가 포함됨.
위의 차이점 및 결과를 DrawBench평가를 통해 보여준다.


[Stable Diffusion]-Stability AI, CompVis, Runaway
오픈소스로 제공되며, img자체가 아닌 AE의 latent space에서 작동하는 LDM(Latent Diffusion Model)을 사용하기에 특히나 빠르고 가볍다.


[Flamingo 🦩]-DeepMind
Visual Language Model, VLM으로서 txt와 visual data가 혼합된 stream을 받고 decoder transformer스타일로 prompt에 이어 txt를 추가할 수 있다.
∙ Main Contribution:
visual input feature를 적은 수의 visual토큰으로 encoding하는 vision encoder
perceiver resampler를 통해 visual정보가 어떻게 transformer에 공급될 수 있는지 보여주는 것이다.
LM 자체는 DeepMind의 초기 친칠라모델을 확장한 것으로, visual정보를 혼합할 수 있게 조정되었다.

 

 

그림출처: https://ffighting.net/deep-learning-paper-review/diffusion-model/dalle2/

'Gain Study > Generation' 카테고리의 다른 글

[G]Part 3-1. Advanced GAN  (0) 2024.03.04
[G]Part 2-6. Diffusion Models  (0) 2024.01.30
[G]Part 2-5. Energy-based Model  (0) 2024.01.29
[G]Part 2-4. Normalizing Flows  (2) 2024.01.29
[G]Part 2-3. Auto Regressive Models  (0) 2024.01.26

+ Recent posts