GPT-4+物理引擎加持擴散模型,生成視頻逼真、連貫、合理
擴散模型的出現推動了文本生成視頻技術的發展,但這類方法的計算成本通常不菲,并且往往難以制作連貫的物體運動視頻。
為了解決這些問題,來自中國科學院深圳先進技術研究院、中國科學院大學和 VIVO AI Lab 的研究者聯合提出了一個無需訓練的文本生成視頻新框架 ——GPT4Motion。GPT4Motion 結合了 GPT 等大型語言模型的規劃能力、Blender 軟件提供的物理模擬能力,以及擴散模型的文生圖能力,旨在大幅提升視頻合成的質量。
- 項目鏈接:https://gpt4motion.github.io/
- 論文鏈接:https://arxiv.org/pdf/2311.12631.pdf
- 代碼鏈接:https://github.com/jiaxilv/GPT4Motion
具體來說,GPT4Motion 使用 GPT-4 基于用戶輸入的文本 prompt 生成 Blender 腳本,利用 Blender 內置的物理引擎來制作基本的場景組件,并封裝成跨幀的連續運動,然后再將這些組件輸入到擴散模型中,生成與文本 prompt 對齊的視頻。
實驗結果表明,GPT4Motion 可以在保持運動一致性和實體一致性的前提下高效生成高質量視頻。值得注意的是,GPT4Motion 使用了物理引擎,這讓其生成的視頻更具真實性。GPT4Motion 為文本生成視頻提供了新的見解。
我們先來看一下 GPT4Motion 的生成效果,例如輸入文本 prompt:「一件白 T 恤在微風中飄動」、「一件白 T 恤在風中飄動」、「一件白 T 恤在大風中飄動」,風的強度不同,GPT4Motion 生成的視頻中白 T 恤的飄動幅度就不同:
在液體流動形態方面,GPT4Motion 生成的視頻也能夠很好地表現出來:
籃球從空中旋轉著落下:
方法介紹
該研究的目標是根據使用者對一些基本物理運動場景的 prompt,生成一個符合物理特性的視頻。物理特性通常與物體的材料有關。研究者的重點在于模擬日常生活中常見的三種物體材料:1)剛性物體,在受力時能保持形狀不發生變化;2)布料,其特點是柔軟且易飄動;3)液體,表現出連續和可變形的運動。
此外,研究者還特別關注這些材料的幾種典型運動模式,包括碰撞(物體之間的直接撞擊)、風效應(氣流引起的運動)和流動(連續且朝著一個方向移動)。模擬這些物理場景通常需要經典力學、流體力學和其他物理知識。目前專注于文本生成視頻的擴散模型很難通過訓練獲取這些復雜的物理知識,因此無法制作出符合物理特性的視頻。
GPT4Motion 的優勢在于:確保生成的視頻不僅與用戶輸入的 prompt 一致,而且在物理上也是正確的。GPT-4 的語義理解和代碼生成能力可將用戶 prompt 轉化為 Blender 的 Python 腳本,該腳本可以驅動 Blender 的內置物理引擎來模擬相應的物理場景。并且,該研究還采用 ControlNet,將 Blender 模擬的動態結果作為輸入,指導擴散模型逐幀生成視頻。
通過 GPT-4 觸發 Blender 完成模擬
研究者觀察到,雖然 GPT-4 對 Blender 的 Python API 有一定的了解,但它根據用戶 prompt 生成 Blender 的 Python 腳本的能力仍然有所欠缺。一方面,要求 GPT-4 直接在 Blender 中創建哪怕是一個簡單的 3D 模型(如籃球)似乎都是一項艱巨的任務。另一方面,由于 Blender 的 Python API 資源較少且 API 版本更新較快,GPT-4 很容易誤用某些功能或因版本差異而出錯。為了解決這些問題,該研究提出了以下方案:
- 使用外部 3D 模型
- 封裝 Blender 函數
- 將用戶 prompt 轉化為物理特性
圖 3 顯示了該研究為 GPT-4 設計的通用 prompt 模板。它包括封裝的 Blender 函數、外部工具和用戶指令。研究者在模板中定義了虛擬世界的尺寸標準,并提供了有關攝像機位置和視角的信息。這些信息有助于 GPT-4 更好地理解三維空間的布局。之后基于用戶輸入的 prompt 生成相應的指令,引導 GPT-4 生成相應的 Blender Python 腳本。最后,通過該腳本,Blender 渲染出物體的邊緣和深度,并以圖像序列的形式輸出。
生成符合物理規律的視頻
該研究的目標是根據用戶 prompt 和 Blender 提供的相應物理運動條件生成文字和視頻內容一致,并且視覺效果逼真的視頻。該研究采用擴散模型 XL(SDXL),一個擴散模型的升級版本,來完成生成任務,并且對 SDXL 做了以下修改:
- 物理運動約束
- 時間一致性約束
實驗結果
控制物理特性
籃球的下落和碰撞。圖 4 展示了 GPT4Motion 在三種 prompt 下生成的籃球運動視頻。在圖 4(左)中,籃球在旋轉時保持了高度逼真的紋理,并準確復制了與地面碰撞后的彈跳行為。圖 4(中)表明,此方法可以精確控制籃球的數量,并有效生成多個籃球落地時發生的碰撞和彈跳。令人驚喜的是,如圖 4(右圖)所示,當用戶要求將籃球拋向攝像機時,GPT-4 會根據生成腳本中籃球的下落時間計算出必要的初速度,從而實現逼真的視覺效果。這表明,GPT4Motion 可以與 GPT-4 所掌握的物理知識相結合,從而控制生成的視頻內容。
在風中飄動的布料。圖 5 和圖 6 驗證了 GPT4Motion 在生成在風力影響下運動的布匹的能力。利用現有的物理引擎進行模擬,GPT4Motion 可生成不同風力下布的波動和波浪。在圖 5 展示了一面飄動旗幟的生成結果。在不同風力下,旗幟呈現出復雜的波紋和波浪圖案。圖 6 顯示了不規則布料物體 —— T 恤,在不同風力下的運動情況。受織物彈性和重量等物理特性的影響,T 恤發生了抖動和扭曲,并出現了明顯的褶皺變化。
水倒入馬克杯。圖 7 展示了三段將不同粘度的水倒入馬克杯的視頻。當粘度較低時,流動的水與杯子中的水碰撞融合,在表面形成復雜的湍流。隨著粘度的增加,水流變得緩慢,液體開始粘在一起。
與基線方法對比
圖 1 展示了 GPT4Motion 與其他基線方法的直觀對比。很明顯,基線的結果與用戶的 prompt 不符。DirecT2V 和 Text2Video-Zero 在紋理逼真度和動作一致性方面存在缺陷,而 AnimateDiff 和 ModelScope 雖然提高了視頻的流暢度,但在紋理一致性和動作逼真度方面還有提升空間。與這些方法相比,GPT4Motion 可以在籃球下落和與地板碰撞后的彈跳過程中生成平滑的紋理變化,看起來更加逼真。
如圖 8(第一行)所示,AnimateDiff 和 Text2Video-Zero 生成的視頻在旗幟上出現了偽影 / 扭曲,而 ModelScope 和 DirecT2V 則無法平滑地生成旗幟在風中飄動的漸變。但是,如圖 5 中間所示,GPT4Motion 生成的視頻可以顯示出旗幟在重力和風力作用下皺紋和波紋的連續變化。
如圖 8(第 2 行)所示,所有基線的結果都與用戶提示不符。雖然 AnimateDiff 和 ModelScope 的視頻反映了水流的變化,但它們無法捕捉到水倒入杯子的物理效果。而由 Text2VideoZero 和 DirecT2V 生成的視頻則創造了一個不斷抖動的杯子。相比之下,如圖 7(左)所示,GPT4Motion 生成的視頻準確地描述了水流與馬克杯碰撞時的激蕩,效果更加逼真。
感興趣的讀者可以閱讀論文原文,了解更多研究內容。