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