Skip to content

luxiya01/mbes-score-denoise

Repository files navigation

Score-Based Multibeam Point Cloud Denoising (AUV Symposium 2024)

This repository contains the official implementation of the IEEE OES AUV Symposium 2024 paper

Score-Based Multibeam Point Cloud Denoising,
Li Ling, Yiping Xie, Nils Bore, John Folkesson
IEEE/OES Autonomous Underwater Vehicles Symposium (AUV), 2024

The code is based on Score-Based Point Cloud Denoising (ICCV 2021) implementation

multibeam scorenet schematics

Introduction

Multibeam echo-sounder (MBES) is the de-facto sensor for seafloor mapping, or bathymetry mapping. In recent years, cheaper MBES sensors and global mapping initiatives have led to exponential growth of available data. However, raw MBES point cloud data contains 1-25% of outliers, which need to be filtered out before an accurate bathymetry can be constructed. Typically, these outliers are handled by semi-automatic cleaning algorithms such as CUBE, with extensive parameter tuning and validation by data processing experts. Such workflow lacks scalability and repeatability. In this work, we draw inspirations from the point cloud denoising community, and propose a score-based multibeam denoising network. In this context, the score refers to the gradient of the log-probability function of the points. The network is trained and tested using real survey data gathered by an autonomous underwater vehicle (AUV). By evaluating on unseen test data, we found that this proposed network outperforms classical methods on both outlier detection and point cloud denoising, and can be readily integrated into existing MBES standard workflows.

Installation

We recommend using conda to set up the environment:

conda env create -f mbes_env.yml
conda activate mbes-score-denoise

The code has been tested in the following environment:

Package Version Comment
Python 3.8
PyTorch 1.9.0
pytorch3d 0.5.0 Used to compute k nearest neighbors in the MBES point cloud.
Open3D 0.18.0 Used for baseline evaluations.
CUDA 11.1

Training and Evaluation

Both training and testing are performed using train_orig_mbes.py file.

To train a model using default hyperparameters:

python train_orig_mbes.py \
       --raw_data_root <path to folder with raw data patches> \
       --gt_root <path to folder with draping results ground truth patches>

To test a model checkpoint, add the --test flag and provide the checkpoint location:

python train_orig_mbes.py \
       --raw_data_root <path to folder with raw data patches> \
       --gt_root <path to folder with draping results ground truth patches> \
       --test \
       --ckpt_path <path to the .pt checkpoint for evaluation>

Please check the code for more tunable hyperparameters.

Datasets

Due to restrictions, we are unable to release the original training data.

To create your own dataset for training using EIVA NaviSuite exports, please follow the instructions provided here.

You can also create your own training dataset using other custom methods without EIVA softwares. The training script expects the following content per multibeam point cloud:

  • pcl_raw: Raw multibeam point cloud containing noise and outliers (Shape: Nx3)
  • pcl_clean: Corresponding clean multibeam point cloud (Shape: Mx3)
  • rejected: A boolean mask for pcl_raw that specifies whether the point is an outlier (Shape: Nx1)

Citation

If you find our work useful, please cite it as

@article{ling2024score,
  title={Score-Based Multibeam Point Cloud Denoising},
  author={Ling, Li and Xie, Yiping and Bore, Nils and Folkesson, John},
  journal={arXiv preprint arXiv:2409.13143},
  year={2024}
}

About

Score-Based Multibeam Point Cloud Denoising (AUV Symposium 2024)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published