深入理解Sora技術原理|得物技術

人工智能洞察站發表於2024-03-13


來源:得物技術


目錄

一、文字生成圖片的流程

1. 潛在的擴散模型

2. Transformer架構

二、Sora 生成影片的流程

1. 影片壓縮網路

2. 空間時間補丁

3. Diffusion Transformer

三、從訓練到生成影片全流程

1. 影片標註與訓練

2. 影片生成與處理


OpenAI 釋出的影片生成模型 Sora(),能根據文字生成長達一分鐘的高質量影片,理論上支援任意解析度,如 1920x1080 、1080x1920 ,生成能力遠超此前只能生成 25 幀 576x1024 影像的頂尖影片生成模型 Stable Video Diffusion。

一起公佈的,還有一篇非常簡短的技術報告,報告大致介紹了 Sora 的架構及應用場景,並未對模型的原理做過多的介紹。技術報告連結:

筆者參考了大量的資料,試著深入理解 Sora 的技術原理,最終將 Sora 生成影片的原理總結成以下大致的步驟:

  • 透過收集大量不同解析度不同時長的影片,並對影片進行降維處理得到影片的潛在空間資料,並在潛在空間中進行文字標註與訓練。

  • 使用 DALLE3 的重標註技術,對人工標註的文字進行訓練,生成能更加詳細描述影片的標註資訊。

  • 影片生成時,獲取隨機噪聲影片,透過訓練的影片壓縮網路,將噪聲影片壓縮成低維度的潛在空間資料,以便更好的處理影片資料。

  • 將壓縮後的潛在空間資料分解成空間時間補丁 Patches,這些補丁包含了影片中空間和時間的關係,並將這些補丁轉為一維的 Tokens 資料。

  • 將Tokens資料提交給經過擴散模型訓練後的Transformer(DiT),利用 Transformer 的注意力機制,時刻關注文字提示詞中的關鍵資訊,結合擴散模型(Diffusion Model)對 Tokens 資料進行去噪聲,並迴圈取樣觀察去噪音後的結果資料是否符合提示詞的要求。

  • 將去除噪音後的結果資料,利用影片解碼器進行解碼,將低維潛在空間資料還原成原始影片資料,這裡可以實現不同解析度的影片解碼。

如果你不想檢視冗餘的細節,看到這裡就可以結束了,如果你還希望瞭解相關的細節,可以繼續往下看,可能有理解不全面的地方歡迎大家補充交流。


文字生成圖片的流程


在理解文字生成影片的原理之前,我們可以先回顧下文字生成圖片的原理,筆者的另一篇文章有做過相關介紹:AIGC 文生圖原理與實踐分享

本文我們不討論傳統的透過對抗網路生成圖片的方式,我們主要討論的是基於擴散模型生成圖片的方式,開源的 Stable Diffusion 就是基於 LDM,即 Latent Diffusion Model(潛在的擴充套件模型)實現的,另外 Stable Diffusion 透過引入 Transformer 架構實現了對提示詞的支援,能夠在去除圖片噪音的過程中進行精確的控制。


潛在的擴散模型


Stable Diffusion 背後的技術方案被稱為 Latent Diffusion Model,即潛在的擴散模型,此外 Stable Diffusion 模型在原始的 UNet 模型中加入了 Transformer 結構,這麼做可謂一舉兩得,因為 Transformer 結構不但能提升噪聲去除效果,還是實現 Prompt 控制影像內容的關鍵技術。

在深度學習領域中,潛在空間(Latent Space)是指模型學習到的表示資料的抽象空間。這個潛在空間通常是一個低維的向量空間,其中每個點(向量)代表著模型對輸入資料的一種表示或特徵。潛在空間的概念在各種生成模型和表示學習方法中被廣泛應用。

以下是潛在空間對模型的作用:

  • 資料的抽象表示

潛在空間可以被視為對輸入資料的一種抽象表示。透過學習到的潛在空間可以更好地捕捉輸入資料的特徵和結構,有助於模型更高效地學習和生成資料。

  • 降維和去噪

潛在空間通常是一個低維空間,相比原始資料空間具有更低的維度。透過將資料對映到潛在空間,可以實現資料的降維和去噪,將資料的主要特徵和模式表示在更緊湊的空間中。

  • 生成和重建

在生成模型中,潛在空間扮演著重要角色,可以在潛在空間中生成新的資料樣本。模型可以從潛在空間中取樣並解碼生成具有逼真特徵的資料樣本,這種生成過程通常透過解碼器(Decoder)實現。

  • 插值和操作

在潛在空間中,向量表示不同的資料特徵或屬性,可以透過向量之間的插值或操作來探索資料空間中的變化和關係。例如,透過在潛在空間中沿著不同方向移動向量,可以觀察到在資料生成過程中對應的變化。

擴散模型的一個大概的過程可以描述為:對原始圖片不斷的加噪音可以得到一張噪聲圖,然後再對噪聲圖不斷的去除噪音的同時再新增其他資訊,就可以得到一張新圖片。

深入理解Sora技術原理|得物技術

深入理解Sora技術原理|得物技術

深入理解Sora技術原理|得物技術

Stable Diffusion 生成圖片的大致流程如下:

  • Stable Diffusion 使用一個新穎的文字編碼器(OpenCLIP),將文字輸入轉換為一個向量表示。這個向量表示可以捕捉文字的語義資訊,並與影像空間對齊。

  • Stable Diffusion 使用一個擴散模型(Diffusion Model),將一個隨機噪聲影像逐漸變換為目標影像。擴散模型是一種生成模型,可以從訓練資料中學習出一個機率分佈,並從中取樣出新的資料。

  • 在擴散過程中,Stable Diffusion 利用文字向量和噪聲影像作為條件輸入,給出每一步變換的機率分佈。這樣,Stable Diffusion 可以根據文字指導噪聲影像向目標影像收斂,並保持影像的清晰度和連貫性。

  • 最後,Stable Diffusion 使用一個超解析度放大器(Upscaler Diffusion Model),將生成的低解析度影像放大到更高的解析度。超解析度放大器也是一個擴散模型,可以從低解析度影像中恢復出細節資訊,並增強影像質量。

以下是 Latent Diffusion 模型的技術架構:

Latent Diffusion Models 整體框架如圖,首先需要訓練好一個自編碼模型(AutoEncoder,包括一個編碼器 ε 和一個解碼器 δ )。這樣一來,我們就可以利用編碼器對圖片進行壓縮,然後在潛在表示空間上做 Diffusion 操作,最後我們再用解碼器恢復到原始畫素空間即可,論文將這個方法稱之為感知壓縮(Perceptual Compression)。個人認為這種將高維特徵壓縮到低維,然後在低維空間上進行操作的方法具有普適性,可以很容易推廣到文字、音訊、影片等領域。

在潛在表示空間上做 Diffusion 操作其主要過程和標準的擴散模型沒有太大的區別,所用到的擴散模型的具體實現為 Time-Conditional UNet。但是有一個重要的地方是論文為 Diffusion 操作引入了條件機制(Conditioning Mechanisms),透過 Cross-Attention 的方式來實現多模態訓練,使得條件圖片生成任務也可以實現。

深入理解Sora技術原理|得物技術


Transformer架構


Transformer 架構是 2017 年 6 月由 Google 提出的,是一種基於自注意力機制(Self-Attention)的模型,它有效解決了 RNN 類方法的平行計算和長時依賴兩大痛點。原本研究的重點是翻譯任務,隨後推出了幾個有影響力的模型,以下是 Transformer 模型簡短歷史中的一些關鍵節點:

深入理解Sora技術原理|得物技術

Transformer 的架構設計如下圖所示:


深入理解Sora技術原理|得物技術
深入理解Sora技術原理|得物技術


左邊的這張圖是 Transformers 架構的一個簡單表示形式,右邊的這張圖是 Transformers 架構的一個完整表示形式,其中有一個重要的 Multi-Head Attention元件,稱為注意力層。

Transformer 模型的一個關鍵特性是注意力層。事實上,谷歌在釋出 Transformer 架構的論文時,文章的標題就是“注意力就是你所需要的”。注意力層將告訴模型在處理每個單詞的表示時,要特別重視傳遞給它的句子中的某些單詞,也可以是或多或少地忽略其他單詞。透過注意力層,模型可以不斷修正自己處理的結果,以符合輸入的文字的意圖。

總結來說 Transformer 透過注意力層,來理解並觀察輸入文字的上下文,在 Decoder 的過程中,透過多頭注意力層來控制結果的輸出是符合上下文語境的。

可以參考下面這篇文章,更詳細的瞭解 Transformer 的實現原理:

在回顧完 Stable Diffusion 的原理後,我們可以想象下,對於影片的生成該怎麼做呢?

是否可以嘗試把預訓練 Stable Diffusion 擴充成影片生成模型呢。例如在擴充時,將影片的每一幀都單獨輸入進 Stable Diffusion 的自編碼器,再重新構成一個壓縮過的影像序列。這就是 VideoLDM 嘗試解決的問題,然而經過 VideoLDM 研究發現直接對影片使用之前的影像自編碼器,會令輸出影片出現閃爍的現象。為此,該工作對自編碼器的解碼器進行了微調,加入了一些能夠處理時間維度的模組,使之能一次性處理整段壓縮影片,並輸出連貫的真實影片。


Sora生成影片的流程


那 Sora 是怎麼做的呢?接下來我們透過一張圖來了解下 Sora 的工作流程,大概可以簡化為三個部分:

深入理解Sora技術原理|得物技術

簡單來說,Sora 就是依賴了兩個模型 Latent Diffusion Model (LDM) 加上 Diffusion Transformer (DiT)。我們先簡要回顧一下這兩種模型架構。

LDM 就是 Stable Diffusion 使用的模型架構。擴散模型的一大問題是計算需求大,難以擬合高解析度影像。為了解決這一問題,實現 LDM 時,會先訓練一個幾乎能無失真壓縮影像的自編碼器,能把 512x512 的真實影像壓縮成 64x64 的壓縮影像並還原。接著,再訓練一個擴散模型去擬合解析度更低的壓縮影像。這樣,僅需少量計算資源就能訓練出高解析度的影像生成模型。

LDM 的擴散模型使用的模型是 U-Net。而根據其他深度學習任務中的經驗,相比 U-Net,Transformer 架構的引數可擴充性強,即隨著引數量的增加,Transformer 架構的效能提升會更加明顯。這也是為什麼大模型普遍都採用了 Transformer 架構。從這一動機出發,DiT 應運而生。DiT 在 LDM 的基礎上,把 U-Net 換成了 Transformer。

總結來說 Sora 是一個影片版的 DiT 模型,讓我們看一下 Sora 在 DiT 上做了哪些改進。


影片壓縮網路


首先,Sora 透過一個叫做“影片壓縮網路”的技術,將輸入的圖片或影片壓縮成一個更低維度的資料,即潛在空間資料,為了實現影片壓縮,Sora 從頭訓練了一套能直接壓縮影片的自編碼器。相比之前的工作,Sora 的自編碼器不僅能在空間上壓縮影像,還能在時間上壓縮影片長度。

輸入的影片在經過 Sora 的自編碼器後,會被轉換成一段空間和時間維度上都變小的壓縮影片。這段壓縮影片就是 Sora 的 DiT 的擬合物件。

這一過程類似於將不同尺寸和解析度的照片“標準化”,便於處理和儲存,但壓縮並不意味著忽略原始資料的獨特性,而是將它們轉換成一個對 Sora 來說更容易理解和操作的格式。

報告中反覆提及,Sora 在訓練和生成時使用的影片可以是任何解析度(在 1920x1080 以內)、任何長寬比、任何時長的,這意味著影片訓練資料不需要做縮放、裁剪等預處理,因為 Sora 會把這些影片進行壓縮以獲得符合模型訓練的資料。


空間時間補丁


接下來,Sora 將這些壓縮後的資料進一步分解為“空間時間補丁”(Spacetime Patches),這些補丁可以看作是視覺內容的基本構建塊,例如照片可以分解為包含獨特景觀、顏色和紋理的小片段。這樣不管原始影片的長度、解析度或風格如何,Sora 都可以將它們處理成一致的格式。

深入理解Sora技術原理|得物技術

有了空間時間補丁之後,還需要將這些補丁轉換成一維的資料序列,以便提供給 Transformer 模型進行處理,因為 Transformer 只能處理一維序列資料。

Sora 的這種性質還是得益於 Transformer 架構。雖然 Transformer 的計算與輸入順序無關,但必須用位置編碼來指明每個資料的位置。儘管報告沒有提及,我覺得 Sora 的 DiT 使用了類似於 (x,y,t) 的位置編碼來表示一個圖塊的時空位置。這樣不管輸入的影片的大小如何,長度如何,只要給每個圖塊都分配一個位置編碼,DiT 就能分清圖塊間的相對關係了。


Diffusion Transformer


最後,Sora 擴充套件了 Transformer 模型,以便適用於影片生成,這裡的影片就是一幀幀的靜態圖片加上了時間維度的資訊,所以只需要用 Transformer 模型來生成攜帶時間維度資訊的圖片。

需要注意的是,Transformer 本來是用於文字任務的,它只能處理一維的序列資料。為了讓 Transformer 處理二維影像,通常會把輸入影像先切成邊長為 p 的圖塊,再把每個圖塊整理成一維資料。也就是說,原來邊長為 I 的正方形圖片,經圖塊化後,變成了長度為 (I/p)² 的一維序列資料。

深入理解Sora技術原理|得物技術

DiT 在處理輸入圖塊(也就是空間時間補丁)時,因為每個影片圖塊被編上了類似 (x,y,t) 這樣的位置編碼,輸入影片可以是任何解析度、任何長度。將每個空間時間補丁輸入 Transformer,作為輸入的 Token,接著 Transformer 會完成每個空間時間補丁的噪聲去除,最後所有的空間時間補丁都完成噪聲去除後,再透過解碼器將 Transformer 處理後的張量資料還原成影片資料。

下圖展示了 DiT 的架構,左:我們訓練調節的潛 DiT 模型。輸入潛變數被分解成幾個 Patch 並由幾個 DiT 塊處理。右:DiT 塊的細節。我們對標準 Transformer 的變體進行了實驗,這些變體透過自適應層歸一化、交叉注意力和額外的輸入 Token 做調節。自適應層歸一化效果最好。

假設輸入是一張 256x256x3 的圖片,對圖片做 Patch 後經過投影得到每個 Patch 的 Token,得到 32x32x4 的 Latent 潛在空間(在推理時輸入直接是 32x32x4 的噪聲)。結合當前的 Step t, 將 Label y 作為輸入, 經過 N 個 DiT Block 處理,處理中透過 MLP 進行控制輸出,得到輸出的噪聲以及對應的協方差矩陣,經過 T 個 Step 取樣,得到 32x32x4 的降噪後的 Latent。

深入理解Sora技術原理|得物技術

得到處理後的 Latent 之後,透過 Visual Decoder 對 Latent 進行解碼,最終得到生成的影片。


從訓練到生成影片全流程

影片標註與訓練


  • 收集影片及其文字標註

初始步驟是收集大量影片資料,並獲取或建立這些影片對應的文字標註。這些文字簡要描述了影片內容,是訓練模型理解影片主題的關鍵。

  • 預處理影片資料

對影片進行預處理,包括調整解析度、格式轉換、裁剪長度等,以確保資料格式統一,適合模型處理。

  • 生成高度描述性的文字標註

使用 DALLE3 的技術,首先訓練一個模型,這個模型專門用於為影片內容生成高度描述性的文字標註。這一步是為了提升文字標註的質量,讓其更加詳細和具體。對訓練集中的所有影片應用這個模型,產生新的、更加詳細的文字標註。

之前大部分文生圖擴散模型都是在人工標註的圖片-文字資料集上訓練的。後來大家發現,人工標註的圖片描述質量較低,紛紛提出了各種提升標註質量的方法。Sora 複用了自家 DALL·E 3 的重標註技術,用一個訓練的能生成詳細描述的標註器來重新為訓練影片生成標註。這種做法不僅解決了影片缺乏標註的問題,且相比人工標註質量更高。Sora 的部分結果展示了其強大了抽象理解能力(如理解人和貓之間的互動),這多半是因為影片標註模型足夠強大,影片生成模型學到了影片標註模型的知識。但同樣,影片標註模型的相關細節完全沒有公開。

  • 擴散模型訓練

Sora 作為一個擴散模型,透過預測從含噪聲補丁到原始清晰補丁的轉換過程進行訓練。這個過程涉及到大量的迭代,逐步提高生成影片的質量。


影片生成與處理


  • 影片壓縮和空間時間補丁生成

開發並訓練一個影片壓縮網路,將高維的影片資料壓縮到一個低維的潛在空間,簡化後的資料表示更容易被模型處理。將壓縮後的影片表示分解成空間時間補丁,這些補丁既包含空間上的資訊也包含隨時間變化的資訊。

  • 利用 Transformer 架構處理時空關係

基於 Transformer 架構,處理這些空間時間補丁。由於 Transformer 架構在處理序列資料(如文字)方面的強大能力,這裡用於捕獲影片補丁之間複雜的時空關係。

  • 透過 GPT 模型理解並最佳化提示詞

類似於 DALLE3,Sora 在處理使用者提供的文字提示時,也可以利用 GPT 模型來擴充套件或最佳化這些提示。GPT 模型可以將簡短的使用者提示轉化成更詳細、更富有描述性的文字,這有助於 Sora 更準確地理解並生成符合使用者意圖的影片。

  • 利用擴散模型生成影片

使用者提供一個文字提示,Sora 根據這個提示在潛在空間中初始化影片的生成過程。利用訓練好的擴散模型,Sora 從這些初始化的空間時間補丁開始,逐步生成清晰的影片內容。

  • 影片解碼與處理

使用與影片壓縮相對應的解碼器將潛在空間中的影片轉換回原始畫素影片。

對生成的影片進行可能的後處理,如調整解析度、裁剪等,以滿足釋出或展示的需求。

參考文件:

https://mp.weixin.qq.com/s/Prn1G_EpXvnM4me9a_SPBw


https://mp.weixin.qq.com/s/KUnXlDlg-Rs_6D5RFpQbnQ



來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70027828/viewspace-3008808/,如需轉載,請註明出處,否則將追究法律責任。

相關文章