VideoTetris 开发者指南
1. 项目介绍
VideoTetris 是一个开源项目,旨在实现基于文本的复合视频生成。该项目通过空间和时间上的注意力图操作与组合,提出了一种新的时空复合扩散方法,以精确遵循复杂的文本语义。此外,项目还提供了增强的视频数据预处理方法,以及对运动动力学和提示理解的改进,配备了一种新的参考帧注意力机制,以提高自动回归视频生成的一致性。
2. 项目快速启动
以下是 VideoTetris 的快速启动步骤:
环境安装
首先,确保安装了 Anaconda。然后在项目目录下创建并激活一个新的环境:
cd short
conda create -n videocrafter python=3.8.5
conda activate videocrafter
pip install -r requirements.txt
推理演示
下载预训练模型,并放置到 checkpoints/base_512_v2/model.ckpt
目录下。然后,使用以下命令进行推理:
sh scripts/run_text2video_from_layout.sh
你可以指定输入的 JSON 文件给 run_text2video_from_layout.sh
脚本。
3. 应用案例和最佳实践
以下是一些 VideoTetris 的应用案例和最佳实践:
简短视频生成
创建一个 JSON 文件(如 prompts/demo_videotetris.json
),定义基本提示、子对象和布局框,例如:
{
"basic_prompt": "A cat on the left and a dog on the right are napping in the sun.",
"sub_objects": ["A cute orange cat.", "A cute dog."],
"layout_boxes": [[0, 0, 0.5, 1], [0.5, 0, 1, 1]]
}
然后运行推理脚本生成视频。
长视频生成
对于更长的视频,你需要定义多个视频块,并在每个块中指定提示、子对象和布局框。每个视频块表示一次生成的 8 帧图像。
[
{
"video_chunk_index": 0,
"prompt": "A cute brown squirrel in Antarctica, on a pile of hazelnuts cinematic.",
"sub_objects": ["A cute brown squirrel in Antarctica, on a pile of hazelnuts cinematic."],
"layout_boxes": [[0, 0, 1, 1]]
},
{
"video_chunk_index": 4,
"prompt": "A cute brown squirrel and a cute white squirrel in Antarctica, on a pile of hazelnuts cinematic",
"sub_objects": [
"A cute brown squirrel in Antarctica, on a pile of hazelnuts cinematic.",
"A cute white squirrel in Antarctica, on a pile of hazelnuts cinematic."
],
"layout_boxes": [[0.5, 0, 1, 1], [0, 0, 0.5, 1]]
}
]
然后,使用以下命令生成长视频:
cd t2v_enhanced
python inference_videotetris.py --num_frames 80
4. 典型生态项目
VideoTetris 是文本到视频生成领域的一个典型项目,它依赖于以下几个生态项目:
- VideoCrafter2:用于视频生成的框架。
- Hugging Face:提供预训练模型和模型权重存储。
- Anaconda:用于环境管理和包安装。
通过这些典型的生态项目,VideoTetris 能够提供一个完整的从文本到视频生成的解决方案。