Home

Awesome

<p align="center"> <h1 align="center">Learning a More Continuous Zero Level Set in Unsigned Distance Fields through Level Set Projection</h1> <p align="center"> <a href="https://junshengzhou.github.io/"><strong>Junsheng Zhou*</strong></a> · <a href="https://mabaorui.github.io/"><strong>Baorui Ma*</strong></a> · <a href="https://scholar.google.com/citations?user=wynhSuQAAAAJ&hl=zh-CN&oi=sra"><strong>Shujuan Li</strong></a> · <a href="https://yushen-liu.github.io/"><strong>Yu-Shen Liu</strong></a> · <a href="https://h312h.github.io/"><strong>Zhizhong Han</strong></a> </p> <p align="center"><strong>(* Equal Contribution)</strong></p> <h2 align="center">ICCV 2023</h2> <div align="center"></div> </p>

We release the code of the paper <a href="https://arxiv.org/abs/2308.11441">Learning a More Continuous Zero Level Set in Unsigned Distance Fields through Level Set Projection</a> in this repository.

Reconstruction Results

ShapeNetCars

<p align="center"> <img src="figs/cars.png" width="780" /> </p>

3DScenes

<p align="center"> <img src="figs/scenes.png" width="780" /> </p>

KITTI

<p align="center"> <img src="figs/kitti.png" width="760" /> </p>

Point Upsampling Results

<p align="center"> <img src="figs/pugan.png" width="780" /> </p>

Point Normal Estimation Results

<p align="center"> <img src="figs/pcpnet.png" width="780" /> </p>

Installation

Our code is implemented in Python 3.8, PyTorch 1.11.0 and CUDA 11.3.

conda create -n levelsetudf python=3.8
conda activate levelsetudf
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
pip install tqdm pyhocon==0.3.57 trimesh PyMCubes scipy point_cloud_utils==0.29.7
cd extensions/chamfer_dist
python setup.py install

Quick Start

For a quick start, you can train our LevelSetUDF to reconstruct surfaces from a single point cloud as:

python run.py --gpu 0 --conf confs/object.conf --dataname demo_car --dir demo_car

You can find the outputs in the ./outs folder:

│outs/
├──demo_car/
│  ├── mesh
│  ├── densepoints
│  ├── normal

Use Your Own Data

We also provide the instructions for training your own data in the following.

Data

First, you should put your own data to the ./data/input folder. The datasets is organised as follows:

│data/
│── input
│   ├── (dataname).ply/xyz/npy

We support the point cloud data format of .ply, .xyz and .npy

Run

To train your own data, simply run:

python run.py --gpu 0 --conf confs/object.conf --dataname (dataname) --dir (dataname)

Notice

Related works

Please also check out the following works that inspire us a lot:

Citation

If you find our code or paper useful, please consider citing

@inproceedings{zhou2023levelset,
title={Learning a More Continuous Zero Level Set in Unsigned Distance Fields through Level Set Projection},
author={Zhou, Junsheng and Ma, Baorui and Li, Shujuan and Liu, Yu-Shen and Han, Zhizhong},
booktitle={Proceedings of the IEEE/CVF international conference on computer vision},
year={2023}
}