Diffusion model

leehyuna·2024년 8월 19일

Diffusion model

  • Image Generative model의 일종
  • 생성 모델 중 하나로서, text-to-image 모델(Stable diffusion, DALL-E-2, Imagen)의 기반이 되는 모델
  • 입력 이미지에 (정규 분포를 가진) Noise를 여러 단계에 걸쳐 추가하고, 여러 단계에 걸쳐 (정규 분포를 가진) Noise를 제거함으로써, 입력이미지와 유사한 확률 분포를 가진 결과 이미지를 생성하는 모델

Diffusion model의 작동 원리

  • Forward Diffusion Process + Reverse Diffusion Process

    • Forward Diffusion Process

      • 이미지에 고정된 정규분포로 생성된 Noise가 더해짐
      • 이미지 x0로부터 모든 픽셀값에 시간 t마다 Noise를 첨가해주는 Process
      • T번을 거쳐 만들어진 이미지 xT는 완전한 Noise 이미지가 됨, 분자들의 Diffution Process에서는 x0가 뭉쳐있는 상태, xT가 완전히 균등하게 분포하고 있는 상태에 해당
        업로드중..
    • Reverse Diffusion Process

      • 학습된 정규분포로 생성된 Noise를 이미지에서 뺌
      • 매시간 t에서 첨가된 Noise를 계산할 수 있다면 이 과정을 되돌릴 수 있음
      • 분자들의 경우 모든 공간에 균등하게 분포하는 상태에서 다시 한 공간에 모여있는 상태로 되돌릴 수 있음
      • 시간 t마다 이미지 픽셀값에 첨가된 Noise 값을 계산할 수 있다면 Noise 이미지 xT로부터 진짜 이미지 x0로 되돌리는 것이 가능
      • 이 말은 곧 이미지를 생성하는 것이 가능하다는 말!
      • 입력으로 랜덤하게 생성해준 Noise 이미지 xT가 들어가면 Reverse Diffusion Precess를 거쳐 완전한 이미지 x0가 나오게 됨
        업로드중..
  • Diffusion model이 풀려고 하는 문제

    • Forward -> Reverse 단계를 거친 '결과 이미지'를 '입력 이미지'의 확률 분포와 유사하게 만드는 것
    • 이를 위해 Reverse 단계에서, Noise 생성 확률 분포 Parameter인 평균과 표준편차를 업데이트 하며 학습 진행

Architecture

  • 조건

    1. Input : 이미지 또는 Noisy 이미지

      • w h c 형태의 3차원 또는 2차원 array여야 함
    2. 몇 번째 Process인지 의미하는 t가 주어져야 함

      • Diffusion Model 입장에서 그에 맞게 Noise를 예측할 수 있기 때문
    3. 추가 Condition이 있다면 이 조건 또한 Diffusion Model에게 주어져야 함

      • 이때의 조건이란 특정 클래스 정보 또는 생성한 이미지를 표현할 Text 정보 등등
    4. Output은 Input과 동일한 형태여야 함

      • 대신 값은 각 픽셀 별로 첨가된 Noise 값을 의미
      • Diffusion Model에 따라 Noise 값 자체를 예측할 지, Noise의 평균, 표준편차 등을 예측할 지는 조금씩 다르지만, Noise를 예측한다고 이해하면 좋음

업로드중..

  • Diffusion Model은 UNet 구조
    • Input과 동일한 resolution의 Output을 내기에 적절한 구조

Loss Function

업로드중..

  • 𝜀은 실제 Noise, 즉 Ground Truth에 해당
  • 𝜀𝜃는 Diffusion Model이 예측한 Noise에 해당
  • 이 둘이 같아지도록 Diffusion Model을 학습
profile

0개의 댓글