hypernetwork在SD中是怎麼工作的

flydean發表於2024-07-01

大家在stable diffusion webUI中可能看到過hypernetwork這個詞,那麼hypernetwork到底是做什麼用的呢?

簡單點說,hypernetwork模型是用於修改樣式的小型神經網路。

什麼是 Stable Diffusion 中的hypernetwork?

Hypernetwork 是由 Novel AI 開發的一種微調技術,Novel AI 是 Stable Diffusion 的早期使用者。它是一個小型神經網路,附加到 Stable Diffusion 模型以修改其樣式。

前面我們有提到SD模型中最關鍵的部分就是噪聲預測器UNet,而Unet裡面的關鍵部分就是交叉注意力模組。Hypernetwork就是修改了這部分內容。

同樣的LoRA 模型也類似地修改了 Stable Diffusion 模型的這一部分,但方式不同。

如果有人還不知道Unet是什麼的話,這裡給一張官方的圖片:

img

hypernetwork一般是一個結構簡單的神經網路:一個包含dropout和啟用函式的全連線線性網路,類似於你在神經網路基礎課程中所學到的網路型別。它們透過插入兩個子網路來轉換key和query向量,進而接管了交叉注意力模組。以下是原始模型與接管後的模型架構的對比。

原始的交叉注意力模組直接利用輸入的key和query向量來計算注意力權重。

但在hypernetwork介入後,這些向量會先經過hypernetwork中的兩個子網路進行變換,然後再用於注意力機制的計算。這種變換使得模型能夠以一種更加動態的方式調整其注意力機制,可能會增強模型對輸入資料的敏感度和適應能力。

image-20240423110100146

image-20240423110304459

在訓練過程中,Stable Diffusion 模型本身保持固定,但允許附加的hypernetwork進行調整。由於hypernetwork的規模較小,它能夠快速訓練,且所需的計算資源不多,這使得訓練過程甚至可以在一臺普通的計算機上完成。

快速的訓練能力和較小的模型檔案大小是hypernetwork的主要優勢。

需要注意的是,Stable Diffusion 中的hypernetwork與機器學習領域中通常所指的hypernetwork有所不同。在這裡,hypernetwork的作用是為另一個神經網路生成權重。因此,Stable Diffusion 的hypernetwork並不是在 2016 年發明的,它是一種更新的、專門用於生成網路權重的技術。

與其他model的區別

除了hypernetwork, SD中還有幾個其他的幾個model:checkpoint model、LoRA 和embedding。這裡講一下他們的區別:

checkpoint model

checkpoint model包含生成影像所需的所有資訊。這種模型的大小從 2 GB 到 7 GB不等。而hypernetwork的大小通常低於 200 MB。

hypernetwork不能單獨執行。它需要使用checkpoint model來生成影像。

checkpoint model比hypernetwork更強大。它可以比hypernetwork更好地儲存樣式。訓練checkpoint model時,會對整個模型進行微調。訓練hypernetwork時,僅對hypernetwork進行微調。

LoRA

LoRA 模型與hypernetwork最相似。它們都很小,只修改了交叉注意力模組。區別在於他們如何修改它。

LoRA 模型透過改變其權重來修改交叉注意力。hypernetwork透過插入其他網路來實現。

通常來說 LoRA 模型會產生更好的結果。它們的檔案大小相似,通常小於 200MB。

LoRA 是一種資料儲存技術,它並不直接規定訓練流程,無論是 dreambooth 訓練還是其他形式的額外訓練都是可行的。而超網路則確實規定了訓練流程。

LoRA 利用低秩矩陣來高效地調整和儲存網路權重的變化,這使得模型可以更加高效地進行特定任務的微調,而不需要對整個模型架構進行大規模的改動。

與此相對,超網路透過生成另一個網路的權重來定義訓練過程,為訓練中的網路提供動態的權重,從而允許在訓練過程中進行更靈活的學習和調整。

embedding

嵌入向量是“文字反轉”微調技術的結果。與超網路一樣,文字反轉不會更改模型的架構,而是透過定義新的關鍵詞來捕捉某些特定的風格或屬性。

文字反轉和超網路在穩定擴散模型中各司其職。文字反轉在文字編碼器層面上生成新的嵌入,而超網路則透過在噪聲預測器的交叉注意力模組中插入一個小網路來實現其功能。

在哪下載hypernetwork

當然下載模型的最好的地方是 civitai.com。使用 hypernetwork 篩選模型型別。

image-20240423102828905

如何使用hypernetwork

步驟 1:安裝hypernetwork模型

要在 Webui AUTOMATIC1111安裝hypernetwork模型,請將模型檔案放在以下資料夾中。

'stablediffusion-webui/models/hypernetworks'

步驟 2:使用hypernetwork模型

若要使用hypernetwork,請在提示符中輸入以下描述。

<hypernet:filename:multiplier>

其中filename是hypernetwork的檔名,不包括副檔名 (.pt .bin等)。

multiplier是應用於hypernetwork模型的權重。預設值為 1。將其設定為 0 將禁用模型。

如何不知道檔名怎麼辦呢?在webUI中有一個更簡單的辦法:單擊“hypernetwork”選項卡。你應該會看到已安裝的hypernetwork列表。單擊要使用的那個。

對應的描述將插入到提示中。

image-20240423104047480

點我檢視更多精彩內容:www.flydean.com

相關文章