ZeyongWei / PathNet

PathNet: Path-selective Point Cloud Denoising
MIT License
23 stars 3 forks source link

PathNet: Path-selective Point Cloud Denoising (TPAMI'24)

This is an implementation of PathNet

Abstract

Current point cloud denoising (PCD) models optimize single networks, trying to make their parameters adaptive to each point in a large pool of point clouds. Such a denoising network paradigm neglects that different points are often corrupted by different levels of noise and they may convey different geometric structures. Thus, the intricacy of both noise and geometry poses side effects including remnant noise, wrongly-smoothed edges, and distorted shape after denoising. We propose PathNet, a path-selective PCD paradigm based on reinforcement learning (RL). Unlike existing efforts, PathNet enables dynamic selection of the most appropriate denoising path for each point, best moving it onto its underlying surface. Besides the proposed framework of path-selective PCD for the first time, we have two more contributions. First, to leverage geometry expertise and benefit from training data, we propose a noise- and geometry-aware reward function to train the routing agent in RL. Second, the routing agent and the denoising network are trained jointly to avoid under- and over-smoothing. Extensive experiments show promising improvements of PathNet over its competitors, in terms of the effectiveness for removing different levels of noise and preserving multi-scale surface geometries. Furthermore, PathNet generalizes itself more smoothly to real scans than cutting-edge models.

Environment

Installation

You can install via conda environment .yaml file

conda env create -f env.yml
conda activate pathnet

Datasets and model

We provide pretrained models and datasets here

Please extract test_data.zip, train _data.hdf5 to data folder.

Denoise

Train

Use the script train.py to train a model in the our dataset (the trained model will be saved at ./log/path-denoise/model/checkpoints/best_model.pth):

cd PathNet
### First stage
python train.py --epoch 200 --use_random_path 1
### Second stage
python train.py --epoch 300 --use_random_path 0

Test (The filtered results will be saved at ./data/results)

cd PathNet
python test.py

Citation

If you find the code useful for your research, please consider citing

@article{wei2024pathnet,
  title={PathNet: Path-Selective Point Cloud Denoising},
  author={Wei, Zeyong and Chen, Honghua and Nan, Liangliang and Wang, Jun and Qin, Jing and Wei, Mingqiang},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2024},
  publisher={IEEE}
}

Acknowledgements

The repository is based on:

The point clouds are visualized with Easy3D.

We thank the authors for their great work!

License

This project is open sourced under MIT license.