AI 繪畫Stable Diffusion 研究(八)sd采樣方法詳解


大家好,我是風雨無阻。


本文適合人群:

  • 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何選用合適采樣器以進一步提高出圖質量的朋友。

  • 想要進一步了解AI繪圖基本原理的朋友。

  • 對stable diffusion AI繪圖感興趣的朋友。


本期內容:

  • 什么是采樣方法 ?
  • 采樣方法的分類有哪些?
  • 采樣方法詳細介紹
  • 哪個采樣器最好?我們該如何選擇?

在 Stable Diffusion中目前已經有22種 Sampling method 采樣方法 ,不同的采樣方法對出圖效果有不同的影響。今天,我將詳細介紹這22種采樣方法,以及如何選擇合適的采樣方法。


在這里插入圖片描述


一、什么是采樣 ?


在了解采樣之前,我們得先了解 一下Stable Diffusion webui 是如何工作的,建議看看我之前的AI 繪畫Stable Diffusion 研究(七)sd webui如何工作這篇文章。


我們知道 sd webui 生成圖像,大致會經過以下過程:

1、為了生成圖像, Stable Diffusion 會在潛在空間中生成一個完全隨機的圖像

2、噪聲預測器會估算圖像的噪聲

3、噪聲預測器從圖像中減去預測的噪聲

4、這個過程反復重復 N 次以后,會得到一個干凈準確的圖像

這個去噪的過程,就被稱為采樣。


Stable Diffusion 在這個去噪過程中,會生成一個新的樣本圖像。

采樣中使用的方法 被稱為 Sampling method (采樣方法或者是采樣器)。


增加采樣步驟 Sampling steps 有什么影響呢?

步驟越多,每個步驟降噪越小 。這樣可以減少采樣過程中的截斷誤差。

目前Stable Diffusion 中有 22 個采樣器可以使用 。


二、采樣器的分類

這些采樣器有什么區別呢?

為了便于使用和理解,我們可以將這些采樣方法進行分類:


(1)、傳統的常微分方程求解器(ODE solvers )

包含:Euler \Heun \LMS

這三個方法歷史悠久,被認為是最簡單,但是不太準確的采樣器。


在這里插入圖片描述

(2)、祖先采樣器 (名稱中有一個字母 a 的)

包含 :Euler a \ DPM2 a \DPM++2S a \DPM2 a Karras \DPM++2S a Karras


這些采樣器會在每個采樣步驟中,向圖像添加噪聲 ,這些是祖先采樣器,因為在采樣結果中

具有一定的隨機性。

這些采樣器的缺點是,圖像不會收斂。


在這里插入圖片描述


(3)、最初官方采樣器 (最初隨sd v1版本發布的采樣器)

DDIM、PLMS

DDIM 是為擴散模型設計的第一個采樣器, PLMS 則是DDIM 更快速的替代品

在這里插入圖片描述


(4)、DPM 和 DPM++ 系列

DPM 和 DPM++ 系列 是2022年發布的用于擴散模型的新采樣器 ,它們具有相似的結構,但DPM2比DPM 更準確,不過速度較慢。


DPM++ 是對DPM 的改進,可以自適應地調整步長,但可能會很慢,并且不能保證在規定數量的采樣步驟內完成。


在這里插入圖片描述


在這里插入圖片描述


(5)、帶有Karras字樣的采樣器

在這里插入圖片描述

在這里插入圖片描述


這些采樣器使用了噪聲時間表 (noise schedule ),控制每個采樣步驟中的噪聲水平,并隨著采樣步驟的增加,減少了截斷誤差。


(6)、UniPC采樣器

這UniPC采樣器是2023年發布的新采樣器,根據 ode 求解器中預測校正方法的啟發,可在5-10步內實現高質量圖像生成。


在這里插入圖片描述


了解了以上采樣器的分類,相信大家對選擇采樣器,已經可以縮小選擇的范圍了。


三、采樣器方法詳解


接下來我們根據 Stable Diffusion WebUI 中采樣器的順序,對每個采樣器進行詳細介紹。


1、Euler a

祖先采樣器的一種 , 類似于 Euler ,但在每個步驟中它會減去比“應該”更多的噪聲。并添加一些隨機噪聲以匹配噪聲計劃。去噪圖像取決于前面步驟中添加的特定噪聲。


2、Euler

最簡單的采樣器,在采樣過程中不添加隨機噪聲,通過噪聲計劃告訴采樣器,每個步驟中應該有多少噪聲。并使用歐拉方法減少恰當數量的噪聲。以匹配噪聲計劃,直到最后一步為0 為止。


3、LMS 解決常微分方程的標準方法

LMS采樣速度與Euler 相同 。


4、Heum

Heum 是對Euler 更精確的改進,但是需要在每個步驟中預測兩次噪聲。

因此速度比Euler 慢2倍。


5、DPM2

dpm2 是Katherine Crowson在K-diffusion項目中自創的 ,靈感來源Karras論文中的DPM-Solver-2和算法2 ,受采樣器設置頁面中的 sigma參數影響。


6、DPM2 a

祖先采樣器的一種,使用 DPM2 方法 ,受采樣器設置中的ETA參數影響 。


7、DPM++2S a

隨機采樣器一種

在K-diffusion實現的2階單步并受采樣器設置中的ETA參數影響。


8、 DPM++2M

在Kdiffusion實現的2階多步采樣方法,在Hagging face Diffusers中被稱作已知最強調度器。在速度和質量的平衡最好。這個代表m的多步比上面的s單步,在采樣時會參考更多步,而非當前步,所以能提供更好的質量,但是也更復雜。


9、 DPM++SDE

DPM++的SDE版本,DPM++ 原本是0DE 求解器及常微分方程在Ktifusion實現的版本,代碼中調用了隨機采樣方法,所以受采樣器設置中的ETA參數影響。


10、 DPM fast

在Ktifusion實現的固定步長采樣方法 ,用于steps小于20的情況。受采樣器設置中的ETA參數影響。


11、 DPM adaptive

在K-diffusion 實現的自適應步長采樣方法,DPM-Solver-12 和23,受采樣器設置中的ETA參數影響。


12、帶有Karras字樣的6種采樣器

LMS karras 、DPM2 karras 、DPM2 a karras 、DPM++ 2S a karras 、DPM++2M karras、DPM++ SDE karras 、DPM++2M SDE karras

這些含有Karras名字的采樣方法 都是相當于 Karras噪聲時間表的版本。


13 、DDIM

官方采樣器之一,使用去噪后的圖像來近似最終圖像,并使用噪聲預測器估計的噪聲,來近似圖像方向。


14、PLMS

官方采樣器之一,PLMS則是DDIM的新版且更快速的替代品。


15、unipc

最新添加的采樣器,應該是目前最快最新的采樣方法,10步內實現高質量圖像。


四、哪個采樣器最好?我們該如何選擇?


以下是我的建議:

  • 如果想快速生成質量不錯的圖片,建議選擇 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步)
  • 如果想要高質量的圖,不關心重現性,建議選擇 DPM++ SDE Karras (10-15步 較慢) ,DDIM(10-15步 較快)
  • 如果想要簡單的圖,建議選擇 Euler,Heun(可以減少步驟以節省時間)
  • 如果想要穩定可重現的圖像,請避免選擇任何祖先采樣器(名字里面帶a或SDE)
  • 相反,如果想要每次生成不一樣的圖像,可以選擇不收斂的祖先采樣器(名字里面帶a或SDE)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38502.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【洛谷 P5736】【深基7.例2】質數篩 題解(埃氏篩法)

【深基7.例2】質數篩 題目描述 輸入 n n n 個不大于 1 0 5 10^5 105 的正整數。要求全部儲存在數組中,去除掉不是質數的數字,依次輸出剩余的質數。 輸入格式 第一行輸入一個正整數 n n n,表示整數個數。 第二行輸入 n n n 個正整數 …

jquery如何修改選中狀態

jquery修改選中狀態的方法:1、使用addClass和removeClass方法,可以向選中的元素添加一個多個類名,從而改變其樣式或狀態;2、使用toggleClass方法,可以在選中元素上添加或移除一個類名,如果該類名已經存在&a…

208. 實現 Trie (前綴樹)

Trie(發音類似 "try")或者說 前綴樹 是一種樹形數據結構,用于高效地存儲和檢索字符串數據集中的鍵。這一數據結構有相當多的應用情景,例如自動補完和拼寫檢查。 請你實現 Trie 類: Trie() 初始化前綴樹對象…

手撕LFU緩存

手撕LRU緩存_右大臣的博客-CSDN博客 是LRU的升級,多了一個訪問次數的維度 實現 LFUCache 類: LFUCache(int capacity) - 用數據結構的容量 capacity 初始化對象int get(int key) - 如果鍵 key 存在于緩存中,則獲取鍵的值,否則返…

C# Lamda到底是什么?!

lamda作為匿名函數,現在已經能夠出現子啊C#程序的任何可能位置,它可能作為參數為委托或其他函數復制,或者單獨作為表達式,或者承擔一些類似C中內聯函數的一些作用承擔一些簡單計算。熟練的使用Lamda表達式能夠讓減少代碼的冗余&am…

Django圖書商城系統實戰開發-總結經驗之后端開發

Django圖書商城系統實戰開發-總結經驗之后端開發 簡介 在這篇博客中,我將總結經驗分享后端開發Django圖書商城系統的過程。在開發過程中,我遇到了各種挑戰和問題,并且通過實踐獲得了寶貴的經驗和教訓。通過本文,我希望能幫助讀者…

vue3+vite配置vantUI主題

?在項目中統一配置UI主題色,各個組件配色統一修改 vantUI按需安裝 參考vantUI文檔 創建vantVar.less文件夾進行樣式編寫 vantVar.less :root:root{//導航--van-nav-bar-height: 44px;//按鈕--van-button-primary-color: #ffffff;--van-button-primary-backgr…

linux——mysql的高可用MHA

目錄 一、概述 一、概念 二、組成 三、特點 四、工作原理 二、案例 三、構建MHA 一、基礎環境 二、ssh免密登錄 三、主從復制 master slave1 四、MHA安裝 一、環境 二、安裝node 三、安裝manager 一、概述 一、概念 MHA(MasterHigh Availability&a…

力扣 198. 打家劫舍

題目來源:https://leetcode.cn/problems/house-robber/description/ C題解:因為是間接偷竊,所以偷nums[i]家前,一定偷過第i-2或者i-3家,因為i-1不能偷。 例如12345共5家,先偷第1家,那么2不能偷…

(三)Unity開發Vision Pro——入門

3.入門 1.入門 本節涵蓋了幾個重要主題,可幫助您加快visionOS 平臺開發速度。在這里,您將找到構建第一個 Unity PolySpatial XR 應用程序的分步指南的鏈接,以及 PolySpatial XR 開發時的一些開發最佳實踐。 2.開發與迭代 有關先決條件、開…

顯卡nvidia-smi后 提示Faild 解決過程,包含卸載重裝NVIDIA驅動步驟

顯卡異常: 顯卡nvidia-smi后 提示Faild 解決過程,卸載重裝nvidia驅動步驟 文章目錄 顯卡異常: 顯卡nvidia-smi后 提示Faild 解決過程,卸載重裝nvidia驅動步驟 [toc]1 緣由2 解決過程3 過程所需命令4 解決4.1 把該顯卡重新拔插一下卸載NVIDIA驅動的方法&a…

單元測試優化:為什么要對程序進行測試?測試有什么好處?

單元測試(Unit Testing)又稱為模塊測試, 是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。 程序單元是應用的最小可測試部件。簡單來說,就是測試數據的穩定性是否達到程序的預期。 我們日常開發時可能…

19、SQL注入之SQLMAP繞過WAF

目錄 邏輯層1、邏輯問題2、性能問題 白名單方式一:IP白名單方式二:靜態資源方式三:url白名單方式四: 爬蟲白名單 sqlmap在測試漏洞的時候,選擇了no,它就不會去測試其它的了,我們一般選擇yes,為了…

Deep Learning With Pytorch - 最基本的感知機、貫序模型/分類、擬合

文章目錄 如何利用pytorch創建一個簡單的網絡模型?Step1. 感知機,多層感知機(MLP)的基本結構Step2. 超平面 ω T ? x b 0 \omega^{T}xb0 ωT?xb0 or ω T ? x b \omega^{T}xb ωT?xb感知機函數 Step3. 利用感知機進行決策…

SpringBoot整合Minio

SpringBoot整合Minio 在企業開發中&#xff0c;我們經常會使用到文件存儲的業務&#xff0c;Minio就是一個不錯的文件存儲工具&#xff0c;下面我們來看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot項目所依賴的軟件工具包 <?xml version"1.0" …

Ubuntu上安裝RabbitMQ

在Ubuntu上安裝RabbitMQ并設置管理員用戶為"admin"&#xff0c;密碼為"123456"&#xff0c;并開啟開機自啟 更新系統軟件包列表。在終端中執行以下命令&#xff1a; sudo apt update安裝RabbitMQ服務器軟件包。運行以下命令&#xff1a; sudo apt insta…

DaVinci Resolve Studio 18 for Mac 達芬奇調色

DaVinci Resolve Studio 18是一款專業的視頻編輯和調色軟件&#xff0c;適用于電影、電視節目、廣告等各種視覺媒體的制作。它具有完整的后期制作功能&#xff0c;包括剪輯、調色、特效、音頻處理等。 以下是DaVinci Resolve Studio 18的主要特點&#xff1a; - 提供了全面的視…

Linux 設置 ssh 內網穿透

背景&#xff1a;有三臺機器A、B、C&#xff0c;機器 A 位于某局域網內&#xff0c;能夠連接到互聯網。機器 B 有公網 IP&#xff0c;能被 A 訪問到。機器 C 位于另外一個局域網內&#xff0c;能夠連接到互聯網&#xff0c;能夠訪問 B。 目標&#xff1a;以 B 為中介&#xff…

Jmeter-壓測時接口按照順序執行-臨界部分控制器

文章目錄 臨界部分控制器存在問題 臨界部分控制器 在進行壓力測試時&#xff0c;需要按照順序進行壓測&#xff0c;比如按照接口1、接口2、接口3、接口4 進行執行 查詢結果是很混亂的&#xff0c;如果請求次數少&#xff0c;可能會按照順序執行&#xff0c;但是隨著次數增加&a…

Python-OpenCV中的圖像處理-模板匹配

Python-OpenCV中的圖像處理-模板匹配 模板匹配單對象的模板匹配多對象的模板匹配 模板匹配 使用模板匹配可以在一幅圖像中查找目標函數&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用來在一副大圖中搜尋查找模版圖像位置的方法。 OpenCV 為我們提…