3Dmatch论文阅读

Main idea

用深度学习的方式学习一个keypoint的descriptor,用于3D点云匹配,为用DL做point cloud matching/registration领域中非常好的文章

dataset

本文是从现有reconstruction数据集中生成的positive和negative training data。

train

随机选keypoint,然后把keypoint点及其周围点一起做个voxel,然后转化为TDF,然后送入siamese网络训练,用GT-correspondences进行监督,loss用的是contrastive loss,即希望,对应的两个patch间descriptor的L2距离小,不对应的两个patch间descriptor的L2距离大。

test

在test时,随机选2N个keypoint,分别算完两个pointcloud的2N个patch的descriptor后,用KD树检索。

structure

在这里插入图片描述

数据集产生

数据集由reconstruction任务中提取,现成的reconstruction数据集中有RGBD图像还有camera的内参外参,还有相应的三维点的camera坐标

  1. 随机选一个scene,一个seqence,和一个frame,三者确定一个frame
  2. 在该frame中随机挑一个pixel(挑一对u,v,转化为一个idx,用于检索depth值)记为p1,得到其u,v,z。
  3. 把像素坐标u,v转化为相机坐标,然后结合depth图得到的z,得到p1的相机坐标
  4. 将p1投影到这个frame中,检查投影的u,v是否是在这个frame中,若在就记录
  5. 搜索同一个scene中的每一个sequence每一个frame,检查此时的camera的world坐标与p1的camera是否相隔1m,是的话继续,不是则跳过。相隔1m是保证视角差距足够大,场景变化足够大
  6. 遍历完之后在所有valid的p2中抽取一个检查它在对应的depth中是否valid,是的话就结束抽取,并把该点记为p2,不是则继续抽,最多抽100次。
  7. 然后随机抽scene,sequence,frame和pixel,记为p3

至此,p1-p2为一个positive样本,p1-p3为一个negative样本。记录p1,p2,p3来源的frame(即记录了对应的camera内外参),p1,p2,p3的pixel位置,p1,p2,p3的TDF数据,重复上述过程形成training set。

TDF

TDF值的计算就是:

  • L获取一对pixel坐标,转化为camera坐标
  • 根据设置的voxel大小,voxel size把这个点周围框住
  • 3D框投影回2D框,获取其中所有valid的点转化为camera坐标系3D坐标,这些点就是所谓的”表面”,它所在的voxel就是occupy,该voxel的TDF值就是1
  • 对其他未填充的voxel,计算其到表面点最近的距离,TDF值就是truncate margin normalize后的值(距离表面点越近越接近于1)。
// Apply truncation, normalize between 0 and 1, and flip so 1 is near surface and 0 is far away from surface
for (int i = 0; i < num_grid_pts; ++i)
    voxel_grid_TDF[i] = 1.0f - (std::min(closest_pt_dists[i], trunc_margin) / trunc_margin);

discuss

  • 选择TDF而不是直接编码深度图
    因为TDF提供了对遮挡区域的合理推断。
  • 不用learned metric
    因为比较2N个patch至少要O(n**2)复杂度,learned度量函数(本文实现为一个分类问题,即不输出descriptor,也不用contrastive loss监督,直接输出"match" or “non-match”,用softmax loss)不能接KD树减少复杂度(都二元输出了还怎么用KD树。。。),所以还不如把descriptor显示输出出来,然后用L2距离为metric+KD树降低比较复杂度

文中拓展的应用:

  1. Descriptor+RANSAC进行点云keypoint匹配然后ICP算pose
  2. Descriptor+RANSAC点云算出R,t后把它们翻到同一个角度算重叠度,做回环。
    在这里插入图片描述
  3. 3D重建(多片点云融合为一个大场景)(用这个descriptor代替SIFT/SURF,用BA一起优化)
    在这里插入图片描述
  4. Amazon Picking Challenge(给定物体模型,在一片点云场景中检索这个物体)
    在这里插入图片描述
  5. Surface Correspondence on 3D meshes.
    在这里插入图片描述
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值