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.
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
@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.
- 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.
- 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.
- Python 3.x
- PyTorch (CUDA support required)
- Important: Please ensure
torch-scatter,torch-sparse, andflash-attnare installed correctly for your specific CUDA version.
-
Install Python dependencies:
pip install -r requirementlist.txt
-
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
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.
Modify the dataset paths in the configuration file. By default, the system uses configs/customdata.yaml.
To train the model from scratch:
python 0_train.py
python demo-T.py