LDM: High-Resolution Image Synthesis with Latent Diffusion Models

LDM: High-Resolution Image Synthesis with Latent Diffusion Models
 

기존 모델의 한계

  • GAN
    • min-max 구조로 인해 균형점이 불균형 → 학습 어려움
    • mode collapse 문제: 한 가지 스타일의 이미지만 계속 만들어지는 현상
  • VAE
    • 고해상도 합성이 가능하지만 GAN만큼 품질이 좋지는 않음
  • Autoregressive model
    • 계산량이 많음
  • pixcel-wise diffusion model
    • 품질이 좋지만 모든 픽셀에 계산을 해야 해서 계산 비용이 많이 듦
  • Two-stage (VQ-VAE/VQGAN + Transformer prior류)
    • AR/Transformer prior를 학습시키려면 latent를 매우 강하게 압축해야 해서 정보 손실/품질 한계가 생김 ldm
    • 압축을 덜 하면 token 수↑로 계산 비용이 급증하고, 성능을 유지하려고 모델이 수십억 파라미터로 커지기 쉬움
  • Encoder/Decoder + score-based prior를 joint 학습하는 계열(LSGM류)
    • reconstruction loss와 prior/score loss 사이의 가중치 튜닝이 매우 민감해서(균형 맞추기 어려움) 안정적으로 좋은 재구성과 생성을 동시에 얻기 힘듦
    • 주로 특정 도메인(예, 얼굴)에 초점이 맞춰져 범용 자연이미지로의 확장성/일반성이 제한됨
 
 

모델 구조

notion image
  • x축 Rate (bits/dim): 한 픽셀(혹은 차원)당 쓰는 비트 수(정보량).
    • 왼쪽: 극단적으로 많이 압축(정보 거의 없음)
    • 오른쪽: 덜 압축(정보 많이 유지)
  • y축 Distortion (RMSE): 원본과 픽셀 기준 오차.
    • 위쪽: 원본 픽셀과 많이 다름
  • perceptual compression
    • 복원 결과가 원본과 매우 비슷함
    • 사람이 지각적으로 보았을 때 동일한 이미지라고 생각되는 수준에서 이미지를 원복하는 것
    • 하지만 고주파 영역과 같이 디테일한 부분은 압축률에 따라 좀 다를 수 있음
  • semantic compression
    • 복원 결과가 원본과 의미 상으로 비슷함
    • 예를 들어, 원본이 “선글라스를 낀 검은 머리 남자” 이미지라면 “선글라스를 낀 갈색 머리 남자” 이렇게 동일하진 않지만 의미상으로 유사한 이미지가 생성 됨
⇒ 기존 Diffusion Model에서는 픽셀 공간에서 diffusion을 하다보니 사람이 지각하지 못 하는 디테일 한 부분을 처리하느라 계산 비용이 많이 듦. 이를 계선하기 위해 perceptual compression으로 latent를 만들고, 이 latent에서 diffusion을 해서 계산 비용을 줄임
 

Perceptual Image Compression

  • KL 또는 VQ 기반의 오토인코더를 사용
  • 입력 x를 latent z로 바꿈
    • 사람이 보았을 땐 지각적으로 비슷해보이도록 원복
      • 하지만 픽셀 단위의 디테일 함은 버림
  • loss
    • L1, L2 loss를 사용하면 복원된 이미지가 약간 blurry해질 수 있음
      • 평균적인 방향으로 복원하는 경향이 있다고 함
    • perceptual loss + patch loss 사용
      • perceptual loss (참고: The Unreasonable Effectiveness of Deep Features as a Perceptual Metric)
        • “The Unreasonable Effectiveness of Deep Features as a Perceptual Metric” https://arxiv.org/pdf/1801.03924
          “The Unreasonable Effectiveness of Deep Features as a Perceptual Metric” https://arxiv.org/pdf/1801.03924
        • 보통 VGG 같은 feature extractor의 중간 feature 공간에서 loss 계산
          • 이미지넷 등으로 사전 학습 된 VGG 모델을 사용
          • VGG 모델의 conv 1-5단계 정도의 feature사용
          • 원본과 복원된 이미지를 각각 넣고 feature의 유사도를 계산
      • patch loss
        • GAN인데 patch 단위에서 진짜/가짜를 판단 함
      • KL-reg
        • 그냥 latent를 학습하면 값이 너무 커지는 경향이 있다고 함
        • 정규 분포와 비슷해지도록 KL regularization 추가
          • notion image
      • VQ-reg (Vector Quantization)
        • VQVAE의 코드북을 유사하게 사용하여 discrete latent 만듦
        • VQVAE 등과 다른 점은 1d latent가 아니라 2d latent 사용
          • prior를 pixcelCNN과 같은 auto regressive 모델을 사용하다보니 연산량이 많아서 latent를 작게 써야 했음
          • 하지만 LDM에서는 2d latent를 사용하고 이것을 후에 UNet 기반의 prior에서 사용해서 2d 구조를 자연스럽게 사용할 수 있고, latent를 많이 압축하지 않아도 계산량을 감당 할 수 있음

Latent Diffusion Models

  • perceptual compression을 통해 효율적인 latent space를 얻게 되었고, 이는 “최대 우도 기반의 생성 모델”에게 적합하다.
    • 최대 우도 기반의 생성 모델?
      • 데이터 x가 모델에서 생성될 확률 p(x)를 높이는 것이 학습 목표일 모델들
      • 예를 들어, diffusion, vae, autoregressive model들
      • 아닌 것: GAN
    • 이제 이미지를 위한 inductive bias를 활용할 수 있다!
      • 2d latent를 만들었으니 → 이걸 UNet에 넣으서 2D Conv로 처리
notion image
  • diffusion model의 MSE이지만, 픽셀 단위 이미지가 아닌 latent로 대체 됨
  • time-conditional U-Net 사용
    • https://www.researchgate.net/figure/The-time-conditional-UNet-architecture_fig5_371684920
    • time condition은 어떻게 넣어주는지?
      • sin/cosine positional embedding → MLP → time embedding
 

Conditioning Mechanisms

notion image
  • 텍스트, 이미지, segmentation 등 여러 종류의 modality를 조건 인코더를 통해 임베딩화 함
  • 이를 cross attention에 넣어줌
    • notion image
    • φi(zt): umap의 feature
      • noisy latent를 U-Net에 넣어 얻은 중간 feature
    • τθ(y): conditional embedding
    • noisy latent의 각 위치(Q)에서 어떤 조건(K)을 중점으로 보고 어떤 의미(V)를 가져올지
 
 

성능

Perceptual Compression Tradeoffs

notion image
  • downsampling factor f에 따른 실험
    • 예를 들어 원본 이미지 WxH가 100x100이고 f가 만약 2이면 latent 크기는 50x50
    • f가 너무 작거나 크면 학습이 느림
    • f 4-8일 때가 밸런스가 잘 맞는다고 함
notion image
  • 대부분 데이터셋에서 성능이 좋고, 안 좋거나 비슷한 경우에도 해당 모델 보다 학습 시간이 반은 덜 걸렸다고 함
  • precision & recall
    • real과 생성된 이미지를 classificer network에 넣고 중간 feature를 뽑아 임베딩을 만듦
      • real이미지의 군집, 생성된 이미지의 군집을 만듦
    • Precision↑
      • 생성 샘플이 real manifold 안에 들어가는 비율
      • 생성 샘플이 대체로 “진짜 데이터 근처”에 있음 → 보통 품질/리얼리즘이 좋음
    • Recall↑
      • real 데이터의 다양한 모드가 생성 분포로 커버됨 → 다양성/모드 커버리지가 좋음
      • real 샘플이 생성 manifold 안에 들어가는 비율
 
notion image
 
 
notion image
notion image
notion image
notion image
  • LIPIPS
    • inpainting 전/후 이미지를 feature exactor에 넣고 중간 feature를 뽑은 뒤 distance 계산
    • 가까울 수록 점수가 낮음 (inpaint가 자연스러움)
 
 

한계

  • 속도를 계선 했으나 GAN보다는 여전히 느림
  • 높은 복원력을 기대한다면 알맞지 않음
    Share article

    kjyong