WonderJourney:从任何地方到达每个地方
https://github.com/KovenYu/WonderJourney/assets/27218043/43c864b5-2416-4177-ae39-347150968bc3
https://github.com/KovenYu/WonderJourney/assets/27218043/70eb220d-2521-4033-b736-cf88755a3bcb
WonderJourney:从任何地方到达每个地方
余泓兴 "Koven", 段浩毅, 许俊华, Kyle Sargent, Michael Rubinstein, William T. Freeman, Forrester Cole, 孙德清, Noah Snavely, 吴佳俊, Charles Herrmann
入门指南
安装
为了正确完成安装,请确保有可用的CUDA兼容GPU。 运行需要24GB的GPU内存。
克隆仓库并创建环境:
git clone https://github.com/KovenYu/WonderJourney.git
cd WonderJourney
mamba create --name wonderjourney python=3.10
mamba activate wonderjourney
我们使用 Pytorch3D 进行渲染。 运行以下命令安装它,或按照他们的安装指南进行操作(可能需要一些时间)。
mamba install pytorch=1.13.0 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
mamba install -c fvcore -c iopath -c conda-forge fvcore iopath
mamba install -c bottler nvidiacub
mamba install pytorch3d -c pytorch3d
安装其余的依赖:
pip install -r requirements.txt
加载spacy的英语语言模型:
python -m spacy download en_core_web_sm
导出您的OpenAI api_key(因为我们使用GPT-4生成场景描述):
export OPENAI_API_KEY='your_api_key_here'
下载Midas DPT模型并将其放在根目录:
wget https://github.com/isl-org/MiDaS/releases/download/v3_1/dpt_beit_large_512.pt
运行示例
-
示例配置文件
要运行示例,首先您需要编写一个配置。以下是一个示例配置文件
./config/village.yaml
:
runs_dir: output/56_village
example_name: village
seed: -1
frames: 10
save_fps: 10
finetune_decoder_gen: True
finetune_decoder_interp: False # 打开此选项可获得更高质量的渲染视频
finetune_depth_model: True
num_scenes: 4
num_keyframes: 2
use_gpt: True
kf2_upsample_coef: 4
skip_interp: False
skip_gen: False
enable_regenerate: True
debug: True
inpainting_resolution_gen: 512
rotation_range: 0.45
rotation_path: [0, 0, 0, 1, 1, 0, 0, 0]
camera_speed_multiplier_rotation: 0.2
生成示例的总帧数是 num_scenes
$\times$ num_keyframes
。您可以在配置文件中手动调整 rotation_path
来控制相机在每一帧中的旋转状态。值为 $0$ 表示直行,$1$ 表示右转,$-1$ 表示左转。
- 运行
python run.py --example_config config/village.yaml
您将在 output/56_village/{时间字符串}_merged
中看到结果。
如何添加更多示例?
我们非常鼓励您添加新图像并尝试新内容! 您需要单独进行图像-描述配对(例如,使用DALL-E生成图像,使用GPT4V生成描述)。
-
在
./examples/images/
中添加新图像。 -
在
./examples/examples.yaml
中添加这个新图像的内容。
示例如下:
- name: new_example
image_filepath: examples/images/new_example.png
style_prompt: DSLR 35mm 风景
content_prompt: 场景名称, 物体1, 物体2, 物体3
negative_prompt: ''
background: ''
-
content_prompt: "场景名称", "物体1", "物体2", "物体3"
-
negative_prompt 和 background 是可选的
对于受控旅程,您需要添加 control_text
。示例如下:
- name: poem_jiangxue
image_filepath: examples/images/60_poem_jiangxue.png
style_prompt: 黑白水墨画
content_prompt: 广阔的山景, 穿传统服装的老人, 平静的河流, 山脉
negative_prompt: ""
background: ""
control_text: ["千山鸟飞绝", "万径人踪灭", "孤舟蓑笠翁", "独钓寒江雪"]
- name: poem_snowy_evening
image_filepath: examples/images/72_poem_snowy_evening.png
style_prompt: 莫奈画作
content_prompt: 雪夜林中小憩, 树林, 雪, 村庄
negative_prompt: ""
background: ""
control_text: ["雪林和农舍:一座偏僻的农舍, 一个结冰的湖泊, 一片茂密的树丛, 一片宁静的草地, 一阵寒冷的风, 一片淡淡的暮色, 一座有顶的桥, 一道朴素的栅栏, 一棵积雪的树, 一片结霜的地面", "旅人的马:一匹不安分的马, 一副叮当作响的马具, 一鬃雪白的鬃毛, 一个好奇的眼神, 一只结实的蹄子, 一口雾气腾腾的呼吸, 一个皮革马鞍, 一条羊毛毯, 一条结霜的尾巴, 一个耐心的姿态", "林中降雪:一片轻柔的雪花, 一阵低语的风, 一场轻轻的飞雪, 一层白色的毯子, 一个闪烁的冰柱, 一根光秃秃的树枝, 一片寂静的森林, 一滴晶莹的水滴, 一种宁静的氛围, 一个安静的夜晚", "夜晚的深邃黑暗树林:一片神秘的树丛, 一棵阴影中的树, 一片阴暗的天空, 一条隐蔽的小径, 一只寂静的猫头鹰, 一片月光照耀的林间空地, 一片茂密的下层灌木, 一片安静的空地, 一根高耸的树枝, 一种令人毛骨悚然的寂静"]
-
为新示例编写一个配置文件
config/new_example.yaml
,类似于./config/village.yaml
-
运行
python run.py --example_config config/new_example.yaml
引用
@article{yu2023wonderjourney,
title={奇妙之旅:从任何地方到处去},
author={余宏兴 和 段浩一 和 许俊华 和 萨金特·凯尔 和 鲁宾斯坦·迈克尔 和 弗里曼·威廉·T 和 科尔·福雷斯特 和 孙德清 和 斯纳夫利·诺亚 和 吴嘉隽 和 赫尔曼·查尔斯},
journal={arXiv预印本 arXiv:2312.03884},
year={2023}
}
致谢
我们感谢[SceneScape]、[MiDaS]、[SAM]、[Stable Diffusion]和[OneFormer]的作者分享他们的代码。