AI繪畫后面的論文——ControlNet:Adding Conditional Control to Text-to-Image Diffusion Models
代碼:lllyasviel/ControlNet: Let us control diffusion models! (github.com)
論文地址
最近AI繪畫又雙叒叕進化了,前一次還只能生成二次元,這次三次元都能生成了。這次AI繪畫這么火爆的原因跟下面這篇文章脫不開關系,它將AI繪畫帶到了一個新的高度。
摘要
我們提出了一個神經(jīng)網(wǎng)絡結(jié)構(gòu)controlnet網(wǎng)絡來控制預訓練的大擴散模型以支持額外的輸入條件。controlnet網(wǎng)絡以端到端的方式學習任務特定條件,即使在訓練數(shù)據(jù)集較小( < 50k )的情況下,學習也是魯棒的。此外,訓練一個controlnet網(wǎng)絡和微調(diào)一個擴散模型一樣快,并且模型可以在個人設備上訓練?;蛘?,如果有強大的計算集群,模型可以擴展到大量的(百萬到十億)數(shù)據(jù)。我們報告了像Stable Diffusion這樣的大型擴散模型可以用ControlNets來增強,以啟用邊緣圖、分割圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,進而方便相關應用。
介紹
提出的問題
- 基于文本提示的控制來生成圖像是否滿足我們的需求?
- 在圖像處理中,考慮到許多長期存在的具有明確問題表述的任務,能否應用這些大模型來方便這些特定的任務?
- 我們應該構(gòu)建什么樣的框架來處理廣泛的問題條件和用戶控制?
- 在特定的任務中,大型模型可以保留從數(shù)十億張圖像中獲得的優(yōu)勢和能力?
文章的發(fā)現(xiàn)
- 任務特定領域的可用數(shù)據(jù)規(guī)模并不總是像一般圖文領域那樣大。像姿勢理解這些領域的數(shù)據(jù)集就很小。這就要求在針對特定問題訓練大型模型時,采用穩(wěn)健的神經(jīng)網(wǎng)絡訓練方法以避免過擬合并保持泛化能力。
- 當使用數(shù)據(jù)驅(qū)動的解決方案處理圖像處理任務時,大型計算集群并不總是可用的,因為耗時耗內(nèi)存。所以需要利用預訓練的權(quán)重,以及微調(diào)策略或遷移學習。
- 各種圖像處理問題具有不同形式的問題定義、用戶控制或圖像標注??紤]到一些特定的任務,如depth-to-image、pose-to-person等,這些問題本質(zhì)上需要將原始輸入解釋為對象級或場景級的理解,這使得hand-crafted的過程性方法變得不可行。為了在許多任務中實現(xiàn)學習到的解決方案,端到端的學習是必不可少的。
根據(jù)以上的發(fā)現(xiàn),文章提出了控制大型圖像擴散模型(像Stable Diffusion)去學習任務特定輸入條件的端到端神經(jīng)網(wǎng)絡架構(gòu)ControlNet。
模型介紹
- ControlNet將大型擴散模型的權(quán)重克隆為"trainale copy"和"locked copy":locked copy保留了從數(shù)十億張圖像中學習到的網(wǎng)絡能力,而trainale copy則在任務特定的數(shù)據(jù)集上訓練學習條件控制。
- 可訓練和鎖定的神經(jīng)網(wǎng)絡塊與一種稱為"zero-convolution"的獨特類型的卷積層連接,其中卷積權(quán)重以學習的方式從零到優(yōu)化參數(shù)逐步增長。由于保留了production-ready權(quán)重,因此訓練在不同規(guī)模的數(shù)據(jù)集上具有魯棒性。由于zero-convolution并沒有給深度特征增加新的噪聲,因此與從頭開始訓練新層相比,訓練速度與微調(diào)擴散模型一樣快。
令人十分欣喜的是,在深度到圖像等任務中,在個人計算機(1個Nvidia RTX 3090TI)上訓練ControlNets可以取得與在擁有TB級GPU內(nèi)存和數(shù)千GPU小時的大型計算集群上訓練的商業(yè)模型相當?shù)慕Y(jié)果。
網(wǎng)絡概覽
解釋:
-
整體還是U-Net框架
-
注意整個網(wǎng)絡是一起訓練的,右邊綠色部分的初始參數(shù)是從左邊copy過來的,左邊部分的參數(shù)不能訓練,右邊部分的可以訓練。
-
使用ControlNet創(chuàng)建穩(wěn)定擴散的12個編碼塊和1個中間塊的trainable copy,對應右邊綠色部分的。
-
將條件圖像變成64 × 64的特征空間方法:使用一個4 × 4 kernel,2 × 2步長的4個卷積層,卷積層通過ReLU激活,通道數(shù)分別為16、32、64、128,以高斯權(quán)重初始化,與整個模型聯(lián)合訓練)的網(wǎng)絡,公式描述如下:
cf是轉(zhuǎn)換后的特征圖。
方法
所作的工作
初始網(wǎng)絡塊
如圖a所示:沒有使用ControlNet之前的一個網(wǎng)絡塊,用公式描述就是:
其中x是一個特征圖,F(xiàn)代表一個神經(jīng)網(wǎng)絡塊,它的參數(shù)是Θ,這個網(wǎng)絡塊將x轉(zhuǎn)換成另一個特征圖
使用了ControlNet的網(wǎng)絡塊
如圖b所示:使用了ControlNet之后的一個網(wǎng)絡塊,它所作的修改如下:
(1)它從原來的網(wǎng)絡中復制了一份參數(shù),這份參數(shù)是可以訓練的(論文中叫trainable copy,它的參數(shù)為Θc),而原來網(wǎng)絡的參數(shù)是不能訓練的(論文中叫l(wèi)ocked copy),也就是圖中加鎖的部分。
這樣做的目的是為了防止數(shù)據(jù)量小的時候過擬合并且保留之前模型的生成質(zhì)量。
(2)增加了zero-convolution,它的特點是權(quán)重和偏差都初始化為0。
經(jīng)過(1)(2)的修改后,新的網(wǎng)絡塊用公式描述就是:
其中Z表示zero convolution操作,Θz1和Θz2是兩個zero convolution的參數(shù)。
zero-convolution的訓練介紹
在第一個訓練階段,有:
因此我們可以推出:
因為優(yōu)化之前卷積部分的參數(shù)都是0,根據(jù)卷積操作的運算過程可知卷積的結(jié)果都是0。
由此可以看到:在第一個訓練步驟中,神經(jīng)網(wǎng)絡塊的trainable copy和locked copy的所有輸入和輸出都與ControlNet網(wǎng)絡不存在時一致。也就是說在開始優(yōu)化參數(shù)之前,ControlNet不會對深度神經(jīng)特征造成任何影響。任何進一步的優(yōu)化都將變得像微調(diào)(相比于從頭訓練這些層)一樣快。
梯度下降過程:
一個卷積層的公式描述如下:
I是輸入的特征圖,B是偏差,W是權(quán)重。
它的梯度為:(注意它的權(quán)重W和偏差B初始值都是0)
從這個公式可以看出,zero-convolution可以導致特征項I上的梯度變?yōu)榱?,但是?quán)重和偏置的梯度不受影響。
在本文中,I為輸入數(shù)據(jù)或從數(shù)據(jù)集中采樣的條件向量,肯定不為0,則在第一次梯度下降迭代中將權(quán)重W優(yōu)化為非零矩陣。梯度下降過程如下:
然后特征上的梯度變?yōu)椋?br>
此時特征上的梯度不為0,由此神經(jīng)網(wǎng)絡開始學習。
訓練
損失函數(shù)跟擴散模型差不多,增加了任務指向型的條件參數(shù)cf。
同時文章將50 %的文本提示ct隨機替換為空字符串。這有利于增強ControlNet從輸入條件圖中識別語義內(nèi)容的能力。
實驗效果
挑幾個出來。
(1)使用Hough lines
(2)使用Canny算子
(3)使用姿勢文章來源:http://www.zghlxwxcb.cn/news/detail-507934.html
不足
當語義解釋是錯誤的,模型生成正確的內(nèi)容可能會有困難。
本來輪廓應該是杯子,但是即使給出文字提示是杯子也無法逆轉(zhuǎn)過來。文章來源地址http://www.zghlxwxcb.cn/news/detail-507934.html
到了這里,關于AI繪畫后面的論文——ControlNet:Adding Conditional Control to Text-to-Image Diffusion Models的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!