扩散模型的出现推动了文本生成视频技术的发展,但这类方法的计算成本通常不菲,并且往往难以制作连贯的物体运动视频。
为了解决这些问题,来自中国科学院深圳先进技术研究院、中国科学院大学和 VIVO AI Lab 的研究者联合提出了一个无需训练的文本生成视频新框架 ——GPT4Motion。GPT4Motion 结合了 GPT 等大型语言模型的规划能力、Blender 软件提供的物理模拟能力,以及扩散模型的文生图能力,旨在大幅提升视频合成的质量。
具体来说,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 生成的视频准确地描述了水流与马克杯碰撞时的激荡,效果更加逼真。
文章来自于微信公众号 “机器之心”,作者 “赵阳”