Project Icon

NeuRBF

基于适应性径向基函数的高效神经场表示方法

NeuRBF是一种创新的神经场表示方法,通过适应性径向基函数实现高精度和模型紧凑性的平衡。该方法在图像拟合、SDF拟合和神经辐射场等任务中展现出优异性能,为计算机视觉和图形学研究提供了有力工具。项目提供了基于PyTorch的开源实现,并附有详细的安装和使用说明,便于研究人员复现和深入探索。

NeuRBF:基于自适应径向基函数的神经场表示

ICCV 2023(口头报告)

张晨1李忠1宋良辰2陈乐乐1余荧奕3袁骏松2徐毅1
1OPPO美国研究中心,2布法罗大学,3上海科技大学

项目主页 | 论文 | 视频

本仓库是ICCV 2023论文"NeuRBF:基于自适应径向基函数的神经场表示"的官方PyTorch实现。我们的工作提出了一种新型神经场,具有高表示精度和模型紧凑性。该仓库包含图像拟合、SDF拟合和神经辐射场的代码。

安装

克隆仓库

git clone https://github.com/oppo-us-research/NeuRBF.git
cd NeuRBF

安装conda环境

# 创建conda环境
conda create -n neurbf python=3.9 -y
conda activate neurbf

# 安装CuPy
pip install cupy-cuda11x
python -m cupyx.tools.install_library --cuda 11.x --library cutensor
python -m cupyx.tools.install_library --cuda 11.x --library cudnn
python -m cupyx.tools.install_library --cuda 11.x --library nccl

# 安装PyTorch
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 --index-url https://download.pytorch.org/whl/cu117

# 用于图像/SDF拟合和合成NeRF数据集上的NeRF任务
pip install einops matplotlib kornia imageio imageio-ffmpeg opencv-python pysdf PyMCubes trimesh plotly scipy GPUtil scikit-image scikit-learn pykdtree commentjson tqdm configargparse lpips tensorboard torch-ema ninja tensorboardX numpy pandas rich packaging scipy torchmetrics jax pillow plyfile omegaconf

# 用于LLFF数据集上的NeRF任务
pip install jax tqdm pillow opencv-python pandas lpips imageio torchmetrics scikit-image tensorboard matplotlib
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

构建torch-ngp扩展(用于图像/SDF拟合)

cd thirdparty/torch_ngp/gridencoder
pip install .
cd ../../../

测试环境

  • Ubuntu 18.04,PyTorch 1.13.0 & CUDA 11.6,RTX A6000。
  • Ubuntu 18.04,PyTorch 2.0.1 & CUDA 11.7,RTX A6000。
  • Ubuntu 18.04,PyTorch 2.0.1 & CUDA 11.7,RTX 3090。
  • Windows 11,PyTorch 2.0.1 & CUDA 11.7,RTX 3080 Ti 16G。

使用方法

图像拟合

拟合单张图像

下载示例冥王星图像。将其放在data/img中并重命名为pluto.png。然后运行

python main.py --config configs/img.py --path ./data/img/pluto.png --alias pluto

结果和tensorboard日志将位于log/img中。要调整模型大小,可以指定--log2_hashmap_size_ref参数的值。

注意:为减少GPU内存使用,可以在上述命令中添加--ds_device cpu。这将把一些数据放在CPU而不是GPU上,但也会使训练变慢。

拟合DIV2K数据集中的所有图像

下载DIV2K数据集验证集并将其放在data/img/div2k中。每张图像的路径应为data/img/div2k/DIV2K_valid_HR/xxxx.png。然后运行

python main_img_div2k.py

该脚本将分别拟合每张图像,结果将存储在log/img_div2k中。

SDF拟合

下载斯坦福3D扫描库中的示例犰狳网格。解压后将其放在data/sdf中,并重命名为armadillo.ply

运行以下预处理脚本,该脚本将对网格进行归一化并采样额外的评估点。

python preproc_mesh.py --path ./data/sdf/armadillo.ply

然后运行

python main.py --config configs/sdf.py --path ./data/sdf/armadillo_nrml.obj --alias armadillo

结果和tensorboard日志将位于log/sdf中。要调整模型大小,可以指定--log2_hashmap_size_ref参数的值。 注意:为减少GPU内存使用,您可以类似地在上述命令中添加--ds_device cpu

NeRF

数据集

在合成NeRF数据集上运行

下载数据集并解压到data目录。例如,lego场景的路径应为data/nerf_synthetic/lego

对于训练,使用以下命令

python main_nerf.py --config_init configs/nerf_tensorf/nerf_synthetic_init.py --config configs/nerf_tensorf/nerf_synthetic.py --data_name lego

它将首先提取场景信息以初始化RBF位置和形状参数,然后训练完整模型。结果和tensorboard日志将位于log/nerf_synthetic。更改--data_name以在其他场景上运行。

注意:为减少GPU内存使用,您可以添加--batch_size_init 2048(已在RTX 3090 24G上测试可用)。如有需要,可以进一步降低数字2048

要使用训练好的模型渲染图像,请运行

python main_nerf.py --config configs/nerf_tensorf/nerf_synthetic.py --data_name lego --ckpt [checkpoint路径] --render_only 1 --[要渲染的内容] 1

其中[checkpoint路径]是检查点文件的路径,[要渲染的内容]可以是render_testrender_train。请注意,训练命令已在训练结束时执行render_test

要从训练好的模型中提取网格,请运行

python main_nerf.py --config configs/nerf_tensorf/nerf_synthetic.py --data_name lego --ckpt [checkpoint路径] --export_mesh 1

在LLFF数据集上运行

下载数据集并解压到data目录。例如,room场景的路径应为data/nerf_llff_data/room

对于训练,使用以下命令

python main_nerf_kplanes.py --config_init configs/nerf_kplanes/llff_init.py --config configs/nerf_kplanes/llff.py --data_name room

它将首先提取场景信息以初始化RBF位置和形状参数,然后训练完整模型。结果和tensorboard日志将位于log/llff。更改--data_name以在其他场景上运行。

要使用训练好的模型渲染螺旋路径视频,请运行

python main_nerf_kplanes.py --config configs/nerf_kplanes/llff.py --log-dir [模型文件夹] --render-only

其中[模型文件夹]是包含训练好模型的文件夹路径。

致谢

我们诚挚感谢以下仓库的作者,他们的工作在我们发布的代码中得到了引用:torch-ngpTensoRFnrffK-PlanesMINER_plsiren

引用

如果您觉得我们的工作有用,请考虑引用:

@inproceedings{chen2023neurbf,
    author    = {Chen, Zhang and Li, Zhong and Song, Liangchen and Chen, Lele and Yu, Jingyi and Yuan, Junsong and Xu, Yi},
    title     = {NeuRBF: A Neural Fields Representation with Adaptive Radial Basis Functions},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2023},
    pages     = {4182-4194}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号