learn.ericfromkorea.com / small-stable-diffusion

진짜 Stable Diffusion처럼

소형 VAE로 압축한 잠재공간에서 도는 latent diffusion — 'Stable'의 핵심

차례
  1. 왜 'Stable'일까
  2. VAE — 요약과 복원
  3. 잠재공간 디퓨전
  4. 생성 결과
STEP 1

왜 'Stable' Diffusion일까

지금까지는 64×64 픽셀 위에서 노이즈를 1000번 지웠어요. 그런데 진짜 Stable Diffusion은 픽셀이 아니라 훨씬 작게 압축한 '잠재(latent)' 공간에서 디퓨전을 돌립니다. 그래서 빠르고 가벼워요.

🗜️ 비유: 큰 사진을 그대로 다루는 대신, 핵심만 담은 요약본(썸네일)에서 작업하고 마지막에 다시 큰 그림으로 펼치는 것. 작업량이 확 줄어듭니다.
STEP 2

VAE — 그림을 요약하고 되살리기

VAE(변이형 오토인코더)는 그림을 작은 요약본으로 줄이는 인코더와, 요약본을 다시 그림으로 펼치는 디코더로 이뤄져요. 먼저 이 압축/복원을 직접 학습시켰습니다.

VAE 압축(실제 값)
입력 그림
64×64×3 = 12,288숫자원본 픽셀
잠재 크기
8×8×4 = 256숫자압축된 요약본
압축비
48.0배이만큼 다룰 숫자가 줄어듦
VAE 크기
1.4M압축/복원 신경망
VAE 원본 vs 복원
위: 원본 / 아래: VAE가 작은 잠재로 압축했다가 복원한 그림 (실제 결과)
STEP 3

잠재공간에서 디퓨전

이제 디퓨전을 픽셀이 아니라 작은 잠재(8×8×4) 위에서 합니다. 과정은 똑같아요 — 잠재에 노이즈를 더했다 지우는 법을 배웁니다. 다만 다룰 숫자가 훨씬 적어 가볍죠. 생성이 끝나면 VAE 디코더가 잠재를 진짜 그림으로 펼칩니다.

생성 흐름 노이즈(8×8×4) → [잠재 디퓨전 1000스텝] → 깨끗한 잠재 → [VAE 디코더] → 64×64 그림

이게 바로 Stable Diffusion의 뼈대예요: VAE + 잠재 디퓨전 + (클래스/텍스트) 조건. 우리는 이 셋을 전부 작게, 바닥부터 만들어 붙였습니다.

STEP 4

잠재공간 모델의 생성 결과

클래스를 지정해 잠재공간에서 그린 뒤 디코더로 펼친 그림들이에요.

잠재공간 클래스별 생성
잠재공간 디퓨전 + VAE 디코더로 만든 13종 (CFG=4). 각 그림 위 라벨이 지정한 카테고리. 픽셀공간(②)보다 흐린 건 작은 VAE의 압축 손실 때문 — 속도/품질 trade-off
정리

우리가 만든 것

① 노이즈를 더했다 지우는 디퓨전, ② 원하는 종류를 그리는 조건부 + CFG, ③ 작은 잠재공간에서 도는 latent diffusion + VAE. 이 셋을 합치면 진짜 Stable Diffusion과 같은 구조의 작은 모델이 됩니다 — 차량·동물 13종 전용으로요.

바닥부터 직접 구현 · diffusers 미사용 · 모든 숫자는 실제 실행 결과