首頁  >  文章  >  科技週邊  >  文字生成圖像這麼火,你需要了解這些技術的演變

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

WBOY
WBOY轉載
2023-04-09 19:31:12857瀏覽

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 在由以下成分組成的序列上進行訓練:

  • 編碼的文本
  • CLIP 文字嵌入
  • 擴散時間步長的嵌入
  • 雜訊CLIP 影像嵌入

最終的嵌入,其來自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 來讓所有人都可以使用。 

以上是文字生成圖像這麼火,你需要了解這些技術的演變的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除