【论文复现】WonderWorld:Interactive 3D Scene Generation from a Single Image

一、论文简介

        该论文提出WonderWorld,用于交互式3D场景生成,通过单个图像生成广阔的沉浸式3D场景,实现用户交互地指定场景内容和布局,并实现低延迟创建场景。WonderWorld在A6000 上不到10秒就可以生成多样的3D场景,也为用户驱动内容创建和探索提供了新的潜力。

        相比于以往的3D场景生成基于离线的方式,需要大量的时间,适用于小型场景或视频,该方法考虑生成场景更大、更多样,更受到用户自由探索的交互式场景。

        对于阻碍交互性场景问题最大的问题就是生成速度慢,归根结底由于场景生成的方法步骤存在问题,通过单视图逐渐生成密集的多视图,在通过深度图进行对准,大量时间进行优化几何形状和外观,最终的场景边界处会出现失真,空白,未对准的情况。

demo地址:奇幻世界

项目地址:GitHub - KovenYu/WonderWorld: Code release for https://kovenyu.com/WonderWorld/

二、复现

        项目对显卡的要求较高,官方给的算力要求是48GB显存

For the installation to be done correctly, please proceed only with CUDA-compatible GPU available. It requires 48GB GPU memory to run.

 因此选择在autodl云服务器上进行部署复现,在本地浏览器查看场景结果。

1.云服务器选择

按照官方要求选择L20显卡服务器,cuda版本选择12.4与官方demo一致

2.环境准备

环境搭建部分按照readme上一步步来即可

(1)首先git源码、创建、激活虚拟环境

git clone https://github.com/KovenYu/WonderWorld.git && cd WonderWorld
conda create --name wonderworld python=3.10
conda activate wonderworld

(2)源码编译pytorch3D、rasterization、simple-knn

conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.4 -c pytorch -c nvidia
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
pip install submodules/depth-diff-gaussian-rasterization-min/
pip install submodules/simple-knn/

这一步因为都是源码编译,时间比较长(特别是pytorch3d),只要不报错就耐心等待就好。depth-diff-gaussian-rasterization-min这个包编译的时候如果报错,内容是 glm/glm.hpp: No such file or directory,则执行以下代码,重新装一下glm,再进行编译。没报错就继续下一步。

sudo apt-get install libglm-dev

(3)安装其他的依赖项

pip install -r requirements.txt
cd ./RepViT/sam && pip install -e . && cd ../..
python -m spacy download en_core_web_sm

这里用spacy下载安装en_core_web_sm可能出现网络无法连接的问题,需要手动下载这个包然后安装,具体方法是首先查询虚拟环境中安装的spacy版本

pip list

然后根据你的版本在这里查询对应的en_core_web_sm版本spacy-models/compatibility.json at master · explosion/spacy-models · GitHub

比如我安装的spacy版本是3.7,则要下载en_core_web_sm的版本如下,选择3.7.1或3.7.0都可以

下载地址如下en_core_web_sm · Releases · explosion/spacy-models,找到对应版本下载到项目目录下。我是在本地下载,上传到autodl服务器,比较快。

(4)配置OpenAI api_key

export OPENAI_API_KEY='your_api_key_here'

这一步是为了后面使用的时候,利用openai生成next scean提示词,效果更好,当然也可以不用llm,自己手动输入提示词,这样自己描述的话,效果可能不是很好。

注意:就算你不打算使用llm,这一步也要做,里面的apikey可以随便乱写一个,如果不export后面会报错。

(5)下载RepVIT权重文件

wget https://github.com/THU-MIG/RepViT/releases/download/v1.0/repvit_sam.pt

如果无法正常下载,建议直接在本地下好,上传到服务器,很快。

到这里如果一切顺利,服务器环境就配置完成了。

三、demo

运行demo可以按照官方的步骤,在云服务器启动端口服务,然后在本地浏览器查看场景的方式进行,云服务器看gui比较麻烦。具体按照以下步骤进行。

(1)准备配置文件

使用的时候,有两个比较关键的配置文件需要修改,一个是config目录下的example.yaml,一个是examples目录下的examples.yaml。

首先是config目录下的example.yaml,也就是官方让你每次运行前重新自己编写一份的配置文件,

Example config file

To run an example, first you need to write a config. An example config ./config/example.yaml is shown below (more examples are located at config/more_examples, feel free to try):

这个文件是对将要进行建模的示例图片、输出目录等内容进行设置,包括是否使用gpt等。项目预先准备了若干示例图片在/examples/image文件夹下,然后在/config/more_examples文件下有与这些示例图片对应的配置文件,运行run.py时可以指定任意一个内置的配置文件,也可以按照他们的模板根据需要写一份自己的example.yaml,运行时指定即可。不使用llm的话,将use_gpt参数置为false。

examples目录下的examples.yaml当中是所有示例图片的图片路径以及描述提示词,如果你要训练自己的新图片,就把图片加到/examples/image文件夹,然后在examples.yaml中添加你的图片描述信息,格式与其他的保持一致。如果只跑官方的示例则不需要改动这个文件。

- name: zelda
  image_filepath: examples/images/zelda.png
  style_prompt: animation
  content_prompt: Link taking adventure in a world brimming with magic and wonder, majestic mountains, river, boy 
  negative_prompt: ""
  background: ""
- name: 001
  image_filepath: examples/images/001.jpg
  style_prompt: DSLR 35mm landscape
  content_prompt:  
  negative_prompt: ""
  background: ""

(2)启动run.py

python run.py --example_config config/example.yaml --port 7777

这里的example.yaml你也可以换成你自己编辑的配置文件,后面是端口号。

这一步需要从huggingface下载不少模型权重文件,因此运行这一步之前,先用autodl的学术加速,再运行

source /etc/network_turbo

这一步如果碰到openai报错,看一下是不是前面没有export那个key,如果报TypeError: Client.__init__() got an unexpected keyword argument ‘proxies‘,则运行以下代码,指定httpx的版本进行安装。

pip install httpx==0.27.2

如果顺利的话,就开始下载模型,启动服务,界面如下即启动成功。

(3)本地笔记本查看

利用ssh在本地笔记本远程查看场景

直接按照官网的ssh -L那个命令会拒绝访问。这里直接下载autodl帮助文档提供的ssh工具

解压后运行,将自己的服务器ssh指令跟密码复制进去,填好端口号

然后在本地下载查看软件,打开当中的index_stream.html文件即可看到demo展示

git clone https://github.com/haoyi-duan/splat.git

(4)使用

如果成功,浏览器界面如下

这里我用的是示例当中的一张图。本来图片只有中间那一小块,可以在左上角提示词里面输入场景构建的提示词,并点击旁边的蓝色按钮,然后将用键盘按键移动相机视角到你想扩建的位置,按下r键,即可完成该处视角场景的扩建,重复直到完成整个大场景的重建。这里不使用大模型的话效果不是很好。有条件还是用一下gpt4。

后面使用gpt的效果,等使用过再更新。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值