穩定擴散模型的進展
穩定擴散 1.5/2.0/2.1/XL 1.0、DALL-E、Imagen……在過去幾年中,擴散模型在圖像生成方面展現了驚人的品質。然而,雖然這些模型在一般概念上表現出色,但在生成更專門的查詢時卻面臨挑戰,例如生成特定風格的圖像,這些風格在訓練數據集中並不常見。
我們可以重新訓練整個模型,使用大量圖像來解釋解決問題所需的概念。然而,這聽起來並不實際。首先,我們需要大量的圖像來表達這個想法,其次,這樣做既昂貴又耗時。
不過,有一些解決方案,只需幾張圖像和最多一小時的微調,就能讓擴散模型在新概念上產生合理的品質。
接下來,我將介紹一些方法,如 Dreambooth、Lora、超網絡、文本反轉、IP 轉接器和 ControlNets,這些方法廣泛用於自定義和調整擴散模型。這些方法的核心思想是記住我們想學習的新概念,但每種技術的方式不同。
擴散架構
在深入探討幫助調整擴散模型的各種方法之前,讓我們先回顧一下擴散模型是什麼。
擴散模型的原始想法是訓練一個模型,從噪音中重建出一幅連貫的圖像。在訓練階段,我們逐漸添加少量的高斯噪音(前向過程),然後通過優化模型來預測噪音,減去噪音後我們就能更接近目標圖像(反向過程)。
圖像損壞的原始想法已演變為一種更實用且輕量的架構,其中圖像首先被壓縮到潛在空間,所有添加噪音的操作都在低維空間中進行。
為了將文本信息添加到擴散模型中,我們首先通過文本編碼器(通常是 CLIP)來生成潛在嵌入,然後將其注入到模型中,並使用交叉注意力層進行處理。

這個想法是使用一個罕見的詞;通常會使用一個 {SKS} 詞,然後教模型將這個詞 {SKS} 映射到我們想學習的特徵。例如,這可能是一種模型從未見過的風格,比如梵高。我們會展示他的十幾幅畫作,並微調為短語「在 {SKS} 風格中的靴子畫作」。我們也可以個性化生成,例如學習如何生成某個特定人的圖像,例如「在山中的 {SKS}」基於一組自拍照。
為了保持在預訓練階段學到的信息,Dreambooth 鼓勵模型不要偏離原始的預訓練版本,通過將原始模型生成的文本-圖像對添加到微調集中。
何時使用及何時不使用 Dreambooth 產生的品質在所有方法中都是最好的;然而,這種技術可能會影響已學習的概念,因為整個模型都會被更新。訓練計劃也限制了模型能理解的概念數量。訓練耗時,通常需要 1 到 2 小時。如果我們決定同時引入幾個新概念,我們需要存儲兩個模型檢查點,這會浪費很多空間。
文本反轉、論文、代碼

文本反轉的假設是,擴散模型的潛在空間中存儲的知識是廣泛的。因此,我們想要用擴散模型重現的風格或條件已經為模型所知,但我們只沒有訪問它的標記。因此,我們不是微調模型以重現所需的輸出,而是優化一個文本嵌入,這樣就能得到所需的輸出。
何時使用及何時不使用 它佔用的空間非常小,因為只會存儲標記。訓練相對快速,平均訓練時間為 20 到 30 分鐘。然而,它也有缺點——因為我們正在微調一個特定的向量來引導模型生成特定的風格,它不會超出這種風格進行一般化。

低秩適應(LoRA)最初是為大型語言模型提出的,並由 Simo Ryu 首次適應於擴散模型。LoRA 的原始想法是,與其微調整個模型(這可能相當昂貴),不如將一部分新的權重與類似的稀有標記方法混合,這樣就能在原始模型中進行微調。
在擴散模型中,秩分解應用於交叉注意力層,負責合併提示和圖像信息。在這些層中,權重矩陣 WO、WQ、WK 和 WV 都應用了 LoRA。
何時使用及何時不使用 LoRA 訓練所需的時間非常少(5 到 15 分鐘)——我們只更新少量參數,而不是整個模型,與 Dreambooth 相比,它們佔用的空間也少得多。然而,使用 LoRA 微調的小型模型的品質通常不如 Dreambooth。
超網絡、論文、代碼

超網絡在某種意義上是 LoRA 的擴展。它不是學習相對較小的嵌入,直接改變模型的輸出,而是訓練一個單獨的網絡,能夠預測這些新注入嵌入的權重。
讓模型預測特定概念的嵌入,我們可以教超網絡多個概念——重複使用同一模型來完成多個任務。
何時使用及何時不使用 超網絡不專注於單一風格,而是能夠產生多種風格,通常不會產生與其他方法一樣好的品質,並且訓練時間可能會很長。優點是它們可以存儲比其他單一概念微調方法更多的概念。

IP 轉接器不是通過文本提示來控制圖像生成,而是提出了一種通過圖像來控制生成的方法,並且不需要對底層模型進行任何更改。
IP 轉接器的核心思想是一種解耦的交叉注意力機制,允許將源圖像與文本和生成的圖像特徵結合。這是通過添加一個單獨的交叉注意力層來實現的,這樣模型就能學習特定於圖像的特徵。
何時使用及何時不使用 IP 轉接器輕量、可調整且快速。然而,它們的性能高度依賴於訓練數據的質量和多樣性。IP 轉接器通常在提供風格屬性(例如使用馬克·夏卡爾 (Marc Chagall) 的畫作)方面表現較好,但在提供精確細節(例如姿勢)方面可能會遇到困難。

ControlNet 論文提出了一種擴展文本到圖像模型輸入的方法,允許對生成的圖像進行細緻的控制。
在原始公式中,ControlNet 是一個預訓練擴散模型的編碼器,作為輸入,接收提示、噪音和控制數據(例如深度圖、地標等)。為了引導生成,ControlNet 的中間層然後被添加到凍結的擴散模型的激活中。
這種注入是通過零卷積實現的,其中 1×1 卷積的權重和偏差初始化為零,並在訓練過程中逐漸學習有意義的轉換。這與 LoRA 的訓練方式相似——初始化為 0 的它們開始從恆等函數學習。
何時使用及何時不使用 ControlNet 當我們想通過地標、深度圖或邊緣圖來控制輸出結構時,這是首選。由於需要更新整個模型的權重,訓練可能會耗時;然而,這些方法也允許通過嚴格的控制信號進行最佳的細緻控制。
總結
- DreamBooth:對自定義主題或風格的模型進行全面微調,控制水平高;但訓練時間長,適合單一目的。
- 文本反轉:基於嵌入的新概念學習,控制水平低,但訓練快速。
- LoRA:針對新風格/角色的輕量微調,控制水平中等,訓練快速。
- 超網絡:預測給定控制請求的 LoRA 權重的單獨模型。對多種風格的控制水平較低。訓練時間長。
- IP-轉接器:通過參考圖像進行柔和的風格/內容引導,控制水平中等,輕量且高效。
- ControlNet:通過姿勢、深度和邊緣進行精確控制;但訓練時間較長。
最佳實踐:為了獲得最佳結果,結合 IP-轉接器的柔和風格引導和 ControlNet 的姿勢及物體排列控制,將產生最佳效果。
如果你想深入了解擴散模型,請查看這篇文章,我發現它寫得很好,適合任何機器學習和數學水平的人。如果你想要更直觀的數學解釋,可以查看這個視頻或這個視頻。
關於 ControlNets 的信息,我發現這個解釋非常有幫助,這篇文章和這篇文章也可以作為良好的入門介紹。
喜歡作者嗎?保持聯繫!
我有漏掉什麼嗎?隨時留言、評論或直接在 LinkedIn 或 Twitter 上給我發消息!
這篇博客中的觀點是我自己的,並不代表 Snap 的立場。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!