PointVoteNet:accurate object detection and 6 DoF pose estimation in point clouds

  • 1.背景信息
  • 2.方法
    • 2.1推理阶段
      • 2.1.1对model点云的处理
      • 2.1.2对scene点云的预处理
      • 2.1.3通过分割进行点的关联
      • 2.1.4通过关联信息进行6DoF位姿估计
      • 2.1.5多模态定位损失
    • 2.2训练阶段
      • 2.2.1数据准备
      • 2.2.2平移不变的正例
      • 2.2.3简单和困难的反例
      • 2.2.4增强
      • 2.2.5对称处理
  • 3.实验结果
  • 读后感

1.背景信息

  1. 输入数据形式:无序点云 (with/without RGB information)
  2. 以PointNet作为骨架,文中说用新的方法替换掉PointNet,该网络具有进一步提升的潜能。
  3. 实现目的:model点云与scene点云的6DoF姿态估计

2.方法

2.1推理阶段

2.1.1对model点云的处理

  1. model点云可由:CAD模型或者dense点云表示(XYZ+RGB)
  2. 对model点云的处理目的:用少量的关键点表示这个moedl点云,以为训练阶段做辅助。
  3. 处理步骤:
    model点云—>点云表面上体素栅格降采样(2.5cm经验栅格大小)—>最终采样成大约50个或者几百个关键点.

2.1.2对scene点云的预处理

  1. scene点云的构成:无序XYZ+RGB
  2. 处理步骤:
    无序scene点云—>点云表面上体素栅格降采样(2.5cm经验栅格大小)—>大约3000-5000个锚点—>对这些锚点进行二分类,确定目标点云和背景。
    3.二分类具体步骤:
    在每个锚点周围的圆邻居上取2048个scene点, 输入到一个PointNet中(该PointNet执行二分类分数输出),取16个得分最高的锚点表示这个目标。

2.1.3通过分割进行点的关联

  1. 目的:scene点云中每一个锚点的2048个邻居点都要么与model点云中的关键点进行关联,要么与背景进行关联
  2. 具体步骤:
    假定model点云上降采样到K个关键点, 对scene点云中16个得分最高锚点以及他们的邻居点进行标记。
    他们用一个(K+1)-way的逐点语义分割网络(受PointNet启发)去标记scene点云中的点(第k类或者背景)。

2.1.4通过关联信息进行6DoF位姿估计

  1. 通过分割得到的关联显然是一个many-to-few的,many是指scene点云中被分割的点,few是指model点云中的K个关键点。我理解的是每个scene点云中的分割都对应model中的一个关键点。作者说,平均来看,scene点云中的many点总是会投票给这个分割区域的中心点,所以many点的平移误差会相互抵消,这不会对位姿估计造成什么大问题。我还是持相对怀疑的态度的,因为我不太了解他用的下面将要讲到的位姿估计的方法。
  2. mismatch的两个点集的相对位姿估计方法
    作者说最有效的是方法是rotational subgroup voting algorithm[A. G. Buch, L. Kiforenko, and D. Kraft, “Rotational subgroup voting and pose clustering for robust 3d object recognition,” in IEEE International Conference on Computer Vision, pp. 4137–4145, 2017.]
    作者说我们只需要直接传入多个已经标记好的点(去掉背景)到这个算法中,就可以计算model点云和scene点云之间的位姿变换。这个方法需要读一下,相关链接以后放在这个位置。
  3. 作者说上述算法最后估计出16个poses for每一个scene点云中的锚点。我理解的意思是每个scene点云锚点以及他的2048个邻居,被分割之后去掉背景部分,然后输入到rotational subgroup voting algorithm中,估计出一个pose,所以最后是16个poses。
  4. 这16个poses用ICP进行了迭代优化。

2.1.5多模态定位损失

  1. 目的: 述16个poses被作用多模态损失,这个损失定义了model点云和scene点云到底有多匹配。
  2. 处理步骤:
    model点云—>通过estimated转换到target点云(其中一个点叫 p i p_i pi​)—>通过Kd树获得pi在scene点云中的最近点,记作 p i , N N p_{i,NN} pi,NN​
    移除遮挡点,根据摄像机视轴将scene点云中遮挡的点移除掉,最终剩下n个点。
    loss函数:

    这里 l c o l o r l_{color} lcolor​是与几何损失一样的定义。

l g e o m e t r i c l_{geometric} lgeometric​和 l c o l o r l_{color} lcolor​最终通过KDE_based score of the voting algorithm, 生成最后的损失函数。

2.2训练阶段

训练的数据:无序点云,它由XYZ坐标,法向量坐标,局部曲率,以及可能的RGB信息构成。
其中法向量坐标,局部曲率都是由PCL计算而来的with 一个1cm的支持半径。

2.2.1数据准备

首先,将model点云通过groundtruth位姿转换到target(延续densefusion中的名字),所有与target点云距离阈值在1cm之内的scene点都被作为foreground点。超过2cm的scene点被是视为背景点。

作者说用一个分割标签将所有foreground点与model点云中的最近点的索引相对应。我理解的,这样的话,foreground与model中的对应点关系也是many-to-few的。通过这样的对应操作,groundtruth的pose被转换到了对应点上。

2.2.2平移不变的正例

目的:随机采样20个前景点,以这20个前景点构造20个样例,以创建对PointNet二分类网络的正例。
作者说在可见的物体表面随机采样可以提高算法的平移鲁棒性(因为在推理阶段使用锚点不可避免的会产生平移),这里我没太理解
步骤:
1.每一个采样点,都提取它在scene点云中的邻居圆(0.6倍的3D Bounding Box)内的2048个点。
2. 这样形成的每一个样例,都提供了一个目标类别和2048个逐点的分割标签。
2.每个训练样例(1个前景点以及它所对应的2048个场景点)都通过减去在这个圆内的中心点进行中心化。

2.2.3简单和困难的反例

简单反例:
所有非前景点,都均匀采样。这些点距离目标物体足够远,不包含任何前景点,导致训练结果不具有特异性,因此需要引入适量困难反例。
困难反例:
困难反例是在目标物体附近进行采样的,这些点被标记为非背景分割label(有可能是前景点也有可能是中间点),并且分类label是非目标。我的理解就是目标附近的非目标且是非背景分割label的点

作者用了20个简单的和10个困难的反例。那么再算上20个正例,总计50个训练实例,每个实例带有2048个无序3D点。

2.2.4增强

对20个正例,去掉所有背景点,然后从一个简单的负例中的背景随机采样,将这些点插入进去。
正例也会被随机平移一小段距离,并且还会随机去掉一些对象关键点周围的分割点。
然后,以均匀分布按对象对角线一半的比例随机缩放背景点云。
最后,cut点云使所有的点都在0.6倍目标对角线的圆内(相当于区域滤波)。
总而言之,除了原始的50个样例,数据增强还多搞出来60个样例。

2.2.5对称处理

将对称模型降低到所需的最少关键点,我个人理解这样歧义性会更大。作者说一个示例是对无穷倍对称圆柱体,只使用沿主轴的单点线来描述。

3.实验结果


其中SSD-6D,BB8,PVNet是用RGB图像的,Densefusion和这篇文章是用RGBD图像的。

读后感

1.我感觉这篇文章最大的创新点是用3D分割方法(基于PointNet)来建立model点云与scene点云之间的对应关系,以前我从见过这样的对应方法,也不确定many-to-few的对应是否能带来这么好的效果。
2.文章中取关键点或者锚点,然后再取2048个小弟点的思想有点像图像处理中SIFT那种思路,取一些周边的信息来描述这个关键点,从而形成特征描述子
3.但又不完全与SIFT相同,因为它是把1+2048当成一个训练样本(example)来搞的,跟SIFT中的特征点和特征描述子还不太一样。
4. 文章的对称处理感觉也有问题,对称的目标物体用更少的信息表示,这样自由度会更大,估计会更不准的吧
5.由于文章并没有放出源码,很多细节没有搞透。
6.另外还有PointNet以及rotational subgroup voting algorithm[A. G. Buch, L. Kiforenko, and D. Kraft, “Rotational subgroup voting and pose clustering for robust 3d object recognition,” in IEEE International Conference on Computer Vision, pp. 4137–4145, 2017.]这两个方法需要再看一下。

2020.09.22读 PointVoteNet:accurate object detection and 6 DoF pose estimation in point clouds相关推荐

  1. RCNN详细介绍 Rich feature hierarchies for accurate object detection and semantic segmentation

    Rich feature hierarchies for accurate object detection and semantic segmentation Publisher: CVPR 201 ...

  2. 【论文笔记】Region-based Convolutional Networks for Accurate Object Detection and Segmentation

    <Region-based Convolutional Networks for Accurate Object Detection and Segmentation>是将卷积神经网络应用 ...

  3. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  4. RCN-Rich feature hierarchies for accurate object detection and semantic segmentation

    Rich feature hierarchies for accurate object detection and semantic      segmentation 摘要 标准的PASCAL V ...

  5. 目标检测经典论文——R-CNN论文翻译:Rich feature hierarchies for accurate object detection and semantic segmentation

    Rich feature hierarchies for accurate object detection and semantic segmentation--Tech report (v5) 用 ...

  6. 【论文精读】Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation(R-CNN)

    论文Title:Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation.发表于2014年. 本 ...

  7. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)

    Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...

  8. softer-nms论文学习详解(Bounding Box Regression with Uncertainty for Accurate Object Detection)

    <Bounding Box Regression with Uncertainty for Accurate Object Detection> 论文地址: https://arxiv.o ...

  9. 论文解读 | Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation

    论文地址:Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation GitHub地址: http ...

最新文章

  1. Android组件之BroadCast简单实践
  2. OpenCV学习笔记之Mat
  3. Qt学习笔记之网络和连接
  4. Android-----Resources
  5. Longest Palindrome CodeForces - 1304B(思维)
  6. tomcat 正常关闭_Tomcat的带有守护程序和关闭钩子的正常关闭
  7. flutter bloc_如何在Flutter中使用Streams,BLoC和SQLite
  8. 从LeNet到SENet——卷积神经网络回顾
  9. 转】.NET强名称工具(Sn.exe)使用详解
  10. 礼品盒子插画素材丨节日设计加上它之后价值翻倍!
  11. centos系统 查看当前python执行的进程
  12. My97DatePicker JS时间控件 当前日期前后不能选
  13. tftp服务器离线安装
  14. c语言节点的作用,C语言试题
  15. unity 接入谷歌广告
  16. MFC中ShowWindow函数
  17. 原装苹果手机_苹果手机换个屏水这么深!嘉兴警方揭开“原装屏”真相
  18. CDH和Hadoop的区别
  19. 元宇宙 - 圈里的百科
  20. 微服务架构技术调研<3>--微服务架构实践

热门文章

  1. Spring中对象的初始化和销毁
  2. whatsapp和黑暗模式是否匹配
  3. 公司想申请软著投标加分,没有源代码也可以申请
  4. 洛谷 P1010 [NOIP1998 普及组] 幂次方 C++
  5. 第 3 节 JavaScript高阶函数的使用、v-model、组件化
  6. 指令是计算机用以控制各部件协调动作的指令,(10)计算机指令是计算机用以控制各部件协调动作的命令...
  7. 三星GalaxyZFold4什么时候上市 三星GalaxyZFold4配置如何
  8. 雾蒙蒙的云朵-飞机上
  9. crontab 分时日月周的例子
  10. 单片机最小系统的通俗易懂讲解