Problem Definition
Stable Diffusion모델은 이미지 크기를 다양하게 생성할 때 해상도 문제를 가짐. 단일 크기 이미지-텍스트 쌍으로 학습하기 때문임. 모든 사이즈 이미지-텍스트로 Stable Diffusion을 학습하는 것은 현실적으로 어렵기 때문에 본 논문에서는 ADS(Any-Size-Diffusion)을 제안하여 이 문제를 해결하고자 함.
Method
ASD(Any-Size Diffusion)은 2개의 파이프라인으로 구성되어 있음.
Stage-1) Any Ratio Adaptability Diffusion (ARAD)
Stage-2) Fast Seamless Tiled Diffusion (FSTD)
첫번째 단계 Any Ratio Adaptability Diffusion (ARAD)는 그냥 Stable Diffusion을 다양한 크기의 resized 이미지로 학습하는 것임.
두번째 단계가 Fast Seamless Tiled Diffusion (FSTD)는 다음과 같이 동작함.
1) 첫번째 단계에서 나온 이미지를 upscale해서 w*h사이즈의 M개의 조각으로 쪼개 Pi로 만들어 둠.
2) 쪼갠 각각의 Pi를 stable diffusion encoder에 넣어 random noise를 latent에 추가하여 Li로 만듦. (Algorithm 2 line 6)
3) 각각의 Pi로부터 나온 latent Li 에 대해 denoising 작업을 수행함
1) 과정에서 이미지를 Pi로 단순히 tiling하여 진행하면 denoising 후에 복원된 이미지에 seam이 생긴다는 문제가 있음. 이를 극복하기 위해 explicit overlapping 방법에서 overlap되는 부분을 넓혀서 원하는 성능을 뽑을 수 있지만, 그럼 너무 느리다는 단점이 있음. 본 논문에서는 이를 극복할 implicit Overlapping 방법을 제안함. (아래 그림 참조)
나는 이게 논문이나 overview 이미지만 보고서는 이해가 잘 안됬는데, 코드(알고리즘)를 같이 보고 감이 좀 옴,, 코드를 전부 공개하진 않았더랑..
동작 과정)
각각의 time step마다 2) 에서 만든 M개의 latent Li에 대해 어떤 random offset $\Delta x$,$\Delta y$를 추가하여 $L_i,x_i,y_i$를 만듦. (Algorithm 2 line 21)
새롭게 생긴 $L_i,x_i,y_i$의 전체집합 $Z^s$로 두고, $Z_(t+1)$의 차집합을 $Z^c_t$로 둠. (Algorithm 2 line 25)
$Z^s$에 있는 모든 $L_i,x_i,y_i$를 Unet에 넣어 denoising 과정을 진행함.
요약) 위 그림 (c)참조
쪼개진 이미지 조각 L에 offset을 더해 새로운 L'를 만들고 이전 time step의 L'와 현재 L'와 겹치지 않는 부분을 만듦.
겹치지 않는 부분($Z^c$) 은 그대로 두고, 겹치는 부분만 denoising을 진행함.