Stable Diffusion 系列教程 - 2 WebUI 參數詳解

Stable Diffusion 的整個算法組合為: UNet + VAE + 文本編碼器

UNet:就是我們大模型里的核心。

文本編碼器:將我們的prompt進行encoder為算法能理解的內容(可以理解為SD外包出去的項目CLIP)。

VAE:對UNet生成的圖像作后處理。

上圖中紅框代表的是大模型,可以通過下拉的方式來替換自己所需要的大模型。該參數控制著出圖內容的基調,如真實場景、二次元或建筑模型。我們可以將其理解為擁有無數圖像的數據庫,根據prompt拿出一堆相關圖像拼到一起生成出最終的圖像。也就是說想要生成什么樣的內容,就得需要一個什么樣的數據庫。通常,我們所使用的大模型都是在最原始的大模型SD1.5或者XL1.0上進行微調的,如dreambooth,其大小一般在2G,4G或7G不等。其存放目錄如下所示:

大模型本身是自帶VAE的,正常情況下藍框只需要選擇無或自動匹配即可。如果藍框做了選擇,即使用了外掛VAE,那么大模型本身的VAE就不會起作用

CLIP(Contrastive language-image pre-training):其作用是將文字和圖像轉化為AI能夠識別的數據后再將它們一一對應。在藍框旁邊,有一個“CLIP跳過層”選項。主要作用是將CLIP模型提前停止。數值設幾就代表在倒數第幾層停止。通俗一點來說,CLIP模型的推理是一個添加N次提示詞的內容,每添加一次,生成的內容就越接近prompt。因此這個數值可以控制prompt和生成圖片的相關程度,但不會控制圖像風格的變化。實際作用大不大,只能說仁者見仁,智者見智。因為有時候前向跑的過多了反而含義就錯了。

以下是對文生圖的部分使用說明:

提示詞和反向提示詞:控制著生成圖片中想要的元素和不想要的元素。

采樣迭代步數和采樣方法:在說這個前,我們首先得明白SD的工作原理。首先,模型會生成一張完全隨機的噪聲圖像。隨后噪聲預測器將生成需要剔除部分的噪聲并和原始圖像運算得到下一步的輸出。隨后不斷重復這個過程,得到最終的結果。整個去噪的過程就是采樣的過程,每次采樣就算迭代一次,去噪的手段就是采樣方法。其中采樣器有以下幾個:

  • 經典ODE采樣器:Eular采樣器:歐拉采樣方法,好用卻不太準確。Heun采樣器:歐拉的一個更準確但更慢的版本。LMS采樣器:線性多步法,與歐拉采樣器速度相仿,但是更準確。
  • DPM:擴散概率模型求解器。DPM會自適應調整步長,不能保證在約定的采樣步驟內完成任務,速度較慢。DPM++相對來說結果更準確,但速度更更慢。
  • 祖先采樣器:名稱中帶有a標識的采樣器都是祖先采樣器。這一類采樣器在每個采樣步中都會向圖像添加噪聲,導致結果具有隨機性。部分沒有帶a的采樣器也屬于祖先采樣器,如Eular a,DPM2 a,DPM++2S a,DPM++2S a?KARRAS,DPM++ SDE,DPM++SDE KARRAS。
  • Karras Noise Schedule:帶有Karras字樣的采樣器,最大的特色是使用了Karras論文中的噪聲計劃表,主要表現是去噪的程度在開頭會比較高,在接近尾聲時會變小,有助于提升圖像質量。
  • UniPC:統一預測矯正器。一種可以在5~10步實現高質量圖像的方法。
  • DPM Adaptive:采樣器不會跟著步數去收斂,會一直收斂至最好的效果。

有一個知乎大佬對采樣方法做了測試得到以下結論:

  • Eular和Heun:日常訓練中,只想看一看出圖的內容是什么樣的,相對準確且快。
  • DPM++2M KARRAS和UniPc:能夠輸出一張各方面均衡且高質量的圖片。
  • DPM++SDE KARRAS:能夠輸出一張有一定隨機變化的且高質量的圖片。

關于采樣步數的設定:不要太大也不要太小。太小則來不及把細節都畫完,太大則容易在某一個地方不斷的精細化導致光斑或裂縫。推薦50以下

面部修復:解決SD1.5在畫人臉上的一些問題。對真人的人臉進行一定程度的調整,有效但不絕對。尤其是畫特定臉時就不要開啟這個面部修復了。

平鋪分塊:生成的圖像復制多份時能夠彼此無縫銜接。

高清修復:解決SD1.5無法生成像素較高的圖像。除去XL1.0模型是以1024分辨率為基礎的。常用的SD1.5的底模是512分辨率的,導致出圖時只有接近512的像素才會得到一個比較好的效果(增大尺寸可能會導致多頭多手)。高清修復采樣次數如果為0,則以采樣迭代步數作為實際步數。重繪幅度如果為0就代表修復后的圖片不會有任何變化。對于放大算法的選擇:

  • 4x-UltraSharp:基于ESRGAN做了優化模型,更適合常見的圖片格式真人模型最佳選擇。各方面能力出眾,目前最實用,最優的選擇,更貼合真實效果。
  • SwinIR 4x:使用SwinTransformer模型,擁有局部自適應的內容,更好的提取可特征,提高圖像細節,保證放大圖片真實感穩定訓練,很全面卻沒有一方面超過別的算法。
  • Nearest:非常傳統的歸類找近似值的方法,計算新的東西和舊的東西的相似度,以最相似的內容去出圖,大數據時效果好,實際一般。
  • Lanczos:把正交矩陣將原始矩陣變換為一個三對角矩陣,一種用于對稱矩陣的特征值分解的算法,比起其他幾種算法沒有什么優勢。
  • R-ESRGAN 4x+基于RealESRGAN的優化模型,針對照片效果不錯。提高圖像分辨率的同時,也可以增強圖像的細節和紋理,并且生成的圖像質量比傳統方法更高。
  • R-ESRGAN 4x+ Anime6B:基于RealESRGAN的優化模型,在生成二次元圖片時更加準確且高效。
  • Latent:一種基于原始圖像編碼圖像增強算法,對其進行隨機采樣和重構,從而增強圖像的質量、對比度和清晰度。顯存消耗比較小,效果中上,且貼合提示詞。
  • ESRGAN:對SRGAN關鍵部分網絡結構、對抗損失、感知損失的增強。從這里開始就不是單純的圖像算法,進入人工智能的領域了。實測確實增加了很多看上去很真實的紋理,但是有時又會把一張圖片弄得全是鋸齒或怪異的紋理。可能對待處理的圖片類型有要求。
  • ESRGAN 4x:它是ESRGAN算法的一種改進版本,可以將低分辨率的圖像通過神經網絡模型增強到4倍的分辨率,在增強圖像的細節信息和保留圖像質量方面有了明顯的提升。
  • LDSR:潛在擴散超分辨率,效果寫實,但是慢。

以下是不同高清修復算法的原理:

Text2Image頁面中的Highres Upscaling:首先通過SD前半部分(給定提示詞,CLIP會將提示詞翻譯為可理解的向量,隨后喂入神經網絡生成Latent結果)。不同的是不會立即進行解碼,如果選擇了Latent Upscaler的話,會基于Latent做Upscaling,得到另外一個Latent。再去進行解碼。得到比原始輸入(512×512)還大的圖(1024×1024)。優勢:基于Latent速度比較快,且是在SD的模型中做的Upscaling,所以會更加好的去理解prompt,對圖片上下文進行處理。

Image2Image Upscaling:需要的輸入有兩部分:512×512的圖和一段說明(指定輸入為1024×1024)。首先需要用編碼器將圖變為Latent,隨后再生成一個隨即噪音,何其進行Concat(可以理解為給圖像打了馬賽克)。文字說明則依舊通過CLIP變為一個可理解的向量。把這兩個東西同時輸入到SD的后半部分就完事了。(相比于上一個算法上下文的理解會稍微弱一點,而且僅用了SD模型本身的特性來生成這張圖像。)

Extra Upscaling:直接輸入一張圖,用通用的Upscaling算法生成一張大圖。沒有上下文,但更加靈活多用。

?SD UPscale Upscaling:Image2Image Upscaling的擴展版本。即通過通用的Upscaling的算法先把圖像擴大一倍。隨后將圖像分成小塊。在進行Image2Image Upscaling???????的過程,只不過是對每一個小塊做處理。最后將生成的四個小塊做拼接。

提示詞相關性(CFG Scale):越低越自由越放飛,越高則越嚴格按照prompt。太高也容易產生撕裂和光斑。推薦7~9。

Denoising strength:給一張原圖,想在原圖的基礎上畫新的圖。越低則越忠于原圖,越高則越放飛自我

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

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

相關文章

【牛牛送書 | 第三期】《一本書講透Java線程:原理與實踐》帶你深入JAVA多線程

目錄 摘要: 多線程對于Java的意義 為什么Java工程師必須掌握多線程 Java多線程使用方式 如何學好Java多線程 參與方式🥇 摘要: 互聯網的每一個角落,無論是大型電商平臺的秒殺活動,社交平臺的實時消息推送&#x…

1.2.啟動線程的五類種方法

一.new MyThread().start() 繼承Thread類創建線程類 定義一個繼承Thread類的子類,并重寫該類的run()方法 創建Thread子類的實例,即創建了線程對象 調用該線程對象的start()方法啟動線程 二.new Thread(r).start() 實現Runnable接口創建線程類 定義R…

Qt槽函數不響應不執行的一種原因:ui提升導致重名

背景: 一個包含了組件提升的ui,有個按鈕的槽函數就是不響應,于是找原因。 分析: 槽函數的對應一是通過connect函數綁定信號,二是on_XXX_signal的命名方式。界面上部件的槽函數通常是第二種。 我反復確認細節&#…

寫一個程序拷貝文件

使用所學文件操作,在當前目錄下放一個文件data.txt,寫一個程序,將data.txt文件拷貝一份,生成data_copy.txt文件。 基本思路: 打開文件data.txt,讀取數據打開文件data_copy.txt,寫數據從data.t…

如何使用拼多多根據ID取商品詳情 API 獲取熱銷商品信息?

使用拼多多根據ID取商品詳情 API 獲取熱銷商品信息是一種高效且便捷的方式,可以快速獲取到拼多多平臺上熱銷商品的信息。以下是獲取熱銷商品信息的步驟和示例代碼: 一、步驟 注冊成為拼多多開發者,并獲取API密鑰。確定要獲取熱銷商品信息的…

張正友相機標定法原理與實現

張正友相機標定法是張正友教授1998年提出的單平面棋盤格的相機標定方法。傳統標定法的標定板是需要三維的,需要非常精確,這很難制作,而張正友教授提出的方法介于傳統標定法和自標定法之間,但克服了傳統標定法需要的高精度標定物的缺點,而僅需使用一個打印出來的棋盤格就可…

.Faust勒索病毒解密方法|勒索病毒解決|勒索病毒恢復|數據庫修復

引言: 數字時代的黑暗勢力中,faust勒索病毒如幽靈般潛伏,將用戶的數字珍寶變為數字枷鎖。本文將深入介紹.faust勒索病毒的威脅特征,提供有效的數據恢復方法,并分享一系列預防措施,以協助您在數字戰場上筑起…

kafka學習筆記--如何保證生產者數據可靠、不重復、有序

本文內容來自尚硅谷B站公開教學視頻,僅做個人總結、學習、復習使用,任何對此文章的引用,應當說明源出處為尚硅谷,不得用于商業用途。 如有侵權、聯系速刪 視頻教程鏈接:【尚硅谷】Kafka3.x教程(從入門到調優…

名字的漂亮度

給出一個字符串,該字符串僅由小寫字母組成,定義這個字符串的“漂亮度”是其所有字母“漂亮度”的總和。 每個字母都有一個“漂亮度”,范圍在1到26之間。沒有任何兩個不同字母擁有相同的“漂亮度”。字母忽略大小寫。給出多個字符串&#xff0…

從零開發短視頻電商 Low Level Client(推薦)連接OpenSearch進行CRUD

文章目錄 依賴初始化客戶端發起請求請求參數請求頭設置超時時間設置線程數設置用戶名密碼結果解析節點選擇器配置嗅探器整體示例問題參考 OpenSearch開發環境安裝Docker和Docker-Compose兩種方式 依賴 <dependency><groupId>org.elasticsearch.client</groupId…

【腳本】圖片-音視頻-壓縮文件處理

音視頻處理 一&#xff0c;圖片操作1&#xff0c;轉換圖片格式2&#xff0c;多張圖片合成視頻 二&#xff0c;音頻操作1&#xff0c;轉換音頻格式2&#xff0c;分割音頻為多段3&#xff0c;合成多段音頻 三&#xff0c;視頻操作1&#xff0c;轉換視頻格式2&#xff0c;提取視頻…

【Go自學版】01-基礎

// 變量 var a, b, c 8, 2.3, "hello" var d float64; e : 6var A []int; var B [10]int; C : [10]int{1, 2, 3, 4} for i : 0; i < len(B); i {} for _, value : range C {} D make([]int, 3) // len 4, cap 10, 擴容方式 cap*2 E : make([]int, 4, 10) E …

掌握PyTorch數據預處理(一):讓模型表現更上一層樓!!!

引言 在PyTorch中&#xff0c;數據預處理是模型訓練過程中不可或缺的一環。通過精心優化數據&#xff0c;我們能夠確保模型在訓練時能夠更高效地學習&#xff0c;從而在實際應用中達到更好的性能。今天&#xff0c;我們將深入探討一些常用的PyTorch數據預處理技巧&#xff0c;…

C++如何通過調用ffmpeg接口對H264文件進行編碼和解碼

C可以通過調用FFmpeg的API來對H264文件進行編碼和解碼。下面是一個簡單的例子。 首先需要在代碼中包含FFmpeg的頭文件&#xff1a; extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscale/swscale…

Linux系統編程:進程間通信總結

管道 在Linux中&#xff0c;管道是一種進程間通信方式&#xff0c;它允許一個進程&#xff08;寫入端&#xff09;將其輸出直接連接到另一個進程&#xff08;讀取端&#xff09;的輸入。從本質上說&#xff0c;管道也是一種文件&#xff0c;但它又和一般的文件有所不同。 具體…

Docker部署開源分布式任務調度平臺DolphinScheduler并實現遠程訪問辦公

文章目錄 前言1. 安裝部署DolphinScheduler1.1 啟動服務 2. 登錄DolphinScheduler界面3. 安裝內網穿透工具4. 配置Dolphin Scheduler公網地址5. 固定DolphinScheduler公網地址 前言 本篇教程和大家分享一下DolphinScheduler的安裝部署及如何實現公網遠程訪問&#xff0c;結合內…

前端知識筆記(二十七)———CSS核心功能手冊:從熟悉到精通

參考HTML代碼 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

12.9_黑馬數據結構與算法筆記Java

目錄 057 多路遞歸 e03 楊輝三角2 thinking&#xff1a;二維數組的動態初始化&#xff1f; 057 多路遞歸 e03 楊輝三角3 058 鏈表 e01 反轉單向鏈表1 058 鏈表 e01 反轉單向鏈表2 058 鏈表 e01 反轉單向鏈表3 遞歸 058 鏈表 e01 反轉單向鏈表4 為什么是returnn1呢&…

【Cisco Packet Tracer】路由器 NAT實驗

NAT的實現方式有三種&#xff0c;即靜態轉換Static Nat、動態轉換Dynamic Nat和端口多路復用OverLoad。 靜態轉換是指內部本地地址一對一轉換成內部全局地址&#xff0c;相當內部本地的每一臺PC都綁定了一個全局地址。一般用于在內網中對外提供服務的服務器。 [3] 動態轉換是指…

C++ 迭代器

迭代器 迭代器類似于指針類型&#xff0c;也提供了對對象的間接訪問。 就迭代器而言&#xff0c;其對象是容器中的元素或 string 對象中的字符。 獲取迭代器 容器的迭代器類型 使用作用域運算符來說明我們希望使用的類型成員&#xff1b;例&#xff1a;string::iterator it…