mvsnerf

apchenstuMIT长期未更新

ICCV 2021 提出的神经渲染方法,能从多视角图像高效重建几何与神经辐射场,用于新视角合成。

[ICCV 2021] Our work presents a novel neural rendering approach that can efficiently reconstruct geometric and neural radiance fields for view synthesis.

暂无版本696star83fork同步于 2026-11-07 07:30 UTC

怎么上手

由 README 提炼,执行前请确认
conda create -n mvsnerf python=3.8
conda activate mvsnerf
pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
pip install pytorch-lightning==1.3.5 imageio pillow scikit-image opencv-python configargparse lpips kornia warmup_scheduler matplotlib test-tube imageio-ffmpeg
硬件要求按 README 说明

README 未明确给出显存要求;训练在单张 RTX 2080Ti 上 6 个 epoch 约需 30 小时,需 CUDA 环境(cu113)。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于多视角立体视觉的快速可泛化神经辐射场重建,少量图像即可合成新视角

ICCV 2021 提出的神经渲染方法,能从多视角图像高效重建几何与神经辐射场,用于新视角合成。

核心能力

  • 用多视角立体视觉构建代价体积,泛化到未见过场景
  • 预训练模型可直接推理,无需逐场景从头训练
  • 支持在 DTU、Blender、LLFF 数据上微调提升质量
  • 提供渲染脚本生成自由视角视频

容易踩的坑

训练泛化模型时 batch_size 必须设为 1,微调时才可增大;需自行下载 DTU、Blender、LLFF 等数据集并按示例组织目录;依赖版本锁定较严(Pytorch 1.10.1 + Lightning 1.3.5),版本不符易报错。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    MVSNeRF

    Project page | Paper

    This repository contains a pytorch lightning implementation for the ICCV 2021 paper: MVSNeRF: Fast Generalizable Radiance Field Reconstruction from Multi-View Stereo. Our work present a novel neural rendering approach that can efficiently reconstruct geometric and neural radiance fields for view synthesis, Moreover, if dense images are captured, our estimated radiance field representation can be easily fine-tuned; this leads to fast per-scene reconstruction.

    Pipeline

    Installation

    Tested on Ubuntu 20.04 + Pytorch 1.10.1 + Pytorch Lignting 1.3.5

    Install environment:

    conda create -n mvsnerf python=3.8
    conda activate mvsnerf
    pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
    pip install pytorch-lightning==1.3.5 imageio pillow scikit-image opencv-python configargparse lpips kornia warmup_scheduler matplotlib test-tube imageio-ffmpeg
    

    Training

    Please see each subsection for training on different datasets. Available training datasets:

    DTU dataset

    Data download

    Download the preprocessed DTU training data and Depth_raw from original MVSNet repo and unzip. We provide a DTU example, please follow the example's folder structure.

    Training model

    Run

    CUDA_VISIBLE_DEVICES=$cuda  python train_mvs_nerf_pl.py \
       --expname $exp_name
       --num_epochs 6
       --use_viewdirs \
       --dataset_name dtu \
       --datadir $DTU_DIR
    

    More options refer to the opt.py, training command example:

    CUDA_VISIBLE_DEVICES=0  python train_mvs_nerf_pl.py
        --with_depth  --imgScale_test 1.0 \
        --expname mvs-nerf-is-all-your-need \
        --num_epochs 6 --N_samples 128 --use_viewdirs --batch_size 1024 \
        --dataset_name dtu \
        --datadir path/to/dtu/data \
        --N_vis 6
    

    You may need to add --with_depth if you want to quantity depth during training. --N_vis denotes the validation frequency. --imgScale_test is the downsample ratio during validation, like 0.5. The training process takes about 30h on single RTX 2080Ti for 6 epochs.

    Important: please always set batch_size to 1 when you are trining a genelize model, you can enlarge it when fine-tuning.

    Checkpoint: a pre-trained checkpint is included in ckpts/mvsnerf-v0.tar.

    Evaluation: We also provide a rendering and quantity scipt in renderer.ipynb, and you can also use the run_batch.py if you want to testing or finetuning on different dataset. More results can be found from Here, please check your configuration if your rendering result looks absnormal.

    Rendering from the trained model should have result like this:

    no-finetuned

    Finetuning

    Blender

    Data download

    Download nerf_synthetic.zip from here

    CUDA_VISIBLE_DEVICES=0  python train_mvs_nerf_finetuning_pl.py  \
        --dataset_name blender --datadir /path/to/nerf_synthetic/lego \
        --expname lego-ft  --with_rgb_loss  --batch_size 1024  \
        --num_epochs 1 --imgScale_test 1.0 --white_bkgd  --pad 0 \
        --ckpt ./ckpts/mvsnerf-v0.tar --N_vis 1
    

    LLFF

    Data download

    Download nerf_llff_data.zip from here

    CUDA_VISIBLE_DEVICES=0  python train_mvs_nerf_finetuning_pl.py  \
        --dataset_name llff --datadir /path/to/nerf_llff_data/{scene_name} \
        --expname horns-ft  --with_rgb_loss  --batch_size 1024  \
        --num_epochs 1 --imgScale_test 1.0  --pad 24 \
        --ckpt ./ckpts/mvsnerf-v0.tar --N_vis 1
    

    DTU

    CUDA_VISIBLE_DEVICES=0  python train_mvs_nerf_finetuning_pl.py  \
        --dataset_name dtu_ft --datadir /path/to/DTU/mvs_training/dtu/scan1 \
        --expname scan1-ft  --with_rgb_loss  --batch_size 1024  \
        --num_epochs 1 --imgScale_test 1.0   --pad 24 \
        --ckpt ./ckpts/mvsnerf-v0.tar --N_vis 1
    

    Rendering

    After training or finetuning, you can render free-viewpoint videos with the renderer-video.ipynb. if you want to use your own data, please using the right hand coordinate system (intrinsic, nearfar and extrinsic either with camera to world or world to camera in opencv format) and modify the rendering scipts.

    After 10k iterations (~ 15min), you should have videos like this:

    finetuned

    Citation

    If you find our code or paper helps, please consider citing:

    @article{chen2021mvsnerf,
      title={MVSNeRF: Fast Generalizable Radiance Field Reconstruction from Multi-View Stereo},
      author={Chen, Anpei and Xu, Zexiang and Zhao, Fuqiang and Zhang, Xiaoshuai and Xiang, Fanbo and Yu, Jingyi and Su, Hao},
      journal={arXiv preprint arXiv:2103.15595},
      year={2021}
    }
    

    Big thanks to CasMVSNet_pl, our code is partially borrowing from them.

    Relevant Works

    MVSNet: Depth Inference for Unstructured Multi-view Stereo (ECCV 2018) Yao Yao, Zixin Luo, Shiwei Li, Tian Fang, Long Quan

    Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching (CVPR 2020) Xiaodong Gu, Zhiwen Fan, Zuozhuo Dai, Siyu Zhu, Feitong Tan, Ping Tan

    NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV 2020) Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng

    IBRNet: Learning Multi-View Image-Based Rendering (CVPR 2021) Qianqian Wang, Zhicheng Wang, Kyle Genova, Pratul Srinivasan, Howard Zhou, Jonathan T. Barron, Ricardo Martin-Brualla, Noah Snavely, Thomas Funkhouser

    PixelNeRF: Neural Radiance Fields from One or Few Images (CVPR 2021) Alex Yu, Vickie Ye, Matthew Tancik, Angjoo Kanazawa