Stable diffusion采樣器詳解

在我們使用SD web UI的過程中,有很多采樣器可以選擇,那么什么是采樣器?它們是如何工作的?它們之間有什么區別?你應該使用哪一個?這篇文章將會給你想要的答案。

什么是采樣?

降噪步驟

Stable Diffusion模型通過一種稱為“去噪”的過程來生成圖像,這個過程涉及到在潛在空間中逐步從隨機噪聲中提取出有意義的圖像特征。

  • 模型首先在潛在空間中生成一個完全隨機的噪聲圖像。這個圖像是隨機的,不包含任何有意義的信息。
  • 噪聲預測器(也稱為去噪函數)估計這個隨機圖像中的噪聲。這個預測器是模型的一部分,它學習如何從噪聲中恢復出清晰的圖像。
  • 模型從初始的隨機噪聲圖像中減去預測的噪聲,以便逐步揭示出隱藏在噪聲下的圖像內容。
  • 這個過程會重復多次(通常是十幾次),每一步都會生成一個新的采樣圖像。這些采樣圖像逐漸從隨機噪聲轉變為越來越清晰的圖像。
  • 經過多次迭代后,最終得到的圖像是一個干凈的、去噪后的圖像,它反映了文本提示中描述的內容。

下面是一個實際的采樣過程。采樣器逐漸產生越來越干凈的圖像。

image-20240411194651145

Noise schedule

在Stable Diffusion模型的去噪過程中,噪聲表(noise schedule)扮演著至關重要的角色。

噪聲表是一個預先定義的計劃,它決定了在每一步采樣過程中應用的噪聲水平。

  • 在去噪過程的第一步,圖像充滿了高噪聲,這是因為初始圖像是完全隨機的噪聲圖像。在這個階段,噪聲水平最高,圖像看起來是不連貫和隨機的。
  • 隨著去噪過程的進行,噪聲表會逐步降低每個采樣步驟中的噪聲水平。這種降低是按照預定的計劃進行的,旨在逐漸從噪聲中提取出有意義的圖像特征。
  • 在去噪過程的最后一步,噪聲水平降低到零,此時圖像應該是清晰且與文本提示相匹配的。理想情況下,最終圖像應該幾乎沒有噪聲,且細節豐富,準確地反映了文本描述的內容。

下面是一個Noise schedule的基本工作原理:

穩定擴散采樣器的噪聲時間表

如果我們增加采樣步驟數,那么每個步驟之間的降噪幅將會變小。這有助于減少采樣的截斷誤差。

可以比較一下 15 個步驟和 30 個步驟的噪音時間表。

不同的采樣器

webUI自帶了很多不同的采樣器,并且這個采樣器的個數還在不停的增加,那么這些采樣器都有些什么不同呢?

image-20240411195254916

老式ODE solvers

讓我們看一下最簡單采樣器。這些采樣器算法已經被發明很久很久了。它們是常微分方程 (ODE) 的老式采樣器。

Euler– 最簡單的采樣器。

Heun– 更準確但更慢的 Euler 版本。

LMS(線性多步法) – 與 Euler 的速度相同,但(據說)更準確。

Ancestral采樣器

如果你注意觀察的話,可以看到某些采樣器的名稱上帶有一個字母’a’。 比如:

  • Euler a

  • DPM2 a

  • DPM++ 2S a

  • DPM++ 2S a Karras

他們是Ancestral采樣器。Ancestral采樣器在每個采樣步驟中都會向圖像添加噪聲。它們是隨機采樣器,因為采樣結果具有一定的隨機性。

當然也有很多隨機采樣器的名字上是不帶a的。

使用Ancestral采樣器的缺點是圖像不會收斂。也就是說你有可能不會得到相同的結果。

還是剛剛的例子,我們比較一下使用 Euler a 和 Euler 生成的圖像。(為了便于對比,我們加入了另外一個收斂的采樣器)

image-20240411200323697

可以看到Euler和DMP++ 2M Karras最終生成的圖片其實是大致一樣的,但是他們兩個跟Euler a的結果不太相同。

所以為了可重復性,那就用收斂采樣器。如果要生成細微的變化,那么可以考慮使用隨機采樣器。

Karras noise schedule

帶有“Karras”標簽的采樣器使用 Karras 文章中推薦的 noise schedule。和傳統的采樣器相比,你會發現噪聲步長在接近尾聲時變小了。這樣的變化據說可以提高圖像的質量。

卡拉斯噪音時間表

DDIM 和 PLMS

DDIM(去噪擴散隱式模型)和 PLMS(偽線性多步法)是原始 Stable Diffusion v1 附帶的采樣器。DDIM是首批為擴散模型設計的采樣器之一。PLMS 是 DDIM 的更新、更快的替代方案。

這兩個采樣器已經過時了,我們通常不會使用他們。

DPM 和 DPM++

DPM(擴散概率模型求解器)和 DPM++ 是專為 2022 年發布的擴散模型設計的新采樣器。它們表示具有類似體系結構的求解器系列。DPM 和 DPM2 相似,但 DPM2 是二階的(更準確但更慢)。DPM++ 是對 DPM 的改進。

DPM adaptive是自適應調整步長。所以它可能很慢,并且不能保證在采樣步驟數內完成。

UniPC

UniPC(統一預測器校正器)是 2023 年發布的新采樣器。受常微分方程求解器中預測變量-校正器方法的啟發,它可以在 5-10 個步驟內實現高質量的圖像生成。

怎么選擇采樣器

那么這么多的采樣器,我們應該如何選擇呢?我想我們可以從采樣算法是否收斂,采樣的速度和最終生成圖片的質量這幾個方面來具體考量需要使用什么樣的采樣器。

是否收斂

首先,對Euler、DDIM、PLMS、LMS Karras 和 Heun這些老式的常微分方程求解器或原始擴散求解器來說,PLMS和LMS Karras收斂效果不佳。Heun收斂得更快。

對于所有的Ancestral采樣器來說,都是不收斂的。這些采樣器有:Euler a, DPM2 a, DPM++ 2S a, DPM2 a Karras, DPM++ 2S a Karras。

DPM++ SDEDPM++ SDE Karras 與Ancestral采樣器存在相同的缺點。它們不僅不會收斂,而且圖像也會隨著步數的變化而顯著波動。

DPM++ 2MDPM++ 2M Karras 表現良好。當步數足夠高時,karras變體收斂得更快。

UniPC 收斂速度比 Euler 慢一點,但還不錯。

采樣速度

下圖是使用不同采樣器的采樣速度:

雖然 DPM adaptive在收斂方面表現良好,但它也是最慢的。

其余的渲染時間可以分為兩組,第一組花費的時間大致相同(約 1 倍),另一組花費的時間大約是兩倍(約 2 倍)。時間花費2倍的是因為他們用的是2階求解器。

二階求解器雖然更準確,但需要對去U-Net進行兩次評估,所以它們花費的時間大概是2倍。

質量

當然,前面講的收斂和速度都是次要的,如果最終生成的圖片質量不好,那么收斂和速度也就無從談起了。

我們比較一下常用的一些采樣器的最終圖片效果:

image-20240411204217415image-20240411204237846image-20240411204253314

大家覺得哪幅圖更好?事實上,哪幅圖更好是一個主觀上的標準,每個人的審美觀點不同,最后可能選出來不同的結果。

所以…哪一個是最好的?

我不能說哪個是最好的,但是我可以給點我的建議。

如果您想快速、有創造力并且質量不錯,那么可以這樣選擇:

  • DPM++ 2M Karras,20-30 步
  • UniPC,20-30 步。

如果您想要高質量的圖像并且不關心收斂性,那么可以這樣選擇:

  • DPM++ SDE Karras,10-15 步(注意:這是一個較慢的采樣器)

  • DDIM,10-15 步。

如果您喜歡穩定、可重現的圖像,請避免使用任何Ancestral采樣器。

EulerHeun也是不錯的選擇.

點我查看更多精彩內容:www.flydean.com

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

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

相關文章

UI學習--導航控制器

導航控制器 導航控制器基礎基本概念具體使用 導航控制器切換演示具體使用注意 導航欄與工具欄基本概念具體使用: 總結 導航控制器基礎 基本概念 根視圖控制器(Root View Controller):導航控制器的第一個視圖控制器,通…

壓縮大文件消耗電腦CPU資源達到33%以上

今天用7-Zip壓縮一個大文件,文件大小是9G多,這時能聽到電腦風扇聲音,查看了一下電腦資源使用情況,確實增加了不少。 下面是兩張圖片,圖片上有電腦資源使用數據。

Spring系統學習 -Spring IOC 的XML管理Bean之bean的獲取、依賴注入值的方式

在Spring框架中,XML配置是最傳統和最常見的方式之一,用于管理Bean的創建、依賴注入和生命周期等。這個在Spring中我們使用算是常用的,我們需要根據Spring的基于XML管理Bean了解相關Spring中常用的獲取bean的方式、依賴注入值的幾種方式等等。…

c++ namespace以及使用建議

命名空間就是用來區分你使用的這個變量和函數是屬于那一塊的。用來防止不同的人所寫函數和變量,名字相同產生沖突。 在寫c代碼的時候,經常會使用標準庫中的函數,使用之前我們必須在前面添加一個std::,因為c標準庫的函數是在命名空…

關閉Cloudflare Pages的訪問策略

curl API 獲取相應的 uid curl -X GET "https://api.cloudflare.com/client/v4/accounts/賬戶標識符/access/apps" \-H "X-Auth-Email: 郵箱" \-H "X-Auth-Key: Global API KEY" \-H "Content-Type: application/json"賬戶標識符是登…

Dubbo面試題甄選及參考答案

目錄 Dubbo是什么? Dubbo的主要使用場景有哪些? Dubbo的核心功能有哪些? Dubbo與Spring框架的集成方式是什么? Dubbo的RPC調用原理是什么? Dubbo的架構中包含哪些核心組件? Provider、Consumer、Registry、Monitor在Dubbo中分別承擔什么角色? Container在Dubbo中…

Maven項目打包成jar項目后運行報錯誤: 找不到或無法加載主類 Main.Main 和 jar中沒有主清單屬性解決方案

已經用maven工程的package功能進行了打包 找不到或無法加載主類 Main.Main 規定主類 主要在maven的配置文件當中 這邊一定要綁定自己的啟動類 jar中沒有主清單屬性 刪掉這一行就行哈 正確的插件代碼 <plugin><groupId>org.springframework.boot</groupId&…

毫米波SDK使用1

本文檔是AM273x等毫米波雷達處理器SDK的配置和使用&#xff0c;主要參考TI的官方文檔《mmwave mcuplus sdk user guide》。這里僅摘取其中重要的部分&#xff0c;其余枝節可參考原文。 2 系統概覽 mmWave SDK分為兩個主要組件:mmWave套件和mmWave演示。 2.1. mmWave套件 mmWa…

AXI Quad SPI IP核基于AXI-Lite接口的標準SPI設計指南

在標準SPI配置下&#xff0c;SPI設備除了包含基本的SPI特性外&#xff0c;還具備以下一些標準功能&#xff0c;這些功能如下所示&#xff1a; 支持FPGA內部的多主設備配置&#xff0c;其中使用單獨的_I&#xff08;輸入&#xff09;、_O&#xff08;輸出&#xff09;、_T&…

FM148A,FM146B運行備件

FM148A,FM146B運行備件。電源保險絲倉主控底座的保險絲倉示意圖底座上共有兩個保險絲&#xff08;800mA&#xff09;&#xff0c;FM148A,FM146B運行備件。&#xff08;10&#xff5e;73&#xff09;30/195主控單元2.K-CUT014槽底座地址接口主控站地址撥開關從上到下為二進制數的…

開發網站,如何給上傳圖片的服務器目錄授權

開發網站&#xff0c;上傳圖像時提示”上傳圖片失敗&#xff0c;Impossible to create the root directory /var/www/html/xxxxx/public/uploads/avatar/20240608.“ 在Ubuntu上&#xff0c;你可以通過調整文件夾權限來解決這個問題。首先&#xff0c;確保Web服務器&#xff08…

【筆記】從零開始做一個精靈龍女-裝備階段

這里只記錄相對重要的步驟和一些思路 但是頭發那塊很詳細哦~ &#xff08;標的小數字不用在意&#xff0c;那個是我網課的時長記錄&#xff09; 耳環 1.創建一個圓環&#xff0c;調整參數 做好后再復制一個小的 肩甲 2.0-2.4 1.創建圓柱體/球體也可 然后把底部的兩個點刪…

在 Unreal Engine 5.4 中加載 5.3 版本的插件

Unreal Engine 的版本更新可能導致插件的兼容性問題。如果你需要在 Unreal Engine 5.4 中加載 5.3 版本的插件&#xff0c;可能需要進行一些手動調整和重新編譯。本文將詳細介紹如何進行這些操作。 步驟 1: 準備插件文件 下載 5.3 版本的插件&#xff1a; 從官方源或插件開發者…

Xsens動作捕捉系統:角色動畫制作與運動分析領域的先進工具

隨著傳感器技術的不斷進步&#xff0c;動作捕捉技術現在更加趨向于民用化&#xff0c;擁有價格優勢的慣性動作捕捉系統現在更多的出現在獨立動畫工作室與國內外多所高校的實際項目應用中。 憑借無場地限制、價格優惠、校準使用方便、數據采集精確等多項優勢&#xff0c;Xsens慣…

[AI Google] 雙子座模型家族迎來新突破:更快的模型、更長的上下文、AI代理等更多功能

Google發布了Gemini模型家族的更新&#xff0c;包括新的1.5 Flash模型&#xff0c;該模型旨在提高速度和效率&#xff0c;以及Project Astra&#xff0c;這是對未來AI助手愿景的展示。1.5 Flash是專為大規模高頻任務優化的輕量級模型&#xff0c;具有突破性的長上下文窗口。同時…

Diffusers代碼學習: IP-Adapter Inpainting

IP-Adapter還可以通過Inpainting自動管道和蒙圖方式生成目標圖片。 # 以下代碼為程序運行進行設置&#xff0c;使用Inpainting 的自動管道&#xff0c; import os os.environ["HF_ENDPOINT"] "https://hf-mirror.com"from diffusers import AutoPipelin…

【java】速度搭建一個springboot項目

使用軟件&#xff1a;IDEA&#xff0c;mysql 使用框架&#xff1a;springboot mybatis-plus druid 坑點 使用IDEA搭建一個springboot項目的時候&#xff0c;需要考慮一下IDEA版本支持的JDK版本以及maven版本。否則再構建項目&#xff0c;引入pom的時候就會報錯。 需要檢查…

04 uboot 編譯與調試

新手不需要詳細掌握 uboot,只需要知道它是一個什么東西即可,工作中也只是改一些參數而已。 1、uboot 是什么 Linux 系統要啟動就必須需要一個 bootloader 程序,也就說芯片上電以后先運行一段 bootloader 程序。這段 bootloader 程序會先初始化 DDR 等外設,然后將 Linux 內…

利用PowerQuery控制數據行數

PowerBI報表在開發的過程中&#xff0c;經常會遇到數據量非常龐大的情況&#xff0c;在這種情況下&#xff0c;本機連接數據源如果不進行特殊處理的話&#xff0c;那么刷新數據的時候可能會發生數據刷新時間過長、數據加載內存錯誤、開發過程中構建DAX卡頓等情況。 那么在實際開…

不確定性+電動汽車!含高比例新能源和多類型電動汽車的配電網能量管理程序代碼!

前言 能源供應的可持續性和清潔性是當今世界共同關注的議題&#xff0c;配電網與可再生能源發電相結合&#xff0c;通過多能互補和梯級利用&#xff0c;在不同時空取長補短&#xff0c;提高能源利用率&#xff0c;減少溫室氣體排放&#xff0c;是解決能源短缺和環境問題的有效…