前言部分
一种深Hough投票网络来检测物体的3D关键点,然后以最小二乘拟合的方式估计6D姿态参数。
是基于RGB的6自由度估计的二维关键点方法的延伸
方法充分利用具有额外深度信息的刚性对象的几何约束,并且便于网络学习和优化
三维关键点检测在6D姿态估计任务中的有效性
2D投影中较小的误差在真实三维空间中可能较大。此外,二维投影后,三维空间中的不同关键点可能会重叠,难以区分。投影还会导致几何信息部分丢失
为此, 将基于二维关键点的方法扩展到三维关键点,以充分利用刚体对象的几何约束信息
开发了一种deep 3D keypoints Hough voting neural network来获取点方向的3D偏移并投票给3D关键点
利用了一个简单的几何性质,即三维空间中刚性物体两点之间的位置关系是固定的,因此,给定物体表面上的一个可见点,其坐标和方向可以从深度图像中获得,其到选定关键点的平移偏移也是固定的
成果:
- 提出了一种基于实例语义分割的深度三维关键点Hough投票网络
- 深入分析了基于3D关键点的方法,并与以前的方法进行了比较,证明3D关键点是提高6自由度姿态估计性能的关键因素。我们还表明,联合训练3D关键点和语义分割可以进一步提高性能
PVNet对2D关键点使用每像素投票,以结合密集方法和基于关键点的方法的优点。我们进一步将该方法扩展到具有额外深度信息的三维关键点,并充分利用刚体对象的几何约束
Overview
二阶段方法,以RGBD图像作为输入,将使用特征提取模块来融合外观特征和几何信息。学习的特征将被输入3D关键点检测模块M-k,该模块经过训练以预测w.r.t关键点的逐点偏移。
网络还包括一个用于多对象处理的实例分割模块M-s,其中语义分割模块预测逐点语义标签,中心投票模块M-c预测到对象中心的逐点偏移。利用学习到的逐点偏移量,用聚类算法区分具有相同语义标签的不同实例,并对同一实例上的点进行目标关键点投票。最后,对预测的关键点采用最小二乘拟合算法估计6自由度姿态参数。
模块算法详解
3D关键点检测模块(M_k)
利用特征提取模块提取的逐点特征,**3D关键点检测模块(M_k)**用于检测每个对象的3D关键点。具体来说,M_K预测从可见点到目标关键点的每点欧氏平移偏移。这些可见点以及预测的偏移将投票给目标关键点。然后通过聚类算法收集投票点,并选择聚类中心作为投票关键点。
M_k模块通过每个点的特征f_i生成一个关键点偏移量
那么投票的关键点表示为voted-key-point:
损失函数使用L1 loss:
借鉴PVNet,使用FPS算法选择关键点。通过在 空关键点集 中添加 对象模型的中心点 来启动选择过程。然后通过在网格上重复添加距离所有选定关键点最远的新点 进行更新,直到获得M个关键点。
实例语义分割模块(M_s)
一方面,语义分割模块强制模型在实例上提取全局和局部特征来区分不同的对象,这有助于在对象上定位一个点,和关键点偏移推理过程。
另一方面,为预测到关键点的偏移而学习的大小信息有助于区分外观相似但大小不同的对象。
本文使用的是一个逐点实例语义分割模块,和3D关键点检测模块一起优化。
给定每点提取的特征,语义分割模块M_s预测每点语义标签
损失函数用Focal Loss:
![image-20211129143612601](https://i-blog.csdnimg.cn/blog_migrate/97cb9fcfb5f09ef4a03e73c286aaef78.png)
中心点预测模块(M_c)
用于对不同对象的中心进行投票,以区分不同的实例。
想法由CenterNet产生,但拓展到了三维
3D中的不同中心点不会因某些视点中的摄影机投影而受到遮挡。
因为中心点可以因为是一种特殊关键点,模型和3D关键点预测模块很相似
是一个物体中每个点对中心点的偏移量,损失函数使用L1 loss:
多任务损失函数
三个模块的学习有一个联合损失函数:
实验结果表明,联合训练这些任务可以提高彼此的表现。
最小二乘拟合R,t
来源文献:Least-squares fitting of two 3-d point sets.(1987)
输入两片点云,一个是相机坐标系中检测出来的3D关键点,一个物体坐标系中已知物体的3D关键点,通过最小化下列函数,求出R,t
M是物体的关键点个数
实验部分
1. 使用的数据集介绍
YCB-Video Dataset
具有不同的照明条件、显著的图像噪声和遮挡
我们按照Posecnn的方式将数据集分成80个视频进行训练,并从其余12个视频中选择2949个关键帧进行测试,并且将合成图像添加到我们的训练集中
用论文(Fast depth completion on the cpu-2018IEEE)算法填补深度图,提高深度图质量
LineMOD Dataset
该数据集的主要挑战是杂乱的场景、无纹理的对象和灯光变化。
按照Posecnn的方式分割训练集和测试集。用PVNet的方式将合成图像添加到我们的训练集中。
2. 评价指标
使用平均距离ADD和ADD-S度量评估我们的方法
**ADD: **平均距离ADD评估预测位姿和实际位姿之间物体顶点的平均对应距离。
其中x是对象网格O的顶点,一共有m个顶点
ADD-S: ADD-S度量是为对称对象设计的,平均距离是基于最近点距离计算的:
为了评估,我们遵循Posecnn并计算ADD-S AUC,即准确度阈值曲线下的面积,该面积通过在评估中改变距离阈值获得。
ADD(S) AUC的计算方法与此类似,但计算非对称对象的ADD距离和对称对象的ADD-S距离
3. YCB视频和LineMOD数据集的评估
将模型与其他单视图方法进行了比较。如表所示,模型没有任何迭代细化过程(PVN3D),即使其他方法使用了迭代细化过程,本文模型也大大超过了所有其他方法。
通过迭代优化,模型(PVN3D+ICP)实现了更好的性能。
值得注意的是,该数据集的一个挑战是区分large clamp和extra-large clamp(上图中的类别之一),之前的方法(DenseFusion和Posecnn)检测结果较差。
我们还在表2中报告了地面真实值分割的评估结果,这表明PVN3D仍然达到了最佳性能。一些定性结果如图3所示。表3显示LineMOD数据集上的评估结果。模型也达到了最佳性能。
table 2 中 w/o的意思是 without
基于3D关键点的方法的最大优点之一是,它对自然遮挡具有鲁棒性。为了探索不同的方法是如何受到不同遮挡程度的影响,我们按照DenseFusion的方法计算对象表面上不可见点的百分比。不同不可见表面百分比下ADD-S<2cm的精度如图4所示。
当50%的点不可见时,不同方法的性能非常接近。然而,随着不可见部分百分比的增加,DenseFusion和PoseCNN+ICP比我们的下降更快。即使对象被严重遮挡,我们的模型也表现良好。
4. 烧蚀研究
探讨了不同模块对6D姿态估计的影响以及关键点选择方法的效果。我们还探讨了多任务学习的效果
与直接回归姿势的比较
修改模型中3D关键点投票模块,接回归每个点的四元数旋转R和平移参数t(Ours RT)
为了消除不同网络结构的影响,我们还修改了DenseFusion(每像素)的检测头,以预测每点偏移量,并按照关键点投票和最小二乘拟合算法计算6D姿势。表4显示,表中的3D关键点模块,DF(3D KP)比RT回归模块DF(RT)表现更好。这是因为3D关键点偏移搜索空间比旋转空间的非线性更小,更易于神经网络学习,使其更具普遍性。
与二维关键点的比较
为了对比2D和3D关键点的影响,我们使用相机本质矩阵将投票的3D关键点投影回2D。然后采用随机样本一致性PnP算法(RANSAC)计算6D位姿参数
这是因为PnP算法的目标是最小化投影误差。然而,在3D现实世界中,投影中较小的姿势估计误差可能相当大
为了比较实例语义分割模块中2D和3D中心点之间的影响,我们还将投票的3D中心点投影到2D实例语义分割模块(Ours 2D KPC)
我们采用类似的Mean-Shift算法对投票的2D中心点进行聚类,以区分不同的实例,发现在遮挡场景中,投影到2D上后,当不同的实例的中心彼此接近时,很难区分不同的实例,虽然它们彼此相距遥远,在3D现实世界中很容易区分。
***请注意,其他现有2D关键点检测方法,如热力图和向量投票模型也可能存在关键点重叠问题。***
与密集对应方法的比较
我们修改了3D关键点偏移模块MK,以输出对象坐标系中每个点的相应3D坐标,并应用最小二乘拟合算法计算6自由度姿态,L1 loss用于监督相应3D坐标的训练。
评估结果如表4中(Corr)所示,这表明我们的3D关键点模块仍然表现得相当好
作者认为,回归目标坐标比关键点检测更困难。因为模型必须识别图像中网格的每个点,并在对象坐标系中存储其坐标。但是,在相机坐标系中检测对象上的关键点更容易,因为许多关键点都是可见的,并且模型可以聚集它们附近的场景上下文。
3D关键点选择的效果
在这一部分中,作者选择三维边界框的8个角,并将它们与从FPS算法中选择的点进行比较。还考虑了FPS生成的不同数量的关键点。
表5显示了FPS算法在对象上选择的关键点使我们的模型能够更好地执行。这是因为边界框角点是远离对象上的点的虚拟点。因此,基于点的网络很难在这些虚拟角点附近聚集场景上下文。此外,从FPS算法中选择的8个关键点对于我们的网络学习来说也是一个不错的选择。
在最小二乘拟合模块中恢复姿势时,更多的关键点可以更好地消除错误,但由于输出空间更大,网络更难学习。选择8个关键点是一个很好的权衡。
多任务学习的效果
在这一部分中,作者讨论语义分割和关键点(中心)偏移的联合学习如何提高性能
(1)语义分割模块增强关键点偏移学习
在表6中,我们探讨了语义分割如何增强关键点偏移学习。我们移除语义分割模块和中心投票模块MS、MC,单独训练关键点投票模块MK。
在推理过程中,利用Mask-RCNN(MRC)预测实例语义分割
M_k,s + GT相比于M_k + GT ADD(S) 性能提高了0.7%,证明了语义分割模块的有效性
作者认为语义分割模块提取全局和局部特征来区分不同的对象。这些特征还有助于模型识别点属于对象的哪一部分,并改进偏移预测。
(2)关键点和中心点偏移学习改善实例语义分割结果
在表7中,我们探讨了关键点和中心点偏移学习如何改善实例语义分割结果。
我们用推荐的设置对Mask R-CNN(ResNeXt-50-FPN)进行了训练,发现它把两个对象完全混淆了
即使有额外的深度信息,我们单独训练的语义分割模块(PVN3D(MS))也不能很好地执行
然而,与我们的关键点偏移投票模块(PVN3D(M_s,k))联合训练后,超大夹具的mIoU提高了9.2%。
通过中心投票模块 **M_c **获得的投票中心,我们可以使用 **Mean-Shift聚类算法 **分割对象,并将点分配给最近的对象簇。通过这种方式,超大夹具的mIoU进一步提高了18.3%。一些可视化结果如图5所示。
2021.12.1更新