Dreambooth

DeepDIV!·2023년 5월 3일

Latent Diffusion

Diffusion

https://aisj.tistory.com/165

스크린샷 2023-05-01 오후 2.16.02.png

기존 Image → Noise 추가 → Noise image → 기존 image로 복원

📌 이미지에 노이즈를 주고 이를 다시 역산하여 신경망에 노이즈 이미지에서 일반 이미지를 복원시키도록 학습시킨 후, 이 신경망에 노이즈만 들어있는 이미지와 적절한 힌트를 주면 해당 힌트에 맞는 이미지를 출력한다.

Imagen

https://ostin.tistory.com/123

Textual Inversion

https://devocean.sk.com/blog/techBoardDetail.do?page=&query=&ID=164320&boardType=writer&searchData=sam56903&subIndex=&idList=&pnwriterID=sam56903

Stable Diffusion

Paper

https://arxiv.org/pdf/2112.10752.pdf

References

https://pitas.tistory.com/9#article-1--stable-diffusion-이란?

https://devocean.sk.com/blog/techBoardDetail.do?ID=164319

https://ostin.tistory.com/120

https://www.sktenterprise.com/bizInsight/blogDetail/dev/2498

https://velog.io/@yeonheedong/RUS-High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models

Stable Diffusion 논문 리뷰

Concept

Latent Diffusion과 마찬가지로 노이즈에서 복원하는 것은 같지만 이미지를 바로 복원하는 것이 아니라 Latent vector를 복원한 후, 이 Latent vector가 다시 VAE를 거쳐야 이미지가 되는 것이다.

  • Latent Diffusion 모델의 일종
  • 8GB 정도의 적은 VRAM 만으로 구동 가능
    = 더 적은 비트 수로 더 많은 Dimension을 내포할 수 있음

Architecture

1. Text Encoder

prompt 텍스트를 입력받고 그 텍스트에 맞는 이미지를 출력함

트랜스포머를 기반으로 한 CLIP 모델의 텍스트 인코더를 사용

Tokenizer를 이용해서 문장에서 단어를 추출하여 숫자로 변환

이 숫자를 latent vector의 형태인 text embedding로 만든다.

text embedding으로 변환하는 이 과정을 거쳐야 비로소 text가 이미지를 생성하는 Unet에 Conditioning을 할 수 있게 되기 때문이다.

Input Prompt로 들어오는 텍스트를 단어 및 토큰을 대표하는 벡터로 변환

해당 정보가 이미지 생성 모델로 전달

CLIP

https://devocean.sk.com/blog/techBoardDetail.do?ID=164217&boardType=writer

2. Unet

Text Encoder에서 만들어진 embedding 은 U-net으로 전달된다.

U-net 에서는 text embedding에 따라 조건화(Conditioning)된 채로 random latent vector를 n번 반복하여 denoise 하는 과정을 거친다.

바로 여기서 랜덤한 노이즈에서 이미지를 생성하는 부분이 초반부에 설명했던 Diffusion 모델의 원리이다.과정을 거치게 된다.

  • 이 모델은 text embedding에 의하여 조건화 되었기 때문에 텍스트로 우리가 원하는 내용을 입력하여 이미지를 출력할 수 있는 것이다. 이 조건화 과정은 attention 등의 방법을 사용하여 매우 복잡한 과정을 거쳐서 이루어진다.
  • 위에서 random latent vector를 n번 반복하여 denoise 한다 → 이때 반복전에 어떤 방식(노이즈의 세기, 종류, 확률 편미분 방정식 이용 등)으로 처리하고 반복하느냐를 결정하는 것이 바로 scheduler의 역할
    • scheduler의 종류로는 여러가지가 있는데 DDPM, DDIM, PNDM, Euler, Euler a, DPM++ 등이 있다. Stable diffusion을 직접 사용해본 사람이면 많이 봤을법한 스케줄러(샘플러)들이다. 스케줄러의 정확한 작동방식은 다양하고 어려움

저해상도의(위 예제에서는 64x64) latent vector 값이 생성되게 된다. 이 값은 마지막으로 VAE로 전달되게 된다.

3. VAE

VAE에서 encoder는 어떤 값을 수학적 원리를 통해 그 값의 특징을 추출하여 학습하고 decoder는 임의의 값 z(특징에 대한 latent vector)가 주어지면 그 값을 바탕으로 원래 데이터로 복원하는 역할을 한다.

  • Stable diffusion의 이 부분에서 Latent Diffusion Model 이냐 그냥 Diffusion Model 이냐의 차이가 발생한다.

Latent Diffusion 모델 : U-net에서 학습되고 이를 바탕으로 생성된 값 자체가 Diffusion 모델 처럼 이미지의 픽셀과 같은 원본 값이 들어간게 아니라 VAE에 의하여 Encode 되어 latent vector화 된 값을 U-net에 학습해 주었기 때문에 U-net에서 복원되어 나온 저해상도의 Latent vector를 VAE로 다시 Decode하여 고해상도의 그림으로 만들어 주는 것

  • 더 효율적으로 고해상도의 이미지를 얻을 수 있게 된 것

4. 이미지 생성 모델

기존의 DALL:E 나 IMAGEN 과 같은 모델들에 비해 더 좋은 성능을 내는 이유가 바로 이미지 생성 모델에 숨겨져 있음

Dream Booth

Paper

https://arxiv.org/abs/2208.12242

References

https://pitas.tistory.com/11

https://www.sktenterprise.com/bizInsight/blogDetail/dev/2494
https://ostin.tistory.com/127

https://smilegate.ai/2022/09/04/dreambooth-personalized-text-to-image-diffusion-model/

Concept

Latent Diffusion 모델에서는 학습가능한 파라미터의 영역은 크게 텍스트 인코더와 U-net 영역이 있으며, 드림부스는 두가지 파라미터 모두를 학습한다.

Why Dream Booth?

기존 2가지 문제점 해결함

  1. 주제 기반의 이미지 생성
    → 몇 장의 간단한 사진만으로  주제의 시각적 특징에 대한 높은 충실도를 유지하면서 새로운 맥락의 사진을 합성하는 것
  2. 몇 장의 이미지로 text-to-image diffusion모델을 fine-tuning 하면서도, 기존 모델의 Semantic knowledge를 보존하는 것.
📌 Dreambooth는 기존의 Fine-tuning과는 달리 적은 수의 이미지만으로 모델의 오염(overfitting, language drift) 없이 학습이 가능하기 때문에 개인이 더 손쉽게 fine-tuning이 가능하다.

Diversity

https://pitas.tistory.com/13

Custom Diffusion

Paper

https://arxiv.org/abs/2212.04488

References

https://arca.live/b/hypernetworks/64894214?p=1

https://bbs.ruliweb.com/userboard/board/700315/read/3059
https://bbs.ruliweb.com/userboard/board/700315/read/3146

https://github.com/adobe-research/custom-diffusion

Summary

https://velog.io/@deepdiv/Multi-Concept-Customization-of-Text-to-Image-Diffusion

0개의 댓글