论文:《DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion》
Code:https://github.com/j96w/DenseFusion (977 star)
摘要:
-
提出了一种从RGB-D图像中估计物体6D位姿的网络。
-
要解决的问题:
- 没有充分利用RGB和深度图这两个互补的数据源。 => 提出DenseFusion这个异构架构,分别处理两个数据源,并使用一种新的密集融合网络来提取逐像素的密集特征嵌入,从而估计姿态。
- 现有的方法很难同时满足严重遮挡下准确的姿态估计和快速的推理要求。
- 当时先进的PoseCNN方法和MCN方法,这些方法需要详细的事后改进步骤来充分利用3D信息,例如前者中的高度定制的迭代最近点(ICP)过程和MCN中的多视图假设验证方案。这些细化步骤不能与最终目标一起优化,不能满足实时性要求;
- 而可以满足实时性要求的方法如 PointFusion 和 Frustrum PointNet 方法(直接从点云数据中估计6D位姿),这些方法在遮挡环境下性能是不足的;
-
解决方案:
- 在每像素级别嵌入和融合RGB值和点云,而不是之前使用图像裁剪来计算全局特征(PointFusion)或2D边界框( Frustrum PointNet)。这种多像素融合方案使该模型能够明确地推断局部外观和几何信息,这对处理严重遮挡问题至关重要。
- 提出了一种方法,在端到端学习框架内执行迭代姿态细化,避免了ICP后处理,保证了推理速度的实时性。
整体架构分为两个阶段,如下:
-
对RGB图像使用语义分割算法(直接用的PoseCNN中的语义分割算法),分割出我们需要进行姿态估算的目标,然后使用这个mask确定确定其在深度图中的位置(深度图转换为点云),并把这部分裁剪下来。此时获得的image crop和masked point cloud都当做网络第二阶段的输入。
-
第二阶段就是根据输入的image crop和masked point cloud进行姿态估算,其分为四个部分。
-
通过一个全卷积网络,把image crop的逐像素信息映射到color embeddings(H * W * d_rgb)。
-
使用PointNet的变体处理经过mask获得目标点云的数据,映射成一个带有几何信息的geometry embeddings。
-
由于严重的遮挡和分割错误,来自前一步骤的特征集可能包含其他对象或背景部分上的点/像素的特征,所以不能进行简单地堆叠。这里提出了一个逐像素密集融合方法,把color embeddings和geometry embeddings进行像素级别的融合,然后经过基于无监督的置信度评分网络(后续有详细讲解-就是对每个像素进行姿态预测之后,该预测对应一个置信度)进行姿态估算。
损失函数见论文3.5节。
-
对初步估算的姿态结果进行提炼优化。
参考:https://blog.csdn.net/weixin_43013761/article/details/103108492 3.6节
-
该网络的设计初衷是为了利用端到端的学习方式,使图像信息和点云几何信息在深度神经网络的嵌入空间完成最优的组合。而不是简单的将图像特征与点云特征进行堆叠。
另外,目标被遮挡,以及目标表面的点云缺失等问题给 6D 位姿估计算法带来了巨大的挑战。因为以往的特征提取网络,对每个目标只提取一个全局的特征,该特征表述了目标与任务相关的状态。容易理解的是,此类全局特征必然与目标数据的外观所关联。当目标被遮挡或点云残缺时,目标的数据所表现的外观也将根据遮挡和点云残缺程度而变化。遮挡以及点云残缺可以是任意的形式,这就意味着,目标数据的外观也是无穷多样。面对复杂多样的外观,怎么才能让网络去记住这些外观并提取出有用的特征成为了一大难题。我们很容易想到要处理这个问题,可以从三个角度出发。
- 第一点数据增广,通过算法生成更多的遮挡和点云残缺的数据,至少保证训练数据尽量覆盖各类遮挡情况。
- 第二点,使用更深更强的深度神经网络作为特征提取网络,但这样做会使得 6D 位姿估计实时性得不到保证。
- 第三点,通过合理设计特征,使遮挡及点云残缺等情况对我们的特征表征能力的影响尽可能小。
这篇论文正是将第三点的思想引入了特征提取网络中,使得 DenseFusion 该网络对于遮挡等情况比一般网络更强。
DenseFusion 的特征提取网络是一种并行异构的架构,其使用一个 CNN 网络从 RGB 图像中提取颜色相关的特征,使用一个 PointNet 从点云中提取形状几何相关的特征。值得注意的是,这里 CNN 卷积输出的特征图是与原图宽高一致的,PointNet 输出的特征也是逐点特征(point-wise feature),即每个点都有相对应的特征。这样就可以根据每个点的索引,在 CNN 输出的特征图上找到唯一的对应,从而将来自点云的几何特征与来及图像的颜色特征进行串联,获得逐点的多模态特征向量。此时这些逐点的特征向量所包含的只是一些表征局部的信息。为了使特征拥有更大的感受野,作者又使用MLP对逐点多模态特征向量进一步抽象,并通过 average pooling 进行整合获得一个表征目标全局信息的全局特征向量。最后将该全局向量与逐点的多模态特征串联作为最终的密集融合特征。
DenseFusion 的成功,主要得益于两点:
- 第一点,DenseFusion 融合了多模态数据,使得特征具有更多的冗余信息来面对复杂变化的环境。这是易于解释的,当图像上的目标缺少纹理信息,或者缺少有效的辨别特征时,网络能从点云的几何信息上去进行判别;同理,当点云残缺时,图像能作为冗余提供额外的外观信息。
- 第二点,DenseFusion 不再像以前的网络对于每个目标只提取一个全局特征, 而是对目标表面的每一个点 (像素) 都提取一个属于该点的局部特征;由于局部特征的感受野比较小,所以不易受遮挡和点云残缺影响,同时只有局部感受野的特征也能给 6D 位姿估计提供有效的线索;就如同我们只需要看到某个物体的局部纹理就能猜出该物体的大致位姿一样,网络也具备“管中窥豹”的能力;但通过局部特征推测整个物体的 6D 位姿终归是存在盲点的,比如一个物体表面存在多个位置的局部特征具有一样的信息,此时便会给造成歧义;因此作者还额外抽取了一个全局特征,并串联至逐点的局部特征上,使最终的逐点多模态特征拥有更大的感受野和上下文环境信息。
数据集linemod:https://blog.csdn.net/weixin_43013761/article/details/103097160 (数据集下载地址)
源码分析见:https://blog.csdn.net/weixin_44564705/article/details/125149491
可优化的点:
- 语义分割网络获取目标对象
- 全卷积网络获取逐像素的颜色特征
- 点云处理网络获取逐像素的几何特征
- 逐像素融合方法
- 位姿估计算法