【玩轉SD】概念提取法LECO,背景模糊lora實驗

LECO的直譯并不是概念提取,概念提取更多是我的個人意譯。
LECO全稱Low-rank adaptation for Erasing COncepts from diffusion models.
簡單來說,通過Erasing Concepts from Diffusion Models(下稱消除概念)的原理來把特定的tag從底模里學習到lora里面,來達到消除/增強特定概念的方法。
由于消除概念的原目的是消除大模型里面的特定概念,比如nsfw,所以通過LECO制作出來的lora,正向權重是消除概念,負面是增強概念,而負值可以去到-4~-8等等
消除概念的一些示例

我們可以看到第一列第二張圖,在消除梵高的概念后,通過梵高tag,生成出來的圖就和梵高的風格就完全不一樣了,而消除其他藝術家,比如畢加索的風格,并沒有影響到梵高tag生成的圖,SLD是Safe Latent Diffusion,另一種避開nsfw的方法。更多的例子,更詳細的解釋看Ref.
而基于消除概念和conceptmod的啟發(fā),p1atdev魔改了lora訓練的腳本,通過把消除的概念提取出來,讓lora學習這個特定的概念,制作出消除了這個概念的lora,而Lora本身可以正向和負向操作,使用負值就可以增強這個被提取出來的概念,而且通過lora負值來增強概念。
相對于單純的tag權重,lora由于學習到提取出來的概念的合集,可以讓圖片更多元化?
blur_background:2,4,6,8

blur_background, <lora:blur_background:-2>,

同樣的參數(shù),可以看到blur_background lora權重到達-6的時候會觸發(fā)一個特寫,這就是lora在學習過程中,因為blur_background產(chǎn)生的數(shù)據(jù)里面包含了特寫的相關數(shù)據(jù),所以在權重特別大的時候能觸發(fā)出來(猜的)
負面tag:?blur_background:2,4,6,8

<lora:blur_background:2>,

單說blur_background這個lora,比較推薦-6到正6的權重,正面權重可以不放blur_background來減少背景模糊的效果,負面權重可以放blur_background增強背景模糊效果。
那么是如何使用LECO來訓練這個Lora的呢?
使用了p1atdev的LECO腳本(https://github.com/p1atdev/LECO)
具體使用詳見github,按照官方安裝和配置就行了
一些官方的例子:
With "real life, instagram":

Without "real life, instagram":

其他
laksjdjf的sd-trainer在dev里面也添加了LECO工具,可以改善p1atdev的訓練過程中生成數(shù)據(jù)導致速度比較慢的問題。
除了單一概念的提出,有想過在提取出來的概念里面加一點各種各樣的氛圍,比如模糊背景加一個克蘇魯風格,那是不是就可以產(chǎn)生克蘇魯風格的模糊背景?
組合各種各樣的概念融合進行提取,產(chǎn)生各種有趣的效果lora。
看論文,研究腳本,訓練lora,各種驗證測試,還是花費了好幾天的,
歡迎各位留言轉發(fā),
有能力的還可以給我充電支持一下,十分感謝。
有個AI群,歡迎各位加入一起研究進步。

Ref:
https://github.com/p1atdev/LECO
https://github.com/laksjdjf/sd-trainer/tree/dev
https://erasing.baulab.info/