DALL-E 2的工作原理原來是這樣!

  • 2022 年 4 月 21 日
  • AI

CLIP+修改版GLIDE雙管齊下。

作者 | Ryan O’Connor

編譯丨王玥

編輯 | 陳彩嫻

OpenAI的模型DALL-E 2於本月初發布,剛一亮相,便在影像生成和影像處理領域捲起了新的風暴。

只需要給到寥寥幾句文本提示,DALL-E 2就可以按文本指示生成全新影像,甚至能將毫不相關的物體以看似合理的語義方式組合在一起。

比如用戶輸入提示「一碗湯是另一個次元的入口」後,DALL-E 2便生成了以下的魔幻圖片。

「一碗湯是另一個次元的入口」 圖源://openai.com/dall-e-2/

DALL-E 2不僅能按用戶指令生成明明魔幻,卻又看著十分合理不明覺厲的圖片。作為一款強大的模型,目前我們已知DALL-E 2還可以:

  • 生成特定藝術風格的影像,彷彿出自該種藝術風格的畫家之手,十分原汁原味!

  • 保持一張圖片顯著特徵的情況下,生成該圖片的多種變體,每一種看起來都十分自然;

  • 修改現有影像而不露一點痕迹,天衣無縫。

感覺有了DALL-E 2,藝術家都可以下崗了。

DALL-E 2目前曝光的功能令人瞠目結舌,不禁激起了眾多AI愛好者的討論,這樣一個強大模型,它的工作原理到底是什麼?!


1

工作原理:簡單粗暴

“一隻在吹噴火喇叭的柯基」——DALL-E 2圖片生成流程解析 圖源://arxiv.org/abs/2204.06125

針對圖片生成這一功能來說,DALL-E 2的工作原理剖析出來看似並不複雜:

  1. 首先,將文本提示輸入文本編碼器,該訓練過的編碼器便將文本提示映射到表示空間。

  2. 接下來,稱為先驗的模型將文本編碼映射到相應的影像編碼,影像編碼捕獲文本編碼中包含的提示的語義資訊。

  3. 最後,影像解碼模型隨機生成一幅從視覺上表現該語義資訊的影像。



2

工作細節:處處皆奧妙

可是以上步驟說起來簡單,分開看來卻是每一步都有很大難度,讓我們來模擬DALL-E 2的工作流程,看看究竟每一步都是怎麼走通的。

我們的第一步是先看看DALL-E 2是怎麼學習把文本和視覺影像聯繫起來的。

第一步 – 把文本和視覺影像聯繫起來

輸入「泰迪熊在時代廣場滑滑板」的文字提示後,DALL-E 2生成了下圖:

圖源://www.assemblyai.com/blog/how-dall-e-2-actually-works/

DALL-E 2是怎麼知道「泰迪熊」這個文本概念在視覺空間里是什麼樣子的?

其實DALL-E 2中的文本語義和與其相對的視覺圖片之間的聯繫,是由另一個OpenAI模型CLIP(Contrastive Language-Image Pre-training)學習的。

CLIP接受過數億張圖片及其相關文字的訓練,學習到了給定文本片段與影像的關聯。

也就是說,CLIP並不是試圖預測給定影像的對應文字說明,而是只學習任何給定文本與影像之間的關聯。CLIP做的是對比性而非預測性的工作。

整個DALL-E 2模型依賴於CLIP從自然語言學習語義的能力,所以讓我們看看如何訓練CLIP來理解其內部工作。

CLIP訓練

訓練CLIP的基本原則非常簡單:

  1. 首先,所有影像及其相關文字說明都通過各自的編碼器,將所有對象映射到m維空間。

  2. 然後,計算每個(影像,文本)對的cos值相似度。

  3. 訓練目標是使N對正確編碼的影像/標題對之間的cos值相似度最大化,同時使N2 – N對錯誤編碼的影像/標題對之間的cos值相似度最小化。

訓練過程如下圖所示:

CLIP訓練流程

CLIP對DALL-E 2的意義

CLIP幾乎就是DALL-E 2的心臟,因為CLIP才是那個把自然語言片段與視覺概念在語義上進行關聯的存在,這對於生成與文本對應的影像來說至關重要。

第二步 – 從視覺語義生成影像

訓練結束後,CLIP模型被凍結,DALL-E 2進入下一個任務——學習怎麼把CLIP剛剛學習到的影像編碼映射反轉。CLIP學習了一個表示空間,在這個表示空間當中很容易確定文本編碼和視覺編碼的相關性, 我們需要學會利用表示空間來完成反轉影像編碼映射這個任務。

而OpenAI使用了它之前的另一個模型GLIDE的修改版本來執行影像生成。GLIDE模型學習反轉影像編碼過程,以便隨機解碼CLIP影像嵌入。

「一隻吹噴火喇叭的柯基」一圖經過CLIP的圖片編碼器,GLIDE利用這種編碼生成保持原影像顯著特徵的新影像。 圖源://arxiv.org/abs/2204.06125

如上圖所示,需要注意的是,我們的目標不是構建一個自編碼器並在給定的嵌入條件下精確地重建影像,而是在給定的嵌入條件下生成一個保持原始影像顯著特徵的影像。為了進行影像生成,GLIDE使用了擴散模型(Diffusion Model)。

何為擴散模型?

擴散模型是一項受熱力學啟發的發明,近年來越來越受到學界歡迎。擴散模型學習通過逆轉一個逐漸雜訊過程來生成數據。如下圖所示,雜訊處理過程被視為一個參數化的馬爾可夫鏈,它逐漸向影像添加雜訊使其被破壞,最終(漸近地)導致純高斯雜訊。擴散模型學習沿著這條鏈向後走去,在一系列步驟中逐漸去除雜訊,以逆轉這一過程。

擴散模型示意圖 圖源://arxiv.org/pdf/2006.11239.pdf

如果訓練後將擴散模型「切成兩半」,則可以通過隨機取樣高斯雜訊來生成影像,然後對其去噪,生成逼真的影像。大家可能會意識到這種技術很容易令人聯想到用自編碼器生成數據,實際上擴散模型和自編碼器確實是相關的。

GLIDE的訓練

雖然GLIDE不是第一個擴散模型,但其重要貢獻在於對模型進行了修改,使其能夠生成有文本條件的影像。

GLIDE擴展了擴散模型的核心概念,通過增加額外的文本資訊來增強訓練過程,最終生成文本條件影像。讓我們來看看GLIDE的訓練流程:

下面是一些使用GLIDE生成的影像示例。作者指出,就照片真實感和文本相似度兩方面而言,GLIDE的表現優於DALL-E(1)。

由GLIDE生成的影像示例 圖源//arxiv.org/pdf/2112.10741.pdf

DALL-E 2使用了一種改進的GLIDE模型,這種模型以兩種方式使用投影的CLIP文本嵌入。第一種方法是將它們添加到GLIDE現有的時間步嵌入中,第二種方法是創建四個額外的上下文標記,這些標記連接到GLIDE文本編碼器的輸出序列。

GLIDE對於DALL-E 2的意義

GLIDE對於DALL-E 2亦很重要,因為GLIDE能夠將自己按照文本生成逼真影像的功能移植到DALL-E 2上去,而無需在表示空間中設置影像編碼。因此,DALL-E 2使用的修改版本GLIDE學習的是根據CLIP影像編碼生成語義一致的影像。

第三步 –  從文本語義到相應的視覺語義的映射

到了這步,我們如何將文字提示中的文本條件資訊注入到影像生成過程中?

回想一下,除了影像編碼器,CLIP還學習了文本編碼器。DALL-E 2使用了另一種模型,作者稱之為先驗模型,以便從影像標題的文本編碼映射到對應影像的影像編碼。DALL-E 2的作者用自回歸模型和擴散模型進行了實驗,但最終發現它們的性能相差無幾。考慮到擴散模型的計算效率更高,因此選擇擴散模型作為 DALL-E 2的先驗。

從文本編碼到相應影像編碼的先驗映射 修改自圖源://arxiv.org/abs/2204.06125

先驗訓練

DALL-E 2中擴散先驗的運行順序是:

  1. 標記化的文本;

  2. 這些標記的CLIP文本編碼;

  3. 擴散時間步的編碼;

  4. 雜訊影像通過CLIP影像編碼器;

  5. Transformer輸出的最終編碼用於預測無雜訊CLIP影像編碼。

第四步 – 萬事俱備

現在,我們已經擁有了DALL-E 2的所有「零件」,萬事俱備,只需要將它們組合在一起就可以獲得我們想要的結果——生成與文本指示相對應的影像:

  1. 首先,CLIP文本編碼器將影像描述映射到表示空間;

  2. 然後擴散先驗從CLIP文本編碼映射到相應的CLIP影像編碼;

  3. 最後,修改版的GLIDE生成模型通過反向擴散從表示空間映射到影像空間,生成眾多可能影像中的一個。

DALL-E 2影像生成流程的高級概述 修改自圖源://arxiv.org/abs/2204.06125

以上就是DALL-E 2的工作原理啦~

希望大家能注意到DALL-E 2開發的3個關鍵要點:

  • DALL-E 2體現了擴散模型在深度學習中的能力,DALL-E 2中的先驗子模型和影像生成子模型都是基於擴散模型的。雖然擴散模型只是在過去幾年才流行起來,但其已經證明了自己的價值,我們可以期待在未來的各種研究中看到更多的擴散模型~

  • 第二點是我們應看到使用自然語言作為一種手段來訓練最先進的深度學習模型的必要性與強大力量。DALL-E 2的強勁功能究其根本還是來自於互聯網上提供的絕對海量的自然語言&影像數據對。使用這些數據不僅消除了人工標記數據集這一費力的過程所帶來的發展瓶頸;這些數據的嘈雜、未經整理的性質也更加反映出深度學習模型必須對真實世界的數據具有魯棒性。

  • 最後,DALL-E 2重申了Transformer作為基於網路規模數據集訓練的模型中的最高地位,因為Transformer的並行性令人印象十分深刻。 

雷峰網雷峰網