[arXiv](Current version v2)
Introduction
Stable Diffusion은 중간 밝기의 이미지만 생성하고 매우 밝거나 어두운 이미지를 생성하지 못한다.
따라서 몇 가지 간단한 수정:
- Noise schedule을 재조정하여 zero terminal SNR을 강제함
- v-prediction으로 모델 훈련
- 항상 마지막 timestep에서 샘플러가 시작하도록 함
- Classifier-free guidance를 재조정
Background
순방향:
Signal-to-noise ratio (SNR):
역방향:
Methods
Enforce Zero Terminal SNR
어떤 스케줄도 zero SNR에 도달하지 못한다.
xT에는 여전히 각 채널의 전체 평균과 같은 가장 낮은 주파수 정보가 포함되어 있고, 제거되거나 추가되는 노이즈는 평균이 0이기 때문에 보존될 확률이 높다. 평균을 이동시키는 방법을 배우지 잘 배우지 못하는 것이다.
추론 시에는 평균이 0인 순수한 노이즈에서 시작하므로, 모델은 매우 어둡거나 밝은 이미지를 생성하지 못한다.
간단한 방법은 √ᾱ1은 보존하고 √ᾱt를 0으로 변경한 다음 [2 ~ t-1]을 선형적으로 조정하는 것이다.
Train with V Prediction and V Loss
0에 수렴하는 작은 SNR에서도 안정적으로 작동하는 v-prediction(마지막 챕터 참고), v-loss를 사용한다.
Zero SNR, v-prediction을 적용하여 stable diffusion을 fine-tuning 한다.
Sample from the Last Timestep
최신 sampler는 dense timestep(T = 100)에서 훈련하고 추론 시 적은 sampling step(S = 25)을 사용한다.
추론 시에도 마찬가지로 SNR = 0에서 시작하여야 한다.
2가지 샘플링 step 소개 (Linspace, Trailing):
t = 1 step은 출력과 거의 차이가 없어 의미가 없기 때문에 trailing을 선택하였다.
Rescale Classifier-Free Guidance
SNR이 0에 가까워질수록 CFG가 민감해지기 때문에 새로운 스케일링 방법 제안.
일반적인 CFG :
Rescaled CFG :
하지만 스케일링 시 지나치게 단순한 이미지가 생성되었기 때문에 새로운 하이퍼피라미터 도입 :
Evaluation
Stable diffusion 2.1 기반