FateZero: 融合注意力用于零样本文本驱动的视频编辑 (ICCV23 口头报告)
戚辰阳, 存小东, 张勇, 雷辰阳, 王信涛, 单颖, 和 陈启峰
"银色吉普 ➜ 保时捷车" | "+ 梵高风格" | "松鼠,胡萝卜 ➜ 兔子,茄子" |
🎏 摘要
简短描述: FateZero 是首个无需训练而通过预训练扩散模型进行文本驱动视频编辑的零样本框架。
点击查看完整摘要
基于扩散的生成模型在文本驱动的图像生成方面取得了显著成功。然而,由于生成过程中存在大量的随机性,应用此类模型进行真实世界的视觉内容编辑仍然具有挑战性,尤其是在视频编辑方面。本文提出了FateZero,一种无需为每个提示词进行训练或使用特定掩码的零样本文本驱动的真实视频编辑方法。为了保持视频编辑的一致性,我们基于预训练模型提出了几种技术。首先,与传统的DDIM 反转技术相比,我们的方法在反转过程中捕捉中间注意力图,有效保留了结构和运动信息。这些图在编辑过程中直接融合,而不是在去噪过程中生成。为了进一步最小化源视频的语义泄露,我们通过从源提示词中获得的交叉注意力特征融合自注意力和混合掩码。此外,我们在去噪UNet中引入了时空注意力机制,确保帧的一致性。简而言之,我们的方法是第一个展示出零样本文本驱动视频风格和局部属性编辑能力的方法。我们还基于文本驱动的视频模型具有更好的零样本形状感知编辑能力。大量实验表明,我们的方法在时间一致性和编辑能力方面优于以往的工作。
📋 更新日志
- 2023.06.10 两个大运动和多个对象的例子。
- 2023.04.18 代码重构并支持使用blend_latents选项进行局部混合。
- 2023.04.04 发布增强的Tuning-a-Video配置和形状编辑ckpts,数据和配置。
- 2023.03.31 改进了Hugging Face演示。
- 2023.03.27 发布
Hugging Face演示
,属性编辑配置
和数据
。
🚧 待办事项
点击查看之前的待办事项
- 发布所有结果的编辑配置和数据,Tune-a-video优化
- 内存和运行时间分析及编辑指南文档
- Colab和Hugging Face
- 代码重构
- 时间和内存优化
- 发布更多应用
🛡 设置环境
我们的方法在单个A100或3090上使用cuda11,fp16加速和xformers进行测试。
conda create -n fatezero38 python=3.8
conda activate fatezero38
pip install -r requirements.txt
建议在A100 GPU上使用xformers
以节省内存和运行时间。
点击查看xformers安装
我们发现其安装不是很稳定。你可以尝试以下轮子:
wget https://github.com/ShivamShrirao/xformers-wheels/releases/download/4c06c79/xformers-0.0.15.dev0+4c06c79.d20221201-cp38-cp38-linux_x86_64.whl
pip install xformers-0.0.15.dev0+4c06c79.d20221201-cp38-cp38-linux_x86_64.whl
通过以下命令验证安装:
python test_install.py
你可以通过以下bash命令下载所有数据和检查点:
bash download_all.sh
上述命令需要几分钟和100GB空间。或者你可以根据自己的兴趣稍后下载所需的数据和ckpts。
我们的环境类似于Tune-A-video(官方, 非官方)和prompt-to-prompt。你可以查看它们以了解更多详情。
⚔️ FateZero 编辑
Teaser中的风格和属性编辑
下载stable diffusion v1-4(或其他有趣的图像扩散模型)并将其放入./ckpt/stable-diffusion-v1-4
。
点击查看bash命令:
mkdir ./ckpt
cd ./ckpt
# 从huggingface下载,占用20G空间
git lfs install
git clone https://huggingface.co/CompVis/stable-diffusion-v1-4
然后,你可以通过运行以下命令再现我们teaser中的风格和形状编辑结果:
accelerate launch test_fatezero.py --config config/teaser/jeep_watercolor.yaml
# 或者 CUDA_VISIBLE_DEVICES=0 python test_fatezero.py --config config/teaser/jeep_watercolor.yaml
结果保存在`./result`中。(点击查看目录结构)
result
├── teaser
│ ├── jeep_posche
│ ├── jeep_watercolor
│ ├── cross-attention # 反转过程中的交叉注意力可视化
│ ├── sample # 结果
│ ├── train_samples # 输入视频
更多速度和硬件基准在这里。
使用Tune-A-Video进行形状和大运动编辑
除了上述风格和属性编辑外,我们还提供了一个 Tune-A-Video
检查点。您可以从onedrive或hugging face模型库下载。然后将其移动到 ./ckpt/jeep_tuned_200/
。
点击获取bash命令:
mkdir ./ckpt
cd ./ckpt
# 从huggingface face下载,占用10G空间
git lfs install
git clone https://huggingface.co/chenyangqi/jeep_tuned_200
目录结构如下:(点击显示目录结构)
ckpt
├── stable-diffusion-v1-4
├── jeep_tuned_200
...
data
├── car-turn
│ ├── 00000000.png
│ ├── 00000001.png
│ ├── ...
video_diffusion
您可以通过运行以下命令重现我们宣传中的形状编辑结果:
accelerate launch test_fatezero.py --config config/teaser/jeep_posche.yaml
重现论文中的其他结果
点击获取wget命令:
wget https://github.com/ChenyangQiQi/FateZero/releases/download/v0.0.1/attribute.zip
wget https://github.com/ChenyangQiQi/FateZero/releases/download/v0.0.1/style.zip
wget https://github.com/ChenyangQiQi/FateZero/releases/download/v0.0.1/shape.zip
解压并将文件放置在'./data'文件夹中。然后使用'config/style'和'config/attribute'中的命令来获得结果。
要重现其他形状编辑结果,请从huggingface下载Tune-A-Video检查点:
点击获取bash命令:
mkdir ./ckpt
cd ./ckpt
# 从huggingface face下载,占用10G空间
git lfs install
git clone https://huggingface.co/chenyangqi/man_skate_250
git clone https://huggingface.co/chenyangqi/swan_150
然后使用'config/shape'中的命令。
对于上述Tune-A-Video检查点,我们使用合成的negative-prompt数据集进行常规化和低秩卷积,以使用tuning config生成时间一致性。
点击获取bash命令示例:
cd ./data
wget https://github.com/ChenyangQiQi/FateZero/releases/download/v0.0.1/negative_reg.zip
unzip negative_reg
cd ..
accelerate launch train_tune_a_video.py --config config/tune/jeep.yaml
为了定量评估我们的结果,我们提供了CLIP/frame_acc_tem_con.py
来计算使用预训练CLIP的帧准确性和时间一致性。
为您的视频提供编辑指南
我们在这里提供了野外视频编辑指南。该工作仍在进行中。欢迎在issues中提出您的反馈。
使用Stable Diffusion的风格编辑结果
我们展示了每个视频下方的框中源提示词和目标提示词之间的差异。
请注意,GitHub页面中的mp4和gif文件已被压缩。 请查看我们的项目页面以获取原始视频编辑结果的mp4文件。
"+ 浮世绘风" | "+ 水彩画风" | "+ 莫奈风" |
"+ 精灵宝可梦卡通风" | "+ 新海诚风" | "+ 水彩画风" |
使用Stable Diffusion的属性编辑结果
"兔子, 草莓 ➜ 白兔, 花" | "兔子, 草莓 ➜ 松鼠, 胡萝卜" | "兔子, 草莓 ➜ 白兔, 树叶" |
"熊 ➜ 一只红色的老虎" | "熊 ➜ 一只黄色的豹子" | "熊 ➜ 一只棕色的狮子" |
"猫 ➜ 黑猫,草" | "猫 ➜ 红色老虎" | "猫 ➜ 柴犬" |
"橙色鱼 ➜ 黄色鱼" | "松鼠 ➜ 机器人松鼠" | "松鼠, 胡萝卜 ➜ 机器人老鼠, 螺丝刀" |
"公交车 ➜ GPU" | "灰色狗 ➜ 黄色柯基" | "灰色狗 ➜ 机器人狗" |
"白鸭子 ➜ 黄色橡皮鸭" | "草地 ➜ 雪地" | "白狐狸 ➜ 灰狼" |
使用 Tune-A-Video 进行形状和大幅度运动编辑
"银色吉普 ➜ 保时捷汽车" | "天鹅 ➜ 白鸭子" | "天鹅 ➜ 粉红火烈鸟" |
"一个男人 ➜ 一个蝙蝠侠" | "一个男人 ➜ 一个神奇女侠,戴牛仔帽" | "一个男人 ➜ 一个蜘蛛侠" |
🕹 在线演示
感谢 AK 和 Hugging Face 团队提供计算资源支持我们的 Hugging-face Demo,支持最多 30 步 DDIM 步骤。 。
您可以使用本地的 gradio 测试 FateZero 的用户界面。
git clone https://huggingface.co/spaces/chenyangqi/FateZero
python app_fatezero.py
# 我们稍后会将 Huggingface 上的 FateZero 与 GitHub 仓库中的合并
我们还提供了一个支持 10 步 DDIM 步骤的 Colab 演示。 您可以在本地计算机上将 colab 启动为 jupyter 笔记本。 我们将在接下来的几天里优化和改进上述演示。
📀 演示视频
由于 GitHub 的大小限制,这里的视频已压缩。 原始全分辨率视频请见 这里。
📍 参考文献
@article{qi2023fatezero,
title={FateZero: Fusing Attentions for Zero-shot Text-based Video Editing},
author={Chenyang Qi and Xiaodong Cun and Yong Zhang and Chenyang Lei and Xintao Wang and Ying Shan and Qifeng Chen},
year={2023},
journal={arXiv:2303.09535},
}
💗 致谢
此仓库借用了大量 Tune-A-Video 和 prompt-to-prompt 的代码和模型。感谢原作者分享他们的代码和模型。
🧿 维护
这是我们研究工作的代码库。我们仍在努力更新此仓库,更多细节将在几天内公布。如果您有任何问题或想讨论的想法,请随时联系 Chenyang Qi 或 Xiaodong Cun。