最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

煒哥的AI學(xué)習(xí)筆記——Lora-Block-Weight 插件學(xué)習(xí)

2023-06-16 23:55 作者:宿愿賜  | 我要投稿

在實(shí)際業(yè)務(wù)過程中,經(jīng)常會(huì)用到一些 SD 的插件,這里做一個(gè)收集記錄。

會(huì)持續(xù)更新,首發(fā) xuweinan.com 和 bilibili。

Lora-Block-Weight

簡介

這個(gè)插件可以調(diào)節(jié) Lora 中每一個(gè) Block (可以理解成 Lora 的不同組成部分)的權(quán)重,在某種程度上來說可以精確控制 LoRA 的效果。

不過在使用這個(gè)插件之前,需要先了解一些前置知識(shí):

  1. LoRA 模型的分類,例如 LyCORIS 與傳統(tǒng) LoRA 的區(qū)別。

  2. XYZ 腳本的使用。

官方說明

Lora is a powerful tool, but it is sometimes difficult to use and can affect areas that you do not want it to affect. This script allows you to set the weights block-by-block. Using this script, you may be able to get the image you want.

工作原理

如果深入剖析模型的組成,LoRA 可以細(xì)分為 17 個(gè) Blocks,每一個(gè) Blocks 都有它的一些作用,例如可能某一個(gè) Block 是控制臉部,另一個(gè) Block 是控制姿態(tài)的等等。

不過,目前我只有在一個(gè)三方的插件中找到關(guān)于 LoRA Blocks 信息的描述,暫時(shí)不知道這個(gè)分層是 Lora 就有的還是這個(gè)插件作者人為劃分的。


17層的具體劃分

而所有的 Blocks 的權(quán)重都可以在這個(gè)插件中進(jìn)行調(diào)節(jié),從而達(dá)到進(jìn)一步調(diào)整 Lora 效果的目的。

具體的使用方式,則是在原本的 LoRA 調(diào)用的 Prompt 上,繼續(xù)增加權(quán)重信息,例如原 Prompt 是<lora:"lora name":1>,那么增加權(quán)重信息后就是<lora:"lora name":1:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0>,這代表著除了 IN02 這一個(gè)屬性的權(quán)重設(shè)置為 1 以外,其他的全都都設(shè)置為 0。

當(dāng)然這樣的設(shè)置方式既不方便也不優(yōu)雅,所以插件設(shè)置中也可以將一系列數(shù)字保存成一個(gè)變量,比如 IN02:0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,這樣后面直接輸入<lora:"lora name":1:IN02>即可,與上面的一長串 Prompt 效果是等同的。

插件還支持特殊值,使用 R 而不是具體的數(shù)字可以讓權(quán)重在 0~1 的小數(shù)數(shù)之間隨機(jī)選擇,使用 U 則是 -1.5~1.5。這兩個(gè)值只有在 OUT Blocks 才生效。

然后還有一個(gè)特殊的值,變量 X。這個(gè)是結(jié)合了保存變量與特殊值兩個(gè)功能的一個(gè)用法。如剛才所說,插件支持將一系列數(shù)字保存為一個(gè)變量,比如將 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 設(shè)置為 IN02,那么我如果將一部分值用 X 替代,比如 X,X,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,我在調(diào)用 IN02 變量的時(shí)候就可以快速設(shè)置對(duì)應(yīng)的值,例如我設(shè)置 <lora:my_lore:0.5:IN02:0.7>,就等同于 <lora:my_lore:0.5:0.7,0.7,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0>。有些類似于傳統(tǒng)編程中,全局變量的一個(gè)功能。

參數(shù)設(shè)置說明之后,就要說每個(gè) Block 對(duì)應(yīng)的作用了。

作者給出了上圖的例子,不過遺憾的是,并未明確的說明每一個(gè) Block 所對(duì)應(yīng)的效果如何。實(shí)際上很有可能也無法明確的將圖片的“部分概念”和具體的 Block 對(duì)應(yīng)起來,因?yàn)樵诠俜轿臋n隨后的一個(gè)章節(jié)中,作者重點(diǎn)介紹了一個(gè)用于對(duì)比的工具 XYZ Plot。

如果在 Lora 模型訓(xùn)練的過程中使用過 XYZ 進(jìn)行過效果對(duì)比的話,那對(duì)這個(gè) XYZ 腳本應(yīng)該不陌生。通過對(duì)于參數(shù)的交叉改變,可以驗(yàn)證不同參數(shù)組合下模型的效果。

界面介紹

image-20230616163123587

勾選 Active 后啟用這個(gè)腳本。

右邊的輸入框一會(huì)再講。

XYZ plot

剛才提到過的 XYZ 工具,可以交叉改變參數(shù)來驗(yàn)證模型效果。和 SD 自帶的 XYZ 腳本非常相似。

image-20230616164606620

首先需要在 Active 中選擇 XYZ plot 來啟用這個(gè)工具。同時(shí),在需要生效的 LoRA 腳本中,加上 XYZ 作為特殊標(biāo)記,例如<lora:"lora name":1:XYZ>。

這里還有一個(gè)額外用法,LoRA 模型本身是支持兩個(gè)模型融合的,所以可以將第二個(gè) LoRA 模型的 Prompt 也放上來,并將 XYZ 換成 ZYX,這樣兩個(gè)模型的參數(shù)就會(huì)互補(bǔ),方便在模型融合前看到效果。不過這里也不展開,具體還是看下

然后就是選擇每一個(gè)軸的類型和參數(shù),這里先對(duì)每個(gè)類型進(jìn)行一下說明。

  1. none。不啟用這個(gè)軸。

  2. BlockID。只對(duì)于輸入的 Block ID 值進(jìn)行改變,可以使用空格或連接符輸入一組 IDs。例如 IN01-IN08,指的是只改變這兩個(gè)值。

  3. values。要改變的具體數(shù)值。

  4. seed。生成圖片的種子值。有一種用法是在 Z 軸用不同的種子值,這樣會(huì)一次生成多組不同 Seed 的圖片,更容易對(duì)比觀察效果。

  5. Original Weights。初始值,可以理解成除了要改變的 IDs 以外其他 IDs 的默認(rèn)值。

  6. elements。這個(gè)與 Elemental 中的標(biāo)簽對(duì)應(yīng),不過遺憾的是,截止到目前關(guān)于這部分的介紹都只有日語說明,因此暫時(shí)無法搞懂這一塊的作用。

這里提供一個(gè)例子:

例如我將 X 軸設(shè)置為 values 類型,并設(shè)置具體的值為 [0.5,0.8];然后將 Y 軸設(shè)置為 Block ID ,具體的值 [IN01-IN08,IN05-OUT05];Z 軸 seed,值[-1,-1]。

那么點(diǎn)擊生成后,會(huì)生成兩組不同 seed 的圖,每一組圖有四張圖,分別是 IN01 和 IN08 被設(shè)置為 0.5、 IN01 和 IN08 被設(shè)置為 0.8、 IN05 和 OUT05 被設(shè)置為 0.5、 IN05 和 OUT05 被設(shè)置為 0.8。

當(dāng)然在實(shí)際應(yīng)用中應(yīng)該會(huì)更加復(fù)雜,每個(gè)軸都會(huì)設(shè)置更多的值,來找出最合適的效果。

Effective Block Analyzer

這個(gè)功能有有些像簡化版本的 XYZ Plot ,主要是用于部分參數(shù)改變后快速對(duì)比,默認(rèn)生成結(jié)果是三列,第二列是修改權(quán)重后的圖片,第三列是默認(rèn)權(quán)重的圖片,第一列則是兩者之間的差異(會(huì)使用黑底或白底圖片標(biāo)出不同部分)。

image-20230616211249194

還是先解釋參數(shù):

  1. diff image color。決定第一列對(duì)比圖片是黑底還是白底。

  2. change X-Y??梢园?X 軸 Y 軸交換,簡單來說就是把生成的圖片表格轉(zhuǎn)90°。

  3. difference threshold。在兩張圖對(duì)比的時(shí)候,這個(gè)值決定了誤差程度。值如果調(diào)小,那更細(xì)微的差別也可能被現(xiàn)實(shí)在第一列的對(duì)比圖上。作者建議默認(rèn)值即可。

  4. Range。第一個(gè)值是第二列的權(quán)重,第二個(gè)值是第三列的權(quán)重,一般來說第二個(gè)值會(huì)調(diào)成 1,用來對(duì)比默認(rèn)效果。

  5. Blocks。要參與這次對(duì)比的 Block IDs。

  6. number of seed。種子數(shù)量,一個(gè)種子對(duì)應(yīng)一張圖,所以也就是生成多少組圖片,默認(rèn)為 1。

還是舉個(gè)例子。

我希望看一下 COOLKIDS_MERGE 這個(gè)模型的不同 Block 的作用,所以我將部分 Blocks 的權(quán)重分別設(shè)置為了 0.2 ,看下在弱化某個(gè) Block 的情況下圖片會(huì)如何變化。

可以看到,在弱化 IN01 時(shí),男生的姿態(tài)衣服和女生的姿態(tài)衣服都有所變化;而弱化 IN02 時(shí),女生變化不明顯,男生的衣物有所變化。

所以可以從這個(gè)圖片推測(cè),IN01 主要控制衣服與姿態(tài),IN02則是控制衣物但效果沒有 IN01 強(qiáng)烈。

當(dāng)然這這是一次簡單的舉例,實(shí)際調(diào)參過程中還需要加入更多的 Blocks ,以及嘗試不同 seed 的生成,才能判斷出每個(gè) Block

對(duì)應(yīng)的內(nèi)容,然后更精準(zhǔn)的去使用這個(gè)模型。

這里特別穿插一個(gè)小細(xì)節(jié),這里 IN03 值的改變毫無作用,是因?yàn)?IN03 在傳統(tǒng) Lora 模型中并不存在。當(dāng)然這個(gè)一會(huì)再提。

Weights setting

這個(gè)設(shè)置項(xiàng)就簡單許多,就是設(shè)置剛才提到過的全局變量的。默認(rèn)是已經(jīng)設(shè)置好了 10 條變量,也可以自己直接在文本框中添加。包括其他的一些選項(xiàng),“Reload Presets”、“Save Presets”、“Open TextEditor”都是針對(duì)于輸入內(nèi)容的功能,很容易理解,不過多解釋了。

“Reload Tags”這個(gè)稍微解釋下,還記得一開始提到的 Active 旁邊的輸入框嗎?點(diǎn)了這個(gè)按鈕之后,設(shè)置的變量的變量名都會(huì)快速復(fù)制到 Active 旁邊的輸入框里,我猜測(cè)是作者為了快速復(fù)制到 Prompt 方便吧。

Elemental

這個(gè)我目前的確沒搞懂,先記成待辦事項(xiàng)。

另外:對(duì)于 LyCORIS 的不同

如果是 LyCORIS 模型,會(huì)有一些不一樣的地方,因?yàn)橄啾扔?LoRA 的17層結(jié)構(gòu),LyCORIS 有 26 層,所以在調(diào)整的過程中也會(huì)復(fù)雜一些,起碼 Prompt 需要 26 個(gè)數(shù)字了,當(dāng)然最好是用變量保存常用的組合。

還有,因?yàn)?LyCORIS 的參數(shù)設(shè)置是需要參數(shù)名稱的,所以不能直接在權(quán)重后面跟 26 個(gè)數(shù)字,需要加上參數(shù)名lbw(就是插件名縮寫)。樣式一般是以下兩種:

<lyco:"lora name":1:1:lbw=1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0>

<lyco:"lora name":1:1:lbw=IN02>

權(quán)重組合參考

網(wǎng)上找了一些常見的權(quán)重組合,也許有用,僅做保存。

參考資料

sd-webui-lora-block-weight: https://github.com/hako-mikan/sd-webui-lora-block-weight/blob/main/README.md

LoRA,LyCORIS,LoCon使い方、種類について解説(プリセット生成補(bǔ)助テンプレあり): https://sp8999.com/stable-diffusion/2023/04/30/1227/

待解決的問題

  • Elemental 這一整塊的作用。


煒哥的AI學(xué)習(xí)筆記——Lora-Block-Weight 插件學(xué)習(xí)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
故城县| 宾阳县| 玉龙| 廉江市| 邓州市| 富顺县| 宜宾市| 酒泉市| 苍梧县| 图片| 温州市| 舟山市| 屏东市| 怀仁县| 宁海县| 班玛县| 贵南县| 苏尼特左旗| 芦山县| 剑川县| 桦南县| 建瓯市| 如皋市| 治多县| 太湖县| 锡林浩特市| 邹平县| 赤峰市| 芜湖市| 叙永县| 普定县| 宿迁市| 宜宾县| 江孜县| 竹北市| 汽车| 灵宝市| 苍南县| 马边| 阿鲁科尔沁旗| 孝感市|