본문 바로가기
Stable Diffusion/Stable Diffusion 원리

스테이블 디퓨전 샘플링 메소드(Sampling Method) 집중 탐구

by DesignerAllan 2023. 9. 22.
반응형

안녕하세요 Allan입니다.

 

스테이블 디퓨전 webui에는 다양한 Sampling method가 존재합니다.

 

최근에 webui 1.6으로 업데이트 되면서 더 많은 샘플링 메소드가 추가되었습니다.

 

이번 포스팅에서는 샘플링 메소드가 어떠한 역할을 하는 지 알아보도록 하겠습니다.

 

Ⅰ. 샘플링이란?

샘플링이란 Latent Diffusion 모델의 Reverse Diffusion 과정에서 noise predictor가 이미지에서 노이즈를 제거하는 과정을 말합니다.

 

샘플링 메소드는 이 과정을 수행하는 방법을 말합니다.

 

어떤 샘플링 메소드를 선택하느냐에 따라 이미지 생성 속도, 그리고 디테일 등에서 차이가 발생합니다.

 

스테이블 디퓨전 원리 시리즈에서 noise predictor가 우리가 설정한 Sampling step의 값만큼 노이즈를 추정하고 제거한다고 설명드린 적이 있습니다.

 

Diffusion 모델 - 쉽게 이해하는 스테이블 디퓨전 원리1

Latent Diffusion 모델 - 쉽게 이해하는 스테이블 디퓨전 원리2

 

Sampling step을 높게 설정할수록 노이즈를 추정하고 제거하는 단계가 많아지므로 더 선명하고 디테일한 이미지를 생성할 수 있을 것이라 생각할 수 있습니다.

 

하지만 우리는 webui에서 Sampling step을 보통 20~30으로 설정합니다.

 

그 이유는 Sampling step이 20~30을 넘어가게 되면 큰  차이가 발생하지 않기 때문입니다.

 

아래 Noise schedule 그래프를 보도록 하겠습니다.

Noise schedule
Sampling Step 30 에 대한 Noise schedule

노이즈 스케줄이란 각 샘플링 단계에서 제거해야 할 노이즈 정도를 의미합니다.

 

보시는 것처럼 낮은 값에서 많은 노이즈를 제거하고 step이 높아질수록 0에 가까워지는 것을 볼 수 있습니다.

 

이러한 이유로 우리는 Sampling step을 20~30으로 설정하게 됩니다.

 

Ⅱ. Sampling method

현재 webui에는 정말 많은 샘플링 메소드가 중요합니다.

 

하지만 Stable Diffusion을 사용하는 입장에서, 각 샘플러들의 작동 방식, 성능 차이 등을 모두 알 필요는 없습니다.

 

이번 포스팅에서는 많이 사용되는 샘플링 메소드들을 추천해 드리며 마무리하도록 하겠습니다.

 

webui에 새로운 샘플러들이 추가 되기 이전에는 다음의 샘플러들이 가장 많이 사용되었습니다.

 

  • Euler a : 일반적, 고전적인 샘플러.  
  • DPM++ 2M Karras : 속도도 빠르고 성능도 좋음
  • DPM++ SDE Karras : 디테일이 좋지만 이미지 생성 속도가 조금 느림

최근에 추가된 샘플러들 중 추천하는 샘플러는 다음과 같습니다.

  • DPM++ 2M SDE Exponential
  • DPM++ 3M SDE Karras
  • DPM++ 3M SDE Exponential

개인적인 느낌으로는 3M류가 조금 퀄리티가 좋게 이미지가 생성되는 것 같습니다.

 

Exponential이 붙은 샘플러들은 noise schedule의 초기 스텝에서 더 많은 노이지를 제거하고 뒤로 갈수록 적어지는 방식의 샘플러라고 합니다.

 

이 샘플러들도 성능이 괜찮으니 사용해 보시는 것을 추천드립니다.

 

샘플링 메소드는 여러 종류를 사용해 보신 뒤 본인의 마음에 드는 것을 선택하여 사용하시면 되겠습니다.

 

 

 

반응형