<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          讀了14篇論文,終于會拿捏Diffusion了!

          共 14562字,需瀏覽 30分鐘

           ·

          2022-12-02 00:46

          作者丨中森 來源丨 李rumor 編輯丨極市平臺

          導(dǎo)讀

          ?

          本文以時間順序和技術(shù)體系的更迭順序簡單地梳理一遍過去兩年來使用擴(kuò)散模型進(jìn)行受控圖像生成方法的發(fā)展。 ?

          擴(kuò)散模型自2020年的DDPM以來,以其種種優(yōu)異的特性(如訓(xùn)練簡便,對數(shù)據(jù)分布擬合效果極好,本身的構(gòu)造體系使得性質(zhì)調(diào)控更加優(yōu)雅直接等),在兩年來橫掃整個學(xué)術(shù)界,甚至出圈引起了廣泛的大眾討論。每一天都會有新的文章新的方法被提出,但因為領(lǐng)域發(fā)展得實在太快,這些文章往往基于不同階段的擴(kuò)散模型成果添磚加瓦,使得其在短至發(fā)表幾個月后就已落伍或只有參考意義。

          如果對整個擴(kuò)散領(lǐng)域發(fā)展的脈絡(luò)沒有大致的認(rèn)識,往往在閱讀論文時無法評判其方案對于目前所使用的文生圖模型的可遷移性或可復(fù)現(xiàn)性。今天這篇文章筆者將以時間順序和技術(shù)體系的更迭順序簡單地梳理一遍過去兩年來使用擴(kuò)散模型進(jìn)行受控圖像生成方法的發(fā)展。以為未來更好地開展工作打好基礎(chǔ)。

          (預(yù)警,接下來會解讀14篇論文)

          dd6f36f692f1bbc2b3c867d410f21f0d.webp

          具體來說,文章分三大部分:

          • 第一部分是DDPM時代的圖像編輯。因為還沒有任何的引導(dǎo)生成技術(shù)的出現(xiàn),這一階段的論文都屬于利用輸入圖像引導(dǎo)生成的范式。
          • 第二部分是在顯式分類器引導(dǎo)生成技術(shù)出現(xiàn)后,基于CLIP模型的多模態(tài)引導(dǎo)生成技術(shù)的調(diào)研。
          • 第三部分是最近(2022.11)一兩個月基于Stable-Diffusion/Imagen等一系列模型所產(chǎn)生的圖像編輯技術(shù)的調(diào)研。

          P.S. 本文主要針對不同的受控生成方法提供一個簡要介紹和直觀理解,可能不會涉及太多的公式推導(dǎo)和具體實現(xiàn)細(xì)節(jié),只從宏觀角度描述。具體的一些相關(guān)數(shù)理推導(dǎo)感興趣的可以參考筆者放在最尾的一些筆記鏈接,細(xì)節(jié)可以參照原文。

          今天我們見到的大部分爆款的應(yīng)用,調(diào)控生成的app,或者初創(chuàng)產(chǎn)品的原型都可以在下面這些論文里找到影子,筆者也在做相關(guān)調(diào)控的實驗時在不同論文里汲取了很多養(yǎng)分,但本篇筆記將不會對此展開討論。如果有興趣一起探討技術(shù)細(xì)節(jié)或者合作科研的小伙伴可以通過文末的聯(lián)系方式私信,或者在知乎搜索用戶中森聯(lián)系筆者。

          擴(kuò)散模型極簡回顧

          以下是DDPM擴(kuò)散模型的極簡回顧,具體的推導(dǎo)可以參考筆記[1]。

          擴(kuò)散模型的名字來源于其對于輸入構(gòu)建了一個離散步驟的馬爾可夫鏈,不斷加入隨機(jī)噪聲直至其成為無法辨識的純噪聲為止的前向過程。這個過程對應(yīng)著分子熱動力學(xué)里的擴(kuò)散過程。而模型學(xué)習(xí)的則是如何從噪聲分布里出發(fā),逐漸去除噪聲將圖片還原至原始的數(shù)據(jù)分布中。下面這張圖非常直觀地展示了這個前向的加噪過程。

          ec7a2f3961f9415ce646072528239fe8.webp

          而對于這個前向過程,宋飏博士在其獲得了2021-ICLR-Outstanding-Paper-Award的論文里證明了DDPM里的離散加噪只是連續(xù)時間里的隨機(jī)過程的離散化形式。而對于前向的擴(kuò)散過程和后向的去噪過程都有相對應(yīng)的隨機(jī)微分方程和常微分方程表示。并且DDPM的優(yōu)化目標(biāo)(預(yù)測每一步所添加的噪聲)實際上可以理解為學(xué)習(xí)一個當(dāng)前輸入對目標(biāo)數(shù)據(jù)分布的最優(yōu)梯度方向。這實際上非常符合直覺:即我們對輸入所添加的噪聲實際上使得輸入遠(yuǎn)離了其原本的數(shù)據(jù)分布,而學(xué)習(xí)一個數(shù)據(jù)空間上最優(yōu)的梯度方向?qū)嶋H上便等同于往去除噪聲的方向去行走。

          另一方面,與宋飏博士同組的宋佳銘博士則在其另一篇工作DDIM里開啟了DDPM加速采樣的序幕。在此之前,我們使用DDPM對同一張圖像加噪后再去噪我們是無法得到同一張圖像的(除非固定隨機(jī)數(shù)種子)。但在DDIM里宋博士證明了我們可以不止可以在后向去噪時使用確定性的常微分方程來得到確定性的采樣結(jié)果,我們在前向擴(kuò)散時也可以通過構(gòu)造后向的常微分方程的逆過程來得到前向的最終加噪結(jié)果(這句話實際是在說如果我們有一條確定性的路徑,那么前向和后向過程無非是正著走一遍和反著走一遍而已。)。這個結(jié)論使得擴(kuò)散生成變得高度可控,不用擔(dān)心對一張圖的前后向得到完全不一樣的圖片使得一系列的調(diào)控成為可能。這篇工作也將會高頻出現(xiàn)在我們接下來談?wù)摰囊幌盗姓撐睦铩?/p>

          上面兩段里加粗的字體是理解這篇脈絡(luò)梳理里其余論文的基石。下面筆者將介紹的各篇論文都或間接或直接地來自于這兩個洞見。有興趣的讀者可以參考筆記[1][2]。但理解本文接下來的受控圖像生成方法不需要理解其背后的數(shù)理推導(dǎo)。

          0bc0b5bfd95dd812ec2f4086c257e915.webp基于迭代去噪過程的圖像編輯

          IVLR:Conditioning Method for Denoising Diffusion Probabilistic Models

          這篇論文是直接基于DDPM的工作上展開的受控圖像生成。其主要針對的痛點是DDPM的隨機(jī)性太高無法確定性的生成,導(dǎo)致我們很難控制模型生成帶有我們想要的語義信息的圖片。其核心思想非常地簡潔但精巧:我們的前向和后向是一個等長的過程。其中前向時原數(shù)據(jù)的信息逐漸丟失(先丟失高頻信息再丟失低頻信息)而后向時信息逐漸從純噪聲中補(bǔ)全(先補(bǔ)全低頻信息再到高頻信息)。如果我們記錄下前向過程里每一步的噪聲圖像,將其與后向過程中的噪聲圖像混合,我們就可以影響后向過程的生成結(jié)果(考慮極端情況完全替換后向過程的噪聲圖像的話則一定可以輕易地回到原圖)。而我們通過影響混合時注入的前向信息的多少,或者后向時注入信息的時間步的多少,可以控制所生成的圖與原圖的相似程度。具體來說,其算法如下:其中是一個低通濾波器加上一系列降維再升維保持圖像維度不變的過程。

          b293b0d6b37d318db69bd5522e068708.webp

          很明顯,我們可以通過控制降維再升維的倍數(shù)來控制信息的留存比例。也可以通過噪聲在后向過程里添加的時間步多寡來調(diào)整控制的強(qiáng)弱。通過原論文里的兩張圖可以看到,隨著壓縮倍數(shù)的增加,其細(xì)節(jié)信息的缺失會導(dǎo)致最終生成的結(jié)果與原圖的語義差別加大。同樣的趨勢可以在后向去噪時施加影響的終止步數(shù)上看到。越早終止施加,則語義差別越大。

          2e98765a8655247fbc51ca35474d1b32.webp67c5eb530a849bd8aaefb4ca5c079b06.webp

          總結(jié)一下這篇論文的優(yōu)缺點。無需額外訓(xùn)練,需要調(diào)控的超參不多,并且直觀易懂。但適用場景也比較局限無法局部調(diào)整只能全局修改,并且只能保留原有圖像的空間布局,無法做到改變姿勢角度等變化,且無法精細(xì)化地控制生成的圖像的性質(zhì)。

          SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations

          這篇文章和上一篇IVLR是同一時間段的工作,只比其早了四天,來自于宋飏和宋佳銘兩位博士的整個組包括導(dǎo)師似乎都掛名了這篇論文。其核心思想同樣非常優(yōu)雅直觀:我們在上面提到,擴(kuò)散的前向過程實際是個圖像語義信息不斷被噪聲掩蓋的過程,并且總是從高頻信息開始到低頻信息。IVLR里實際用了低通濾波和下上采樣來抽取出低頻信息來影響后向去噪過程。那么我們是否可以直接省略這一步直接讓前向過程不要加噪到純噪聲,而是加噪到中間過程使其保留一些低頻信息不就好了嗎?下圖直觀地體現(xiàn)了這個過程,其中t0就是前向加噪的比例。通過調(diào)控信息保留的多少,我們也同樣調(diào)控了生成與原圖之間的相似程度。

          2034b8a219567afce800859e362d0db9.webp

          這兩篇工作的核心思想非常接近。只是論述方式和實驗分析略有不同。

          RePaint: Inpainting using Denoising Diffusion Probabilistic Models

          這篇工作略晚于以上兩篇工作,核心思想也非常接近,但略有不同的是針對其只能全局修改的痛點增添了對圖像的MASK操作,將任務(wù)轉(zhuǎn)變?yōu)榱藞D像補(bǔ)全任務(wù),使得局部修改成為可能。

          具體來說,論文作者的思路依然是我們在前向擴(kuò)散時,依然記錄每一步的噪聲圖像。在后向去噪時,我們將未被掩碼的區(qū)域從前向的記錄里抽取出來,而被掩碼的區(qū)域則由噪聲填充,拼合成一張完整的圖后我們開始迭代去噪。之后每一步都更新未掩碼區(qū)域為前向的記錄部分,而掩碼區(qū)域更新為后向去噪的結(jié)果。做法如下圖所示

          c590fd837d50c127ee8b1287e5ee3eea.webp

          但是這個簡單的做法會有一個很大的弊端就是掩碼的區(qū)域里所有的信息實質(zhì)上是被全部丟棄的,重新生成的結(jié)果往往在局部語義上是自洽的但是沒有考慮到全局語義。比如以下這個例子,對比最左邊的原圖與我們樸素的做法產(chǎn)生的結(jié)果我們可以看到,盡管掩碼部分重新生成的結(jié)果與周圍的材質(zhì)和顏色接近,但在全局語義上這張圖明顯是不自洽的。

          78f686e55326512b9a2c2c1e2a31751f.webp

          于是作者提供了一個非常有啟發(fā)性的洞見:我們在后向去噪時,考慮的拼合圖像里包含了原圖前向擴(kuò)散的靜態(tài)輸出,即使我們在后向去噪時不斷地試圖生成語義一致的內(nèi)容,但圖像里的未掩碼區(qū)域都會在下一步被替換成沒有考慮后向生成過程的前向擴(kuò)散輸出。導(dǎo)致了語義的不一致性。此外隨著去噪過程的逐漸深入,我們的方差也在逐漸減小,使得更正語義變得更為困難。 換句話說,模型需要更多的步驟來更正語義的不一致性。而作者具體的做法則是結(jié)合了以上兩點洞見。首先我們在每一步去噪的時候,我們重新將去噪后的拼合結(jié)果加一次噪聲至, 再重復(fù)同樣的后向去噪步驟。將以上這個過程重復(fù)n次,我們就得到了上圖里語義一致的輸出結(jié)果。這個做法分別對應(yīng)了未掩碼區(qū)域沒有考慮后向生成結(jié)果的問題和需要更多步驟生成的問題。

          這篇論文最大的出彩之處可能在于以上筆者介紹的精彩洞見(該算法集成在了Huggingface的diffusers庫里)。但受限于其框架依然是基于迭代去噪過程的無條件生成的DDPM模型(即不條件于文本圖像或類別等信息的生成),其對掩碼區(qū)域所能做的調(diào)控依然非常有限,只能借助于隨機(jī)性重新生成。下面筆者將介紹基于顯式分類器引導(dǎo)的圖像生成。

          基于顯式分類器的圖像引導(dǎo)生成

          在上面關(guān)于擴(kuò)散模型的極簡回顧里,筆者提到擴(kuò)散模型的優(yōu)化目標(biāo)本質(zhì)上是在數(shù)據(jù)空間擬合一個前往目標(biāo)數(shù)據(jù)分布的最優(yōu)梯度方向那么很自然地,如果我們想要做引導(dǎo)生成,我們可以用貝葉斯定理將基于條件生成的梯度拆解成一個基于顯式分類器的梯度和一個常規(guī)的無條件生成的梯度。 換句話來說,我們依然可以使用之前DDPM的方式繼續(xù)訓(xùn)練一個無條件生成模型,我們現(xiàn)在只需要額外訓(xùn)練一個新的基于噪聲輸入的分類器就可以了。

          45433b5786b298a4f924aeecfaf90077.webp

          實際上以上關(guān)于顯式分類器的想法更早提出于宋飏博士的Diffusion SDE的論文,但只在結(jié)尾占了很小的篇幅。目前討論分類器圖像引導(dǎo)生成的主要引用的是以下這篇論文。

          Diffusion Models Beat GANs on Image Synthesis

          這篇論文有數(shù)個重要的貢獻(xiàn)點,包括對UNet架構(gòu)的探索,更高的生成質(zhì)量,顯式分類器在DDPM,DDIM的具體算法及其推導(dǎo),條件引導(dǎo)生成質(zhì)量和多樣性的取舍等。篇幅所限,本筆記只談?wù)撈湟龑?dǎo)生成的部分。

          具體來說,該論文使用UNet里的前半段下采樣的部分加了個Attn Pooling的結(jié)構(gòu)來當(dāng)分類器。訓(xùn)練數(shù)據(jù)是DDPM在訓(xùn)練時的加噪結(jié)果加上一些增廣策略。在具體使用梯度引導(dǎo)時,作者發(fā)現(xiàn)如果只按1比1的比例增加梯度引導(dǎo)時,引導(dǎo)效果并不好。所以一個直觀的想法就是加大引導(dǎo)梯度的強(qiáng)度,使其類別性質(zhì)更明顯。如下圖所示,使用比例為一的梯度引導(dǎo)生成威爾士柯基時,效果并不好,類別指定的影響不明顯。但當(dāng)比例放大為十的時候,效果就很直接了。

          af94a222e9f70e2c293ae0bfc211c5b1.webp

          當(dāng)然,隨著引導(dǎo)的強(qiáng)度增強(qiáng),多樣性也會受到影響,簡單來說觀察這個等式。Z是因為取對數(shù)梯度引入的一項任意常數(shù),可以取值為我們歸一化的常數(shù)。那么實際上加大了引導(dǎo)強(qiáng)度后,我們是對一個更加集中的分布(更加臨近于眾數(shù)mode)做逼近。而這樣也自然使得生成的質(zhì)量會更好,但代價是生成多樣性的損失。

          3eaef9d442022150ba59f9d54ab756fb.webp

          這篇論文提出的圖像引導(dǎo)生成方法的優(yōu)點在于提出了一個權(quán)衡生成質(zhì)量和多樣性的方案。在當(dāng)時取得了比GAN更加優(yōu)異的效果。但是缺點也很明顯,因為在噪聲圖像上的分類判斷無法直接復(fù)用常見的分類模型,我們必須額外訓(xùn)練一個新的模型。并且只能按照類別生成限制了其使用場景,下面我們看一看基于CLIP的大規(guī)模文本圖像對齊的預(yù)訓(xùn)練模型可以如何極大地擴(kuò)大其使用場景。(關(guān)于CLIP模型的解釋可以參考附錄[6]里對CLIP的解讀)

          基于CLIP模型的多模態(tài)圖像引導(dǎo)生成

          More Control for Free! Image Synthesis with Semantic Diffusion Guidance

          在上面我們提到,基于顯式分類器的引導(dǎo)可以使得圖像生成指定的類別的圖像。而Semantic Diffusion Guidance(SDG)這篇論文最大的貢獻(xiàn)在于其擴(kuò)大化了P(y|x)的定義。實際上我們完全可以把分類引導(dǎo)的定義拓展為文字,圖像或者多模態(tài)的引導(dǎo)。 具體來說,我們可以將分類器重新寫成方程

          有了以上的定義,現(xiàn)在我們可以借助CLIP模型里文本和圖像之間對齊的表征來做一些損失計算了。具體來說,想要使用一個文本來引導(dǎo)圖像生成,我們可以每一步都計算現(xiàn)在的圖像表征和文本表征的距離,使用方程的梯度來計算縮小這個距離的方向。最簡單的方式莫過于余弦距離:

          7e671c7a464ec7204702bf7e03e4a30b.webp

          其中 代表圖像編碼器, 代表文本編碼器。

          在圖像上,我們同樣可以故技重施也使用余弦距離,但只使用余弦距離沒有考慮到空間信息和風(fēng)格信息。作者在這里使用了更加具體的損失。一個是考慮空間布局的對應(yīng)特征圖里對應(yīng)位置的L2范式差,和考慮風(fēng)格信息的對應(yīng)特征圖的Gram-Matrix(關(guān)于Gram-Matrix和風(fēng)格引導(dǎo)的關(guān)系可以參考論文Demystifying Neural Style Transfer).

          8c7abe008c771e9c6fa25b890ab8d48d.webp89eeb07c4a7ed5521f2b791910727fc1.webp

          其中注意上文的圖像編碼器都是針對噪聲輸入xt的編碼器,所以作者重新訓(xùn)練了CLIP里的圖像編碼器。其中架構(gòu)上在BatchNorm里偏置和縮放都改為依賴于時間步t。但是對于編碼器訓(xùn)練的損失作者沒有使用l2范式或MSE使噪聲圖像和干凈圖像的輸出對齊,而是同樣使用了CLIP的對比交叉熵?fù)p失來做匹配任務(wù)。 這點筆者認(rèn)為是更現(xiàn)實的損失設(shè)置,畢竟要求噪聲圖像里的卷積在漫長的時間步,變化極大的噪聲方差里達(dá)到相同的編碼效果非常不現(xiàn)實。

          b1ba3f68ad2cf8e509964ea962e1189a.webp

          上圖對比了當(dāng)時的一些圖文引導(dǎo)的效果。我們可以看到同樣是圖片引導(dǎo),IVLR的引導(dǎo)只能固定整體的圖片布局。而SDG既可以生成更加多樣的姿態(tài),也可以保留相應(yīng)的姿態(tài)。而對于文本引導(dǎo)的生成其生成的圖像也更為多樣。

          那么總結(jié)一下優(yōu)缺點,SDG在當(dāng)時無疑是效果十分驚艷的。但就在十天之后OpenAI發(fā)布了GLIDE,使用了下面會提到的隱式分類器引導(dǎo)的圖像生成。于是這篇論文背后的技術(shù)就徹底地被掃進(jìn)了歷史的塵埃。從中也可以看到這個領(lǐng)域的進(jìn)展有多么可怕。但盡管如此,這篇論文其中的洞見以及引導(dǎo)生成的方式依然值得我們學(xué)習(xí)。而這個技術(shù)方案最大的缺點依然是基于分類器所需要的額外模型訓(xùn)練的負(fù)擔(dān)。

          Blended Diffusion for Text-driven Editing of Natural Images

          和這篇文章的思路一脈相承的還有Blended Diffusion這篇論文。一樣是在DDPM生成的時候做額外的梯度引導(dǎo),只是額外添加了MASK的操作,使得文本引導(dǎo)可以只針對具體的某個區(qū)域更改。

          具體來說,作者嘗試了兩種思路。第一種是掩碼區(qū)域用CLIP做文本引導(dǎo),非掩碼區(qū)域用MSE和LPIPS兩樣損失來保證非掩碼區(qū)域不變(MSE是像素和像素間的差別,而LPIPS是塊和塊間的感知損失)。但這種保證背景不變的方法往往要將非掩碼區(qū)域的損失加權(quán)到將近上萬倍才能保持背景大致不變。于是作者就干脆讓背景部分保持不變,每一步只用CLIP的引導(dǎo)損失(余弦距離)計算掩碼區(qū)域的引導(dǎo)梯度。

          9b87f1fcc6d2f30f419a15d7706a79d9.webp

          具體算法如上圖所示。其中值得一提的是作者其實沒有訓(xùn)練一個基于噪聲輸入的CLIP。 而是在每一步的時候使用從xt預(yù)測的噪聲來預(yù)估干凈的圖像x0。而因為CLIP計算損失時使用的是預(yù)估的X0,其效果可能出現(xiàn)了相應(yīng)的下降,導(dǎo)致了語義更新的效果不明顯。于是作者使用了增廣的做法求CLIP損失在增廣集上的損失來降低方差,增強(qiáng)引導(dǎo)效果。

          筆者認(rèn)為這篇論文最有意思的地方不在于其對MASK的使用,而是在于其不訓(xùn)練新的CLIP和使用增廣數(shù)據(jù)的平均梯度來引導(dǎo)的做法。

          DiffusionCLIP: Text-Guided Diffusion Models for Robust Image Manipulation

          上面兩篇文章的做法都是基于CLIP的損失來引導(dǎo)擴(kuò)散模型的生成,其做法本身不需要對擴(kuò)散模型做任何微調(diào)和修改。但Diffusion-CLIP這篇論文比較有意思的點在于,與其將我們的梯度應(yīng)用于中間噪聲輸出的更新,或許可以試一試直接更新底層的擴(kuò)散模型使得其生成貼合CLIP的預(yù)期。其中損失函數(shù)的定義如下,分為兩項。

          aa9ecd416a7368636c6a1c9621012a2e.webp

          第二項id_loss很好理解,主要是我們根據(jù)噪聲輸入xt預(yù)測的干凈圖像x0應(yīng)該和真正的干凈圖像一致。是一個L1范式的損失。但第一項L-direction比較有意思。上面我們提到過余弦損失函數(shù)有一些缺點,比如其引導(dǎo)后生成的多樣性低,其引導(dǎo)容易效果不明顯(類似于對抗攻擊)。 而下面定義的這個新?lián)p失函數(shù),其中delta_T是原文本和目標(biāo)文本向量間編碼的差,delta_I是原圖像和預(yù)測圖像編碼向量的差。用一件去這兩個差值的余弦距離就是我們的新?lián)p失函數(shù)。

          7dad5f81dd8d7eb8184beeb422228fd9.webp

          這個損失是由CLIP的作者也是GPT系列的作者Alec-Radford提出來的。這個損失使用了目標(biāo)文本間的方向差來指導(dǎo)編碼圖像間的方向,使得生成的效果多樣性得到提升。另一方面也緩解了上面的模式坍塌,引導(dǎo)效果不好的表現(xiàn)。

          除此之外,筆者在文章開頭時提到了DDIM可以使得我們對一張圖擴(kuò)散后,再去噪生成時仍能精確復(fù)原原圖。Diffusion-Clip也使用了類似的技術(shù)。但總結(jié)來說,這篇論文針對每一個新的性質(zhì)引導(dǎo)(即新的目標(biāo)提示y_tar)都需要重新訓(xùn)練一個新的擴(kuò)散模型使得該技術(shù)路線相對其他受控圖像生成沒有任何優(yōu)勢。

          Diffusion Models Already Have a Semantic Latent Space

          這篇論文是一篇來自2023的ICLR會議投稿論文,目前仍在評審中。標(biāo)題起得非常引人注目。全文的核心思想承接Diffusion-Clip,依然是使用CLIP的損失對擴(kuò)散模型進(jìn)行微調(diào)。但不同的是,作者認(rèn)為無需微調(diào)整個擴(kuò)散模型,而只需微調(diào)擴(kuò)散模型里UNet架構(gòu)里最中間的那一層就可以了。作者稱該層是h-space, 也就是題目里的語義潛在空間。除此之外,論文的亮點還包括將DDIM采樣時做擴(kuò)散引導(dǎo)的整體流程拆成了三個部分。第一個部分是有引導(dǎo)部分。第二部分是無引導(dǎo)無方差的DDIM采樣,第三部分是使用DDPM采樣。我們知道DDIM的采樣生成質(zhì)量其實是低于DDPM的(或者說SDE雖然采樣速度慢但生成效果比ODE好,這個現(xiàn)象直到最近才被解決,關(guān)于DDIM采樣質(zhì)量為何更低有興趣的讀者可以對比筆者的理解在附錄[2]下和筆者討論)。所以這篇論文針對這個現(xiàn)象,將引導(dǎo)拆成的三部分對應(yīng)了幾個問題:首先圖像的空間布局整體語義等低頻信息是在去噪的早期被決定的,所以引導(dǎo)可以只放在早期。其次我們可以兼顧采樣的速度只在生成最終的高頻信息時切換回DDPM。同時如果過長的DDPM生成,因為其方差項或者說SDE的隨機(jī)性存在,過長的第三階段可能會更改圖片的語義信息。所以這個階段作者經(jīng)驗性地設(shè)為了全局去噪長度的四分之一。

          這篇文章給出的圖片生成效果十分驚艷。但具體仍有幾個缺陷。其一是文章最重要的理論theorem 1的推導(dǎo)是基于一個錯誤的前提,導(dǎo)致整個推導(dǎo)是錯誤的。其二是關(guān)于hspace為何有效為何是UNet的最中間層沒有足夠說明。其三是該論文的做法依然與Diffusion-Clip一樣需要每一個性質(zhì)訓(xùn)練一個新的模型,哪怕這個模型可遷移性較好,訓(xùn)練成本較高依然難以讓人接受。

          筆者這篇筆記大體是以時間和技術(shù)體系更迭的順序?qū)懙摹R陨系乃姓撐亩际侵苯踊跓o條件生成的語義引導(dǎo)所做的工作。隨著新的更強(qiáng)大更便捷的模型如Stable-Diffusion, Imagen等如雨后春筍般涌現(xiàn),上面的各項工作可能只剩下了借鑒意義。

          基于隱式分類器的文生圖大模型

          Classifier-Free Diffusion Guidance

          上面我們提到了顯式分類器需要額外訓(xùn)練一個分類器,并且往往會造成多樣性下降的特點。這篇論文最大的貢獻(xiàn)在于提出了一個深刻的洞見:即我們可以用貝葉斯將顯式分類器的梯度引導(dǎo)再拆解為兩項其中一個是無條件生成的梯度預(yù)估模型(例如常規(guī)的DDPM),另一個是基于條件生成的梯度預(yù)估模型(條件生成可以建模為UNet+cross-attention)。而我們甚至可以使用同一個模型同時表示兩者,區(qū)別只在于生成時是否將條件向量置為零即可。(具體的數(shù)學(xué)推導(dǎo)可以參照附錄[4])

          a36e252389817debcdbed0cedbe34a91.webp

          一方面這大大減輕了條件生成的訓(xùn)練代價(無需訓(xùn)練額外的分類器,只需要在訓(xùn)練時進(jìn)行隨機(jī)drop out condition來同時訓(xùn)練兩個目標(biāo)),另一方面這樣的條件生成并不是以一個類似于對抗攻擊的方式進(jìn)行的。而同時,仔細(xì)觀察我們上面的采樣式子,實際上它是兩個梯度的差值所形成的。如果有玩過stable-diffusion-webui的讀者可能會注意到其中一個feature是negative prompt. 也就是使用者可以指定不想要出現(xiàn)的提示,讓生成不會包括該內(nèi)容。其實現(xiàn)方式實際上就用了上面這個無分類器引導(dǎo)的公式。將無條件生成轉(zhuǎn)為帶著你不想要的提示的條件生成。

          無分類器引導(dǎo)可以說是GLIDE/Stable-Diffusion/Imagen的做法的直接奠基工作之一。 在此之前要做到多模態(tài)或者說文生圖的引導(dǎo)生成,通常大家用的是clip模型,來對生成的圖像和文本的距離做一個損失差值,用這個差值來引導(dǎo)多模態(tài)生成。但有了classifier-free這篇論文之后,文生圖或者圖生圖都可以用一個模型,以cross-attention的方式條件于該信息來引導(dǎo)生成,并且生成效果更好更精確。這也使得前序的相當(dāng)多工作,只剩下了借鑒意義。

          限于篇幅,在這個章節(jié)里筆者將不會對Stable-Diffusion/Imagen/Glide等論文背后的技術(shù)做詳細(xì)解析,感興趣的可以在附錄[6]里查看。

          在隱式分類器上引導(dǎo)生成過程中的調(diào)控生成

          梳理了上面的多篇論文后,我們終于在時間上趕上了最新的文生圖時代(2022.11)。以下筆者將介紹一些直接基于這個時代的文生圖模型如Stable-Diffusion/Imagen做引導(dǎo)生成的論文。其中筆者將其粗略地分為了兩類,一類是需要微調(diào),一類是不需要微調(diào)的技術(shù)路線。他們各有千秋。下面筆者將首先介紹一些谷歌系列的基于Imagen模型所做的引導(dǎo)生成工作。他們都需要微調(diào)且核心思想都非常接近。注意其中不少做法也可以遷移到SD上。

          在前序我們介紹的一系列論文里,我們介紹了幾種引導(dǎo)生成的做法。第一種是根據(jù)擴(kuò)散模型迭代去噪的特性,我們在模型的低頻細(xì)節(jié)上繼續(xù)生成。這種做法雖然能保留大部分幾何特征,但是也同樣無法調(diào)控幾何特征。 舉個例子,如果迭代去噪的原圖是一張站立的人像,我們無法通過模糊化重新生成來改變他的姿態(tài)。我們可以調(diào)控加噪的強(qiáng)度,讓他隨機(jī)變成新的圖像。但即使是我們加上了語句的引導(dǎo),我們也無法在引導(dǎo)后保留原目標(biāo)的特征(如人像的外觀)。

          從傳統(tǒng)的思維去思考如何達(dá)成對目標(biāo)物體的調(diào)控的話,可能會涉及到語義分割,再根據(jù)條件引導(dǎo)調(diào)控所分割的物件的各項性質(zhì)。但從這篇論文開始起,下列的四篇論文都是一個核心思想。通過對生成模型的微調(diào),使其將對應(yīng)物體的視覺信息與一個特殊的字符綁定起來(如同樹的視覺外觀與樹這個字符的綁定一樣),之后再將其當(dāng)作正常的語言字符使用來添加調(diào)控信息。 打個比方,將一顆有具體形象的樹用字符x來表示之后,用戶可以指定“正在燃燒的x”,“發(fā)光的x”來使模型對指定形象的樹進(jìn)行修改。

          Imagic: Text-Based Real Image Editing with Diffusion Models

          具體來說,Imagic將概念綁定這件事拆成了三個步驟,對于輸入圖像x和我們希望生成的目標(biāo)描述文本text_target來說:

          1:我們首先凍結(jié)整個模型,使用模型訓(xùn)練時的生成目標(biāo)來微調(diào)text_target的文本表征,使其接近于圖像的表征。

          2:我們放開整個模型的權(quán)重更新,依然使用訓(xùn)練時的生成目標(biāo),但這次全模型微調(diào)。模型的輸入是圖像x和我們微調(diào)后的文本表征。這一步是因為哪怕我們讓目標(biāo)文本表征和原圖的表征接近了,也不能保證我們輸入讓我們微調(diào)后的目標(biāo)文本表征可以生成我們的原圖,所以我們再次將這兩個概念一起訓(xùn)練,使得我們可以使用微調(diào)后的目標(biāo)文本表征生成我們的原圖

          3:既然我們已經(jīng)將原圖和微調(diào)后的新文本表征綁定起來了,現(xiàn)在我們再使用原本的目標(biāo)文本表征與微調(diào)后的文本表征做插值,來對原圖像施加影響即可。

          這三步有一點繞,但簡單來講可以將微調(diào)后的目標(biāo)文本表征近似當(dāng)作原圖像原生的文本表征,那么最后一步使用目標(biāo)表征對原生的表征施加影響就非常自然了。

          ae53311030b3ef29a96ae9d3ceef4ed5.webp

          注意上圖里SDEdit無法改變空間布局,而Imagic可以改變狗的姿態(tài)動作而不影響背景的特點。

          當(dāng)然,這篇文章也有一些細(xì)節(jié)的地方需要注意,比如第一步微調(diào)時不能過久,使新的文本表征過分遠(yuǎn)離原本的目標(biāo)文本表征,這會使得線性插值失效。

          UniTune: Text-Driven Image Editing by Fine Tuning an Image Generation Model on a Single Image

          相比于Imagic的做法,這一篇作者的做法更加偏工程調(diào)參和不具有泛化性一些。具體來說依然是概念綁定。作者分為兩步:

          1:第一步先選定一個低頻的詞匯或者干脆就是隨機(jī)組合的字符詞如"beikkpic",這樣可以最小化其原有含義的影響。接著對整個模型微調(diào)這個低頻詞和原圖像的組合,使其概念捆綁。

          2:第二步時則使用微調(diào)的模型對“[低頻詞]+目標(biāo)引導(dǎo)描述”生成。如"beikkpic a monster"

          其中,作者發(fā)現(xiàn)如果僅僅是使用簡單的文生圖策略,目標(biāo)引導(dǎo)基本失效。于是作者使用了以下一些技巧:使用前面提到的無(隱式)分類器引導(dǎo)配合一定的權(quán)重放大目標(biāo)引導(dǎo)的影響。 我們可以看到隨著權(quán)重的增加,影響的效果也在逐漸強(qiáng)化。其次,作者為了保證盡量生成與原圖接近的結(jié)果,也同樣使用了類似上面提到的SDEdit的做法,從原圖的中間噪聲結(jié)果出發(fā)重構(gòu),而不是從純噪聲出發(fā)重構(gòu)來增強(qiáng)一致性。最工程性的一點是原作者還實驗了將生成圖和原圖做像素間的插值可以提升一些生成圖片的質(zhì)量。

          1e550db093d0f386f03c529e2052c111.webp

          要說這篇文章的缺點很明顯來自兩方面,一方面這個文章的做法雖然通過概念綁定使得額外的性質(zhì)調(diào)控成為可能,但其類似于SDEdit的做法也使得其所有結(jié)果的幾何構(gòu)圖都和原圖一致。無法像Imagic一樣做到姿態(tài)改變等。而第二個缺點則很明顯是這篇文章的做法太過經(jīng)驗性,需要不斷的調(diào)試,泛化性值得懷疑。

          DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

          相比于前兩篇文章,這一篇文章無論是從做法的優(yōu)雅程度上,還是流傳度和知名度來說,都勝過不少。

          具體來說作者提出了使用稀缺詞加種類詞如“beikkpic dog”的組合文本來微調(diào)一組照片和這個文本的綁定。但是僅僅用少量的照片來微調(diào)一個有著大量參數(shù)的模型很明顯會帶來極為嚴(yán)重的過擬合。并且還會帶來一個語言模型里特別常見的事情--災(zāi)難性遺忘。這兩個問題的表現(xiàn)一個是綁定詞的形態(tài)很難變換,就如上篇的Unitune一樣。另一個問題是對種類詞里面的種類生成也會快速失去多樣性和變化性。于是針對這個問題作者針對性地提出了一個叫自身類別先驗保存損失的損失函數(shù)。

          c70ea6376d7ef700caf74ca89dac4a3c.webp

          這個函數(shù)的設(shè)計是在用戶提供一個指定的類別和這個類別的一組圖片(如自家的寵物狗的多張照片)后,模型同時使用“特殊詞+類別”對用戶照片訓(xùn)練和“類別”與模型生成的該類別圖訓(xùn)練。這樣做的好處是模型可以在將特定的照片主體與特殊詞綁定的時候可以一起學(xué)到和其類別的關(guān)系,并且同時該類別的信息在不斷的被重申以對抗用戶照片信息的沖擊。作者在訓(xùn)練的時候特意將這兩個損失以一比一的比例訓(xùn)練了200個輪次左右。

          1f5d3985ab65ffd810ce1208593047a1.webp

          我們可以看到,生成的效果還是十分不錯的。兼具了多樣性以及可控性。雖然依然不是一個實時的算法,但訓(xùn)練成本不算很高,大約是10-15分鐘左右的GPU單卡時間。在Huggingface上有不少大眾訓(xùn)練的以各種風(fēng)格訓(xùn)練的DreamBooth-StableDiffusion并且代碼全部開源了。

          最后筆者將介紹兩篇無需微調(diào)的工作。他們同樣也可以在Imagen/SD上互相遷移。他們有一個特點就是無需一個顯式的Mask,可以只用文本來生成掩碼來找到文本對應(yīng)的修改位置,再輔以文本調(diào)控生成的手段。

          DiffEdit: Diffusion-based Semantic Image Editing with Mask Guidance

          我理解的之所以DiffEdit會叫這個名字,是因為可以拆成兩個部分。Diff + Edit。其中Diff不僅僅指擴(kuò)散Diffusion還可以指Difference差異。而事實上,這篇論文生成掩碼的方式靠的就是兩次擴(kuò)散的差異。

          bcb22aaec7858ea6ba4d7dc0971d0842.webp

          上面這幅流程圖清楚地揭示了整個算法的流程。首先我們將原圖片加上隨機(jī)的噪聲到達(dá)較為接近純噪聲的某個幅度(如五成至六成附近,這個比例是由實驗得出的)。接著我們再分別使用描述原圖片的原文本和目標(biāo)文本所去噪的結(jié)果的像素差值來得到一個掩碼(比如上圖里馬形的掩碼)。之后我們再使用DDIM的確定性加噪方式,將圖片加到一定程度后,使用類似前面我們提到過的方式分別處理掩碼區(qū)域和背景區(qū)域。

          當(dāng)然在生成過程中為了得到穩(wěn)定的掩碼類似我們前序提到過的數(shù)據(jù)增廣的方法也是必不可少,比如極值去除后的多次計算結(jié)果的平均后再映射至[0, 1]區(qū)間內(nèi)二值化。同時第二步里的DDIM的前向加噪比例實際上也調(diào)控了我們能有多長的區(qū)間來影響生成的步驟數(shù)。舉個例子,如果確定性加噪至百分百,當(dāng)然影響生成的時間更長,可往往生成的結(jié)果的偏差也越大。在下圖里可以清晰地看到這樣的趨勢。

          59e42b58785192b5fb8141c3ec324d10.webp

          這篇文章雖然需要更多次的前向和去噪過程,但其不需要額外訓(xùn)練的特點是其一大優(yōu)勢。其次盡管目前市面上大部分的文圖工具都配有掩碼生成的涂抹工具可以輕松獲得圖像的掩碼,但文字的調(diào)控依然在一些復(fù)雜的情景上,如要對整棵樹的花進(jìn)行改變的情況下比手動涂抹方式有優(yōu)勢。最后放上一張DiffEdit目前仍有缺陷的調(diào)控場景:

          0144a623385b1a1508351f50f6cac30d.webp

          Prompt-to-Prompt Image Editing with Cross-Attention Control

          這篇文章同樣也是2023年ICLR的投稿論文,不同于上一篇我們提到存在不少問題,這篇論文在OpenReview上獲得了8-8-8的一致高分。該論文以另一種方式得到掩碼來進(jìn)行精細(xì)化地調(diào)控。這篇文章的洞見來自于一個重要思考:即多模態(tài)里文生圖的文本是如何對生成過程施加影響的? 我們在前面提到過,基于隱式分類器的文圖模型是通過訓(xùn)練一個既可以做無條件生成的梯度預(yù)估,也可以做條件生成的梯度預(yù)估的模型實現(xiàn)的。而其中這個條件交互的方式在Imagen和Stable-Diffusion里都是通過cross-attention實現(xiàn)信息融合的。那么很明顯,我們的著眼點也應(yīng)該在cross-attention上。而作者的洞見則在于:我們輸入的文本和像素之間存在著一個空間對應(yīng)的關(guān)系。通過調(diào)控注意力和像素間的映射。我們能夠?qū)D像的不同區(qū)域?qū)嵤?zhǔn)確的引導(dǎo)。 這個洞見很好理解,我們知道注意力機(jī)制的本質(zhì)是加權(quán),是通過求向量間(在本場景是多模態(tài)的嵌入向量)的距離來得到一組權(quán)重的過程。具體來說,在transformer里運(yùn)用到的scaled-attention計算公式如下:

          f61819fed92bc21bb5ff51b0a443ac99.webp

          其中M就是我們的二維權(quán)重矩陣。M_ij代表第j個token對第i個像素的權(quán)重。作者稱這個矩陣為cross-attention-map。而觀察上式可以發(fā)現(xiàn),圖片的空間布局,幾何形狀等信息實質(zhì)上高度依賴于該注意力映射矩陣。并且文本和像素組成的空間信息存在明顯的對應(yīng)關(guān)系(如下圖里熊這個單詞與熊的外形輪廓高度重合)。

          540715129b2aea5c83c2f9a2f10651f6.webp

          有了以上洞見據(jù)此進(jìn)行圖像引導(dǎo)生成就很直觀了,作者將其分為三個主要場景:單詞替換(比如在上圖里將熊換成貓則將貓這個token對應(yīng)的map換成熊的map),單詞增添(在原有的map上增加新的單詞的map),注意力重加權(quán)(如果想放大或減弱某個詞對原圖的引導(dǎo)效果則對其map乘上新的權(quán)重值,如降低下雪的效果開花的程度等)。

          032870bb4ac15b743bf7f56801721cc4.webp

          其中一些值得注意的部分,比如體型相差過大的物體如熊和貓,作者通過調(diào)控map注入的步驟的多寡和不同的詞注入的時間來松弛map的約束。如果是局部修改,為了保證背景的絕對不變,作者也通過兩次不同的cross-attn-map的計算的差值得出一個mask之后再分別引導(dǎo)。方法和上面提到的DiffEdit非常相似。

          總結(jié)

          這篇筆記一次性梳理了最近十幾篇論文的核心要點,雖然極其繁瑣,但在筆者自身實踐文圖模型的受控引導(dǎo)生成時,發(fā)現(xiàn)遇到的不少問題其實已經(jīng)有先行者遇到過了。他們的思路和洞見給了筆者很多啟發(fā)。相信讀者在閱讀的時候也發(fā)現(xiàn),這其中的論文有不少都吸取了前序論文的思路和做法。但論文讀得再多,也終歸是要動手實踐的?,F(xiàn)在開源社區(qū)十分活躍開放,筆者早些時候也加入了開源大軍,借助一些項目實踐語義引導(dǎo)。歡迎多多交流。

          參考資料

          1. 擴(kuò)散模型背后的數(shù)學(xué):https://zhuanlan.zhihu.com/p/558937247
          2. DDIM如何加速采樣和進(jìn)行確定性采樣:https://zhuanlan.zhihu.com/p/578948889
          3. 擴(kuò)散模型與能量模型,隨機(jī)微分方程和常微分方程的關(guān)系:https://zhuanlan.zhihu.com/p/576779879
          4. 擴(kuò)散模型里的顯式和隱式分類器引導(dǎo)生成:https://zhuanlan.zhihu.com/p/582880086
          5. 擴(kuò)散模型在文本生成里的應(yīng)用:https://zhuanlan.zhihu.com/p/561233665
          6. Stable-Diffusion和其背后的相關(guān)論文詳解:https://zhuanlan.zhihu.com/p/572156692
          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操天天日天天插 | 免费在线观看无码视频 | 波多野结衣AV在线 | 久久躁日日躁AAAAXXXX | 热99精品|