Stable Diffusion


🔹 Stable Diffusion 기본 학습 과정

Stable Diffusion은 기본적으로 **노이즈 추가-제거(역방향 과정)**로 학습된 건 맞습니다.
이때, 그냥 이미지에 노이즈를 제거하는 게 아니라, **텍스트 프롬프트(문장)**를 조건으로 같이 줍니다.

1. 텍스트 임베딩 준비

  • 먼저, 이미지에 대한 설명(캡션) 문장을 준비합니다. 예: “a cat sitting on a chair”
  • 이 문장을 텍스트 인코더(주로 CLIP의 텍스트 인코더)를 이용해 **벡터(임베딩)**로 변환합니다.
  • 이 벡터가 그림을 그릴 때 가이드 역할을 하게 됩니다.

2. 이미지에 점점 노이즈 추가 (forward process)

  • 고양이 사진에 점진적으로 노이즈를 추가해, 점점 알아볼 수 없는 이미지로 만듭니다.
  • 각 단계에서 “이 정도 노이즈가 추가됐을 때, 원래 이미지로 복원하려면 어떻게 해야 할까?”를 학습하도록 만듭니다.

3. 텍스트-이미지 연결 학습 (conditioning)

  • 여기서 중요한 포인트는:
    • 단순히 노이즈를 제거하는 걸 학습하는 게 아니라, “텍스트 설명에 맞게” 노이즈를 제거하도록 학습한다는 거예요.
    • 즉, 노이즈 제거 네트워크가 이미지의 특징뿐만 아니라 텍스트 임베딩도 입력으로 받도록 설계되어 있습니다.
    • “고양이”라는 텍스트가 주어졌을 때, 고양이에 어울리는 모양과 질감을 찾는 방식으로 훈련됩니다.

🔹 Text-to-image 학습 요약

과정설명
1. 텍스트 준비이미지에 맞는 캡션 준비 (“a cat on a chair”)
2. 텍스트 임베딩CLIP 등으로 텍스트를 벡터로 변환
3. 이미지 노이즈화깨끗한 이미지에 점진적으로 노이즈 추가
4. 노이즈 제거 학습노이즈 제거할 때, 텍스트 임베딩을 참고하도록 학습
5. 텍스트-이미지 매핑 강화“이 텍스트면 이런 이미지”라는 연관성 학습

🔹 핵심 포인트

❓ 기존 디퓨전 모델과 차이

  • 원래 디퓨전 모델은 그냥 이미지만 보고 노이즈를 제거하는 모델이었어요.
  • Stable Diffusion은 거기에 “텍스트 설명”이라는 조건을 추가해서, 원하는 이미지로 유도하는 방식입니다.

❓ 결국 Text-to-Image는?

  • 텍스트와 이미지의 관계를 배우는 과정 +
  • 노이즈 제거를 배우는 과정이 동시에 일어난 거예요.

🔹 참고

이 과정은 흔히 **조건부 확률 모델(Conditional Diffusion Process)**로 불립니다.
Stable Diffusion은 CLIP 텍스트 인코더 + U-Net 노이즈 제거 네트워크를 결합해 이걸 구현한 거고요.

요약하자면:

“텍스트에 맞는 이미지를 만드는 법”을 배우는 것과
“노이즈에서 텍스트에 맞는 이미지를 복원하는 법”을 동시에 훈련한 것!

좋습니다! 그럼 Stable Diffusion 및 Text-to-Image 디퓨전 모델이 논문 레벨에서 어떻게 학습되는지, 핵심 수식을 포함해 디테일하게 설명해드릴게요. 🚀


📚 1. 기본 개념: 확산 확률 모델 (Diffusion Probabilistic Models)

정방향 과정 (Forward Process)

이미지 x0x_0에 점진적으로 노이즈를 추가하는 과정입니다.
시간 tt에 따른 노이즈화는 아래처럼 정의됩니다. q(xt∣xt−1)=N(xt;1−βt⋅xt−1,βt⋅I)q(x_t \mid x_{t-1}) = \mathcal{N}(x_t ; \sqrt{1 – \beta_t} \cdot x_{t-1}, \beta_t \cdot I)

  • βt\beta_t: 시간 tt에 따른 노이즈 스케줄 (작은 값부터 시작해 점점 커짐)
  • 이 과정은 주어진 깨끗한 이미지 x0x_0에서 점진적으로 노이즈를 추가해 xTx_T에 도달하는 마르코프 체인.

역방향 과정 (Reverse Process)

목표는 노이즈 xTx_T에서 점진적으로 노이즈를 제거해 원본 이미지로 복원하는 것.
역방향 확률은 다음처럼 정의: pθ(xt−1∣xt)p_\theta(x_{t-1} \mid x_t)

이 pθp_\theta를 예측하는 모델이 바로 U-Net 같은 디퓨전 모델 아키텍처입니다.
(노이즈를 제거하는 네트워크)


📚 2. Text-to-Image: 조건부 디퓨전 (Conditional Diffusion)

조건 추가하기

위의 노이즈 제거 모델 pθp_\theta는 단순히 이미지만 보는 게 아니라, “텍스트 설명”이라는 조건 yy도 함께 받도록 학습됩니다. pθ(xt−1∣xt,y)p_\theta(x_{t-1} \mid x_t, y)

  • yy는 텍스트 프롬프트 (예: “a cat on a chair”)
  • 이 조건 yy는 보통 CLIP 텍스트 인코더를 통해 임베딩 벡터로 변환
  • 즉, 노이즈를 제거할 때, 텍스트 정보가 “이 이미지에 고양이를 그려야 해”라는 신호를 주는 역할

학습 손실 함수 (ELBO 기반)

Stable Diffusion 및 대부분의 디퓨전 모델은 변분 추론 기반 학습을 합니다. 목표는 실제 역방향 분포 qq와 모델 분포 pθp_\theta의 Kullback-Leibler 발산을 최소화하는 것. L=Eq[∑t=1TDKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt,y))]L = \mathbb{E}_q \left[ \sum_{t=1}^T D_{KL}(q(x_{t-1} \mid x_t, x_0) \| p_\theta(x_{t-1} \mid x_t, y)) \right]

  • 각 시간 스텝 tt마다 KL 발산으로 정규화된 노이즈 제거 과정과 모델의 예측을 비교
  • 실제 훈련에서는 위 전체 ELBO 대신, 노이즈 예측 손실을 씁니다.

노이즈 예측 목표로 단순화 (Noise Prediction Objective)

디퓨전 학습의 핵심은 “노이즈 자체를 예측하는 것”으로 단순화할 수 있습니다. 이미지 x0x_0에서 노이즈화된 이미지 xtx_t를 만든 후, 모델은 다음을 예측: ϵθ(xt,t,y)\epsilon_\theta(x_t, t, y)

  • xtx_t: 시간 tt에서의 노이즈 이미지
  • yy: 텍스트 조건
  • ϵθ\epsilon_\theta: 현재 노이즈의 크기와 방향을 예측하는 모델 (U-Net)

학습 손실 (실제 학습 시 사용하는 것)

L=Ex0,t,ϵ[∥ϵ−ϵθ(xt,t,y)∥2]L = \mathbb{E}_{x_0, t, \epsilon} \left[ \|\epsilon – \epsilon_\theta(x_t, t, y)\|^2 \right]

  • 실제 노이즈 ϵ\epsilon과 모델이 예측한 노이즈 ϵθ\epsilon_\theta의 MSE 손실
  • 텍스트 yy가 들어가는 게 핵심
  • 모델은 이 손실을 최소화하면서, 텍스트에 맞는 노이즈 제거 방향을 배우게 됨

📚 3. Text Conditioning 구체 메커니즘

텍스트 임베딩

  • 텍스트 프롬프트 yy는 보통 CLIP 텍스트 인코더를 통해 벡터 E(y)E(y)로 변환
  • 이 임베딩은 디퓨전 모델의 모든 U-Net 블록에 Cross-Attention 형태로 들어감

Cross-Attention

각 디퓨전 블록에서 다음과 같이 텍스트 정보를 이미지에 주입: Attention(Q,K,V)=softmax(QKTd)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V

  • QQ: 이미지의 중간 표현
  • KK, VV: 텍스트 임베딩에서 온 토큰 표현
  • 텍스트가 이미지의 어떤 영역에 영향을 줄지를 학습하는 구조

📚 4. Stable Diffusion의 Latent Diffusion Trick

Latent 공간에서 디퓨전 수행

  • Stable Diffusion은 픽셀 공간에서 직접 노이즈 처리가 아니라, VAE로 인코딩한 latent 공간에서 디퓨전 진행
  • 훈련 데이터는 (이미지, 캡션) 쌍이지만, 이미지 대신 압축된 latent zz를 사용

z=Encoder(x)z = \text{Encoder}(x) pθ(zt−1∣zt,y)p_\theta(z_{t-1} \mid z_t, y)

  • 메모리 절약 및 훈련 속도 향상 효과

📚 5. 정리: 전체 학습 파이프라인

  1. (이미지, 텍스트 캡션) 쌍 수집
  2. 이미지 → VAE Encoder → latent 벡터 zz
  3. 텍스트 → CLIP → 텍스트 임베딩 E(y)E(y)
  4. zz에 forward process로 노이즈 추가
  5. U-Net이 ztz_t에서 노이즈 ϵ\epsilon 예측, 텍스트 임베딩으로 조건부 제어
  6. 노이즈 예측 손실로 학습

📚 6. 참고 논문

  • DDPM: Denoising Diffusion Probabilistic Models (Ho et al., 2020)
  • GLIDE: Guided Language to Image Diffusion (Nichol et al., 2021)
  • Latent Diffusion Models (LDM) (Rombach et al., 2022) – Stable Diffusion의 기반 논문
  • https://arxiv.org/abs/2112.10752 (LDM 공식 논문)

📚 7. 요약 한 줄

Stable Diffusion은 노이즈 제거 모델을 텍스트 조건과 함께 학습하여, “텍스트에 맞는 이미지를 노이즈에서 복원하는 법”을 배우는 구조


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다