本文提出了一个Deep Point-wise 3D关键点投票的网络,来进行六自由度估计
源码:https://github.com/ethnhe/PVN3D.git
什么是六自由度?
六自由度:物体在空间具有六个自由度,即沿x、y、z三个直角坐标轴方向的移动自由度和绕这三个坐标轴的转动自由度 。因此,要完全确定物体的位置,就必须清楚这六个自由度。
任何一个没有受约束的物体,在空间均具有6个独立的运动。
现阶段使用的比较多的是使用DNNs来检测物体的2D关键点,并使用透视点(PnP)算法计算6D姿态参数。
1. 大多数都建立在二维投影之上。在真实的三维空间中,在二维空间中投影误差很小的在其对应的三维空间下误差就可能很大。
2. 三维空间的不同关键点在二维空间可能会发生重叠,使得他们很难区分。
3. 由于投影的存在,刚性物体的几何约束信息会部分丢失。
(刚性是指两个物体相碰撞不会发生变形,因此两个刚体就不会占据同一个空间,微粒、原子就是这样的物质;柔性则相反,两个柔性的物质可以只占据同一个空间,气、场、空间就是这样的物质。)
4. 大量的RGB-D数据集出现。
5. 额外的深度信息允许2D算法以更好的性能扩展到3D空间。
本文提出的新方法可以从单一的RGB-D图像中进行鲁棒的六自由度目标姿态估计。本文提出了一个深度Hough投票网络来检测物体的三维关键点,然后在最小二乘拟合的方式下估计6D姿态参数。本论文中的方法2D关键点方法的扩展,成功的实现了基于RGB的六自由度估计。该网络可以充分利用具有额外深度信息的刚性物体的几何约束,便于网络学习和优化。
作者通过大量的实验验证了三维关键点检测在6D姿态估计任务中具有有效性。实验结果表明本文中的方法在多个基准都比最近的方法先进。
(霍夫变换(Hough)是一种特征检测(feature extraction),被广泛应用在图像分析(image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的算法流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。)
PVN3D的流程:输入RGB-D图像a,然后使用一个深度Hough投票网络来预测每个点到所选关键点b的平移偏移量。一个物体上的每个点都为选定的关键点投票,簇的中心被选为预测的关键点c, 然后应用最小二乘法拟合方法估计六自由度的姿态参数d-e , 由估计的姿态参数转换的模型如图f所示。
1. 提出了一种基于实例语义分割的深三维关键点Hough投票网络,用来单RGB-D图像的六自由度姿态估计。
2. 在YCB和LINEMODE数据集上的六自由度姿态估计具有目前最优的性能。
3. 深入分析了基于三维关键点的方法,并与以前的方法进行了比较,说明三维关键点是提高六自由度姿态估计性能的关键因素。
4. 发现联合训练3D关键点和语义分割可以进一步提高性能。
1. 整体法
整体法直接对给出图像中物体的三维位置和方向进行估计。经典的基于模板的方法构造刚性模板并扫描图像,从而计算出最佳匹配的姿态。这种手工制作的模板对于集群场景可靠性不太理想。最近,人们提出了一些基于深度神经网络(DNN)的方法来直接对相机或物体的六自由度姿态进行回归。然而,旋转空间的非线性使得数据驱动DNN难以学习和推广。为了解决这个问题,一些方法使用后求精过程迭代的优化姿态,另一些方法离散旋转空间并将其简化为分类问题。对于后一种方法,仍然需要后求精过程来补偿离散化所牺牲的精度。
2. 基于关键点的方法
基于关键点的方法首先检测图像中物体的二维关键点,然后利用PnP算法估计6D姿态。经典方法能够检测出纹理丰富的物体的二维关键点,这种方法很有效率,但是,它们不能处理没有纹理的对象。随着深度学习技术的发展,提出了一些基于神经网络的二维关键点检测方法。一些方法直接回归关键点的二维坐标,还有一些使用热图定位二维关键点。
3. 稠密对应方法
这些方法利用Hough投票方案对每像素预测的最终结果进行投票。他们要么使用随机森林或CNNs来提取特征并预测每个像素对应的3D对象坐标,然后投票决定最终的姿势结果。这种密集的二维-三维对应使得这些方法对遮挡场景具有很强的鲁棒性,同时输出空间很大。PVNet使用对2D关键点的每像素投票来结合密集方法和基于关键点的方法的优点。进一步将该方法推广到具有额外深度信息的三维关键点,充分利用了刚体的几何约束。
RGBD = RGB + Depth Map
什么是Depth Map:
在3D计算机图形中,Depth Map(深度图)是包含与视点的场景对象的表面的距离有关的信息的图像或图像通道。其中,Depth Map 类似于灰度图像,只是它的每个像素值是传感器距离物体的实际距离。通常RGB图像和Depth图像是配准的,因而像素点之间具有一对一的对应关系。
学习算法
本文学习算法的目标是训练一个 3D 关键点检测模块 M_k,用于预测逐点到 3D 关键点的偏移;以及一个语义分割模块 M_s 和中心点投票模块 M_c,用于实例语义分割。这样网络训练自然形成一个多任务学习任务。本文使用一个多任务监督损失函数和若干个训练细节来实现。
3D关键点检测模块
在特征提取模块提取逐点的特征之后,3D 关键点检测模块检测每个物体的3D关键点,具体而言,该模块预测从可见点到目标关键点的欧几里得平移偏移量。通过这些可见点的坐标和预测的偏移量计算出目标关键点的位置作为投票点。这些投票的点由聚类算法进行聚类以消除离群点的干扰,群集的中心点被选为投票选出的关键点。关键点平移量学习模块 M_k 使用 L1 loss 进行监督:
实例语义分割模块
给定提取出的逐点特征,语义分割模块 M_s 预测每点的语义标签,本文使用 FocalLoss 监督这一模块:
同时,中心点投票模块 M_c 投票出不同物体的中心点,以区分相同语义的不同实例。由于中心点可视为一种特殊的物体关键点,该模块和 M_k 类似,使用L1 loss 进行监督学习:
多任务学习
本文使用一个多任务损失函数联合监督 M_k、M_s、M_c 的学习: