Stable Diffusion 教學 - 採樣方法 (Sampling Method)
本篇文章介紹 Stable Diffusion web UI 採樣方法 (Sampling Method) 的功能和實驗結果,比較效率以及最後總結的建議。
簡介
產生圖片的過程是迭代降噪的運算,而採樣方法就是降噪的方式。降噪比例會分配在每次採樣,所以步數越多,每次降噪比例越少。因此步數 1 的結果,不等於步數 20 的第一步的結果。以下是 Euler a 進行 20 步採樣的過程:
功能區塊
有以下功能區塊:
- 採樣方法 (Sampling method)
- 採樣步數 (Sampling steps)
功能介紹
採樣方法
有很多不同的方法可以使用,不同的方法會影響到產出的結果和執行的效率。目前有 20 種可以使用,後面以實際的測試來比較這些方法。
採樣步數
生圖的時候採樣的次數,次數太少可能產生不出正常的圖片。這裡可以設定 0 - 150,一般建議是 20 次左右,不過不同的方法需要的步數不同,後面會有測試和比較。
實驗結果
Step | 1 | 2 | 4 | 6 | 8 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LMS | |||||||||||||||||||||||||
Heun | |||||||||||||||||||||||||
DPM2 | |||||||||||||||||||||||||
DPM++ 2M | |||||||||||||||||||||||||
LMS Karras | |||||||||||||||||||||||||
DPM2 Karras | |||||||||||||||||||||||||
DPM++ 2M Karras | |||||||||||||||||||||||||
Euler | |||||||||||||||||||||||||
DDIM | |||||||||||||||||||||||||
PLMS | |||||||||||||||||||||||||
UniPC | |||||||||||||||||||||||||
DPM adaptive | |||||||||||||||||||||||||
DPM2 a | |||||||||||||||||||||||||
DPM++ 2S a | |||||||||||||||||||||||||
DPM2 a Karras | |||||||||||||||||||||||||
DPM++ 2S a Karras | |||||||||||||||||||||||||
Euler a | |||||||||||||||||||||||||
DPM fast | |||||||||||||||||||||||||
DPM++ SDE | |||||||||||||||||||||||||
DPM++ SDE Karras |
從實驗結果有以下幾點發現:
- 有些方法產圖會在一定步數之後收斂穩定,有些沒有。
- 產出圖片最後風格可以分成三類。
- LMS Karars 步數太高效果反而越差。
- DPM adaptive 無視步數設定,他會自動判斷用多少步數,測試時他在 45 步停下。
我們以此結果整理一份比較表
方法 | 收斂 | 風格 | 每步時間(s/it) | 看起來正常的步數 | 時間(秒) | 備註 |
---|---|---|---|---|---|---|
LMS | O | A | 1.67 | 45 | 75.15 | |
Heun | O | A | 3.19 | 15 | 47.85 | |
DPM2 | O | A | 3.28 | 15 | 49.20 | |
DPM++ 2M | O | A | 1.58 | 20 | 31.60 | |
LMS Karras | O | A | 1.63 | 25 | 40.75 | 步數太高效果反而越差 |
DPM2 Karras | O | A | 3.66 | 15 | 54.90 | |
DPM++ 2M Karras | O | A | 1.66 | 10 | 16.60 | 風格 A 中效率較高 |
Euler | O | A | 1.79 | 15 | 26.85 | |
DDIM | O | A | 1.63 | 8 | 13.04 | 風格 A 中效率較高 |
PLMS | O | A | 1.74 | 30 | 52.20 | |
UniPC | O | A | 1.71 | 15 | 25.65 | |
DPM adaptive | ? | B | 4.66 | 45 | 209.70 | 無視步數設定,他會自動判斷用多少步數,測試時他在 45 步停下。 |
DPM2 a | X | B | 3.04 | 10 | 30.40 | 產出結果和 DPM++ 2S a 很相似 |
DPM++ 2S a | X | B | 3.07 | 8 | 24.56 | |
DPM2 a Karras | X | B | 3.21 | 20 | 64.20 | 產出結果和 DPM++ 2S a Karras 很相似 |
DPM++ 2S a Karras | X | B | 3.18 | 6 | 19.08 | 風格 B 中效率較高 |
Euler a | X | B | 1.75 | 8 | 14.00 | 風格 B 中效率較高 |
DPM fast | X | B | 1.55 | 40 | 62.00 | |
DPM++ SDE | X | C | 3.19 | 8 | 25.52 | |
DPM++ SDE Karras | X | C | 3.37 | 8 | 26.96 |
如果以收斂的結果為目標來比較的話,整理出以下比較表
方法 | 每步時間(s/it) | 開始收斂步數 | 開始收斂時間(秒) | 收斂步數 | 收斂時間(秒) | 備註 |
---|---|---|---|---|---|---|
LMS | 1.67 | 45 | 75.15 | 60 | 100.20 | |
Heun | 3.19 | 15 | 47.85 | 25 | 79.75 | |
DPM2 | 3.28 | 15 | 49.20 | 25 | 82.00 | |
DPM++ 2M | 1.58 | 20 | 31.60 | 40 | 63.20 | |
LMS Karras | 1.63 | 25 | 40.75 | 30 | 48.90 | 效率較高 |
DPM2 Karras | 3.66 | 15 | 54.90 | 20 | 73.20 | |
DPM++ 2M Karras | 1.66 | 15 | 24.90 | 35 | 58.10 | 效率較高 |
Euler | 1.79 | 25 | 44.75 | 45 | 80.55 | |
DDIM | 1.63 | 30 | 48.90 | 90 | 146.70 | |
PLMS | 1.74 | 30 | 52.20 | 55 | 95.70 | |
UniPC | 1.71 | 15 | 25.65 | 55 | 94.05 |
以效率比較結果做個總結:
- 建議使用:DPM++ 2M Karras、DDIM、DPM++ 2S a Karras、Euler a
- 建議步數:10 - 35 步
延伸閱讀
上一篇 Stable Diffusion 教學 - PNG Info
下一篇 Stable Diffusion 教學 - 檢查點 (Checkpoint)
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment