RDMNet
[TITS] reliable dense matching based point cloud registration for autonomous driving
Install / Use
/learn @nubot-nudt/RDMNetREADME
RDMNet: Reliable Dense-point Matching for Robust and Accurate Point Cloud Registration
Official implementation of our TITS paper (arxiv, IEEE).

Installation
python setup.py develop
The code has been tested with Ubuntu 20.04, torch 1.8.0, cuda 11.4, and python 3.8.8
Quick demo
python infer.py
This script returns correspondences between two scans and calculates relative pose.
Preparation
Change _C.output_dir in experiments/config.py to your preferred path. Logs, trained snapshots, processed features will be saved in this path.
Dataset (KITTI)
Download the data from the Kitti official website.
--(your dataset path)--Kitti--sequences--00--velodyne--000000.bin
| | |--...
| |...
|--calib--sequences--00--calib.txt
| |--times.txt
|--...
Change _C.data.dataset_root in experiments/config.py to your dataset path
Downsample
Downsample the point cloud:
python preprocess/downsample_pcd_kitti.py
Generate ground truth pairs
Generate ground truth pairs for testing:
python preprocess/generate_kitti_pairs.py
In preprocess/generate_kitti_pairs.py, we follow FCGF, PREDATOR, CoFiNet, SuperGlue, and GeoTransformer to refine the ground truth relative poses using ICP. However, we find a same issue occurred in these repos. For more details, please refer to this link.
Training
python experiments/trainval.py
Using following command for multi-gpu training:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 experiments/trainval.py
Testing
./eval.sh
For visualization, please set _C.test.vis to 'True'. You will get: original nodes with learned offsets, final superpoints, grouped points using orignial nodes, grouped points using detected superpoints, and detected correspondences in order.

Zooming in the grouped points, you will find that using the detected superpoints leads to the points of a single object are more easily to be grouped as a whole. See following demonstrations for closer examination. Feel free to try you interested scans!

Results
| Datasets | RR | RRE(°) | RTE(cm) | | --------- | ----- | ------ | ------- | | KITTI | 99.82 | 0.18 | 5.3 | | KITTI-360 | 99.89 | 0.25 | 7.0 | | Apollo | 100 | 0.10 | 4.6 | | Mulran | 87.09 | 0.45 | 14.4 |
All results are evaluated using the same model trained on KITTI. Mulran poses significant challenge for generalization, as it loses approximated 70° field-of-view.
Citation
@article{shi2023RDMNet,
title={RDMNet: Reliable Dense Matching Based Point Cloud Registration for Autonomous Driving},
author={Chenghao Shi and Xieyuanli Chen and Huimin Lu and Wenbang Deng and Junhao Xiao and Bin Dai},
journal={IEEE Trans.~on Intelligent Transportation Systems (ITS)},
volume={24},
number={10},
pages={11372-11383},
year={2023}
}
Acknowledgements
We thank the following authors for open sourcing their methods.
@todo
- [x] Add quick demo.
- [ ] Current codes have supported Mulran, KITTI360, and Apollo. Add tips for these datasets.
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
last30days-skill
13.8kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
000-main-rules
Project Context - Name: Interactive Developer Portfolio - Stack: Next.js (App Router), TypeScript, React, Tailwind CSS, Three.js - Architecture: Component-driven UI with a strict separation of conce
