Skip to content

Guo-Xiaoy/SDGNet

Repository files navigation

SDGNet: Serialized Geometry-Guided Network for Point Cloud Registration

License: MIT Status

This repository contains the official PyTorch implementation of SDGNet.

📢 Update: To facilitate reproducibility during the review process, we have released the pre-trained checkpoints and a minimal runnable demo (demo-T.py) for immediate verification.

📄 Paper

This work has been published in Neurocomputing:

X. Guo, B. Zhu, M. Chi, Y. Hu, Y. Wei, Q. Fang,
“A Serialized Geometry-Guided Registration Method with Beltrami Diffusion for 2D Laser Scanning in Industrial Robotic Measurement Application,”
Neurocomputing, vol. 673, 2026, 132897.
DOI: 10.1016/j.neucom.2026.132897

BibTeX

@article{Guo2026SDGNet, title = {A Serialized Geometry-Guided Registration Method with Beltrami Diffusion for 2D Laser Scanning in Industrial Robotic Measurement Application}, author = {Guo, Xiaoyu and Zhu, Bao and Chi, Meng and Hu, Yibo and Wei, Yanding and Fang, Qiang}, journal = {Neurocomputing}, volume = {673}, year = {2026}, pages = {132897}, issn = {0925-2312}, doi = {10.1016/j.neucom.2026.132897} }

SDGNet is a high-precision point cloud registration framework tailored for industrial 3D measurement and robot hand-eye calibration scenarios. Unlike general-purpose registration methods that prioritize video-rate speed, SDGNet is engineered to maximize geometric accuracy and edge preservation under the "stop-and-measure" operational mode typical in industrial automation.

By integrating Beltrami Diffusion with Curve-based Serialization, our framework solves a unified geometric flow via an operator splitting scheme. This design effectively suppresses sensor noise while strictly preserving high-frequency geometric details (e.g., sharp edges and corners) critical for high-precision pose estimation.

✨ Key Features

  • Targeted for Precision Measurement: Specifically optimized for scenarios requiring sub-millimeter accuracy, such as industrial quality inspection and robotic assembly, balancing robust registration with acceptable inference latency (~300ms).
  • Beltrami Diffusion Module: A physics-informed geometric evolution module that simultaneously minimizes Polyakov action and total curvature energy. It acts as a selective filter, smoothing out noise on flat surfaces while sharpening geometric edges to prevent "feature blurring" common in standard diffusion.
  • Curve-based Serialization: Utilizes Space-Filling Curves (e.g., Z-order, Hilbert) to unroll irregular 3D point clouds into structure-preserving 1D sequences, enabling efficient global interaction via FlashAttention without quadratic complexity.
  • SGGE Module: A Serialized Geometry-Guided Encoding module that explicitly fuses rigid-invariant geometric features (PPF) with learned semantic contexts, ensuring robustness against partial overlaps and clutter in complex workcells.

✨ Key Features

  • Beltrami Diffusion Module: A unified geometric evolution equation that simultaneously minimizes Polyakov action and total curvature energy, achieving robust feature denoising while preserving high-frequency geometric details.
  • Curve-based Serialization: Utilizes Space-Filling Curves (e.g., Z-order, Hilbert) to transform 3D point clouds into 1D sequences, maintaining topological locality for efficient sequence-based processing.
  • SGGE Module: A Serialized Geometry-Guided Encoding module that fuses explicit geometric invariants (PPF) with implicit semantic features extracted by the backbone.
  • Efficiency: Designed for high-precision measurement scenarios, offering a balanced trade-off between accuracy and inference latency.

🛠️ Requirements

  • Python 3.x
  • PyTorch (CUDA support required)
  • Important: Please ensure torch-scatter, torch-sparse, and flash-attn are installed correctly for your specific CUDA version.

Installation

  1. Install Python dependencies:

    pip install -r requirementlist.txt
  2. Build C++ extensions in cpp_wrappers/: (Required for radius neighbors search and subsampling)

    cd cpp_wrappers/cpp_neighbors
    python setup.py build_ext --inplace
    cd ../cpp_subsampling
    python setup.py build_ext --inplace

📂 Directory Structure

  • configs/: Configuration files (e.g., customdata.yaml, kitti.yaml, threedmatch.yaml).
  • data/: Dataset loaders and preprocessing scripts.
  • models/: Core network architecture (Beltrami Diffusion, SGGE, Attention modules).
  • losses/: Loss functions.
  • utils/: Utility functions.
  • cpp_wrappers/: C++ CUDA extensions.
  • 0_train.py: Main entry point for training.
  • _1_test.py: Main entry point for evaluation/testing.
  • MAE_RMSE.py: Main evaluation script that computes the MAE/RMSE metrics reported in the paper.
  • demo-T.py: One-line demo script for quick verification on a single test case.
  • benchmark.py: Script for evaluating model parameters and inference latency.

🚀 Quick Start

1. Data Preparation

Modify the dataset paths in the configuration file. By default, the system uses configs/customdata.yaml.

2. Training and Verification (Minimal Demo)

To train the model from scratch:

python 0_train.py

python demo-T.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors