Stable diffusion의 개선 버전
[Github]
[arXiv]
(본 글은 요약본입니다. 자세한 리뷰)
SDXL
- 아키텍처 향상(3배 더 큰 U-Net backbone)
- 추가 컨디셔닝
- 오토인코더 향상
- 다단계 학습
- Refiner
Improving Stable Diffusion
Architecture & Scale
아키텍처 구성이 달라졌다.(SD, SDXL 아키텍처 분석)
두 개의 텍스트 인코더를 같이 사용, 풀링된 텍스트 인코딩을 추가로 컨디셔닝
Micro-Conditioning
학습 데이터셋의 rescaling 전 원래 사이즈 csize를 컨디셔닝.
추론 시 겉보기 해상도 조절 가능
학습 데이터 로드 시 데이터가 crop 되었다면 crop 좌표 ccrop을 컨디셔닝.
ccrop = (0,0)으로 설정하여 개체가 잘리지 않게 할 수 있고 위치를 조절할 수도 있다.
Multi-Aspect Training
여러 종횡비의 이미지를 처리할 수 있도록 픽셀 수는 최대한 유지 한 채 종횡비를 변경하여 사전 학습된 모델을 fine-tuning.
각 배치는 동일한 종횡비의 이미지로 구성되며 버킷 크기 car을 컨디셔닝.
Improved Autoencoder
기존의 AutoEncoder에서 더 큰 배치크기와 지수 이동 평균으로 개선 훈련된 새로운 AutoEncoder 사용.
Putting Everything Together
향상된 오토인코더, 1000step diffusion schedule
다단계 학습 절차:
- 256x256, 2048 batch, csize, ccrop에 대해 60만 번의 최적화 단계
- 512x512에 대해 20만 번의 최적화 단계
- 1024x1024, car, 0.05 offset-noise
Refinement Stage
별도의 refinement model을 통해 품질 개선.
eDiff-I와 비슷하게 후반 200step에 특화된 모델을 학습하고 SDEdit처럼 기존 모델의 출력에 일정 노이즈를 다시 도입하여 Refiner에서 200step denoising 함.
FID 같은 정량적 평가에서의 유의미한 개선은 없지만 사람들은 Refiner의 결과를 더 선호함.