Giter VIP home page Giter VIP logo

rnb-neus's Introduction

RNb-NeuS

This is the official implementation of RNb-NeuS: Reflectance and Normal-based Multi-View 3D Reconstruction.

Baptiste Brument*, Robin Bruneau*, Yvain Quéau, Jean Mélou, François Lauze, Jean-Denis Durou, Lilian Calvet


Installation

git clone https://github.com/bbrument/RNb-NeuS.git
cd RNb-NeuS
pip install -r requirements.txt

Usage

Data Convention

Our data format is inspired from IDR as follows:

CASE_NAME
|-- cameras.npz    # camera parameters
|-- normal
    |-- 000.png        # normal map for each view
    |-- 001.png
    ...
|-- albedo
    |-- 000.png        # albedo for each view (optional)
    |-- 001.png
    ...
|-- mask
    |-- 000.png        # mask for each view
    |-- 001.png
    ...

One can create folders with different data in it, for instance, a normal folder for each normal estimation method. The name of the folder must be set in the used .conf file.

We provide the DiLiGenT-MV data as described above with normals and reflectance maps estimated with SDM-UniPS. Note that the reflectance maps were scaled over all views and uncertainty masks were generated from 100 normals estimations (see the article for further details).

Run RNb-NeuS!

Train with reflectance

python exp_runner.py --mode train_rnb --conf ./confs/CONF_NAME.conf --case CASE_NAME

Train without reflectance

python exp_runner.py --mode train_rnb --conf ./confs/CONF_NAME.conf --case CASE_NAME --no_albedo

Extract surface

python exp_runner.py --mode validate_mesh --conf ./confs/CONF_NAME.conf --case CASE_NAME --is_continue

Additionaly, we provide the five meshes of the DiLiGenT-MV dataset with our method here.

Citation

If you find our code useful for your research, please cite

@inproceedings{Brument23,
    title={RNb-Neus: Reflectance and normal Based reconstruction with NeuS},
    author={Baptiste Brument and Robin Bruneau and Yvain Quéau and Jean Mélou and François Lauze and Jean-Denis Durou and Lilian Calvet},
    booktitle={IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    year={2024}
}

rnb-neus's People

Contributors

bbrument avatar

Stargazers

 avatar  avatar Hu Zhu avatar Romain Janvier avatar Hu Wenbo avatar Xinyu WU avatar  avatar Nuri Ryu avatar cheng avatar ZOne Clara avatar Tosin avatar Xiyi Chen avatar Loping151 avatar Zane Du avatar  avatar  avatar  avatar Berkan Lafci avatar WendyYang avatar  avatar Hyeontae Son avatar Vincent Ho avatar Edgar Remy avatar Jean Mélou avatar  avatar Damien Guillotin avatar  avatar Matthieu Pizenberg avatar Thomas Forgione avatar  avatar Jeff Carpenter avatar Cristian Duguet avatar Beniko_J avatar askender avatar YiChenCityU avatar  avatar  avatar Xu Cao 曹旭 avatar  avatar Jingnan Gao avatar

Watchers

Romain Janvier avatar  avatar Tessa avatar

rnb-neus's Issues

RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu)

I got the following error when training the model with the provided preprocessed bearPNG data:

Traceback (most recent call last):                                                                          
  File "exp_runner.py", line 480, in <module>                                                               
    runner.train_rnb()                                                                                      
  File "exp_runner.py", line 195, in train_rnb                                                                                                                                                                          
    self.validate_image()                                                                                   
  File "exp_runner.py", line 300, in validate_image                                                         
    lights_dir = self.dataset.light_directions[idv, idl, pixels_y_batch, pixels_x_batch, :].cuda().unsqueeze(0)                                                                                                         
RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu) 

Normal Angular Error.

Can you please share the implementation code for Figure 10 in your paper? (Code for computing the normal angular error between meshes.)

CUDA implementation

Thanks for your great work! When will the CUDA implementation be released, as announced on your project page?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.