文字生成圖像這麼火,你需要了解這些技術的演變

目前多模態任務成為行業熱點,本文梳理了較為優秀的多模態文字圖像模型:

DALL·E、CLIP、GLIDE、DALL·E 2 (unCLIP)的模型框架、優缺點,及其迭代關係。

OpenAI 最近發佈了 DALL·E 2 系統,在 AI 界引發了「地震」,該系統能夠根據文字描述創建圖像。這是 DALL·E 系統的第二個版本,第一個版本是在近一年前發佈的。然而,在 OpenAI 內部,DALL·E 2 背後的模型被稱為 unCLIP,它更接近於 OpenAI 的 GLIDE 系統,而不是原始的 DALL·E。

對筆者來說,DALL·E 2 系統的衝擊力可以與 AlphaGo 相媲美。看起來該模型捕獲了許多複雜的概念,並且以有意義的方式將它們組合起來。就在幾年前,計算機能否從這樣的文字描述中生成圖像還是一件難以預測的事情。Sam Altman 在他的部落格文章中提到,我們對 AI 的預測似乎是錯誤的,是需要更新的,因為 AI 已經開始影響創造性的工作,而非只是機械重複的工作。

本文旨在帶領讀者一覽 OpenAI 的文字引導圖像生成模型的演變,包括 DALL·E 的第一個和第二個版本以及其他的模型。

DALL·E 演變史

DALL·E 1

DALL·E 的第一個版本是 GPT-3 風格的 transformer 解碼器,它可以根據文字輸入和可選的圖像開頭自迴歸生成 256×256 大小的圖像。

你一定見過這些牛油果椅子:

來自原始部落格文章

來自原始部落格文章。

如果你想了解類似 GPT 的 transformer 的工作原理,請參閱 Jay Alammar 的精彩視覺解釋:https://jalammar.github.io/how-gpt3-works-visualizations-animations/

文字由 BPE tokens 編碼(最多 256 個),圖像由離散變分自編碼器 (dVAE) 生成的特殊圖像 tokens(其中 1024 個)編碼。dVAE 將 256×256 圖像編碼為 32×32 tokens 的網格,詞彙表包含 8192 個可能的值。dVAE 會在生成的圖像中丟失一些細節和高頻特徵,所以 DALL·E 生成圖像的特徵採用了一些模糊和平滑。

原始圖像(頂部)和 dVAE 重建(底部)的比較。圖片來自原始論文。

這裡使用的 transformer 是有著 12B 大小參數的大模型,由 64 個稀疏 transformer 塊組成,內部具有一組複雜的注意力機制,包括:1) 經典的文字到文字注意力掩碼機制,2) 圖像到文字的注意力,3) 圖像到圖像稀疏注意力。所有三種注意力類型都合併為一個注意力運算。該模型是在 250M 圖像 – 文字對的資料集上訓練的。

類似 GPT-3 的 transformer 解碼器使用一系列文字 token 和(可選)圖像 token(此處為 id 為 42 的單個圖像 token)並生成圖像的延續(此處為 id 為 1369 的下一個圖像 token)

訓練後的模型根據提供的文字生成了幾個樣本(最多 512 個),然後將所有這些樣本通過一個名為 CLIP 的特殊模型進行排序,並選擇排名靠前的一個作為模型的結果。

原始論文中的幾個圖像生成示例。

CLIP

CLIP 最初是一個單獨的輔助模型,用於對 DALL·E 的結果進行排序。它的名字是 Contrastive Language-Image Pre-Training 的縮寫。

CLIP 背後的想法很簡單。筆者從網際網路上抓取了一個圖像 – 文字對資料集(400M 的規模),然後在這樣的資料集上訓練一個對比模型。對比模型可以給來自同一對的圖像和文字產生高相似度得分(因此它們是相似的),而對不匹配的文字和圖像產生低分(我們希望在當前訓練批次中某個圖像和任何其他對的文字之間得到高相似度結果的機會很小)。

該模型由兩個編碼器組成:一個用於文字,另一個用於圖像。編碼器產生嵌入(一個對象的多維向量表徵,例如一個 512 位元組的向量)。然後使用兩個嵌入計算點積,並得出相似度得分。因為嵌入會被歸一化,所以這個計算相似度得分的過程輸出的是餘弦相似度。對於指向相同方向的向量(它們之間的角度很小),餘弦相似度接近 1,對於正交向量,餘弦相似度接近 0,對於相反的向量,餘弦相似度接近 -1。

對比預訓練過程視覺化(圖片來自原帖)

對比預訓練過程視覺化(圖片來自原帖)

CLIP 是一組模型。有 9 個圖像編碼器、5 個卷積編碼器和 4 個 transformer 編碼器。卷積編碼器是 ResNet-50、ResNet-101 和類似 EfficientNet 的模型,稱為 RN50x4、RN50x16、RN50x64(數字越大,模型越好)。transformer 編碼器是視覺 Transformer(或稱之為 ViT):ViT-B/32、ViT-B/16、ViT-L/14 和 ViT-L/14@336。最後一個在解析度為 336×336 像素的圖像上進行微調,其他的則在 224×224 像素上進行訓練。

OpenAI 分階段發佈了程序,首先發布了 ViT-B/32 和 ResNet-50,然後是 ResNet-101 和 RN50x4,然後 RN50x16 和 ViT-B/16 於 2021 年 7 月發佈,然後是 RN50x64 和 ViT-L /14 在 2022 年 1 月發佈,2022 年 4 月終於出現了 ViT-L/14@336。

文字編碼器是一個普通的 transformer 編碼器,但具備掩碼注意力機制。這個編碼器由 12 層組成,每層有 8 個注意力頭,總共有 63M 的參數。有趣的是,注意力跨度只有 76 個 token(相比之下,GPT-3 有 2048 個 token,標準 BERT 有 512 個 token)。因此,模型的文字部分只適用於相當短的文字,不能在模型中放入大段文字。由於 DALL·E 2 和 CLIP 大致相同,應該也有相同的限制。

CLIP 預訓練之後,可以將其用於不同的任務(有良好基礎模型的優勢)。

最重要的是,讀者可以使用在 DALL·E 中排序好的模型對多個結果進行評分,並選擇最好的一個。或者,也可以使用 CLIP 功能在其之上訓練自定義分類器,但是目前成功的例子還不是很多。

接下來,可以使用 CLIP 對任意數量的類進行零樣本分類(當沒有專門訓練模型以使用這些類時)。這些類可以在不重新訓練模型的情況下進行調整。

簡單來說,可以為所需的多個類創建一個描述圖片中物體的文字資料集。然後為這些描述生成文字嵌入並將它們儲存為向量。當圖像用於分類時,使用圖像編碼器生成圖像嵌入,並計算圖像嵌入和所有預先計算的文字嵌入之間的點積。選擇得分最高的對,其對應的類就是結果。

用於使用 CLIP 進行零樣本分類的程序。

零樣本分類模型是說並未針對特定類別集訓練模型。現在可以選擇使用預訓練的 CLIP 進行即時工程(與使用 GPT 模型相同),而不是從頭開始訓練分類器或通過微調預訓練的圖像模型。

很多人沒有想到,也可以使用 CLIP 生成圖像(即使它並沒有被預設可以這樣做)。成功案例包括 CLIPDraw 和 VQGAN-CLIP。

CLIPD 繪製示例。圖片來自原論文。

VQGAN-CLIP 及其文字 prompt 的生成示例。圖片來自原論文。

該過程簡單而美觀,與 DeepDream 非常相似。從想要的圖像的文字描述和初始圖像(隨機嵌入、樣條線或像素中的場景描述、任何以可區分方式創建的圖像)開始,然後運行一個生成圖像的循環,加入一些增強以提高穩定性,獲得結果圖像的 CLIP 嵌入,並將其與描述圖像的文字的 CLIP 嵌入進行比較。根據此差異計算損失,並運行梯度下降程序,以此來更新圖像、減少損失。經過一些迭代後,可以得到很好地匹配文字描述的圖像。創建初始場景的方式(使用樣條線、像素、渲染基元、來自 VQGAN 的潛在程式碼等)會顯著影響圖像特徵。

CLIPDraw 生成過程:從一組隨機的 Bezier 曲線開始,最佳化曲線的位置和顏色,使生成的圖形與給定的描述 prompt 最匹配。圖片來自原論文。

VQGAN-CLIP 生成過程。圖片來自原論文。

CLIP 嵌入並不能捕獲所有內容,一些有趣的演示證明了它的弱點。其中一個廣為人知的例子是印刷攻擊。在這種攻擊中,圖像上的文字可能導致圖像的錯誤分類。

目前有一些與 CLIP 結構相似的替代模型,例如 Google 的 ALIGN 或華為的 FILIP。

GLIDE

GLIDE,即 Guided Language to Image Diffusion for Generation and Editing,是 OpenAI 推出的文字引導圖像生成模型,目前已經擊敗了 DALL·E,但受到的關注相對較少。它甚至在 OpenAI 網站上也沒有專門的帖子。GLIDE 生成解析度為 256×256 像素的圖像。

擁有 3.5B 參數的 GLIDE 模型(但似乎正確的數字是 5B 參數,因為有一個單獨的具有 1.5B 參數的上取樣模型)比 12B 參數 DALL·E 更受人們的青睞,並且在 FID 得分上也擊敗了 DALL·E。

來自 GLIDE 的樣本。圖片來自原始論文。

GLIDE 模型還可以進行微調以執行圖像修復,從而實現強大的文字驅動圖像編輯,這在 DALL·E 2 中使用。

來自 GLIDE 的文字條件圖像修復示例。綠色區域被擦除,模型根據給定的提示填充這個區域。該模型能夠匹配周圍環境的風格和光線,產生逼真的完成效果。示例來自原論文。

GLIDE 在發佈時可以稱作「DALL·E 2」。現在,當一個單獨的 DALL·E 2 系統發佈時(實際上在論文中稱為 unCLIP 並且大量使用 GLIDE 本身),我們可以將 GLIDE 稱為 DALL·E 1.5 🙂

GLIDE 類似於另一種稱為擴散模型的模型。簡而言之,擴散模型通過擴散步驟鏈向輸入資料添加隨機噪聲,然後它們會學習逆向擴散過程以從噪聲中構造圖像。

去噪擴散模型生成圖像。

下圖是 Google 使用擴散模型生成圖像的視覺化說明。

擴散模型與其他類別的生成模型的比較。

首先,作者訓練了一個 3.5B 參數擴散模型,該模型使用文字編碼器以自然語言描述為條件。接下來,他們比較了兩種將擴散模型引導到文字 prompt 的技術:CLIP 引導和無分類器引導(後者能產生更好的結果)。

分類器引導允許擴散模型以分類器的標籤為條件,並且來自分類器的梯度用於引導樣本朝向標籤。

無分類器引導不需要訓練單獨的分類器模型。這只是一種引導形式,在有標籤和沒有標籤的擴散模型的預測之間進行插值。

正如作者所說,無分類引導有兩個吸引人的特性。首先,它允許單個模型在引導過程中利用自己的知識,而不是依賴於單獨(有時更小的)分類模型的知識。其次,它簡化了對難以用分類器預測的資訊(例如文字)進行調節時的引導。

在 CLIP 引導下,分類器被替換為 CLIP 模型。它使用圖像的點積和相對於圖像的標題編碼的梯度。

在分類器和 CLIP 引導中,我們必須在噪聲圖像上訓練 CLIP,以便在反向擴散過程中獲得正確的梯度。作者使用了經過明確訓練具有噪聲感知能力的 CLIP 模型,這些模型被稱為噪聲 CLIP 模型。尚未在噪聲圖像上訓練的公共 CLIP 模型仍可用於引導擴散模型,但噪聲 CLIP 引導對這種方法表現良好。

文字條件擴散模型是一種增強的 ADM 模型架構,它基於噪聲圖像 xₜ 和相應的文字標題 c 預測下一個擴散步驟的圖像。

視覺部分是修改後的 U-Net 架構。U-Net 模型使用一堆殘差層和下采樣卷積,然後是一堆帶有上取樣卷積的殘差層,使用殘差連接(skip connection)連接具有相同空間大小的層。

原始的 U-Net 架構。圖片來自原論文。

GLIDE 對原始 U-Net 架構的寬度、深度等方面有不同的修改,在 8×8、16×16 和 32×32 解析度下添加了具有多個注意力頭的全局注意力層。此外,還將時間步嵌入的投影添加到每個殘差塊中。

對於分類器引導模型,分類器架構是 U-Net 模型的下采樣主幹網路,在 8×8 層有一個注意力池以生成最終輸出。

文字通過 transformer 模型被編碼成 K 個(最大注意力跨度尚不清楚)tokens 的序列。

transformer 的輸出有兩種使用方式:首先,使用最終的 token 嵌入替代 ADM 模型中的類嵌入;其次,token 嵌入的最後一層(K 個特徵向量的序列)分別投影到整個 ADM 模型中每個注意力層的維度,然後連接到每一層的注意力上下文。

文字 transformer 有 24 個寬度為 2048 的殘差塊,產生大約 1.2B 的參數。為 64×64 解析度訓練的模型的視覺部分由 2.3B 個參陣列成。除了 3.5B 參數的文字條件擴散模型,作者還訓練了另一個 1.5B 參數的文字條件上取樣擴散模型,將解析度提高到 256×256(這個想法在 DALL·E 中也會用到)。

上取樣模型以與基本模型相同的方式以文字為條件,但使用寬度為 1024 而不是 2048 的較小文字編碼器。對於 CLIP 引導,他們還訓練了帶噪聲的 64×64 ViT-L CLIP 模型。

GLIDE 在與 DALL·E 相同的資料集上進行訓練,總的訓練計算量大致等於用於訓練 DALL·E 的計算量。

GLIDE 在所有設置中都是最優,即使設置允許 DALL·E 使用更多的測試時間計算來得到優越的表現,同時降低 GLIDE 樣本質量(通過 VAE 模糊)。

該模型經過微調以支持無條件的圖像生成。這個訓練過程與預訓練完全一樣,只是將 20% 的文字 token 序列替換為空序列。這樣,模型保留了生成文字條件輸出的能力,但也可以無條件地生成圖像。

該模型還經過顯式微調以執行修復。在微調期間,訓練示例的隨機區域被刪除,其餘部分與掩碼通道一起作為附加條件資訊輸入模型。

GLIDE 可以迭代地使用 zero-shot 生成產生複雜場景,然後進行一系列修復編輯。

首先生成 prompt「一個舒適的客廳」的圖像,然後使用修復蒙版,後續文字 prompt 在牆上添加了一幅畫、一個茶几,茶几上還有一個花瓶,最後把牆移到沙發上。示例來自原論文。

DALL·E 2/unCLIP

OpenAI 於 2022 年 4 月 6 日發佈了 DALL·E 2 系統。DALL·E 2 系統比原來的 DALL·E 顯著提升了結果。它生成的圖像解析度提高了 4 倍(與原來的 DALL·E 和 GLIDE 相比),現在高達 1024×1024 像素。DALL·E 2 系統背後的模型稱為 unCLIP。

作者發現,就照片寫實而言,人類略微喜歡 GLIDE 而不是 unCLIP,但差距非常小。在具有類似真實感的情況下,在多樣性方面,unCLIP 比 GLIDE 更受青睞,突出了它的好處之一。請記住,GLIDE 本身比 DALL·E 1 更受歡迎,所以說 DALL·E 2 比它的前身 DALL·E 1 有了顯著改進。

對於「用克勞德 · 莫內的風格畫一幅狐狸坐在日出時分田野裡的畫」的要求,兩個版本的系統生成的圖片,圖片來自原文章。

DALL·E 2 可以將概念、屬性和風格結合起來:

原文中的示例。

DALL·E 2 還可以基於文字引導進行圖像編輯,這是 GLIDE 中的功能。它可以在考慮陰影、反射和紋理的同時添加和刪除元素:

將柯基犬添加到圖像上的特定位置,圖片來自原論文中。

DALL·E 2 還可用於生成原始圖像的變體:

生成圖像的變體,圖片來自原文。

DALL·E 2 也存在一些問題。特別是 unCLIP 在將屬性綁定到對象方面比 GLIDE 模型更差。例如,unCLIP 比 GLIDE 更難面對必須將兩個單獨的對象(立方體)綁定到兩個單獨的屬性(顏色)的 prompt:

unCLIP 生成連貫的文字上也有一些困境:

另一個問題是 unCLIP 很難在複雜場景中生成細節:

模型內部發生了一些改變。下圖是 CLIP 和 GLIDE 的結合,模型本身(全文條件圖像生成堆疊)在論文內部稱為 unCLIP,因為它通過反轉 CLIP 圖像編碼器生成圖像。

該模型的工作方式如下:CLIP 模型是單獨訓練的。然後 CLIP 文字編碼器為輸入文字(標題)生成嵌入。然後一個特殊的先驗模型基於文字嵌入生成圖像嵌入。然後擴散解碼器基於圖像嵌入生成圖像。解碼器本質上將圖像嵌入反轉回圖像。

系統的宏觀概述。一些細節(如解碼器文字條件)沒有顯示。圖片來自原論文。

CLIP 模型使用 ViT-H/16 圖像編碼器,它使用 256×256 解析度的圖像,寬度為 1280,帶有 32 個 Transformer 塊(它比原始 CLIP 工作中最大的 ViT-L 更深)。文字編碼器是一個帶有因果注意掩碼的 Transformer,寬度為 1024 和 24 個 Transformer 塊(原始 CLIP 模型有 12 個 Transformer 塊)。尚不清楚文字 transformer 的注意力跨度是否與原始 CLIP 模型中的相同(76 個 token)。

擴散解碼器是經過修改的 GLIDE,具有 3.5B 參數。CLIP 圖像嵌入被投影並添加到現有的時間步嵌入中。CLIP 嵌入也被投影到四個額外的上下文 token 中,這些 token 連接到 GLIDE 文字編碼器的輸出序列。保留了原始 GLIDE 的文字條件路徑,因為它可以讓擴散模型學習 CLIP 未能捕獲的自然語言方面(然而,它幫助不大)。在訓練期間,10% 的時間用於將 CLIP 嵌入隨機設置為零,50% 的時間隨機刪除文字標題。

解碼器生成 64×64 像素的圖像,然後兩個上取樣擴散模型隨後生成 256×256 和 1024×1024 的圖像,前者具有 700M 參數,後者具有 300M 參數。為了提高上取樣的魯棒性,在訓練過程中條件圖像被輕微損壞。第一個上取樣階段使用高斯模糊,第二個階段使用更多樣化的 BSR 降級,包括 JPEG 壓縮偽影、相機傳感器噪聲、雙線性和雙三次插值、高斯噪聲。這些模型在目標大小的四分之一的隨機圖像上進行訓練。文字調節不用於上取樣模型。

先驗根據文字描述生成圖像嵌入。作者探索了先驗模型的兩個不同模型類:自迴歸 (AR) 先驗和擴散先驗。兩種先驗的模型都有 1B 參數。

在 AR 先驗中,CLIP 圖像嵌入被轉換為一系列離散程式碼,並根據標題進行自迴歸預測。在擴散先驗中,連續嵌入向量直接使用以標題為條件的高斯擴散模型進行建模。

除了標題之外,先驗模型還可以以 CLIP 文字嵌入為條件,因為它是標題的確定性函數。為了提高取樣質量,作者還通過在訓練期間 10% 的時間隨機刪除此文字條件資訊,啟用了對 AR 和擴散先驗使用無分類器引導的取樣。

對於 AR 先驗,主成分分析 (PCA) 降低了 CLIP 圖像嵌入的維數。1024 個主成分中有 319 個保留了 99% 以上的資訊。每個維度量化為 1024 個桶。作者通過將文字標題和 CLIP 文字嵌入編碼為序列的前綴來調節 AR 先驗。此外,它們在文字嵌入和圖像嵌入之間添加一個表徵(量化的)點積的 token。這允許在更高的點積上調整模型,因為更高的文字圖像點積對應於更好地描述圖像的標題。點積是從分佈的上半部分取樣的。使用帶有因果注意掩碼的 Transformer 模型預測生成的序列。

對於擴散先驗,具有因果注意掩碼的僅解碼器(decoder-only) Transformer 在由以下成分組成的序列上進行訓練:

  1. 編碼的文字
  2. CLIP 文字嵌入
  3. 擴散時間步長的嵌入
  4. 噪聲 CLIP 圖像嵌入
  5. 最終的嵌入,其來自 Transformer 的輸出用於預測無噪聲 CLIP 圖像嵌入。

不使用點積來調節擴散先驗。相反,為了提高取樣時間的質量,生成了兩個圖像嵌入樣本,並選擇了一個具有更高點積和文字嵌入的樣本。

對於可比較的模型大小和減少的訓練計算,擴散先驗優於 AR 先驗。在與 GLIDE 的成對比較中,擴散先驗也比 AR 先驗表現更好。

作者還對先驗的重要性進行了調查。他們嘗試使用不同的信號來調節相同的解碼器:1、文字標題和零 CLIP 嵌入,2、文字標題和 CLIP 文字嵌入(就好像它是圖像嵌入一樣),3、由先驗生成的文字和 CLIP 圖像嵌入。僅根據標題對解碼器進行調節顯然是最差的,但對文字嵌入零樣本進行調節確實會產生符合期望的結果。

使用不同的調節信號,圖片來自原文。

在訓練編碼器時,作者以相同的概率從 CLIP 和 DALL-E 資料集(總共約 6.5 億張圖像)中取樣。在訓練解碼器、上取樣器和之前的模型時,他們只使用了 DALL-E 資料集(大約 2.5 億張圖像),因為在訓練生成堆疊時合併了噪聲更大的 CLIP 資料集,從而在初始評估中對樣本質量產生了負面影響。

模型總大小似乎是:632M?參數(CLIP ViT-H/16 圖像編碼器)+ 340M?(CLIP 文字編碼器)+ 1B(擴散先驗)+ 3.5B(擴散解碼器)+ 1B(兩個擴散上取樣器)=~ 大約 6.5B 參數(如果我沒記錯的話)。

這個方法允許基於文字描述生成圖像。然而,其他一些有趣的應用也是可能的。

原論文中的示例。

每個圖像 x 可以被編碼成一個二分 latent 表示 (z_i, x_T),這足以讓解碼器產生準確的重建。latent z_i 是一個 CLIP 圖像嵌入,它描述了 CLIP 識別的圖像方面。latent x_T 是通過使用解碼器對 x 應用 DDIM(去噪擴散隱式模型)反演獲得的,同時以 z_i 為條件。換句話說,它是在生成圖像 x(或等效為 x_0,參見 GLIDE 部分中的去噪擴散模型方案)時擴散過程的起始噪聲。

這種二分表示可以實現三種有趣的操作。

首先,你可以通過在解碼器中使用 η > 0 的 DDIM 進行取樣,為給定的二分潛在表示 (z_i, x_T) 創建圖像變體。當 η = 0 時,解碼器變得具有確定性,並將重建給定的圖像 x。η 參數越大,變化越大,我們可以看到在 CLIP 圖像嵌入中捕獲了哪些資訊並呈現在所有樣本中。

探索圖像的變化。

其次,你可以在圖像 x1 和 x2 之間進行插值。為此,你必須採用 CLIP 圖像嵌入 z_i1 和 z_i2,然後應用 slerp(球面線性插值)來獲得中間 CLIP 圖像表示。對應的中間 DDIM latent x_Ti 有兩個選項:1)使用 slerp 在 x_T1 和 x_T2 之間進行插值,2)將 DDIM latent 固定為軌跡中所有插值的隨機取樣值(可以生成無限數量的軌跡)。以下圖像是使用第二個選項生成的。

探索兩個圖像的插值。

最後,第三件事是語言引導的圖像操作或文字差異。為了修改圖像以反映新的文字描述 y,你首先獲取其 CLIP 文字嵌入 z_t,以及描述當前圖像的標題的 CLIP 文字嵌入 z_t0(可能是像「照片」這樣的虛擬標題或一個空的標題)。然後計算文字差異向量 z_d = norm(z_t – z_t0)。然後使用 slerp 在嵌入 z_i 的圖像 CLIP 和文字差異向量 z_d 之間旋轉,並在整個軌跡中生成具有固定基本 DDIM 噪聲 x_T 的圖像。

探索文字差異,來自原文中

探索文字差異,來自原文中。

作者還進行了一系列實驗來探索 CLIP 潛在空間。先前的研究表明,CLIP 容易受到印刷攻擊。在這些攻擊中,一段文字覆蓋在一個對象的頂部,這導致 CLIP 預測文字描述的對象而不是圖像中描述的對象(還記得帶有 「iPod」 橫幅的蘋果嗎?)。現在,作者嘗試生成此類圖像的變體,發現儘管圖像正確分類的概率非常低,但生成的變體以很高的概率是正確的。儘管該標題的相對預測概率非常高,但該模型從未生成 iPod 的圖片。

印刷攻擊案例。

另一個有趣的實驗是用越來越多的主成分重建圖像。在下圖中,他們獲取了少量源圖像的 CLIP 圖像嵌入,並以逐漸增加的 PCA 維度重建它們,然後使用帶有 DDIM 的解碼器將重建的圖像嵌入視覺化。這允許查看不同維度編碼的語義資訊。

越來越多的主成分,來自原始論文。

還要記住 unCLIP 在屬性綁定、文字生成和複雜場景中的細節方面遇到的困難。

前兩個問題可能是由於 CLIP 嵌入屬性。

可能會出現屬性綁定問題,因為 CLIP 嵌入本身並沒有將屬性顯式綁定到對象,因此解碼器在生成圖像時會混淆屬性和對象。

另一組針對難綁定問題的重構,來自原文。

文字生成問題可能是因為 CLIP 嵌入沒有精確編碼渲染文字的拼寫資訊。

由於解碼器層次結構以 64×64 的基本解析度生成圖像然後對其進行上取樣,可能會出現低細節問題。因此,使用更高的基本解析度,問題可能會消失(以額外的訓練和推理計算為代價)。

我們已經看到了 OpenAI 基於文字的圖像生成模型的演變。也有其他公司在這個領域展開工作。

DALL·E 2(或 unCLIP)是對系統的第一個版本 DALL·E 1 的巨大改進,僅用了一年時間。不過,它還有很大的提升空間。

遺憾的是,這些強大而有趣的模型一直未開源。作者希望看到更多這樣的模型被髮布或至少通過 API 提供。否則,所有這些成果都只能適用於一些非常有限的受眾。

不可否認,此類模型可能存在誤差,有時會產生不正確類型的內容,或被惡意代理使用。作者呼籲人們有必要討論如何處理這些問題。這些模型有無數潛在的良好用途,但未能解決上述問題阻礙了這些探索。

作者希望 DALL·E 2(或其他類似模型)能很快通過開放的 API 來使得所有人都可以使用。

原文連結:https://blog.inten.to/openai-and-the-road-to-text-guided-image-generation-dall-e-clip-glide-dall-e-2-unclip-c6e28f7194ea

選自 Intento

作者:Grigory Sapunov

機器之心編譯

相關文章

新一代梗圖之王,居然是它

新一代梗圖之王,居然是它

新一代梗圖之王,也可以是個 AI。 —— 文|杜晨 編輯|VickyXiao 題圖來源 | u/HeatSoup on Reddit 最近我...