IPAdapter+再進(jìn)化,可同時(shí)學(xué)習(xí)多個(gè)任務(wù)!Unity開源新思路:圖像條件結(jié)合指令提示
文章鏈接:https://arxiv.org/pdf/2408.03209
git鏈接:https://unity-research.github.io/IP-Adapter-Instruct.github.io/
demo鏈接:https://huggingface.co/spaces/unity/IP-Adapter-Instruct
亮點(diǎn)直擊
- 提出IPAdapter-Instruct模型:結(jié)合自然圖像條件與文本指令,靈活切換多種解釋方式(如風(fēng)格遷移、物體提取),簡化任務(wù)處理。
- 增強(qiáng)生成控制:改進(jìn)傳統(tǒng)圖像條件方法,通過指令提示在同一條件圖像下處理多種解釋,提高生成控制精度。
- 高效學(xué)習(xí)與靈活性:模型能夠同時(shí)學(xué)習(xí)多種任務(wù),性能接近專門模型,但顯著減少訓(xùn)練時(shí)間和成本。
- 改進(jìn)訓(xùn)練與推理:通過多種條件解釋(如完全復(fù)制、風(fēng)格遷移等),提高了訓(xùn)練和推理效率及質(zhì)量。
擴(kuò)散模型不斷推動(dòng)圖像生成的技術(shù)邊界,但其生成過程難以精細(xì)控制:實(shí)踐表明,文本提示不足以準(zhǔn)確描述圖像風(fēng)格或細(xì)節(jié)(如面部特征)。ControlNet 和 IPAdapter 通過將生成過程基于圖像條件進(jìn)行調(diào)整,解決了這一問題,但每個(gè)模型實(shí)例僅能模擬單一的條件后驗(yàn)分布。在實(shí)際應(yīng)用中,需要在同一工作流程中使用多個(gè)不同的后驗(yàn)分布,而訓(xùn)練和使用多個(gè)適配器顯得繁瑣。為此,本文提出了 IPAdapter-Instruct,它結(jié)合了自然圖像條件和“指令”提示,能夠在同一條件圖像下切換不同的解釋:風(fēng)格遷移、對象提取、或兩者兼有,甚至其他任務(wù)。與專門的單任務(wù)模型相比,IPAdapter-Instruct 能有效學(xué)習(xí)多項(xiàng)任務(wù),同時(shí)在質(zhì)量上損失最小。
方法
基于指令引導(dǎo)的圖像條件生成
現(xiàn)有的基于圖像條件的技術(shù)并沒有提供一種明確的方法來控制條件對輸出的影響,尤其是在處理自然圖像條件時(shí),沒有一種統(tǒng)一的方式來整合其信息和內(nèi)容。相反,通過額外的“指令”提示 讓用戶明確意圖,將其稱為指令或指令提示,以區(qū)別于文本提示 。這意味著現(xiàn)在建模的是概率分布 。可以將原始的IPAdapter視為此模型的一種實(shí)例,其中 從這張圖像中再現(xiàn)所有內(nèi)容——本文的方法建模了一個(gè)更廣泛的后驗(yàn)分布,而IPAdapter只是其中的一個(gè)邊緣分布。
本文論了針對聯(lián)合IPAdapter-Instruct模型的五種不同生成任務(wù):
- 復(fù)制:生成條件圖像的不同變體(類似于IPAdapter),
- 風(fēng)格:生成與條件圖像風(fēng)格一致的圖像,
- 結(jié)構(gòu):生成與條件圖像結(jié)構(gòu)相同的圖像,
- 對象:生成包含條件圖像中的對象的圖像,
- 面部:生成包含條件圖像中人物面部的圖像。
在有適當(dāng)數(shù)據(jù)集和訓(xùn)練流程的前提下,五個(gè)獨(dú)立的IPAdapter實(shí)例可以分別處理這些任務(wù),但這種工作流程在訓(xùn)練和推理時(shí)都顯得繁瑣。相反,IPAdapter-Instruct同時(shí)針對所有任務(wù)進(jìn)行訓(xùn)練,使得整個(gè)任務(wù)集的訓(xùn)練更加高效,并且推理過程也更加實(shí)用。此外,多任務(wù)學(xué)習(xí)在許多情況下已被證明是有益的。
模型架構(gòu)
本文的模型架構(gòu)基于IPAdapter+的變換投影模型。首先討論原始的IPAdapter+架構(gòu),然后介紹本文的修改。
在IPAdapter+中,每次對文本提示 進(jìn)行交叉注意力操作后,都會(huì)在條件圖像的投影編碼上添加一個(gè)交叉注意力層,如下圖2所示。
條件圖像首先被編碼到CLIP域,然后通過單個(gè)線性層投影到IPAdapter+特定的空間中,之后再通過一個(gè)小型的變換模型,如下圖3所示。
引入指令。 對于IPAdapter-Instruct,修改了投影變換模型,在每次迭代時(shí)引入了一個(gè)額外的注意力層,該層還會(huì)關(guān)注指令的CLIP嵌入,如圖3所示。通過這種方式,模型能夠從條件嵌入中提取與指令相關(guān)的信息。
編碼指令 選擇使用文本embedding模型對指令進(jìn)行編碼,將其嵌入到與原始IPAdapter(+)模型將條件圖像embedding的相同空間中。鑒于任務(wù)集的離散性,也可以為每個(gè)任務(wù)學(xué)習(xí)特定的任務(wù)embedding,并使用這些embeddings代替。然而,通過利用強(qiáng)大的預(yù)訓(xùn)練ViT-H/14模型,能夠從CLIP嵌入空間的語義豐富性中獲益,并且將指令和條件都表示在同一個(gè)空間中。雖然在這項(xiàng)工作中沒有對此進(jìn)行詳細(xì)研究,但坐著的直覺認(rèn)為,這種方法能夠?qū)崿F(xiàn)更靈活和穩(wěn)健的指令理解,并為未來的額外任務(wù)提供更好的起點(diǎn)。
任務(wù)和數(shù)據(jù)集生成
研究者們?yōu)槊總€(gè)不同的任務(wù)構(gòu)建了一個(gè)專用數(shù)據(jù)集,詳細(xì)內(nèi)容如下所述。對于指令提示,使用大型語言模型(LLM)為每個(gè)任務(wù)生成示例指令提示,并在訓(xùn)練過程中隨機(jī)抽取這些提示。為了確保每個(gè)任務(wù)在CLIP空間中能夠清晰辨識(shí),為每個(gè)任務(wù)分配了一個(gè)關(guān)鍵詞,并刪除了任何包含其他任務(wù)關(guān)鍵詞的指令。下圖4展示了每個(gè)任務(wù)指令嵌入的t-SNE可視化(以及在消融研究中使用的“平均”指令)。
下圖5展示了所有這些數(shù)據(jù)集的示例條目。
圖像復(fù)制
與IPAdapter的訓(xùn)練過程類似,該任務(wù)的目標(biāo)是創(chuàng)建輸入圖像的細(xì)微變化。由于此模式復(fù)現(xiàn)了IPAdapter的原始行為,期望能夠?qū)⑦@種指令模式應(yīng)用于其他任務(wù)。為了創(chuàng)建訓(xùn)練數(shù)據(jù)集,使用了JourneyDB數(shù)據(jù)集,收集了42,000個(gè)隨機(jī)樣本及其原始文本提示。指令提示則通過詢問ChatGPT-4 生成,要求其“生成不同長度的描述方式,以表達(dá)從一張圖像中獲取所有內(nèi)容,但不要使用‘構(gòu)圖’、‘風(fēng)格’、‘面部’或‘對象’這些詞”。
風(fēng)格保留
在風(fēng)格保留任務(wù)中,用戶希望僅提取條件圖像的風(fēng)格并將其應(yīng)用于新的圖像——盡管這個(gè)概念并不十分明確,但它通常包含色彩方案和一般的藝術(shù)風(fēng)格。身份、布局和構(gòu)圖不應(yīng)滲透到生成圖像中。為了創(chuàng)建風(fēng)格訓(xùn)練數(shù)據(jù)集,從ehristoforu/midjourney-images 風(fēng)格數(shù)據(jù)集和一個(gè)大規(guī)模的藝術(shù)數(shù)據(jù)集 開始。條件圖像從風(fēng)格數(shù)據(jù)集中采樣,而目標(biāo)圖像則通過InstantStyle生成,使用藝術(shù)數(shù)據(jù)集中的提示,并將條件圖像作為風(fēng)格源。換句話說,這種模式通過監(jiān)督生成類似于InstantStyle生成的圖像。指令提示通過詢問ChatGPT-4生成,要求其“生成不同長度的描述方式,以表達(dá)從一張圖像中獲取風(fēng)格,但不要使用‘構(gòu)圖’、‘對象’、‘面部’或‘所有內(nèi)容’這些詞”。由于InstantStyle計(jì)算成本高且速度較慢,該數(shù)據(jù)集僅包含20,000個(gè)樣本。
對象提取
在對象提取任務(wù)中,目標(biāo)是將條件圖像中的對象置于一個(gè)新的場景中,并盡可能保留其身份特征,這與MagicInsert類似?;贑OCO數(shù)據(jù)集生成此數(shù)據(jù)集:對于35,000張圖像,將相關(guān)對象裁剪出來作為條件圖像,并在必要時(shí)使用隨機(jī)顏色填充。目標(biāo)圖像則是原始數(shù)據(jù)集中的圖像,并由GPT-4o提供相應(yīng)的文本提示。指令提示通過詢問ChatGPT-4生成,要求其“生成不同長度的描述方式,以表達(dá)從一張圖像中提取對象,但不要使用‘構(gòu)圖’、‘風(fēng)格’、‘面部’或‘所有內(nèi)容’這些詞”。為了向圖像投影層(如前面圖3所示)提供更多語義信息(通常用戶會(huì)訪問到這些信息),在指令中將‘對象’關(guān)鍵詞替換為該對象的具體名稱。
結(jié)構(gòu)保留
最后,研究者們還創(chuàng)建了一個(gè)用于結(jié)構(gòu)保留的數(shù)據(jù)庫。該任務(wù)旨在模仿scribble ControlNet模型的行為,生成具有與條件圖像相似的Canny邊緣輪廓的圖像,而無需先生成這些邊緣圖像。對于scribble數(shù)據(jù)集,使用CommonCanvas數(shù)據(jù)集,并使用lllyasviel/sd-controlnet-scribble ControlNet模型通過其Canny邊緣圖和原始提示生成新的目標(biāo)圖像——原始圖像本身則作為條件圖像。指令提示通過詢問ChatGPT-4生成,要求其“生成不同長度的描述方式,以表達(dá)從一張圖像中獲取構(gòu)圖,但不要使用‘風(fēng)格’、‘對象’、‘面部’或‘所有內(nèi)容’這些詞”。
身份保留
由于人類對面部特征極為敏感,還使用CelebA數(shù)據(jù)集為面部保留創(chuàng)建了一個(gè)專用數(shù)據(jù)集。采集了40,000對匹配的圖像對,并由GPT-4o提供文本提示。為了更加突出面部特征,其中一半的條件圖像被放大以專注于面部。指令提示通過詢問ChatGPT-4生成,要求其“生成不同長度的描述方式,以表達(dá)從一張圖像中獲取面部或身份特征,但不要使用‘構(gòu)圖’、‘風(fēng)格’、‘所有內(nèi)容’或‘對象’這些詞”。
訓(xùn)練過程
本文的訓(xùn)練過程遵循IPAdapter的訓(xùn)練步驟,并使用前面討論的數(shù)據(jù)集。選擇Stable Diffusion 1.5 作為基礎(chǔ)模型,因?yàn)樗谳敵龆鄻有?、可控性和可訪問性方面表現(xiàn)出色——因此它仍然是社區(qū)中的主要模型?;A(chǔ)模型保持完全凍結(jié)狀態(tài),使用IPAdapter+的權(quán)重初始化SD1.5 的原始IPAdapter元素。大多數(shù)新殘差層用白噪聲(σ = )初始化。最終激活層則被零初始化,以便復(fù)制基礎(chǔ)IPAdapter的初始行為。
對于主要模型,使用了512的批次大小和的學(xué)習(xí)率,共進(jìn)行了100,000步的訓(xùn)練。為了控制消融研究的成本,使用了64的批次大小和的學(xué)習(xí)率,同樣訓(xùn)練100,000步——從視覺效果來看,結(jié)果已經(jīng)收斂,進(jìn)一步的訓(xùn)練不太可能影響消融研究的結(jié)論。類似于IPAdapter,發(fā)現(xiàn)對于用戶推理而言,IPAdapter的殘差連接影響需要縮減20%-40%,以避免壓過文本的交叉注意力。
實(shí)驗(yàn)與結(jié)果
數(shù)據(jù)集與評估指標(biāo)
對于每個(gè)任務(wù)數(shù)據(jù)集,保留了1,000張圖像作為驗(yàn)證集,用于定量和定性評估。使用以下指標(biāo)來評估每個(gè)任務(wù)的效果:
- CLIP-I:生成圖像與條件圖像之間的余弦相似度,用于指示從條件圖像傳遞到生成圖像的信息量。
- CLIP-T:生成圖像與條件圖像原始標(biāo)題之間的ClipScore,用于指示復(fù)制任務(wù)的成功程度。
- CLIP-P:生成圖像與用戶文本提示之間的ClipScore,用于指示在非復(fù)制任務(wù)中,生成圖像與文本提示的契合程度。
- CLIP風(fēng)格評分 (CLIP-S):計(jì)算生成圖像的CLIP嵌入減去其文本提示的CLIP嵌入,與條件圖像的CLIP嵌入減去其已知文本提示嵌入之間的余弦相似度,靈感來自于InstantStyle的表現(xiàn),用于指示風(fēng)格遷移的成功程度。
與任務(wù)特定模型的比較
將本文的模型與專門訓(xùn)練的任務(wù)特定模型進(jìn)行比較。請參閱下圖6中的不同模型的定性示例,并參考下表1中的定量概述。
研究者們發(fā)現(xiàn),本文提出的模型在性能上與單任務(wù)模型持平或略優(yōu),同時(shí)將所有任務(wù)壓縮到一個(gè)模型中。如下圖7所示,該模型的訓(xùn)練速度與單任務(wù)模型相當(dāng),但能夠同時(shí)處理所有任務(wù)。這大大減少了整個(gè)任務(wù)集的總訓(xùn)練時(shí)間和成本,同時(shí)簡化了推理代碼的處理。
與固定指令集的比較
研究者們對生成隨機(jī)提示而不是為每個(gè)任務(wù)使用單一硬編碼指令提示的選擇進(jìn)行了消融研究。在后者的情況下,上面表1顯示隨機(jī)提示比固定提示更有效——作者認(rèn)為這是因?yàn)楫?dāng)不同任務(wù)的各種表述在提示嵌入空間中彼此接近時(shí),模型被迫在一定程度上利用各任務(wù)之間的相似性。此外,如下圖8所示,對于給定任務(wù),變化指令的效果僅有微小但明顯的影響,從而允許對輸出進(jìn)行細(xì)微探索。
主模型的定性結(jié)果
最后,本文提供了本文鎖提出的方法在各種設(shè)置下的定性結(jié)果。下圖9展示了Instruct方案在控制條件解釋方面的靈活性;在所有情況下,都將其與IPAdapter+在相同用例下的表現(xiàn)進(jìn)行了比較。發(fā)現(xiàn)很難將IPAdapter+引導(dǎo)到特定的用例中,而本文的模型通過指令可以輕松地進(jìn)行控制。主觀上,發(fā)現(xiàn)構(gòu)圖任務(wù)的表現(xiàn)最差:雖然模型通常能夠很好地遵循條件的結(jié)構(gòu),但其表現(xiàn)并不比其他任務(wù)更好,并且往往會(huì)將風(fēng)格滲透到生成結(jié)果中。這并不完全意外:構(gòu)圖任務(wù)(基于Canny邊緣圖和scribble ControlNet,即像素精確的指導(dǎo))可以說更適合ControlNet工作流,盡管發(fā)現(xiàn)通過IPAdapter變體能夠提取出大量結(jié)構(gòu)信息仍然很有趣。
最后,類似于IPAdapter,本文保持了與ControlNet和LoRA模型的兼容性,如下圖10所示。本文的模型在生成過程中成功地進(jìn)行了條件控制,同時(shí)ControlNets提供了像素級(jí)精確指導(dǎo)。
結(jié)論、局限性與未來工作
本文引入了IPAdapter-Instruct,以澄清在對圖像擴(kuò)散模型進(jìn)行輸入圖像條件控制時(shí)用戶的意圖:通過引入指定用戶意圖的指令提示,這個(gè)聯(lián)合模型能夠高效地進(jìn)行訓(xùn)練而不會(huì)失去性能。它將多個(gè)適配器壓縮到一個(gè)單一的提示和圖像組合中,同時(shí)保留了原始IPAdapter工作流的優(yōu)點(diǎn),例如保持基礎(chǔ)擴(kuò)散模型的完整性,并保持與LoRAs的兼容性。
主要的局限性在于訓(xùn)練數(shù)據(jù)集的創(chuàng)建:這是一項(xiàng)耗時(shí)且受到源數(shù)據(jù)可用性限制的工作,但對任務(wù)性能有顯著影響。數(shù)據(jù)集的創(chuàng)建還明顯對條件模型施加了偏見:風(fēng)格遷移偏向于MidJourney,面部提取在真實(shí)照片上效果最佳,而最顯著的是,物體提取從彩色填充中顯著受益。
然而,像素級(jí)精確的指導(dǎo)任務(wù)不適合壓縮到CLIP空間中。希望最終能夠?qū)⑦@兩種指導(dǎo)(像素級(jí)精確和語義)結(jié)合到一個(gè)單一的條件模型中,使用指令提示來傳達(dá)用戶意圖。
本文轉(zhuǎn)自 AI生成未來 ,作者:Unity
