SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2312.04060 · 2023

Differentiable Registration of Images and LiDAR Point Clouds with VoxelPoint-to-Pixel Matching

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 12 functions out of this paper's own repositories and ran 7 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
junshengzhou/vp2p-match canonical 7 of 12
FunctionStatusWhere it lives
conv1x1 Ran junshengzhou/vp2p-match/models/network_img/resnet.py
pointer only (licence: NONE) · get_code("d9def42110729a85")
conv3x3 Ran junshengzhou/vp2p-match/models/network_img/resnet.py
pointer only (licence: NONE) · get_code("160bb14bd76201b4")
get_P_diff Ran junshengzhou/vp2p-match/run_kitti.py
pointer only (licence: NONE) · get_code("685179cc383d2145")
projection_pc_img Ran junshengzhou/vp2p-match/models/kitti_dataset.py
pointer only (licence: NONE) · get_code("2eaecdd32aa9f550")
sample_and_group_all Ran junshengzhou/vp2p-match/models/pointTransformer/utils.py
pointer only (licence: NONE) · get_code("225a2727f042aed0")
test_acc_trans Ran junshengzhou/vp2p-match/run_kitti.py
pointer only (licence: NONE) · get_code("ff34a143e5f7bcd1")
transform_pc_np Ran junshengzhou/vp2p-match/models/kitti_dataset.py
pointer only (licence: NONE) · get_code("2723e9de0f3630bf")
adapt_loss Not yet run junshengzhou/vp2p-match/utils/loss.py
pointer only (licence: NONE) · get_code("390859e4bb289148")
det_loss Not yet run junshengzhou/vp2p-match/utils/loss.py
pointer only (licence: NONE) · get_code("eb05e8a9a7136d5c")
fps_subsample Not yet run junshengzhou/vp2p-match/models/pointTransformer/utils.py
pointer only (licence: NONE) · get_code("1702ee5f1cc07dfc")
resnet18 Not yet run junshengzhou/vp2p-match/models/network_img/resnet.py
pointer only (licence: NONE) · get_code("ad028bc423fed232")
sample_and_group Not yet run junshengzhou/vp2p-match/models/pointTransformer/utils.py
pointer only (licence: NONE) · get_code("6f2216748fe51adb")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Cross-modality registration between 2D images from cameras and 3D point clouds from LiDARs is a crucial task in computer vision and robotic. Previous methods estimate 2D-3D correspondences by matching point and pixel patterns learned by neural networks, and use Perspective-n-Points (PnP) to estimate rigid transformation during post-processing. However, these methods struggle to map points and pixels to a shared latent space robustly since points and pixels have very different characteristics with patterns learned in different manners (MLP and CNN), and they also fail to construct supervision directly on the transformation since the PnP is non-differentiable, which leads to unstable registration results. To address these problems, we propose to learn a structured cross-modality latent space to represent pixel features and 3D features via a differentiable probabilistic PnP solver. Specifically, we design a triplet network to learn VoxelPoint-to-Pixel matching, where we represent 3D elements using both voxels and points to learn the cross-modality latent space with pixels. We design both the voxel and pixel branch based on CNNs to operate convolutions on voxels/pixels represented in grids, and integrate an additional point branch to regain the information lost during voxelization. We train our framework end-to-end by imposing supervisions directly on the predicted pose distribution with a probabilistic PnP solver. To explore distinctive patterns of cross-modality features, we design a novel loss with adaptive-weighted optimization for cross-modality feature description. The experimental results on KITTI and nuScenes datasets show significant improvements over the state-of-the-art methods. The code and models are available at https://github.com/junshengzhou/VP2P-Match.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2312.04060")
get_code_for_paper("2312.04060")
have("2312.04060")

Connect an agent — have() is free.