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