擴散模型與文生視頻
一、快速發展的文生視頻
在當前的人工智能領域,文生視頻技術有著引人注目的進展。該技術的核心任務非常明確,就是利用文本指令來控制視頻內容的生成。具體而言,用戶可以輸入特定文本,系統則根據這段文本生成相應的視覺畫面。這一過程并不局限于單一的輸出,相同的文本可能會引導生成多種不同的視覺場景,顯示出該技術的靈活性和多樣性。
基于擴散模型模式的視頻生成技術,是從 2022 年上半年才開始出現的。在兩年的時間里,這一技術取得了顯著的進步。由上圖中可以看到,從 Google 在2022 年 4 月發布的文章所展示的效果,到騰訊在 2023 年 12 月發布的 hunyuan 的效果,無論在畫質、光影的重建,還是整個畫面的連續性上,都實現了顯著的提升。
在過去兩年間,這一領域吸引了眾多參與者,包括各大公司和研究機構,比如上海人工智能研究院,以及一些高校。在這個賽道中,誕生了許多引人注目的成果。從最初的 VDM 模型,到我們常聽到的老玩家 Runway Gen1 和 Gen2 的工作,以及去年備受關注的 PikaLab。PikaLab 由兩位華人女性科學家創立,它的上市甚至引發了中國 A 股市場上某些股票的劇烈波動。此外,還有騰訊之前的 VideoCrafter 系列,以及阿里的 ModelScope 系列等。
當然,最讓人印象深刻的是在今年 2 月 15 日,OpenAI 發布了頗具影響力的 Sora 模型。這款 Sora 模型的出現,使得其它模型相比之下顯得普通了許多。我們當時還在糾結于生成 4 秒到 8 秒的視頻,而 Sora 模型直接將視頻生成的時長擴展到了 1 分鐘。這一突破顯著提升了視頻生成技術的能力。
在視頻生成領域,我們主要依賴于 diffusion model。為什么這種模型能夠相對于之前的 GAN 生成或者 VAE 生成技術實現顯著的效果提升呢?關鍵的區別在于,以往的模型通常采用單步生成或稱為 decoder 的方法,直接從隱空間一步生成最終的數據 x。這種單步從隱空間映射到數據空間的生成過程,建模非常復雜,過去的模型往往難以實現有效的建模。
然而,diffusion model 的獨特之處在于它采用多步驟過程。為什么稱之為“diffusion”呢?“擴散”的概念類似于一滴墨水滴入水杯中,墨水緩緩擴散開來,最終均勻分布,使我們難以區分它與其他水的不同。這種自然界中廣泛存在的擴散過程被用來模擬數據生成:假設一個人臉圖像或任何信號,通過 n 步加噪聲的迭代,最終變為純噪聲。這就是 diffusion 的過程,它極大地增強了模型處理復雜數據的能力。
與 diffusion 相對應的,在 diffusion model 中核心學習的任務是 denoising,通過逐步去除噪聲最終生成我們所需的圖像信號。從無序的噪聲中重建有序的信號,這個過程被稱為 denoising。
具體來說,diffusion model 主要包括兩個過程:一個是加噪過程,稱為 diffusion;另一個是降噪過程,稱為 denoising。在加噪的過程中,通過每一步的計算添加高斯噪聲,從而實現加噪。相比之下,denoising 過程更為復雜,也就是模型訓練去擬合的過程,旨在使模型學會在每一個單步上,即從 t 步到 t-1 中的噪聲預測。
因此,在每一步的噪聲預測中,生成的模型會生成高斯噪聲,并將整個預測的域限定在高斯分布上,這樣可以使整個 diffusion model 更有效地學習這個過程。相對于以前的 VAE 的 encoder-decoder 架構,或者是基于 GAN 的通過discriminator 去修正 generator 生成的模式,diffusion model 能夠實現更優的生成效果。
Diffusion 模型最初主要應用于圖像生成,原因在于圖像數據更容易收集,而且相對于視頻,圖像生成所需注入的信息量較少。在眾多突出的研究中,stable diffusion 是最著名的一項工作。這個框架的設計主要基于三個模塊:encoder和 decoder 模塊、unet 模塊以及 condition 模塊。使用 encoder 和 decoder 模塊的原因在于,這種設計復用了之前 VAE 模型的架構。這樣做的好處是能夠將真實圖像映射到隱空間,實現圖像的下采樣和數據壓縮,從而在后續過程中減少所需的計算量。此外,在隱空間中,像 VAE 模型那樣對 z 的約束形成高斯分布,使得 latent space 的分布較為標準。這種設置使得在隱空間中進行 denoising 學習變得相對容易。這就是第一個主要模塊,即 VAE 模塊。
第二個介紹的是 condition 模塊,它在生成過程中起著至關重要的作用。例如,在文生視頻的應用中,我們通常提到的是從文本到視頻的轉換,這里的 condition 即為文本,也就是對畫面的描述性文本提示(prompt)。除此之外,condition 模塊還可以包含其他多種形式的條件輸入,如圖像本身、代表特定特征的向量,以及如語義分割圖這類的圖像等。這些條件的引入,允許模型根據不同的輸入信息產生定制化的輸出,從而增強生成內容的相關性和準確性。
中間核心部分是 unet 模塊,這是實際進行 denoising 預測的模塊。上圖中展示的流程是從第 t 步到第 t-1 步的過程。整個生成流程是通過迭代 T 步迭代到第 0 步,但每個模塊的構成是一致的。在 unet 模塊中,通過 down sampling 和 up sampling 恢復到與輸入相同的尺寸,核心包含一個 convolutional layer,其后加入了 transformer layer,通過 attention 機制將 condition 的 embedding 注入進來。例如,文本通過一個 text encoder 轉換成text embedding,然后以 KV 形式與 latent space 進行 cross attention 計算,以實現條件的注入。
經過這樣的模型設計,就可以預測出一步的 epsilon(噪聲),下一個 ZT-1 就是 ZT 減去預測出的噪聲?;谶@樣的邏輯,通過 t 步的迭代 denoising 最終會生成一個與目標 x 相關的 z,通過 decoder 就可以還原出最終的圖像。
這就是 text to image 的框架。與圖像相比,視頻數據更難收集,視頻中的時間信息和動態信息建模難度更大,數據標注的成本也非常高。因此,現在基于text video 的模型多是在 text image 模型基礎上,進行時空建模的設計來實現視頻生成。即在原有的 spatial layer 上加入 motion layer,通過這種結合實現生成視頻的模型。其中兩個較為著名的方法包括 AnimateDiff,由上海人工智能實驗室提出,在時間軸上使用 self-attention,以及 ModelScope 系列,使用基于 3D convolution layer 的 temporal 建模。
這種框架實際上保留了模型由文本生成靜態圖像的能力,并且通過引入 motion layer,實現了在時間軸上的平滑過渡。這相當于在每一幀圖片生成的基礎上,通過將這些幀相互連接生成一個連續動態的視頻。這種方法可以有效地將單幀的靜態圖像轉變為展現動態序列的視頻,使得生成的內容不僅限于靜態畫面,而是展現出時間維度上的連貫動態。
二、視頻生成的主要難點
下面介紹開發過程中的主要難點,以及我們為優化模型生成圖像的效率和最終性能所設計的解決方案。
1. 難點 1:動作建模合理
我們發現在一些模型中會出現問題,例如在模擬鼓掌動作的圖像中,手部可能會融合在一起,或者大臂與小臂的比例和運動不符合機械原理,導致動作看起來不自然。此外,由于每一幀的時空建模是獨立進行的,若沒有通過 motion layer 有效地串聯這些幀,就可能出現動作不連貫的現象。例如,一幀中狗可能朝左,而下一幀突然朝右,造成觀感上的劇烈變化。這些問題都需要在模型的動作建模方面進行優化,以確保生成的視頻動作連貫且自然。
2. 難點 2:語義對齊準確
當我們的 condition 僅有文字時,在實際工業應用中,需要模型對這些文字描述有更好的響應能力。例如,控制生成的數量,比如是四只還是五只,以及對特定局部區域的空間控制。用戶可能希望生成的背景是黃色或白色,或者想要白色的潛艇、白色的狗等特定對象。因此,對語義的準確理解和響應在整個生成框架中是影響生成效果的一個關鍵點,對提高模型的實用性和用戶滿意度至關重要。
3. 難點 3:畫質細節精美
第三個難點是對畫質的進一步雕琢??紤]到當前互聯網統計數據顯示,大約七八十甚至九十以上的網絡流量來自視頻,因此用戶對視頻的畫質、分辨率以及幀率有著更高的期望。在生成模型中,我們面臨的挑戰是如何在生成速度和畫質之間找到平衡。因此,我們必須對模型進行優化,以確保在滿足實時生成的同時,也能夠提供高質量的視頻輸出。
針對這些難點,我們設計了一些解決方案。
4. 方案 1:運動質量提升
為了提升運動質量,我們設計了一個整體的模型框架,在 text condition 的基礎上,注入 image condition。這種 image condition 為模型提供了一個生成時的基準,可以理解為一個錨點(anchor)。通常這個錨點是視頻的第一幀,基于這一幀,模型會在后續幀的生成中保持人物和背景的基本分布,以及大致的運動空間。這樣的設計使得訓練過程中視頻的生成結構更穩定,運動更加合理。這樣相當于降低了模型在訓練時對整個視頻畫面的理解難度,從而優化了生成過程的效率和質量。這種方法不僅提升了視頻的視覺連貫性,還確保了生成內容的動態自然性和逼真度。
為了訓練這種模型,我們在數據集的增廣方面進行了一些探索。圖片數據遠多于視頻數據,一般來說,訓練一個圖像模型可能會使用到 10 億條數據,而視頻數據可能只有千萬到億級別。
為了彌補這種差距,第一,我們通過對圖片進行增廣處理,比如縮放、左移、右移、上移、下移等操作,使圖片模擬簡單的運動視頻,從而擴大訓練集。第二,我們在多分辨率的環境下設計了一種訓練框架,可以同時處理不同幀率、幀數和視頻分辨率的數據,這樣可以實現更豐富的數據樣態,提高模型的效果。第三,我們在圖像和文本的控制(condition)上進行了有條件的融合,通過數據學習擬合條件的權重和參數。另外,還借鑒了南洋理工大學 ziwei liu 教授的研究,采用多輪生成的方法構建模型,利用上一輪生成的低頻信號信息指導下一輪的生成。我們可以將低頻信號理解為在運動中相對保持固定的一些特征,例如一個人跑步時背景相對固定,而跑步動作則是有節奏的規律運動?;谶@樣的低頻信號指導,最終生成的視頻信號將更加穩定。
5. 方案 2:語義對齊準確
關于語義對齊,我們發現開源的數據集通常比較簡單,對畫面的描述僅是一個籠統的概念,例如“女孩在家中學習”。然而,在生成模型的預訓練中,我們需要精確地對齊畫面中的各種元素。例如,不僅要描述“女孩在家中學習”,還要包括更具體的場景和元素,如“她在廚房里用 iPad 學習,穿著牛仔襯衫,她是一位黑人女孩”。
為了提高對這種復雜場景的理解,我們嘗試使用過去的視頻理解專家模型和現在較多使用的視頻基礎模型(video foundation model),來實現對視頻的多維度描述生成。最后,再通過大型語言模型進行融合。在這個大模型的時代,研究方向的一個新范式是需要團隊合作。因此,我們使用騰訊內部的多模態包括語言文本模型的資源進行組合,最終生成了一個對畫面更優質的理解。通過這種深入的理解,就能夠訓練出更好的生成模型。這也是對“更好的理解帶來更好的生成”這一理念的實踐。未來,我們可能還會探索基于知識圖譜的畫面描述,以通過知識圖譜的結構更好地生成最終的視頻效果。
在模型中對文本的理解至關重要。我們之前通常使用的開源模型是 CLIP 的 text encoder。CLIP 主要學習文本與圖像數據之間的關聯,它本質上是一個二分類模型。這樣的關聯可能導致對細節和不同區域下的表征不充分。因此會出現一些問題,例如,當我們輸入描述為“四只貓”的時候,結果可能只顯示三只貓的情況,或者在需要生成鏡頭運動的場景時,模型表現不佳。
因此,我們發現對于文本的響應,CLIP 的 text encoder 是不夠的。一個直觀的方法是替換掉對文本的 encoder 模型。我們嘗試使用 T5 模型進行簡單的 projection,并在 unet 上訓練。但由于 unet 本身基于 CLIP 訓練得非常充分,整個分布依賴于 CLIP 的 text encoder,直接加入 T5 可能反而會對整個系統產生一定的影響。
最近,騰訊進行了一個嘗試,使用類似多模態模型中的 q-former 形式,通過cross attention 的方式將 T5 的 text embedding 注入到網絡中。我們最終注入網絡的長度是固定的。這樣可以有效地將 T5 或其他大型語言模型如 LLAMA 的 embedding 提取出來,與 unet 中的 Query 進行匹配并注入。通過這種形式,可以對具體細節的文本描述響應更加充分,從而提高模型對文本的理解和生成的質量。
6. 方案 3:畫質提升
在畫質提升方面,看起來類似于傳統的畫質提升任務,但在生成模型中的應用實際上有所不同。在生成模型中的畫質提升,包括超分辨率(super resolution)或超幀率(frame interpolation)提升,不僅僅是對原視頻的簡單修正,更多地是具有修復功能,需要模型具備重新生成的能力。在生成模型的第一階段,視頻的生成可能主要集中在畫面的布局,決定視頻主體的位置和大致的動作形式。而在第二階段,則需要對一些具體的區域進行修復和生成。
我們借鑒了基于圖片 condition 的模型,設計了基于視頻的 condition 模型。通過類似于 control net 的方式將條件注入到原先的 unet 中。這樣,基于第一階段生成的視頻,進行有條件的、可控的生成,最終實現二階段的超分辨率后的視頻模型。通過這種方法,我們不僅簡單地提高了分辨率,而且通過有目的的修復和精細化生成,提升了整個視頻的視覺質量,使得最終輸出的視頻更加清晰且細節更加豐富。
在基于人臉的生成中,用戶對人臉的瑕疵更加敏感,特別是當人臉在畫面中占比較小時,很容易出現生成效果的崩壞。我們分析原因,可能是由于 VAE 的 encoder 在較小區域進行了 8 倍的下采樣,導致響應極小。這種情況下,decoder 在處理特別是人臉這種復雜 pattern 的小區域時,其內容表達和恢復能力不足。
為了優化這一問題,我們發現在生成后對人臉區域單獨進行放大和重繪可以顯著優化人臉的生成效果,然后通過高斯模糊的方式將其無縫融合回原圖,即可實現人臉的有效修復。
此外,關于提升分辨率和處理長視頻,我們也借鑒了學術界的一些方法,通過對噪聲的控制實現快速的多階段生成,同時確保生成內容之間的連續性。上圖中展示了超分前后的畫質對比以及人臉的修復效果。在騰訊內部進行的人工主觀評測中,這種人臉修復方法可以解決 90% 以上的人臉問題,顯著提高了人臉生成的質量和實用性。
這里展示的是截至 2023 年年底的一些效果。上半部分是基于文生視頻的示例,由文字描述控制視頻內容的生成。下半部分是基于單張圖片控制的“圖生視頻”,不再需要文本控制,可以直接從一張靜態圖片生成動態的視頻。
三、視頻生成的應用實踐
接下來將分享我們在工業界應用方面的一些實踐。
1. 視頻風格化轉換
視頻風格化是將真實視頻或動畫視頻轉化成其他風格視頻的過程。這里展示的示例包括將真實視頻轉化成日本動漫風格,以及將真實視頻轉化成 3D 動畫風格。這種轉化不僅可以應用于模特拍攝的視頻生成對應的動畫畫面,還可以用于風景視頻的風格遷移。例如,我們曾與人民日報合作制作了一系列名為“江山如此多嬌”的短片,其中包括對風景進行風格化處理,效果非常引人注目,大家可以在微信視頻號中搜索觀看。
具體的實現方法包括將視頻作為 condition 輸入,這里的 condition 不僅包括常規的 RGB 信號,還包括 Canny 邊緣檢測信號、深度信息和人物骨架控制等信號序列。這些信號通過 ControlNet 的形式注入到 unet 中,從而生成相應的風格化視頻。之所以能夠生成特定風格的視頻,是因為我們對 unet 進行了針對該獨立風格的微調,使其成為一個只能生成動漫風格視頻的網絡。因此,基于原始視頻的控制信號,加上專門生成動漫風格的模型,我們可以生成與原視頻內容對齊的動漫風格視頻。這種技術不僅提升了視頻的視覺效果,也增加了內容的多樣性和趣味性。
2. 人體姿態控制
這里的輸入是單獨的人物圖片,可以是真人也可以是動漫形象。接著,我們將使用人體動作骨架的控制序列,包括人的手、腿、頭部等關鍵點的骨架圖。有了這些骨架圖之后,我們設計了一個 condition 融合模塊,將之前提到的 noise 與 condition 融合后,注入到 unet 網絡中。這樣就可以生成動態的人物圖像,讓參考圖像中的人物動起來。
這項技術的應用非常廣泛,一方面可以用于創造有趣的互動體驗,例如讓圖中的人物跳舞;另一方面,它也可以用于從單一動漫圖像直接生成動作視頻,極大提高了動漫制作和短視頻制作的效率。盡管這個模型未在動物數據上進行訓練,但它展示了一定的泛化能力,甚至能使圖中的小貓跳舞,增添了一份趣味性。
3. 視頻運動筆刷
視頻運動筆刷可以讓視頻中的局部區域動起來,這對于工業應用中提高效率非常有用。具體操作是,通過用戶的控制讓畫面中某個局部區域進行動態表現,控制方式包括選擇特定區域以及輸入相關文本。例如,用戶可以點擊圖中某個區域,如讓畫中的女神開始哭泣,或讓皮卡丘顯得更加開心而笑起來。
在技術實現上,我們在輸入的 condition 中加入了一些特定功能來實現這樣的效果。首先,用戶的點擊會觸發對該區塊的實例分割,產生一個 mask。這個 mask 隨后會被用于 cross attention 過程中,與輸出即 denoise 的輸入一起工作。在 attention 過程中,加入的 mask 將增強被選區域的動態效果,同時抑制 mask 之外的區域動作,從而使得指定區域的運動更加豐富和明顯。這種技術不僅增加了視頻內容的互動性和動態表現,還提高了制作過程的靈活性和效率。
四、一些不太長遠的展望
Sora 的出現無疑極大地推動了文生視頻技術的推廣,引起了廣泛關注。當行業內還在討論如何處理 4 秒或 8 秒的視頻時,Sora 已經能夠生成長達 1 分鐘的視頻,這無疑震驚到了整個行業的從業人員。Sora 的出現將視頻生成技術分成了兩個陣營:“Sora”與“其他”。這種劃分突顯了 Sora 與現有技術之間的根本區別。
首先要講的一個區別是關于 scaling up 的概念,OpenAI 非常推崇這一策略,他們堅信通過增大數據量和模型規??梢越鉀Q各種問題。同時,他們設計的 Sara 模型也是為了模擬物理世界,所有動機和設計都基于 scaling up 的理念。為了實現模型規模的擴大,他們將unet 中的 CNN 替換為了 Transformer,因為相比于 CNN,Transformer 更易于進行模型的并行優化。此外,他們還利用了之前大型語言模型(LLM)的工程技術。
關于如何做出更長的視頻,他們首先在 encoder 的 VAE 階段對視頻進行了壓縮。這種壓縮不僅僅發生在單幀的分辨率空間,還包括在時間軸上的大幅壓縮。這樣做使得在一個較小的 latent 空間中進行 denoise 成為可能,同時也能通過這個 denoise 過程或 latent 生成相對較長的視頻。
這里有三個例子展示了 Sora 模型的效果,這些例子來自 Sora 的官方網站。第一個例子是基于 0-scale 的模型效果,第二個是 8 倍 scale 的效果,最后一個是 32 倍 scale 的效果。可以明顯看到,隨著模型規模的增加,生成的視頻效果有了顯著提升。
同時,我也推薦大家關注中國的兩個開源 Sora 項目。一個是潞晨科技的項目,另一個是北京大學袁粒老師領導的團隊開發的 Open Sora Plan。這些團隊對開源社區的貢獻值得敬佩,他們投入了大量精力。
騰訊也在積極進行類似的工作,我們正在探索基于 Transformer 架構的技術。希望在不久的將來,我們能夠展示更好的效果,并預計會有一個重要的版本更新。歡迎大家積極體驗這一新技術。
五、問答環節
Q1:文生圖或視頻過程中的語義保真如何理解?如何衡量生成的質量?
A1:這是一個很好的問題。首先,我們可以從兩個方面來衡量:主觀的和客觀的。從客觀角度來說,我們會使用一些模型來評估,比如對于語義保真度,我們常用 CLIP 的相關性作為一個重要的衡量標準。另外,我們騰訊的某些系列產品也通過語義相關性、運動感、畫質、清晰度以及內容的豐富度等方面,使用專家模型來評估生成內容的綜合效果。
從主觀角度來看,我們通過人來評估。我們內部有一個專門的評測團隊,超過 1000 人,他們通過對比兩個模型的輸出來評估效果優劣。評估形式通常是進行模型對比,例如將混元和 Pika 的結果相比較,評估團隊會判斷哪一個更好,或者兩者是否相當。評估人員都經過專業訓練,在多個維度上進行評估,并進行加權判斷。
Q2:Sora 背后到底有沒有它的護城河,到底在哪里?是數據量,技術框架,還是都有?
A2:我覺得顯然是兩者都有。在技術框架方面,網絡模型的護城河可能相對較低。但是在大規模訓練的基建方面,我認為有相當大的護城河。OpenAI 在千卡甚至萬卡級的 GPU 聯合訓練上有非常深厚的積累,這在其他公司,尤其是國內的一些公司中可能相對欠缺。另外,正如我之前提到的,團隊協作方面,OpenAI 的 LLM 和其 GP4-V 等多模態模型也表現出顯著的優勢,這些模型對于理解產生的數據極為關鍵,對生成模型的訓練也會有很大影響。
我們在數據構建方面落后于他們,在訓練的最終結果上也有較大的差距。,所以這構成了一個非常深的護城河,我們需要在各個方面實現追趕和超越。
Q3:您剛剛提到數據層面,只是原始收集的數據量比我們大,還是他借助的這些工具做得更好、質量更好呢?
A3:我之前聽說過 OpenAI 在下載全互聯網的視頻數據,具體數據量他們沒有公開,我也不好猜測。另外,也有分析指出他們使用了 UE 引擎來造數據。考慮到他們對 Scaling Up 的崇拜,我覺得他們的數據量應該是非常巨大的,可能超出我們的想象。
在數據質量上,如我之前所述,對視頻的描述能力會產生很大的影響。即使我們擁有相同的數據,如果我們對其描述存在缺陷或差距,那么訓練出來的生成模型也會有顯著的性能差異。所以,不僅是數據的數量,其質量和處理方式同樣關鍵。
Q4:您認為 Sora 這種機制,或者這種數據驅動的方式,是否真的能夠理解這個物理世界?因為關于這個的爭論很多,到底能不能真正地實現所謂的世界模型呢?
A4:我個人覺得這還是比較困難的。我認為我們現有的數據可能還不夠。在這種擴大模型和訓練的方式下,對于算力來說,數據的利用率是非常低的。例如,一個人不需要看幾十億、上百億的數據視頻就能理解影子是由物體遮擋光線產生的,但是 AI 模型可能就需要極大量的數據才能學會這一點。當然,如果有足夠多的數據,也許 AI 真的能夠學會,但是暫時來看,我們可能在有生之年都達不到這樣的數據規模,所以我認為實現真正的物理世界理解是非常難的。
同時,也有人討論說生成模型是否一定需要對物理有強制性約束,因為我們實際上看到的世界有時也會因為我們自己的視覺系統產生誤判。比如,兩個相同大小和顏色的正方形放在不同的背景下,我們也可能會判斷它們的亮度不同。所以,最終如果 AI 模型能夠符合我們人類的視覺偏好,也是可以接受的。