https://github.com/tencent-ailab/IP-Adapter.git
如何更精準(zhǔn)地控制SD生成圖片的結(jié)果,不需要復(fù)雜的描述工程,不需要重新微調(diào)base model,核心思想就是一圖勝千言,在text embedding cross attention之外,再加一個(gè)image embedding cross attention,稱(chēng)之為decoupled cross-attention撞鹉,可適用于同一個(gè)BaseModel下的所有微調(diào)模型∮敝叮可用于T2I/I2I/Inpainting鸟雏,也可結(jié)合controlnet一起使用,除了能控制風(fēng)格外览祖,還有IP-Adapter-FaceID(PLUS/SDXL)系列可用于控制人物身份(換臉)孝鹊,可在WebUI或者ComfyUI中使用。效果如下所示
ControlNet主要利用圖像結(jié)構(gòu)上的先驗(yàn)信息如邊緣/分割/深度/線條等來(lái)控制圖片的生成(雖然也有Reference Only或者Shuffle等控制圖片語(yǔ)義或者風(fēng)格的方法穴墅,但控制粒度和效果仍有提升空間)惶室,T2I-Adapter比ControlNet更加輕量,但是效果一般不如后者玄货,其中的Style Adapter將CLIP Image Encoder Feature與CLIP Text Encoder? Feature進(jìn)行結(jié)合皇钞,然后送入Cross Attention。Uni-ControlNet也有類(lèi)似操作松捉,將Condition Embedding和Text Embedding進(jìn)行Concat夹界,SeeCoder則是直接將CLIP Text Encoder替換為一個(gè)新的Image Encoder,以此來(lái)進(jìn)行圖像修改隘世。上述直接將圖像特征和文本特征融合之后直接插進(jìn)一個(gè)固定的Cross Attention層的操作似乎沒(méi)能捕捉圖片的精細(xì)語(yǔ)義可柿,因此效果有限。
IP-Adapter的結(jié)構(gòu)如下:
先看Prompt Embedding如何被插入U(xiǎn)net中丙者,Unet中的latent噪聲特征計(jì)為Query复斥,CLIP Text Embedding分別經(jīng)過(guò)兩個(gè)全連接層得到Key,Value械媒,則Cross Attention表達(dá)為:
既然將圖片特征與文本特征concat效果不好目锭,那就干脆再設(shè)計(jì)一個(gè)Cross Attention專(zhuān)門(mén)用于插入圖像特征,意即CLIP Image Embedding分別經(jīng)過(guò)兩個(gè)全連接層得到Key纷捞,Value痢虹,同樣以latent噪聲特征作為Query,形成一個(gè)并行的Cross Attention:
兩個(gè)注意力共用一個(gè)Query主儡,為加速收斂奖唯,新增的兩個(gè)全連接層參數(shù)由原先的Cross Attention中的全連接層初始化而來(lái)。將兩個(gè)注意力的計(jì)算結(jié)果相加:
用一個(gè)小網(wǎng)絡(luò)(FC+LN)來(lái)將圖片特征映射到與文本特征同樣維度糜值,固定住Unet丰捷,只訓(xùn)練新增的Cross Attention層和這個(gè)小網(wǎng)絡(luò)坯墨。
以圖像文本對(duì)進(jìn)行訓(xùn)練,損失函數(shù)為噪聲間的MSE瓢阴,在訓(xùn)練過(guò)程中隨機(jī)關(guān)閉Image Prompt(將CLIP Image Feature置為0)畅蹂,以此來(lái)開(kāi)啟classifier-free guidance訓(xùn)練。具體地荣恐,給定一個(gè)權(quán)重參數(shù),該參數(shù)為零時(shí)則為原始T2I-SD模型累贤。
LAION-2B+COYO-700M構(gòu)建一個(gè)一千萬(wàn)的圖文對(duì)叠穆。
使用OpenCLIP ViT-H/14作為Image Encoder,為16個(gè)text cross attention layer都新增一個(gè)image cross attention layer臼膏,8卡A100訓(xùn)練100萬(wàn)步硼被,使用DeepSpeed Stage 2配置,單卡batch size為8渗磅,可學(xué)習(xí)參數(shù)為22M嚷硫,學(xué)習(xí)率1e-4,weight decay 0.01始鱼,將圖片短邊resize到512仔掸,center crop出512x512的區(qū)域,以0.05的概率分別丟棄Image或者Text医清,再以0.05的概率同時(shí)丟棄Image和Text起暮。測(cè)試時(shí)如只使用Image Prompt,將上述權(quán)重參數(shù)設(shè)置為1会烙。
與其他方法的比較: