Score-Based Point Cloud Denoising
About
Point clouds acquired from scanning devices are often perturbed by noise, which affects downstream tasks such as surface reconstruction and analysis. The distribution of a noisy point cloud can be viewed as the distribution of a set of noise-free samples $p(x)$ convolved with some noise model $n$, leading to $(p * n)(x)$ whose mode is the underlying clean surface. To denoise a noisy point cloud, we propose to increase the log-likelihood of each point from $p * n$ via gradient ascent -- iteratively updating each point's position. Since $p * n$ is unknown at test-time, and we only need the score (i.e., the gradient of the log-probability function) to perform gradient ascent, we propose a neural network architecture to estimate the score of $p * n$ given only noisy point clouds as input. We derive objective functions for training the network and develop a denoising algorithm leveraging on the estimated scores. Experiments demonstrate that the proposed model outperforms state-of-the-art methods under a variety of noise models, and shows the potential to be applied in other tasks such as point cloud upsampling. The code is available at \url{https://github.com/luost26/score-denoise}.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Point Cloud Filtering | PUNet (test) | Chamfer Distance0.716 | 42 | |
| Point Cloud Filtering | PCNet (test) | CD1.066 | 42 | |
| Point Cloud Filtering | PCNet synthetic | CD0.714 | 36 | |
| Point Cloud Filtering | PUNet synthetic | CD0.505 | 36 | |
| Point Cloud Filtering | PUNet Sparse 10K | Chamfer Distance2.479 | 36 | |
| Point Cloud Filtering | PCNet Dense 50K | CD1.079 | 36 | |
| Point Cloud Upsampling | ShapeNet (test) | EMD1.65 | 32 | |
| Point Cloud Filtering | PUNet Dense 50K | CD0.711 | 18 | |
| Point Cloud Filtering | PUNet 50K Dense Laplace noise (synthetic) | CD0.825 | 18 | |
| Point Cloud Filtering | PCNet Sparse 10K | CD3.38 | 18 |