YuePanEdward/regx-benchmark
RegX Cross-Domain Multi-View Point Cloud Registration Benchmark RegX evaluates multi-view point cloud registration across scales spanning nine orders of magnitude — nanometre-scale microscopy to kilometre-scale airborne maps — and sensors never designed to be compared: clinical colonoscopes, RGB-D cameras, spinning and solid-state LiDAR, terrestrial and airborne laser scanners. Most registration benchmarks fix one sensor and one scale. RegX asks a narrower question instead: does… See the full description on the dataset page: https://huggingface.co/datasets/YuePanEdward/regx-benchmark.
RegX
Cross-Domain Multi-View Point Cloud Registration Benchmark
RegX evaluates multi-view point cloud registration across scales spanning nine orders of magnitude — nanometre-scale microscopy to kilometre-scale airborne maps — and sensors never designed to be compared: clinical colonoscopes, RGB-D cameras, spinning and solid-state LiDAR, terrestrial and airborne laser scanners.
Most registration benchmarks fix one sensor and one scale. RegX asks a narrower question instead: does a method generalize when the domain changes underneath it? Every sample is meant for zero-shot evaluation.
Introduced in Register Any Point: Scaling 3D Point Cloud Registration by Flow Matching (ECCV 2026).
At a glance
Categories
Object covers endoscopic, microscopy, plant and Stanford-model scans. IndoorScan/ OutdoorScan hold single-sensor scans and submaps. TLS holds terrestrial laser scans. Map holds session-level maps and airborne scans, where registration means merging maps built at different times or by different sensors.
Layout
RegX/
├── README.md # this card
├── LICENSE # terms for the curated artifacts
├── ATTRIBUTION.md # per-source license + citation table
├── datasets.csv # registry of the 61 source datasets
├── references.bib # BibTeX for the citation keys
├── regx_multiview_samples_v2.json # all 1,540 registration samples + curation metadata
├── regx_multiview_samples_v2.jsonl # the "samples" array only, one JSON object per line --
│ # for the HF dataset viewer / `load_dataset()`; the
│ # .json above is the canonical, complete file
├── view_regx.py # interactive viser viewer, see Usage below
└── <Category>/<scene>/
├── 000.ply, 001.ply, ... # the views (2–24 per scene)
├── metadata.yaml # provenance, scenario tags, sensor
├── connection_graph.npy # N×N pairwise overlap ratios
├── connection_graph.txt # same matrix, plain text
└── connection_graph_order.txt # row index → .ply filenamemetadata.yaml
type: TLS # category
scene: Indoor, Infrastructure, Degenerate-geometry
applications: surveying, as-built modeling, registration benchmarking
description: Terrestrial laser scans of a road tunnel, captured from several scanner stations.
geography: China
source_dataset: WHUTLS # → row in datasets.csv
license: '-' # upstream terms ('-' = not stated)
citation: dong2020jprs-whutls # BibTeX key of the source paper
num_point_clouds: 7
pointcloud_info:
000.ply:
dataset_source: WHUTLS # per-file, may differ within a scene
sensor: RIEGL TLS
time: 2019-06-20 # when knownPer-file dataset_source matters in Map: a single scene such as Map/MulRAN_Map_KAIST merges maps from MulRAN, STheReO and HeLiPR recorded years apart.
connection_graph
An N×N matrix where entry (i, j) is the fraction of points in cloud i that have a neighbor in cloud j after ground-truth alignment. It is not symmetric — clouds differ in extent and density. Row order is given by connection_graph_order.txt.
Usage
import json, yaml, numpy as np, open3d as o3d
from pathlib import Path
root = Path("RegX")
samples = json.loads((root / "regx_multiview_samples_v2.json").read_text())["samples"]
s = samples[0]
scene = root / s["scene"]
print(yaml.safe_load((scene / "metadata.yaml").read_text())["description"])
clouds, gt_poses = [], []
for view in s["inputs"]:
pcd = o3d.io.read_point_cloud(str(scene / view["point_cloud_file"]))
clouds.append(np.asarray(pcd.points)) # unaligned input
gt_poses.append(np.array(view["transformation_matrix"])) # input → worldFilter to a category or a view-count regime:
tls = [s for s in samples if s["scene"].startswith("TLS/")]
pairs = [s for s in samples if s["view_count"] == 2]
hard = [s for s in samples if s["min_overlap_ratio"] < 0.3]The sample list is also mirrored as regx_multiview_samples_v2.jsonl (one JSON object per line, no wrapping metadata) so datasets.load_dataset("<repo>") works directly; still pair it with the point clouds and metadata.yaml files as above.
Interactive viewer
view_regx.py is a viser-based browser viewer for browsing samples, toggling between the augmented input and the ground-truth alignment, and (given a batch_regx.py-style results folder) inspecting a model's predictions and per-edge failures.
pip install numpy open3d viser
python view_regx.py --root . --json regx_multiview_samples_v2.jsonRun python view_regx.py --help for the full option list (filtering by category/scene, sorting failures by error, etc.).
Evaluation protocol
Predict a pose for every view; error is measured after aligning your prediction to the ground truth up to a global rigid transform (the world frame is arbitrary).
Because scenes span nine orders of magnitude, translation error is normalized by the scene extent before thresholding. Two operating points are reported:
Two success rates are reported at each threshold:
- Edge success rate — mean success over all overlapping pairs in a sample.
- Graph success rate — 1 only if every overlapping pair succeeds; the consistency-sensitive metric and the primary number in the paper.
Also reported: mean/median rotation error (deg) and translation error (m), global RMSE, and runtime per sample.
Provenance and licensing
RegX curates data from 61 source datasets. It does not replace them.
- Curated artifacts (sample definitions, ground-truth transforms, overlap graphs, metadata, docs) — CC BY-NC-SA 4.0, see
LICENSE. - Point cloud geometry — remains under each source's own terms. See
ATTRIBUTION.mdand thelicensecolumn ofdatasets.csv.
Upstream terms range from CC0 and MIT to non-commercial share-alike and custom research licenses. 12 sources (41 scenes, 333 samples, 22% of the benchmark) publish no explicit license — for those, obtain the data from the original provider rather than redistributing our copy, and consult the original release before any commercial use.
Known limitations
- Ground truth for several sources was produced by a SLAM system rather than surveyed directly, so it is accurate but not exact. It is adequate for the thresholds above.
- Overlap ratios are computed on voxel-subsampled clouds and are approximate.
- Category boundaries are pragmatic, not ontological: airborne laser scans live in
Map.
Citation
@inproceedings{pan2026eccv,
title = {{Register Any Point: Scaling 3D Point Cloud Registration by Flow Matching}},
author = {Pan, Yue and Sun, Tao and Zhu, Liyuan and Nunes, Lucas and
Armeni, Iro and Behley, Jens and Stachniss, Cyrill},
booktitle = {Proc.~of the Europ.~Conf.~on Computer Vision (ECCV)},
year = {2026}
}