RayDF: 具有多视图一致性的神经射线-表面距离场 (NeurIPS 2023)
我们提出了一种新颖的基于射线的连续3D形状表示方法,称为RayDF。我们的方法在渲染800 x 800深度图像时,速度比基于坐标的方法快1000倍。
1. 安装
使用miniconda创建一个Conda环境。
conda create -n raydf python=3.8 -y
conda activate raydf
运行以下命令安装所有依赖项:
# 安装PyTorch
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
# 安装其他依赖项
pip install -r requirements.txt
2. 数据集
在本文中,我们在以下三个数据集上进行实验:
- Blender [2.03GB] [Google Drive][百度网盘]:我们使用了来自真实合成360度Blender数据集的8个物体。
- DM-SR [1.71GB] [Google Drive][百度网盘]:我们使用了来自DM-SR数据集的8个合成室内场景。
- ScanNet [4.34GB] [Google Drive][百度网盘]:我们使用了ScanNet数据集中的6个场景
scene0004_00, scene0005_00, scene0009_00, scene0010_00, scene0030_00, scene0031_00
。
可以通过运行以下脚本自动下载预处理后的数据:
# 下载所有数据集
sh datasets/download.sh
# 下载单个数据集
sh datasets/download.sh blender
sh datasets/download.sh dmsr
sh datasets/download.sh scannet
3. 训练
通过指定--scene
为不同场景训练双射线可见性分类器:
CUDA_VISIBLE_DEVICES=0 python run_cls.py --config configs/blender_cls.txt --scene lego
CUDA_VISIBLE_DEVICES=0 python run_cls.py --config configs/dmsr_cls.txt --scene bathroom
CUDA_VISIBLE_DEVICES=0 python run_cls.py --config configs/scannet_cls.txt --scene scene0004_00
分类器训练完成后,修改配置文件中的ckpt_path_cls
,
然后训练射线-表面距离网络:
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/blender.txt --scene lego
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/dmsr.txt --scene bathroom
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/scannet.txt --scene scene0004_00
通过指定--rgb_layer
训练带有辐射分支的射线-表面距离网络:
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/blender.txt --scene lego --rgb_layer 2
另外,我们提供了一个脚本,可以方便地依次训练分类器和射线-表面距离网络:
sh run.sh <gpu_id> <dataset_name> <scene_name>
# 例如,sh run.sh 0 blender chair
4. 评估
评估双射线可见性分类器:
CUDA_VISIBLE_DEVICES=0 python run_cls.py --config configs/blender_cls.txt --scene lego --eval_only
评估射线-表面距离网络:
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/blender.txt --scene lego --eval_only
# 移除异常值
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/blender.txt --scene lego --eval_only --denoise
# 计算表面法线
CUDA_VISIBLE_DEVICES=0 python run_mv.py --config configs/blender.txt --scene lego --eval_only --grad_normal
三个数据集的检查点可以从Google Drive或百度网盘免费下载。
引用
如果您发现我们的工作对您的研究有帮助,请考虑引用:
许可证
根据CC BY-NC-SA 4.0许可证授权,详见LICENSE。