📢 News (2026-02-12): Our paper has been accepted by IEEE Transactions on Circuits and Systems for Video Technology (TCSVT)!
Our model is trained with the following environment (recommended for full reproducibility):
- Python 3.8.8
- PyTorch 1.9.1 with torchvision 0.10.1 (CUDA 11.1)
- PyTorch3D 0.6.0
- MinkowskiEngine 0.5.4
Other required packages can be installed via:
pip install -r src/requirements.txt
Hardware recommendation:
We used an NVIDIA Titan RTX (24 GB) for training. An RTX 3090 or A6000 is also suitable.
Training times are approximately 2–2.5 days per dataset.📁 Data and Preparation Follow the instructions below to download each dataset. Your folder structure should look like this:
text
.
├── data/
│ ├── indoor/
│ │ ├── test/
│ │ │ ├── 7-scenes-redkitchen/
│ │ │ │ ├── cloud_bin_0.info.txt
│ │ │ │ ├── cloud_bin_0.pth
│ │ │ │ └── ...
│ │ │ └── ...
│ │ ├── train/
│ │ │ ├── 7-scenes-chess/
│ │ │ │ ├── cloud_bin_0.info.txt
│ │ │ │ ├── cloud_bin_0.pth
│ │ │ │ └── ...
│ │ ├── test_3DLoMatch_pairs-overlapmask.h5
│ │ ├── test_3DMatch_pairs-overlapmask.h5
│ │ ├── train_pairs-overlapmask.h5
│ │ └── val_pairs-overlapmask.h5
│ └── modelnet40_ply_hdf5_2048
│ ├── ply_data_test0.h5
│ ├── ply_data_test1.h5
│ └── ...
├── src/
└── README.md3DMatch / 3DLoMatch Download the processed 3DMatch dataset from the Predator project site (or use the preprocessed version linked in the original RegTR repository).
Place the contents into ../data/indoor/.
(Optional but recommended) Pre‑compute overlapping points for the overlap loss to speed up training:
''' bash cd src python data_processing/compute_overlap_3dmatch.py ModelNet Download the PointNet‑processed ModelNet40 dataset from this official link and unzip into ../data/modelnet40_ply_hdf5_2048/. '''
We provide pretrained models for 3DMatch and ModelNet. Download them from ModelNet and 3Dmatch (e.g., Google Drive, Zenodo) and unzip into the trained_models/ folder.
Expected structure after unzipping:
text
trained_models/
├── 3dmatch/
│ └── ckpt/
│ └── model-best.pth
└── modelnet/
└── ckpt/
└── model-best.pth
Run the following commands from the src/ directory.
Note: Due to non‑determinism in GPU‑based KPConv neighborhood computation, results may vary slightly between runs.
3DMatch / 3DLoMatch
python test.py --dev --resume ../trained_models/3dmatch/ckpt/model-best.pth --benchmark 3DMatch
python test.py --dev --resume ../trained_models/3dmatch/ckpt/model-best.pth --benchmark 3DLoMatch ModelNet / ModelLoNet
python test.py --dev --resume ../trained_models/modelnet/ckpt/model-best.pth --benchmark ModelNet If you have defined a ModelLoNet split, use the same command.
To train the network from scratch, run the following commands from the src/ directory.
3DMatch
bash
python train.py --config conf/3dmatch.yaml
ModelNet
bash
python train.py --config conf/modelnet.yaml
@ARTICLE{11395294,
author={Zhou, Jingyu and Ma, Yunfeng and Jiang, Shuai and Wang, Yaonan and Liu, Min},
journal={IEEE Transactions on Circuits and Systems for Video Technology},
title={SCAP: Semantic Prototype Alignment for Robust Point Cloud Registration},
year={2026},
volume={},
number={},
pages={1-1},
keywords={Point cloud compression;Semantics;Prototypes;Noise;Transformers;Robustness;Feature extraction;Accuracy;Robots;Estimation;Point cloud registration;rigid transformation estimation;semantic prototype},
doi={10.1109/TCSVT.2026.3664224}}
We thank the authors of the following open‑source projects for making their code available: RegTR, PTT, Predator, D3Feat, KPConv, DETR – their publicly released source code greatly facilitated this work.