In this repository we provide code of the paper:
Point Cloud Denoising via Momentum Ascent in Gradient Fields
Yaping Zhao, Haitian Zheng, Zhongrui Wang, Jiebo Luo, Edmund Y. Lam
paper link: https://ieeexplore.ieee.org/abstract/document/10222122
The code has been tested in the following environment:
Package | Version | Comment |
---|---|---|
PyTorch | 1.9.0 | |
point_cloud_utils | 0.18.0 | For evaluation only. It loads meshes to compute point-to-mesh distances. |
pytorch3d | 0.5.0 | For evaluation only. It computes point-to-mesh distances. |
pytorch-cluster | 1.5.9 | We only use fps (farthest point sampling) to merge denoised patches. |
(Thanks zhanghua7099 for preparing a configuration file specifically for the CUDA 12 environment.)
conda env create -f env_cu12.yml
conda activate mag_cu12
conda env create -f env.yml
conda activate mag
conda create --name mag python=3.8
conda activate mag
conda install pytorch==1.9.0 torchvision==0.10.0 cudatoolkit=11.1 -c pytorch -c nvidia
conda install -c conda-forge tqdm scipy scikit-learn pyyaml easydict tensorboard pandas
# point_cloud_utils
conda install -c conda-forge point_cloud_utils==0.18.0
# Pytorch3d
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c pytorch3d pytorch3d==0.5.0
# pytorch-scatter
conda install -c pyg pytorch-cluster==1.5.9
Download link: https://drive.google.com/drive/folders/1--MvLnP7dsBgBZiu46H0S32Y1eBa_j6P?usp=sharing
Please extract data.zip
to data
folder.
# PUNet dataset, 10K Points
python test.py --dataset PUNet --resolution 10000_poisson --noise 0.01 --niters 1
python test.py --dataset PUNet --resolution 10000_poisson --noise 0.02 --niters 1
python test.py --dataset PUNet --resolution 10000_poisson --noise 0.03 --niters 2
# PUNet dataset, 50K Points
python test.py --dataset PUNet --resolution 50000_poisson --noise 0.01 --niters 1
python test.py --dataset PUNet --resolution 50000_poisson --noise 0.02 --niters 1
python test.py --dataset PUNet --resolution 50000_poisson --noise 0.03 --niters 2
python test_single.py --input_xyz <input_xyz_path> --output_xyz <output_xyz_path>
You may also barely run python test_single.py
to see a quick example.
python test_large.py --input_xyz <input_xyz_path> --output_xyz <output_xyz_path>
You may also barely run python test_large.py
to see a quick example.
python train.py
Please find tunable parameters in the script.
Cite our paper if you find it interesting!
@inproceedings{zhao2023point,
title={Point Cloud Denoising via Momentum Ascent in Gradient Fields},
author={Zhao, Yaping and Zheng, Haitian and Wang, Zhongrui and Luo, Jiebo and Lam, Edmund Y},
booktitle={2023 IEEE International Conference on Image Processing (ICIP)},
pages={161--165},
year={2023},
organization={IEEE}
}
This code is implemented based on Score.