ControlNet作者新作:AI繪畫能分圖層了!項目未開源就斬獲660 Star
“絕不是簡單的摳圖?!?/strong>
ControlNet作者最新推出的一項研究受到了一波高度關(guān)注——
給一句prompt,用Stable Diffusion可以直接生成單個或多個透明圖層(PNG)!
例如來一句:
頭發(fā)凌亂的女性,在臥室里。
Woman with messy hair, in the bedroom.
可以看到,AI不僅生成了符合prompt的完整圖像,就連背景和人物也能分開。
而且把人物PNG圖像放大細(xì)看,發(fā)絲那叫一個根根分明。
再看一個例子:
燃燒的柴火,在一張桌子上,在鄉(xiāng)下。
Burning firewood, on a table, in the countryside.
同樣,放大“燃燒的火柴”的PNG,就連火焰周邊的黑煙都能分離出來:
這就是ControlNet作者提出的新方法——LayerDiffusion,允許大規(guī)模預(yù)訓(xùn)練的潛在擴(kuò)散模型(Latent Diffusion Model)生成透明圖像。
值得再強(qiáng)調(diào)一遍的是,LayerDiffusion絕不是摳圖那么簡單,重點在于生成。
正如網(wǎng)友所說:
這是現(xiàn)在動畫、視頻制作最核心的工序之一。這一步能夠過,可以說SD一致性就不再是問題了。
還有網(wǎng)友以為類似這樣的工作并不難,只是“順便加個alpha通道”的事,但令他意外的是:
結(jié)果這么久才有出來的。
那么LayerDiffusion到底是如何實現(xiàn)的呢?
PNG,現(xiàn)在開始走生成路線了
LayerDiffusion的核心,是一種叫做潛在透明度(latent transparency)的方法。
簡單來說,它可以允許在不破壞預(yù)訓(xùn)練潛在擴(kuò)散模型(如Stable Diffusion)的潛在分布的前提下,為模型添加透明度。
在具體實現(xiàn)上,可以理解為在潛在圖像上添加一個精心設(shè)計過的小擾動(offset),這種擾動被編碼為一個額外的通道,與RGB通道一起構(gòu)成完整的潛在圖像。
為了實現(xiàn)透明度的編碼和解碼,作者訓(xùn)練了兩個獨(dú)立的神經(jīng)網(wǎng)絡(luò)模型:一個是潛在透明度編碼器(latent transparency encoder),另一個是潛在透明度解碼器(latent transparency decoder)。
編碼器接收原始圖像的RGB通道和alpha通道作為輸入,將透明度信息轉(zhuǎn)換為潛在空間中的一個偏移量。
而解碼器則接收調(diào)整后的潛在圖像和重建的RGB圖像,從潛在空間中提取出透明度信息,以重建原始的透明圖像。
為了確保添加的潛在透明度不會破壞預(yù)訓(xùn)練模型的潛在分布,作者提出了一種“無害性”(harmlessness)度量。
這個度量通過比較原始預(yù)訓(xùn)練模型的解碼器對調(diào)整后潛在圖像的解碼結(jié)果與原始圖像的差異,來評估潛在透明度的影響。
在訓(xùn)練過程中,作者還使用了一種聯(lián)合損失函數(shù)(joint loss function),它結(jié)合了重建損失(reconstruction loss)、身份損失(identity loss)和判別器損失(discriminator loss)。
它們的作用分別是:
- 重建損失:用于確保解碼后的圖像與原始圖像盡可能相似;
- 身份損失:用于確保調(diào)整后的潛在圖像能夠被預(yù)訓(xùn)練的解碼器正確解碼;
- 判別器損失:則是用于提高生成圖像的真實感。
通過這種方法,任何潛在擴(kuò)散模型都可以被轉(zhuǎn)換為透明圖像生成器,只需對其進(jìn)行微調(diào)以適應(yīng)調(diào)整后的潛在空間。
潛在透明度的概念還可以擴(kuò)展到生成多個透明圖層,以及與其他條件控制系統(tǒng)結(jié)合,實現(xiàn)更復(fù)雜的圖像生成任務(wù),如前景/背景條件生成、聯(lián)合圖層生成、圖層內(nèi)容的結(jié)構(gòu)控制等。
值得一提的是,作者還展示了如何把ControlNet引入進(jìn)來,豐富LayerDiffusion的功能:
與傳統(tǒng)摳圖的區(qū)別
至于LayerDiffusion與傳統(tǒng)摳圖上的區(qū)別,我們可以簡單歸整為以下幾點。
原生生成 vs. 后處理
LayerDiffusion是一種原生的透明圖像生成方法,它直接在生成過程中考慮并編碼透明度信息。這意味著模型在生成圖像的同時就創(chuàng)建了透明度通道(alpha channel),從而產(chǎn)生了具有透明度的圖像。
傳統(tǒng)的摳圖方法通常涉及先生成或獲取一個圖像,然后通過圖像編輯技術(shù)(如色鍵、邊緣檢測、用戶指定的遮罩等)來分離前景和背景。這種方法通常需要額外的步驟來處理透明度,并且可能在復(fù)雜背景或邊緣處產(chǎn)生不自然的過渡。
潛在空間操作 vs. 像素空間操作
LayerDiffusion在潛在空間(latent space)中進(jìn)行操作,這是一個中間表示,它允許模型學(xué)習(xí)并生成更復(fù)雜的圖像特征。通過在潛在空間中編碼透明度,模型可以在生成過程中自然地處理透明度,而不需要在像素級別上進(jìn)行復(fù)雜的計算。
傳統(tǒng)的摳圖技術(shù)通常在像素空間中進(jìn)行,這可能涉及到對原始圖像的直接編輯,如顏色替換、邊緣平滑等。這些方法可能在處理半透明效果(如火焰、煙霧)或復(fù)雜邊緣時遇到困難。
數(shù)據(jù)集和訓(xùn)練
LayerDiffusion使用了一個大規(guī)模的數(shù)據(jù)集進(jìn)行訓(xùn)練,這個數(shù)據(jù)集包含了透明圖像對,使得模型能夠?qū)W習(xí)到生成高質(zhì)量透明圖像所需的復(fù)雜分布。
傳統(tǒng)的摳圖方法可能依賴于較小的數(shù)據(jù)集或者特定的訓(xùn)練集,這可能限制了它們處理多樣化場景的能力。
靈活性和控制
LayerDiffusion提供了更高的靈活性和控制能力,因為它允許用戶通過文本提示(text prompts)來指導(dǎo)圖像的生成,并且可以生成多個圖層,這些圖層可以被混合和組合以創(chuàng)建復(fù)雜的場景。
傳統(tǒng)的摳圖方法可能在控制方面更為有限,尤其是在處理復(fù)雜的圖像內(nèi)容和透明度時。
質(zhì)量比較
用戶研究顯示,LayerDiffusion生成的透明圖像在大多數(shù)情況下(97%)被用戶偏好,這表明其生成的透明內(nèi)容在視覺上與商業(yè)透明資產(chǎn)相當(dāng),甚至可能更優(yōu)。
傳統(tǒng)的摳圖方法可能在某些情況下無法達(dá)到同樣的質(zhì)量,尤其是在處理具有挑戰(zhàn)性的透明度和邊緣時。
總而言之,LayerDiffusion提供的是一種更先進(jìn)且靈活的方法來生成和處理透明圖像。
它在生成過程中直接編碼透明度,并且能夠產(chǎn)生高質(zhì)量的結(jié)果,這在傳統(tǒng)的摳圖方法中是很難實現(xiàn)的。
關(guān)于作者
正如我們剛才提到的,這項研究的作者之一,正是大名鼎鼎的ControlNet的發(fā)明人——張呂敏。
他本科就畢業(yè)于蘇州大學(xué),大一的時候就發(fā)表了與AI繪畫相關(guān)的論文,本科期間更是發(fā)了10篇頂會一作。
目前張呂敏在斯坦福大學(xué)攻讀博士,但他為人可以說是非常低調(diào),連Google Scholar都沒有注冊。
就目前來看,LayerDiffusion在GitHub中并沒有開源,但即便如此也擋不住大家的關(guān)注,已經(jīng)斬獲660星。
畢竟張呂敏也被網(wǎng)友調(diào)侃為“時間管理大師”,對LayerDiffusion感興趣的小伙伴可以提前mark一波了。