前言
真沒想到,距離視頻生成上一輪的集中爆發(fā)(詳見《Sora之前的視頻生成發(fā)展史:從Gen2、Emu Video到PixelDance、SVD、Pika 1.0》)才過去三個(gè)月,沒想OpenAI一出手,該領(lǐng)域又直接變天了
自打2.16日OpenAI發(fā)布sora以來(其開發(fā)團(tuán)隊(duì)包括DALLE 3的4作Tim Brooks、DiT一作Bill Peebles、三代DALLE的核心作者之一Aditya Ramesh等13人),不但把同時(shí)段Google發(fā)布的Gemini 1.5干沒了聲音,而且網(wǎng)上各個(gè)渠道,大量新聞媒體、自媒體(含公號、微博、博客、視頻)做了大量的解讀,也引發(fā)了圈內(nèi)外的大量關(guān)注
很多人因此認(rèn)為,視頻生成領(lǐng)域自此進(jìn)入了大規(guī)模應(yīng)用前夕,好比NLP領(lǐng)域中GPT3的發(fā)布
一開始,我還自以為視頻生成這玩意對于有場景的人,是重大利好,比如在影視行業(yè)的
對于沒場景的人,只能當(dāng)熱鬧看看,而且我司大模型項(xiàng)目開發(fā)團(tuán)隊(duì)去年年底還考慮過是否做視頻生成的應(yīng)用,但當(dāng)時(shí)想了好久,沒找到場景,做別的應(yīng)用去了
可當(dāng)我接連扒出sora相關(guān)的10多篇論文之后,覺得sora和此前發(fā)布的視頻生成模型有了質(zhì)的飛躍(不只是一個(gè)60s),而是再次印證了大力出奇跡,大模型似乎可以在力大磚飛的情況下開始理解物理世界了,使得我司大模型項(xiàng)目組也愿意重新考慮開發(fā)視頻生成的相關(guān)應(yīng)用
本文主要分為三個(gè)部分(初步理解只看第一部分即可,深入理解看第二部分,更多細(xì)節(jié)則看第三部分)
第一部分,側(cè)重sora的核心技術(shù)解讀
方便大家把握重點(diǎn),且會比一切新聞稿都更準(zhǔn)確,此外
如果之前沒有了解過DDPM、ViT的,建議先閱讀下此文《從VAE、擴(kuò)散模型DDPM、DETR到ViT、Swin transformer》
如果之前沒有了解過圖像生成的,建議先閱讀下此文《從CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM》
當(dāng)然,如果個(gè)別朋友實(shí)在不想點(diǎn)開看上面的兩篇文章,我也盡可能在本文中把相關(guān)重點(diǎn)交代清楚
第二部分,側(cè)重sora相關(guān)技術(shù)的發(fā)展演變
把sora涉及到的關(guān)鍵技術(shù)在本文中全部全面、深入、細(xì)致的闡述清楚,畢竟如果人云亦云就不用我來寫了
且看完這部分你會發(fā)現(xiàn),從來沒有任何一個(gè)火爆全球的產(chǎn)品是一蹴而就的,且基本都是各種創(chuàng)新技術(shù)的集大成者(Google很多工作把transformer等各路技術(shù)發(fā)揚(yáng)光大,但OpenAI則把各路技術(shù) 整合到極致了..)
第三部分,根據(jù)sora的32個(gè)reference以窺探其背后的更多細(xì)節(jié)
由于sora實(shí)在是太火了,網(wǎng)上各種解讀非常多,有的很專業(yè),有的看上去一本正經(jīng) 實(shí)則是胡說八道(即便他的title看起來有一定的水平),為方便大家辨別什么樣的解讀是不對的,特把一些更深入的細(xì)節(jié)也介紹下
第一部分 OpenAI Sora的關(guān)鍵技術(shù)點(diǎn)
1.1 Sora的三大Transformer組件
1.1.1 從前置工作DALLE 2到sora的三大組件
為方便大家更好的理解sora背后的原理,我們先來快速回顧下AI繪畫的原理(理解了AI繪畫,也就理解了sora一半)
以DALLE 2為例,如下圖所示(以下內(nèi)容來自此文:從CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM)
CLIP訓(xùn)練過程:學(xué)習(xí)文字與圖片的對應(yīng)關(guān)系
如上圖所示,CLIP的輸入是一對對配對好的的圖片-文本對(根據(jù)對應(yīng)文本一條狗,去匹配一條狗的圖片),這些文本和圖片分別通過Text Encoder和Image Encoder輸出對應(yīng)的特征,然后在這些輸出的文字特征和圖片特征上進(jìn)行對比學(xué)習(xí)
DALL·E2:prior + decoder
上面的CLIP訓(xùn)練好之后,就將其凍住了,不再參與任何訓(xùn)練和微調(diào),DALL·E2訓(xùn)練時(shí),輸入也是文本-圖像對,下面就是DALL·E2的兩階段訓(xùn)練:
階段一 prior的訓(xùn)練:根據(jù)文本特征(即CLIP text encoder編碼后得到的文本特征),預(yù)測圖像特征(CLIP image encoder編碼后得到的圖片特征)
換言之,prior模型的輸入就是上面CLIP編碼的文本特征,然后利用文本特征預(yù)測圖片特征(說明白點(diǎn),即圖中右側(cè)下半部分預(yù)測的圖片特征的ground truth,就是圖中右側(cè)上半部分經(jīng)過CLIP編碼的圖片特征),就完成了prior的訓(xùn)練
推理時(shí),文本還是通過CLIP text encoder得到文本特征,然后根據(jù)訓(xùn)練好的prior得到類似CLIP生成的圖片特征,此時(shí)圖片特征應(yīng)該訓(xùn)練的非常好,不僅可以用來生成圖像,而且和文本聯(lián)系的非常緊(包含豐富的語義信息)
階段二 decoder生成圖:常規(guī)的擴(kuò)散模型解碼器,解碼生成圖像
這里的decoder就是升級版的GLIDE(GLIDE基于擴(kuò)散模型),所以說DALL·E2 = CLIP + GLIDE
所以對于DALLE 2來說,正因?yàn)榻?jīng)過了大量上面這種訓(xùn)練,所以便可以根據(jù)人類給定的prompt畫出人類預(yù)期的畫作,說白了,可以根據(jù)text預(yù)測畫作長什么樣
最終,sora由三大Transformer組件組成(如果你還不了解transformer或注意力機(jī)制,請讀此文):Visual Encoder(即Video transformer,類似下文將介紹的ViViT)、Diffusion Transformer、Transformer Decoder,具體而言
訓(xùn)練中,給定一個(gè)原始視頻
Visual Encoder將視頻壓縮到較低維的潛在空間(潛在空間這個(gè)概念在stable diffusion中用的可謂爐火純青了,詳見此文的第三部分)
然后把視頻分解為在時(shí)間和空間上壓縮的潛在表示(不重疊的3D patches),即所謂的一系列時(shí)空Patches
再將這些patches拉平成一個(gè)token序列,這個(gè)token序列其實(shí)就是原始視頻的表征:visual token序列
Sora 在這個(gè)壓縮的潛在空間中接受訓(xùn)練,還是類似擴(kuò)散模型那一套,先加噪、再去噪
這里,有兩點(diǎn)必須注意的是
1 擴(kuò)散時(shí)卷積結(jié)構(gòu)U-net被替換成了transformer結(jié)構(gòu)的DiT(加之視覺元素轉(zhuǎn)換成token之后,transformer擅長長距離建模,下文詳述DiT)
2 視頻中這一系列幀在上個(gè)過程中是同時(shí)被編碼的,去噪也是一系列幀并行去噪的(每一幀逐步去噪、多幀并行去噪)
此外,去噪過程中,可以加入去噪的條件(即text condition),這個(gè)去噪條件可以是原始視頻的描述,也可以是二次創(chuàng)作的prompt
比如可以將visual tokens視為query,將text tokens作為key和value,然后類似SD那樣做cross attention
OpenAI 還訓(xùn)練了相應(yīng)的Transformer解碼器模型,將生成的潛在表示映射回像素空間,從而生成視頻
你會發(fā)現(xiàn),上述整個(gè)過程,其實(shí)和SD的原理是有較大的相似性(SD原理詳見此文《從CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM》的3.2節(jié)),當(dāng)然,不同之處也有很多,比如視頻需要一次性還原多幀、圖像只需要還原一幀
網(wǎng)上也有不少人畫出了sora的架構(gòu)圖,比如來自魔搭社區(qū)的
1.1.2 如何理解所謂的時(shí)空編碼(含其好處)
首先,一個(gè)視頻無非就是沿著時(shí)間軸分布的圖像序列而已
但其中有個(gè)問題是,因?yàn)橄袼氐年P(guān)系,一張圖像有著比較大的維度(比如250 x 250),即一張圖片上可能有著5萬多個(gè)元素,如果根據(jù)上一張圖片的5萬多元素去逐一交互下一張圖片的5萬多個(gè)元素,未免工程過于浩大(而且,即便是同一張圖片上的5萬多個(gè)像素點(diǎn)之間兩兩做self-attention,你都會發(fā)現(xiàn)計(jì)算復(fù)雜度超級高)
故為降低處理的復(fù)雜度,可以類似ViT把一張圖像劃分為九宮格(如下圖的左下角),如此,處理9個(gè)圖像塊總比一次性處理250 x 250個(gè)像素維度 要好不少吧(ViT的出現(xiàn)直接挑戰(zhàn)了此前CNN在視覺領(lǐng)域長達(dá)近10年的絕對統(tǒng)治地位,其原理細(xì)節(jié)詳見本文開頭提到的此文第4部分)
當(dāng)我們理解了一張靜態(tài)圖像的patch表示之后(不管是九宮格,還是16 x 9個(gè)格),再來理解所謂的時(shí)空Patches就簡單多了,無非就是在縱向上加上時(shí)間的維度,比如t1 t2 t3 t4 t5 t6
而一個(gè)時(shí)空patch可能跨3個(gè)時(shí)間維度,當(dāng)然,也可能跨5個(gè)時(shí)間維度
如此,同時(shí)間段內(nèi)不同位置的立方塊可以做橫向注意力交互——空間編碼
不同時(shí)間段內(nèi)相同位置的立方塊則可以做縱向注意力交互——時(shí)間編碼
(如果依然還沒有特別理解,沒關(guān)系,可以再看下下文第二部分中對ViViT的介紹)
可能有同學(xué)問,這么做有什么好處呢?好處太多了
一方面,時(shí)空建模之下,不僅提高單幀的流暢、更提高幀與幀之間的流暢,畢竟有Transformer的注意力機(jī)制,那無論哪一幀圖像,各個(gè)像素塊都不再是孤立的存在,都與周圍的元素緊密聯(lián)系
二方面,可以兼容所有的數(shù)據(jù)素材:一個(gè)靜態(tài)圖像不過是時(shí)間=0的一系列時(shí)空patch,不同的像素尺寸、不同的時(shí)間長短,都可以通過組合一系列 “時(shí)空patch” 得到
總之,基于 patches 的表示,使 Sora 能夠?qū)Σ煌直媛?、持續(xù)時(shí)間和長寬比的視頻和圖像進(jìn)行訓(xùn)練。在推理時(shí),也可以可以通過在適當(dāng)大小的網(wǎng)格中排列隨機(jī)初始化的 patches 來控制生成視頻的大小
DiT 作者之一 Saining Xie 在推文中提到:Sora“可能還使用了谷歌的 Patch n’ Pack (NaViT) 論文成果,使其能夠適應(yīng)可變的分辨率/持續(xù)時(shí)間/長寬比”
當(dāng)然,ViT本身也能夠處理任意分辨率(不同分辨率相當(dāng)于不同長度的圖片塊序列),但NaViT提供了一種高效訓(xùn)練的方法,關(guān)于NaViT的更多細(xì)節(jié)詳見下文的介紹
而過去的圖像和視頻生成方法通常需要調(diào)整大小、進(jìn)行裁剪或者是將視頻剪切到標(biāo)準(zhǔn)尺寸,例如 4 秒的視頻分辨率為 256x256。相反,該研究發(fā)現(xiàn)在原始大小的數(shù)據(jù)上進(jìn)行訓(xùn)練,最終提供以下好處:
首先是采樣的靈活性:Sora 可以采樣寬屏視頻 1920x1080p,垂直視頻 1920x1080p 以及兩者之間的視頻。這使 Sora 可以直接以其天然縱橫比為不同設(shè)備創(chuàng)建內(nèi)容。Sora 還允許在生成全分辨率的內(nèi)容之前,以較小的尺寸快速創(chuàng)建內(nèi)容原型 —— 所有內(nèi)容都使用相同的模型
其次使用視頻的原始長寬比進(jìn)行訓(xùn)練可以提升內(nèi)容組成和幀的質(zhì)量
其他模型一般將所有訓(xùn)練視頻裁剪成正方形,而經(jīng)過正方形裁剪訓(xùn)練的模型生成的視頻(如下圖左側(cè)),其中的視頻主題只是部分可見;相比之下,Sora 生成的視頻具有改進(jìn)的幀內(nèi)容(如下圖右側(cè))
1.1.3 Diffusion Transformer(DiT):擴(kuò)散過程中以Transformer為骨干網(wǎng)絡(luò)
sora不是第一個(gè)把擴(kuò)散模型和transformer結(jié)合起來用的模型,但是第一個(gè)取得巨大成功的,為何說它是結(jié)合體呢
一方面,它類似擴(kuò)散模型那一套流程,給定輸入噪聲patches(以及文本提示等調(diào)節(jié)信息),訓(xùn)練出的模型來預(yù)測原始的不帶噪聲的patches「Sora is a diffusion model, given input noisy patches (and conditioning information like text prompts), it’s trained to predict the original “clean” patches」
類似把一張圖片打上各種馬賽克,然后訓(xùn)練一個(gè)模型,讓它學(xué)會去除各種馬賽克,且一開始各種失敗沒關(guān)系,反正有原圖作為ground truth,不斷縮小與原圖之間的差異即可
而當(dāng)把圖片打上全部馬賽克之后,還可以訓(xùn)練該模型根據(jù)prompt直接創(chuàng)作的能力,讓它畫啥就畫啥
更多細(xì)節(jié)的理解請參看此文《從VAE、擴(kuò)散模型DDPM、DETR到ViT、Swin transformer》
二方面,它把圖像打散成塊后,計(jì)算塊與塊之間的注意力,而這套自注意力機(jī)制便是transformer的機(jī)制
總之,總的來說,Sora是一個(gè)在不同時(shí)長、分辨率和寬高比的視頻及圖像上訓(xùn)練而成的擴(kuò)散模型,同時(shí)采用了Transformer架構(gòu),如sora官博所說,Sora is a diffusion transformer,簡稱DiT
關(guān)于DiT的更多細(xì)節(jié)詳見下文第二部分介紹的DiT
1.2 基于DALLE 3的重字幕技術(shù):提升文本-視頻數(shù)據(jù)質(zhì)量
1.2.1 DALLE 3的重字幕技術(shù):為文本-視頻數(shù)據(jù)集打上詳細(xì)字幕
首先,訓(xùn)練文本到視頻生成系統(tǒng)需要大量帶有相應(yīng)文本字幕的視頻,研究團(tuán)隊(duì)將 DALL?E 3 中的重字幕(re-captioning)技術(shù)應(yīng)用于視頻
具體來說,研究團(tuán)隊(duì)首先訓(xùn)練一個(gè)高度描述性的字幕生成器模型,然后使用它為訓(xùn)練集中所有視頻生成文本字幕
與DALLE 3類似,研究團(tuán)隊(duì)還利用 GPT 將簡短的用戶 prompt 轉(zhuǎn)換為較長的詳細(xì)字幕,然后發(fā)送到視頻模型,這使得 Sora 能夠生成準(zhǔn)確遵循用戶 prompt 的高質(zhì)量視頻
關(guān)于DALLE 3的重字幕技術(shù)更具體的細(xì)節(jié)請見此文2.3節(jié)《AI繪畫原理解析:從CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM》
2.3 DALLE 3:Improving Image Generation with Better Captions
2.3.1 為提高文本圖像配對數(shù)據(jù)集的質(zhì)量:基于谷歌的CoCa微調(diào)出圖像字幕生成器
2.3.1.1 什么是谷歌的CoCa
2.1.1.2 分別通過短caption、長caption微調(diào)預(yù)訓(xùn)練好的image captioner
2.1.1.3 為提高合成caption對文生圖模型的性能:采用描述詳細(xì)的長caption,訓(xùn)練的混合比例高達(dá)95%..
1.2.2 類似Google的W.A.L.T工作:引入auto regressive進(jìn)行視頻擴(kuò)展
其次,如之前所述,為了保證視頻的一致性,模型層不是通過多個(gè)stage方式來進(jìn)行預(yù)測,而是整體預(yù)測了整個(gè)視頻的latent(即去噪時(shí)非先去噪幾幀,再去掉幾幀,而是一次性去掉全部幀的噪聲)
但在視頻內(nèi)容的擴(kuò)展上,比如從一段已有的視頻向后拓展出新視頻的訓(xùn)練過程中可能引入了auto regressive的task,以幫助模型更好的進(jìn)行視頻特征和幀間關(guān)系的學(xué)習(xí)
更多可以參考Google的W.A.L.T工作,下文將詳述
1.3 對真實(shí)物理世界的模擬能力
1.3.1 sora學(xué)習(xí)了大量關(guān)于3D幾何的知識
OpenAI 發(fā)現(xiàn),視頻模型在經(jīng)過大規(guī)模訓(xùn)練后,會表現(xiàn)出許多有趣的新能力。這些能力使 Sora 能夠模擬物理世界中的人、動物和環(huán)境的某些方面。這些特性的出現(xiàn)沒有任何明確的三維、物體等歸納偏差 — 它們純粹是規(guī)?,F(xiàn)象
三維一致性(下圖左側(cè))
Sora 可以生成動態(tài)攝像機(jī)運(yùn)動的視頻。隨著攝像機(jī)的移動和旋轉(zhuǎn),人物和場景元素在三維空間中的移動是一致的
針對這點(diǎn),sora一作Tim Brooks說道,sora學(xué)習(xí)了大量關(guān)于3D幾何的知識,但是我們并沒有事先設(shè)定這些,它完全是從大量數(shù)據(jù)中學(xué)習(xí)到的
長序列連貫性和目標(biāo)持久性(上圖右側(cè))
視頻生成系統(tǒng)面臨的一個(gè)重大挑戰(zhàn)是在對長視頻進(jìn)行采樣時(shí)保持時(shí)間一致性
例如,即使人、動物和物體被遮擋或離開畫面,Sora 模型也能保持它們的存在。同樣,它還能在單個(gè)樣本中生成同一角色的多個(gè)鏡頭,并在整個(gè)視頻中保持其外觀
與世界互動(下圖左側(cè))
Sora 有時(shí)可以模擬以簡單方式影響世界狀態(tài)的動作。例如,畫家可以在畫布上留下新的筆觸,這些筆觸會隨著時(shí)間的推移而持續(xù),而視頻中一個(gè)人咬一口面包 則面包上會有一個(gè)被咬的缺口
模擬數(shù)字世界(上圖右側(cè))
視頻游戲就是一個(gè)例子。Sora 可以通過基本策略同時(shí)控制 Minecraft 中的玩家,同時(shí)高保真地呈現(xiàn)世界及其動態(tài)。只需在 Sora 的提示字幕中提及 「Minecraft」,就能零樣本激發(fā)這些功能
1.3.2 sora真的會模擬真實(shí)物理世界了么
對于“sora真的會模擬真實(shí)物理世界”這個(gè)問題,網(wǎng)上的解讀非常多,很多人說sora是通向通用AGI的必經(jīng)之路、不只是一個(gè)視頻生成,更是模擬真實(shí)物理世界的模擬器,這個(gè)事 我個(gè)人覺得從技術(shù)的客觀角度去探討更合適,那樣會讓咱們的思維、認(rèn)知更冷靜,而非人云亦云、最終不知所云
首先,作為“物理世界的模擬器”,需要能夠在虛擬環(huán)境中重現(xiàn)物理現(xiàn)實(shí),為用戶提供一個(gè)逼真且不違反「物理規(guī)律」的數(shù)字世界
比如蘋果不能突然在空中漂浮,這不符合牛頓的萬有引力定律;比如在光線照射下,物體產(chǎn)生的陰影和高光的分布要符合光影規(guī)律等;比如物體之間產(chǎn)生碰撞后會破碎或者彈開
其次,李志飛等人在《為什么說 Sora 是世界的模擬器?》一文中提到,技術(shù)上至少有兩種方式可以實(shí)現(xiàn)這樣的模擬器
虛幻引擎(Unreal Engine,UE)就是這種物理世界的模擬器
它內(nèi)置了光照、碰撞、動畫、剛體、材質(zhì)、音頻、光電等各種數(shù)學(xué)模型。一個(gè)開發(fā)者只需要提供人、物、場景、交互、劇情等配置,系統(tǒng)就能做出一個(gè)交互式的游戲,這種交互式的游戲可以看成是一個(gè)交互式的動態(tài)視頻
UE 這類渲染引擎所創(chuàng)造的游戲世界已經(jīng)能夠在某種程度上模擬物理世界,只不過它是通過人工數(shù)學(xué)建模及渲染而成,而非通過模型從數(shù)據(jù)中自我學(xué)習(xí)。而且,它也沒有和語言代表的認(rèn)知模型連接起來,因此本質(zhì)上缺乏世界常識。而 Sora 代表的AI系統(tǒng)有可能避免這些缺陷和局限
不同于 UE 這一類渲染引擎,Sora 并沒有顯式地對物理規(guī)律背后的數(shù)學(xué)公式去“硬編碼”,而是通過對互聯(lián)網(wǎng)上的海量視頻數(shù)據(jù)進(jìn)行自監(jiān)督學(xué)習(xí),從而能夠在給定一段文字描述的條件下生成不違反物理世界規(guī)律的長視頻
與 UE 這一類“硬編碼”的物理渲染引擎不同,Sora 視頻創(chuàng)作的想象力來自于它端到端的數(shù)據(jù)驅(qū)動,以及跟LLM這類認(rèn)知模型的無縫結(jié)合(比如ChatGPT已經(jīng)確定了基本的物理常識)
最后值得一提的是,Sora 的訓(xùn)練可能用了 UE 合成的數(shù)據(jù),但 Sora 模型本身應(yīng)該沒有調(diào)用 UE 的能力
更多內(nèi)容請前往CSDN查看原帖 https://blog.csdn.net/v_JULY_v/article/details/136143475
該文章在 2024/2/24 14:50:00 編輯過