超越Midjourney?基于語(yǔ)境學(xué)習(xí)訓(xùn)練圖像擴(kuò)散模型【前沿】
一、背景知識(shí)——文本圖像生成的現(xiàn)狀
先介紹一下背景知識(shí)。大家對(duì)于文本-圖像的生成模型應(yīng)該已經(jīng)相當(dāng)熟悉了,諸如"imagen"、"stable diffusion"、"dalle2"以及"midjourney"等一系列模型已經(jīng)取得了很好的成績(jī)與顯著進(jìn)展。這些模型在很大程度上能夠生成與給定文本高度契合的圖像,很多時(shí)候這些生成出的圖像充滿(mǎn)了想象力。它們所創(chuàng)造的圖像通常難以在網(wǎng)絡(luò)上找到。比方說(shuō)下面這張圖片:
兩個(gè)機(jī)器人在巴黎鐵塔前舉杯慶祝,這樣的場(chǎng)景在網(wǎng)絡(luò)上并不容易獲取,只有通過(guò)生成模型才能創(chuàng)造出來(lái)。
然而,盡管這些模型表現(xiàn)出色,但它們目前還面臨一個(gè)問(wèn)題,即它們主要依賴(lài)于文本作為唯一的可控制信號(hào)。然而,文本在某些情況下并不能完全滿(mǎn)足需求,尤其是在描述某些細(xì)節(jié)方面存在局限性,比如物體的位置、角度和姿態(tài)等,這些方面難以用自然語(yǔ)言精確描述。
另外,有些情況下生成個(gè)體或者場(chǎng)景,雖然可以使用自然語(yǔ)言進(jìn)行描述,但結(jié)果并不總是精確的。如果需要生成指定場(chǎng)景或物體時(shí),諸如“我家的狗”或者“我自己的書(shū)包”之類(lèi)的情況,目前的模型還很難勝任,因?yàn)樗鼈冎荒芤蕾?lài)文本作為唯一的控制信號(hào)。因此,這里涌現(xiàn)出一個(gè)非常有趣的研究領(lǐng)域,即生成模型的個(gè)性化,其關(guān)注點(diǎn)主要在于如何使生成模型創(chuàng)造出更具個(gè)性化特點(diǎn)的內(nèi)容。其中,一篇備受矚目的論文叫做"Dream Booth",其核心思想是,假設(shè)你有一個(gè)特定的主體對(duì)象,比如一只狗,你可以提供幾個(gè)示例,然后嘗試讓圖像生成模型在不同場(chǎng)景和狀態(tài)下生成這只狗的圖像。
這意味著你可以在不同的背景和情境中生成個(gè)性化的圖像,比如上圖中根據(jù)左邊的狗的圖片生成右邊這只狗在特定場(chǎng)景中的圖片,或者其他類(lèi)似的情況。賦予模型在生成過(guò)程中更強(qiáng)的可控性,這是一件很有趣的事情。本次分享探討的主題就是如何進(jìn)一步增強(qiáng)個(gè)性化生成的可能性。
然而,值得注意的是,盡管"Dream Booth"取得了不錯(cuò)的效果,但它并非一種萬(wàn)能的解決方案。其方法相當(dāng)簡(jiǎn)潔,見(jiàn)下圖:
它的基本思路為:假設(shè)有一個(gè)指定的物品,對(duì)其進(jìn)行多次拍攝,通常是3到5張照片,然后用"stable diffusion"等模型進(jìn)行梯度下降的微調(diào),這個(gè)微調(diào)過(guò)程可以持續(xù)一千步左右,最后保存微調(diào)后的模型。通過(guò)微調(diào),模型會(huì)對(duì)指定的物品有所了解,因此在生成與這個(gè)物品相關(guān)的其他場(chǎng)景圖像時(shí),效果會(huì)相當(dāng)好。在微調(diào)過(guò)程中,模型通過(guò)梯度下降等方式逐漸適應(yīng)了指定物品的特征,這是其表現(xiàn)出色的原因之一。
另外,還存在另一種方法Textual Inversion,與"Dream Booth"非常相似,但稍有不同。
這個(gè)方法不需要對(duì)整個(gè)模型進(jìn)行微調(diào),而是針對(duì)一個(gè)專(zhuān)門(mén)的嵌入向量(embedding)進(jìn)行調(diào)整。首先為指定的物體設(shè)計(jì)一個(gè)特殊的嵌入,然后將模型其他參數(shù)固定,只調(diào)整這個(gè)特殊嵌入,這個(gè)特殊的嵌入能學(xué)習(xí)到如何表示主體物品。最后在生成圖像時(shí),你可以使用調(diào)整后的embedding來(lái)指導(dǎo)生成過(guò)程。
嵌入(embedding)就好比是一個(gè)適配器(adapter),可以使生成的內(nèi)容帶有特定主體的特征。實(shí)際上,這是一種parameter efficient tuning的方法,盡管仍然需要微調(diào),但相比之下,內(nèi)存需求降低了很多。然而,這個(gè)方法也有一個(gè)不足之處,就是其效果明顯不如"Dream Booth",這是因?yàn)檎{(diào)整的參數(shù)較少,導(dǎo)致生成效果受限。目前來(lái)看,這兩種模型都存在一些致命問(wèn)題,即微調(diào)過(guò)程非常耗時(shí),而且需要大量的GPU內(nèi)存。另外一個(gè)問(wèn)題是,每個(gè)主體都需要進(jìn)行微調(diào),并保存其檢查點(diǎn)。如果使用"stable diffusion"等模型,一次微調(diào)需要保存大約10GB大小的檢查點(diǎn),若有100個(gè)主題,那么所需的存儲(chǔ)空間將超過(guò)1TB。這種情況下,模型的擴(kuò)展性會(huì)受到極大的影響。
這些方法的共同點(diǎn)在于,它們都試圖在模型中引入關(guān)于指定物體的特定信息,從而使模型在生成相關(guān)圖像時(shí)更加準(zhǔn)確。無(wú)論是通過(guò)微調(diào)整個(gè)模型還是調(diào)整特殊嵌入,都是為了增強(qiáng)模型在特定個(gè)體生成方面的表現(xiàn)能力。
二、動(dòng)機(jī)——為何需要語(yǔ)境學(xué)習(xí)的圖像生成模型
在本次演講中,我將介紹如何避免上述問(wèn)題,即在不進(jìn)行微調(diào)的情況下,仍然能夠?qū)崿F(xiàn)生成模型的個(gè)性化。這主要依賴(lài)于我的兩篇論文,其中一篇《Subject-driven Text-to-Image Generation via Apprenticeship Learning》,目前仍在等待編輯處理(ARCHIVE)中,另一篇是已經(jīng)收錄在ICLR 2023的一篇論文《Re-Imagen: Retrieval-Augmented Text-to-Image Generator》。
現(xiàn)在,讓我們來(lái)初步探討一下我們的目標(biāo)。在語(yǔ)境學(xué)習(xí)方面,大家都比較熟悉了。自然語(yǔ)言處理的大型模型主要采用的就是語(yǔ)境學(xué)習(xí)方法,也就是所謂的"in-context learning"。其優(yōu)點(diǎn)在于,你無(wú)需為不同的任務(wù)構(gòu)建不同的模型,而只需使用一個(gè)模型,并通過(guò)不斷的提示(prompt)或者在上下文中進(jìn)行示例,讓模型學(xué)習(xí)如何根據(jù)示例來(lái)進(jìn)行泛化,從而解決未見(jiàn)過(guò)的任務(wù)。這樣的學(xué)習(xí)方式可以實(shí)現(xiàn)零樣本學(xué)習(xí),對(duì)于自然語(yǔ)言處理中的大模型(如GPT系列),這種語(yǔ)境學(xué)習(xí)非常成功,它不需要任何梯度下降等訓(xùn)練方法,就能夠解決許多具體的問(wèn)題,這反映出了未來(lái)一個(gè)大的趨勢(shì)。
假如我們能在個(gè)性化圖片生成領(lǐng)域使用語(yǔ)境學(xué)習(xí),那就會(huì)非常有益。例如,如果我們提供一些關(guān)于某個(gè)小狗的示例圖片,將這些示例圖片輸入給一個(gè)新的擴(kuò)散模型,再輸入一個(gè)文本,文本指定這只狗在新環(huán)境中的動(dòng)作,那么這個(gè)擴(kuò)散模型就可以生成出這只狗在新環(huán)境下的圖像。
這種方法會(huì)避免微調(diào)模型,同時(shí)也不需要存儲(chǔ)各個(gè)主題下的擴(kuò)散模型副本,只需一個(gè)模型即可,且推理時(shí)間也會(huì)比之前更快,至少提速了十倍以上。
但是,如何實(shí)現(xiàn)這種理想情況呢?我們需要探索圖片生成模型和自然語(yǔ)言生成模型之間的區(qū)別。自然語(yǔ)言模型中的語(yǔ)境學(xué)習(xí)源自預(yù)訓(xùn)練,通過(guò)大量自然語(yǔ)句(由一個(gè)個(gè)連續(xù)的token組成),根據(jù)當(dāng)前tokens讓模型預(yù)測(cè)句子中下一個(gè)token的機(jī)制來(lái)實(shí)現(xiàn)。這樣大型語(yǔ)言模型能夠自動(dòng)獲取上下文學(xué)習(xí)能力,這似乎是一種非常神奇的現(xiàn)象。雖然有不少研究在討論這一現(xiàn)象,但為何模型在預(yù)訓(xùn)練后會(huì)自動(dòng)具備這種能力仍然不太清楚。然而對(duì)于圖像生成模型而言,目前并沒(méi)有類(lèi)似的能力。其預(yù)訓(xùn)練過(guò)程只關(guān)注單個(gè)文本和圖像的配對(duì)學(xué)習(xí),沒(méi)有多個(gè)連續(xù)的圖像文本作為輸入,因此缺乏上下文信息。在這樣的預(yù)訓(xùn)練下,圖像生成模型無(wú)法實(shí)現(xiàn)語(yǔ)境學(xué)習(xí)能力。
要想訓(xùn)練一個(gè)具備這種語(yǔ)境學(xué)習(xí)能力的擴(kuò)散模型,就需要進(jìn)行一些改進(jìn)。首先,網(wǎng)絡(luò)架構(gòu)需要進(jìn)行調(diào)整,因?yàn)楝F(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)僅能夠接受文本作為控制信號(hào)。而現(xiàn)在,我們還有其他的演示和上下文示例,我們需要想辦法將它們輸入到網(wǎng)絡(luò)結(jié)構(gòu)中,這需要一些新的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)。
其次,訓(xùn)練數(shù)據(jù)也需要調(diào)整,就像文本一樣,需要多個(gè)連續(xù)相似的圖文示例,這樣模型才能獲得上下文學(xué)習(xí)的能力。因此,我們需要在數(shù)據(jù)方面進(jìn)行改進(jìn)。接下來(lái),我們將探討如何設(shè)計(jì)這個(gè)新的網(wǎng)絡(luò)架構(gòu)。
三、設(shè)計(jì)——如何讓現(xiàn)有的模型能夠做語(yǔ)境學(xué)習(xí)
1、設(shè)計(jì)-網(wǎng)絡(luò)架構(gòu)
標(biāo)準(zhǔn)的文本圖像生成模型架構(gòu)通常由UNet組成,如上圖所示。該UNet首先對(duì)一個(gè)加入噪聲的圖像進(jìn)行卷積和下采樣,直至獲得較小的特征圖,然后再進(jìn)行上采樣,加上其他的一些卷積操作,最終將特征圖恢復(fù)到與輸入圖像相同大小的空間。這兩個(gè)步驟主要是在模擬去噪的過(guò)程。
這個(gè)UNet與通常的UNet有所不同,它加入了注意力機(jī)制,用于捕獲文本控制信號(hào),然后利用文本信息引導(dǎo)到擴(kuò)散過(guò)程。在這個(gè)過(guò)程中,我們要考慮如何將圖文示例加入到這個(gè)UNet中。
實(shí)際上,這是非常簡(jiǎn)單的,你可以看到,UNet實(shí)際上具有編碼器(encoder)的功能。它左邊部分通過(guò)下采樣將大圖像壓縮成特征圖,可以將其視為編碼器。右邊部分可以看作解碼器(decoder),該編碼器可以將圖像和相關(guān)文本編碼為特征圖。因此,我們可以將圖文示例,通過(guò)相同的方法,僅使用這個(gè)下采樣的編碼器(encoder)來(lái)壓縮到特征圖中。
當(dāng)有多個(gè)圖像和文本對(duì)時(shí),可以分別進(jìn)行處理,然后將多個(gè)特征圖連接起來(lái),這樣就可以得到neighbor(指某些同一主題的圖文對(duì)示例組成的一個(gè)類(lèi),類(lèi)中的圖文因?yàn)橹黝}一致,在主題上相互之間可認(rèn)為具有相鄰的關(guān)系,有點(diǎn)類(lèi)似鄰域的意思。)的表示。
這樣做的好處是,你在復(fù)用UNet編碼器時(shí),可以將這些信息投影到相同的特征空間中。這樣模型更容易關(guān)注這些信息。因此,最終的網(wǎng)絡(luò)架構(gòu)類(lèi)似于下圖這樣。
將圖像去噪為之前的圖像,之前只是用文本進(jìn)行控制,現(xiàn)在我們做的是,為它增加了一些上下文示例。只需復(fù)用UNet編碼器對(duì)示例進(jìn)行編碼獲得特征圖,注意力機(jī)制不僅僅會(huì)關(guān)注文本,還會(huì)關(guān)注新的上下文示例的特征。
因此,我們所做的實(shí)際上非常簡(jiǎn)單,只是在網(wǎng)絡(luò)中添加了一個(gè)額外的注意力層,讓它能夠關(guān)注其他控制信號(hào),比如用來(lái)參考的圖像和文本示例,這就是我們的新架構(gòu)。然而,目前我們還無(wú)法訓(xùn)練這個(gè)網(wǎng)絡(luò),因?yàn)槲覀儧](méi)有關(guān)于某個(gè)主題或者主體的多個(gè)圖像和文本對(duì)數(shù)據(jù)。
因此,接下來(lái)我們要考慮的是如何獲取這種新的訓(xùn)練數(shù)據(jù)。
2、設(shè)計(jì)-訓(xùn)練數(shù)據(jù)
理想情況下,圖像和文本的上下文學(xué)習(xí)(ICL)數(shù)據(jù)應(yīng)該具有相似的結(jié)構(gòu)。每個(gè)數(shù)據(jù)對(duì)應(yīng)由文本和圖像構(gòu)成,例如TEXT1-IMAGE1、TEXT2-IMAGE2、......、TEXTN-IMAGEN等,其中這些圖文對(duì)都有一定的相似性,比如說(shuō)他們都描述了一樣的主體,或者說(shuō)他們能描述了一樣的風(fēng)格,把它們放在一起,其中一些作為示例,然后生成新的這個(gè)關(guān)于這個(gè)主體的圖片。這樣訓(xùn)練的模型在生成圖片時(shí),會(huì)自動(dòng)參考輸入的示例。
所以我們需要一堆由TEXTN-IMAGEN組成的聚類(lèi)圖片。每個(gè)類(lèi)保證它其中的所有圖片是關(guān)于某一個(gè)主體的,或者他們都有一個(gè)專(zhuān)門(mén)的主題。但目前google內(nèi)部不存在這么理想的數(shù)據(jù)。從網(wǎng)上爬下來(lái)的數(shù)據(jù)都是獨(dú)立的圖文對(duì)數(shù)據(jù),他們是沒(méi)有按主體、主題歸類(lèi)的。給他們歸類(lèi)也是一件非常困難的事,基于clip的一些策略可以做,但是效果非常差。
最終,我們的工作涉及以下幾個(gè)方面,我們重新爬取圖像文本配對(duì)數(shù)據(jù),根據(jù)URL將這些圖像和文本進(jìn)行聚類(lèi)。我們假設(shè)源自同一網(wǎng)頁(yè)的圖像和文本具有較強(qiáng)的相關(guān)性,尤其是電商網(wǎng)站上這種情況會(huì)很明顯。例如在同一網(wǎng)頁(yè)上銷(xiāo)售的鞋子是在不同場(chǎng)景下拍攝的,我們認(rèn)為這種資源非常有價(jià)值。然而也存在一些特殊情況,比如一個(gè)網(wǎng)頁(yè)中可能包含各種雜亂無(wú)章的圖像,它們之間毫無(wú)相似之處。在這種情況下,相關(guān)性較差,那應(yīng)該如何處理?為了解決這個(gè)問(wèn)題,我們實(shí)施了一些過(guò)濾措施。我們通過(guò)計(jì)算不同圖像組內(nèi)圖像之間的CLIP分?jǐn)?shù)進(jìn)行過(guò)濾和篩選,以此來(lái)評(píng)估圖像之間的相似度。
隨后,若圖像對(duì)應(yīng)的CLIP分?jǐn)?shù)低于特定閾值,我們將排除那些具有較低相似性的圖像文本聚類(lèi),不過(guò),需要指出的是,我們的過(guò)濾措施相當(dāng)嚴(yán)格。盡管如此,由于我們的數(shù)據(jù)集規(guī)模龐大,即便在過(guò)濾掉90%的內(nèi)容之后,仍然保留了數(shù)十兆級(jí)別的可用數(shù)據(jù)。
另外,我們還注意到從網(wǎng)絡(luò)上爬取的圖像文本配對(duì),其組類(lèi)中文本的噪聲較大,難以有效反映不同聚類(lèi)中圖像的共性特征。有時(shí)候,這些文本內(nèi)容可能非常雜亂,與圖像關(guān)聯(lián)性較弱。為了克服這一問(wèn)題,我們采用了Google的預(yù)訓(xùn)練語(yǔ)言模型為這些圖像重新生成描述文本,利用Palm等方法對(duì)這些描述進(jìn)行進(jìn)一步的清理,使得生成的描述更加與圖像內(nèi)容相符。
下面通過(guò)范例來(lái)說(shuō)明,這是我們自動(dòng)構(gòu)建的圖像數(shù)據(jù)集(ICL數(shù)據(jù)集)的兩個(gè)樣例。
范例中展示了圖像聚類(lèi)示例,每個(gè)示例中的不同圖片有不同的文本標(biāo)簽,這些圖像和文本標(biāo)簽是由Palm生成的。從第一個(gè)example中可以看到不同場(chǎng)景下同一個(gè)壺的樣子,圖片底下的文本是它們的標(biāo)簽。第二個(gè) example的主體是一只狐貍,它們有不同的標(biāo)簽。需要注意的是,這個(gè)示例僅用于展示,實(shí)際數(shù)據(jù)中的噪聲要比示例中高得多,這里只是為了給大家一個(gè)大致的印象。
在獲取了這些圖像之后,我們最初嘗試了一種簡(jiǎn)單的方法,使用前兩個(gè)圖像作為樣本,然后讓模型生成第三個(gè)圖像。然而,實(shí)驗(yàn)證明這種方法的效果非常差,模型在訓(xùn)練完成后往往會(huì)陷入簡(jiǎn)單的復(fù)制粘貼模式,無(wú)視輸入文本內(nèi)容,直接復(fù)制一個(gè)樣本作為輸出。主要原因在于我們構(gòu)建的圖像文本群組中的圖像和文本過(guò)于相似,導(dǎo)致模型傾向于執(zhí)行無(wú)創(chuàng)新性的復(fù)制操作。在大部分情況下,模型認(rèn)為這些圖像之間幾乎沒(méi)有區(qū)別,因此將一個(gè)圖像直接復(fù)制到另一個(gè)圖像的位置。針對(duì)這一問(wèn)題,我們進(jìn)行了長(zhǎng)時(shí)間的思考,希望找到方法來(lái)避免模型陷入這種局部最優(yōu)狀態(tài)。然而,我們發(fā)現(xiàn)很難找到一種非常直觀的方法來(lái)解決這個(gè)問(wèn)題。
首先,我們需要考慮如何確保所生成的目標(biāo)圖像以及相關(guān)聯(lián)的其他示例具有足夠的差異性。這意味著無(wú)論是圖像還是文本,它們?cè)谔卣魃隙紤?yīng)該具有顯著的差異。以上圖中第一個(gè)和第三個(gè)壺為例,它們之間存在相當(dāng)大的相似性。然而,如果其中一個(gè)圖像呈現(xiàn)了明顯的差異,比如一個(gè)人端著一個(gè)物體的場(chǎng)景,這種情況下模型將被迫根據(jù)文本標(biāo)簽來(lái)生成這種差異,這種數(shù)據(jù)在實(shí)際爬取過(guò)程中非常難以獲取。因此,為了解決這一問(wèn)題,我們采用了合成的方法。
具體而言,我們首先從這些聚類(lèi)中提取文本,并使用大語(yǔ)言模型生成出不同場(chǎng)景下的文本描述,例如“a man holding a teapot”。接著,我們使用Dream Booth生成這些目標(biāo)圖像,盡管Dream Booth的使用會(huì)有較高的代價(jià),不適用于最終模型,但它作為一種生成數(shù)據(jù)的手段非常有效。
我們的方法包括以下步驟:首先從這些聚類(lèi)中選擇文本描述,然后利用大型語(yǔ)言模型生成新的文本描述,接著在這個(gè)類(lèi)上訓(xùn)練Dream Booth,通過(guò)訓(xùn)練好的Dream Booth生成這些新的目標(biāo)圖像。需要指出的是,盡管Dream Booth在生成圖像方面非常出色,但仍存在很多失敗案例。因此,在生成了大量的Dream Booth圖像后,進(jìn)行了大量的過(guò)濾,包括一些啟發(fā)式的過(guò)濾和基于CLIP分?jǐn)?shù)的過(guò)濾。最終,我們僅保留了約20-30%的生成圖像,其余被認(rèn)為質(zhì)量不夠高而被丟棄。在經(jīng)過(guò)一系列處理后,我們最終得到了包含幾十萬(wàn)個(gè)聚類(lèi)數(shù)據(jù)的數(shù)據(jù)集,這為后續(xù)模型的訓(xùn)練提供了數(shù)據(jù)基礎(chǔ)。
進(jìn)一步的訓(xùn)練流程如下所示:
首先上圖展示了一個(gè)樣本,左邊是示例,右邊是目標(biāo)圖。訓(xùn)練過(guò)程如下圖:
總的來(lái)說(shuō)流程如下,通過(guò)復(fù)用圖中的encoder,將多個(gè)示例通過(guò)encoder編碼得到特征圖,然后將特征圖(feature map)聯(lián)合起來(lái)(concatenate),目標(biāo)圖片在右邊做為去噪的目標(biāo)。首先對(duì)目標(biāo)圖片加噪,接下來(lái)將目標(biāo)圖像作為去噪目標(biāo),添加噪聲后使用同一解碼器進(jìn)行去噪操作。此外,我們還引入了目標(biāo)圖像的文本描述以增強(qiáng)模型的控制性,這在圖中未畫(huà)出來(lái)。
我們將這個(gè)模型稱(chēng)為"SuTI",即"Subject-Driven Text to Image Generation"。此訓(xùn)練所采用的數(shù)據(jù)集為ICL V2數(shù)據(jù)集,它是由Dream Booth生成的數(shù)據(jù),需要注意的是,盡管輸入的示例是現(xiàn)實(shí)的圖片,但輸出的目標(biāo)是通過(guò)精心設(shè)計(jì)來(lái)生成出來(lái)的圖片,這樣可以提高訓(xùn)練的可控性。在訓(xùn)練SuTI模型時(shí),盡管我們擁有約500K個(gè)訓(xùn)練數(shù)據(jù),但發(fā)現(xiàn)模型訓(xùn)練過(guò)程并不需要很長(zhǎng)時(shí)間,大約一天的時(shí)間模型便能夠在約幾十萬(wàn)步迭代之后達(dá)到相當(dāng)高的水平。
四、結(jié)果和展望
在模型的訓(xùn)練過(guò)程中,我們采取了一種方法,將三個(gè)示例作為neighbor,提供給圖像生成模型。通過(guò)這種方式,模型能夠通過(guò)注意機(jī)制關(guān)注這三個(gè)示例,從中獲得關(guān)于主體外觀的信息,最終生成目標(biāo)圖像。在訓(xùn)練SuTI模型后,我們觀察到該模型具備幾種技能。首先是風(fēng)格化技能,允許我們將不同的藝術(shù)風(fēng)格應(yīng)用于某個(gè)主體、將主體其放置在不同的環(huán)境中,甚至可以為主體賦予不同的動(dòng)作。我們還可以從不同的視角觀察主體,并對(duì)其進(jìn)行一些屬性變化,例如顏色等,還可以為主體添加各種配件和服飾。我們的實(shí)驗(yàn)參數(shù)如下:
模型輸出示例如下所示:
例如,我們的輸入的圖片主體是一個(gè)鴨子玩具,我們?cè)噲D在生成階段中使用文本指定要生成的主體風(fēng)格,如使用Picasso、Rembrandt的藝術(shù)風(fēng)格。我們的模型能夠生成出具有不同藝術(shù)風(fēng)格的圖像,對(duì)于藝術(shù)不甚了解的我來(lái)說(shuō),畫(huà)得似乎相當(dāng)不錯(cuò),例如小黃鴨融合了梵高的"星空"風(fēng)格以及其他一些細(xì)節(jié)。再比如圖中的狗,模型可以生產(chǎn)各種方向的視圖,如從上看、從邊上看、從后看的視圖,這些都在模型輸出中得到了體現(xiàn)。生成的速度非常快,大概 20 到 30 秒鐘就可以讓它生成出來(lái)。
此外,模型也能夠處理主體的情感,例如我們可以使狗變得沮喪、高興、瞌睡等。另一方面,我們也能夠改變主體的一些屬性,例如將其顏色更改為藍(lán)色、綠色、紫色、粉色等。
我們還嘗試增加配飾,例如給狗穿上廚師服、警察服、護(hù)士服等,這些生成的圖像在模型的控制下表現(xiàn)出高度的逼真性和合理性。
此外,我們的研究還涉及大量的人類(lèi)評(píng)估,我們?yōu)榇司帉?xiě)了220個(gè)獨(dú)特的提示,針對(duì)30個(gè)不同的主體進(jìn)行測(cè)試。
首先我們要評(píng)估模型在圖文指導(dǎo)下生成的圖像與給定主體對(duì)齊程度。主體對(duì)齊指的是生成圖像中的主體與原始主體的相似程度。我們將這種對(duì)齊度量表達(dá)為一個(gè)分?jǐn)?shù),根據(jù)評(píng)價(jià)者對(duì)圖像的相似性進(jìn)行評(píng)分,從0表示不相似到10表示完全相似。最終,我們計(jì)算這些分?jǐn)?shù)的平均值,以獲取主體對(duì)齊的度量。
第二個(gè)評(píng)分指標(biāo),即生成結(jié)果對(duì)文本標(biāo)簽的忠實(shí)程度,如圖21中生成的小狗對(duì)于描述中的 "chef outfit" 或 "police outfit" 等內(nèi)容是否完整準(zhǔn)確地體現(xiàn)。它是否可能忽略文本內(nèi)容,而僅僅將狗的圖像直接復(fù)制粘貼。
此外,第三個(gè)評(píng)分指標(biāo)在于圖像的真實(shí)性。是否存在任何偽造痕跡(ARTIFACT)等現(xiàn)象。
在我們的評(píng)估系統(tǒng)中這些生成的圖像都呈現(xiàn)出相對(duì)真實(shí)的特征。我們?cè)谡麄€(gè)基準(zhǔn)數(shù)據(jù)集上,將上述不同的評(píng)分指標(biāo)進(jìn)行匯總。通過(guò)計(jì)算不同樣本在這些指標(biāo)上的平均分?jǐn)?shù),我們可以獲得一個(gè)總體的百分比得分。這些評(píng)分考慮了許多基線(xiàn)模型,包括Textual inversion、Null-Text Inversion、Imagic、Dream Booth、Stable Diffusion和Re-Imagen、InstructPix2Pix方面的表現(xiàn)。美元符號(hào)表示有些模型在微調(diào)時(shí)需要占用空間、時(shí)間。Imagic需要70mins才能做完一個(gè)主題的適配,但是對(duì)我們的模型只需要30s。盡管我們的模型在速度方面可能不及 "Instruct Pix2 Pix"那般迅捷,但其效果明顯優(yōu)于后者。例如,在主題方面,我們的模型已經(jīng)超越了 "dream Boost",且在文本對(duì)齊方面表現(xiàn)更為優(yōu)異。我們的模型在 90% 的情況下能夠與文本完美地結(jié)合。同時(shí),我們的模型生成的圖像在視覺(jué)逼真性方面達(dá)到 92%,幾乎沒(méi)有PS痕跡。然而,"Dream Booth" 在這一層面上表現(xiàn)更佳,約有 98% 的情況下不存在任何偽造痕跡,圖像相當(dāng)真實(shí)。相較于 "Textual Inversion",我們的模型稍勝一籌。
這三個(gè)方面分別考慮后,我們對(duì)其進(jìn)行了綜合評(píng)分,類(lèi)似于一個(gè)整體評(píng)價(jià)分?jǐn)?shù)。若圖像在這三個(gè)方面都取得滿(mǎn)分,也就是得分為一。最終,我們計(jì)算了平均分?jǐn)?shù),以獲得最后的綜合評(píng)價(jià)。值得一提的是,從整體評(píng)分上看,我們的模“SuTI”目前在市場(chǎng)上表現(xiàn)最為出色。與 "Dream Booth"相比,我們的模型高出7個(gè)百分點(diǎn)。與其他模型相比,優(yōu)勢(shì)更為明顯,接近 40% 以上。
綜上所述,我們的模型顯示出了出色的性能,在谷歌內(nèi)部也引起很多關(guān)注。
然而,正如之前所述,盡管我們?cè)趥€(gè)性化生成上取得了顯著的進(jìn)展,但我們的圖像逼真度(photorealism)仍未達(dá)到最佳狀態(tài)。當(dāng)前,我們的逼真度評(píng)分為92%。仔細(xì)觀察這些圖像,你會(huì)發(fā)現(xiàn)它們?cè)谀承┏潭壬先源嬖谑д娆F(xiàn)象。例如,在某些狗的圖像與背景結(jié)合的情況下,與真實(shí)原圖相比,仍存在一些差距。相比之下,與"Dream Booth"相比,我們的模型在自然性方面稍遜一籌。這種情況反應(yīng)出了我們模型的局限性,特別是在處理人臉和文字細(xì)節(jié)表達(dá)方面,效果相對(duì)較差。
目前我們的主要目標(biāo)是將該模型擴(kuò)展至更大規(guī)模以解決上述問(wèn)題。此外,我們計(jì)劃在SuTI技能中增加更多功能。盡管我們目前已經(jīng)具備五項(xiàng)技能,如樣式化(stylization)、重上下文化(recontextualization)等,但我們希望能夠進(jìn)一步添加一些技能,例如將姿態(tài)(pose)內(nèi)容整合進(jìn)去,添加邊界框等,類(lèi)似于Control Net。甚至,我們計(jì)劃引入一些具備組合能力的技能,使圖像能夠在變換風(fēng)格的同時(shí),將其置于新的場(chǎng)景中,當(dāng)前模型尚無(wú)法實(shí)現(xiàn)此類(lèi)復(fù)雜任務(wù)。我們致力于不斷提升模型性能,通過(guò)擴(kuò)大數(shù)據(jù)集和模型規(guī)模,使其具備更多的技能。我們的目標(biāo)是將各種控制信號(hào)加入模型中。最終,我們希望將整個(gè)系統(tǒng)構(gòu)建為一種指令微調(diào)(instruction tuning)的格式。值得注意的是,由于之前模型存在版權(quán)問(wèn)題,我們已經(jīng)進(jìn)行了重新訓(xùn)練,目前已基本完成。在7月份,我們計(jì)劃將該模型發(fā)布到Google Cloud,與大家分享。您可以在Vertex AI平臺(tái)上找到該模型,類(lèi)似于"Palm 2"。只要注冊(cè)到Google Cloud,就可以體驗(yàn)我們的模型?;镜纳刹僮魇敲赓M(fèi)的,只有在超出一定使用量后才會(huì)收取費(fèi)用。
五、問(wèn)答環(huán)節(jié)
Q1:非常感謝陳文虎老師的分享,內(nèi)容非常有趣?,F(xiàn)在進(jìn)入問(wèn)答環(huán)節(jié),我注意到評(píng)論區(qū)已經(jīng)有一些問(wèn)題了。第一個(gè)問(wèn)題是,根據(jù)訓(xùn)練數(shù)據(jù),我們只能獲得圖像和文本的對(duì)齊,為什么在應(yīng)用時(shí)我們可以獲得風(fēng)格、角度等屬性的增強(qiáng)?
A1:在我們的訓(xùn)練數(shù)據(jù)中,實(shí)際上也包含了這些風(fēng)格等屬性。例如,對(duì)于TEAPOT這樣的提示語(yǔ),可能會(huì)是“生成畢加索風(fēng)格的TEAPOT圖像”。然后通過(guò)"Dream Booth",它可以生成具有畢加索風(fēng)格的TEAPOT圖像,這只是一個(gè)示例。此外,在構(gòu)建提示時(shí),我們使用了大型語(yǔ)言模型,它生成的提示非常多樣化,涵蓋了各種屬性,如風(fēng)格、視角等。比如,提示可能包含特定的風(fēng)格、特定視角,如從下方視角看的TEAPOT。而"Dream Boost"生成的圖像在成功的情況下,會(huì)呈現(xiàn)從底部視角看的TEAPOT,這是其有效性的原因。
Q2:所以,我們的訓(xùn)練數(shù)據(jù)實(shí)際上已經(jīng)包含了這些圖文對(duì)和生成序列。
A2:是的,訓(xùn)練數(shù)據(jù)已經(jīng)相當(dāng)豐富,已經(jīng)包含了這些所謂的技能。
Q3:那么,如果我們?cè)黾舆@些數(shù)據(jù)集,是否可以進(jìn)一步提升模型性能?
A3:是的,您說(shuō)得對(duì)。我認(rèn)為,這個(gè)框架的優(yōu)點(diǎn)之一是它沒(méi)有任何限制,不必局限于特定的技能集。只要有一種方法可以將新的技能集打包成輸入輸出的形式,我們就可以使用相同的訓(xùn)練方法對(duì)模型進(jìn)行訓(xùn)練。
Q4:好的,接下來(lái)是第二個(gè)問(wèn)題,就是關(guān)于SuTI的技能點(diǎn)如何與具體的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)相對(duì)應(yīng)。
A4:我認(rèn)為我剛才已經(jīng)在回答這個(gè)問(wèn)題了。我們的網(wǎng)絡(luò)結(jié)構(gòu)可以看作是一個(gè)注意力機(jī)制,它根據(jù)輸入的指令和輸出來(lái)自適應(yīng)地進(jìn)行調(diào)整。不同的技能通過(guò)輸入輸出的方式傳遞給模型,然后模型自己進(jìn)行泛化。這可以類(lèi)比為一種指令調(diào)整的感覺(jué),你提供不同的指令,就會(huì)得到不同的輸出。網(wǎng)絡(luò)結(jié)構(gòu)本身并沒(méi)有太多變化,它僅僅是一個(gè)正常的擴(kuò)散模型。
Q5:事實(shí)上,我認(rèn)為更好的方法是技能實(shí)際上是由數(shù)據(jù)來(lái)定義的,而不需要在結(jié)構(gòu)上進(jìn)行特殊處理。
A5:對(duì),技能就是這樣的,實(shí)際上這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)可以被視為是一個(gè)很廣義的注意力機(jī)制。不同的技能被打包成輸入輸出格式,并提供給模型,然后模型就可以進(jìn)行相應(yīng)處理。當(dāng)然,這個(gè)問(wèn)題會(huì)在后面進(jìn)一步討論,對(duì)吧?目前這五個(gè)技能不需要對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特殊的調(diào)整。但是對(duì)于我們新增加的一些技能,可能需要進(jìn)行結(jié)構(gòu)上的調(diào)整。比如說(shuō),如果要為人物提供一些關(guān)鍵點(diǎn)(key point)或面部網(wǎng)格(face mesh),這些新的控制信號(hào)需要用新的編碼器進(jìn)行編碼,不能再使用之前Unet的下采樣層。因?yàn)樵谶@種情況下,我們的網(wǎng)絡(luò)假設(shè)你輸入的控制信號(hào)是一張正常的圖像,但是如果存在其他信號(hào),如坐標(biāo)等,那么網(wǎng)絡(luò)架構(gòu)可能需要進(jìn)行重新調(diào)整,添加新的注意力機(jī)制以處理這些新的控制信號(hào)。
Q6:是的,這實(shí)際上也解答了我想問(wèn)的問(wèn)題。確實(shí),如果將其與Control Net等工作結(jié)合,可能會(huì)產(chǎn)生更多有趣的結(jié)果。
A6:事實(shí)上,我們當(dāng)前的模型版本已經(jīng)能夠與Control Net結(jié)合。盡管在這篇論文中還沒(méi)有詳細(xì)描述,但例如,對(duì)于一些小黃鴨這樣的對(duì)象,它們可能只有一種姿勢(shì),與控制相關(guān)可能不太有意義。然而,對(duì)于一只狗這樣的對(duì)象,由于它可能有多種姿勢(shì),我們可以繪制出類(lèi)似于在空中的軀干形狀,然后我們的模型可以將主體與這個(gè)軀干連接起來(lái),從而呈現(xiàn)出特定的姿勢(shì)。
Q7:好的,還有最后一分鐘。接下來(lái)我提出最后一個(gè)問(wèn)題,這里是關(guān)于使用同一編碼器將文本圖像對(duì)齊到同一領(lǐng)域的方法。除此之外還有其他方法嗎?
A7:還有其他方法嗎?還有一個(gè)方法,就是不使用相同的編碼器。例如,你可以使用其他的編碼器,如CLIP、BLIP等。然而,我們的實(shí)驗(yàn)發(fā)現(xiàn),這些方法的效果并不是特別好。當(dāng)然,我們之前使用的那些編碼器的參數(shù)量并不是很大,但是現(xiàn)在有一些更大的編碼器,如22B的[1]等等,可能會(huì)有更大的特征圖,使模型能夠在一個(gè)共同的領(lǐng)域內(nèi)進(jìn)行attention。因?yàn)槲覀兊哪P蛷?fù)用了相同的編碼器,它們共享了原始模型的encoder,所以它們通過(guò)這個(gè)特征圖,基本上是在相同的特征空間中進(jìn)行操作。