Segmentation-Driven 6D Object Po
Abstract
1.解决的问题
已知的方法,对象都被视为全局实体,并计算单个姿势估计,容易受到大遮挡的影响。
2.贡献
-
在本文中,我们介绍了一个分割驱动的 6D 姿态估计框架,其中对象的每个可见部分都以 2D 关键点位置的形式贡献了局部姿态预测。
-
然后,我们使用预测的置信度度量将这些候选姿势组合成一组稳健的 3D 到 2D 对应关系,从中可以获得可靠的姿势估计。
3.结果
在具有挑战性的遮挡LINEMOD和YCBVideo数据集上,我们的表现优于最新技术,这证明我们的方法可以很好地处理多个相互遮挡的纹理较差的对象。此外,它依赖于一个足够简单的体系结构来实现实时性能。
代码:https://github.com/cvlab-epfl/segmentation-driven-pose
Introduction
通用方法当对象纹理良好时非常稳健,但当它没有特征或场景被多个对象相互遮挡时,这种方法可能会失败。因此,最近的工作集中在克服这些困难上,通常使用深度网络直接从图像回归到6D姿势[SSD-6D,PoseCNN]或检测与对象[BB8,Real-Time Seamless Single Shot 6D Object Pose Prediction.]相关的关键点,然后可以用于执行PnP。然而,对象仍然被视为一个全局实体,这使得算法容易受到大遮挡的影响。
图1图1描绘了这样一个情景:被遮挡的钻头的边界框与其他对象重叠,这些对象向姿态估计器提供了不相关的信息从而降低了性能,因为这种情况经常发生,所以许多先进的算法都需要额外的后处理步骤来优化姿势 ,如
。
在本文中,我们展示了通过组合多个局部预测而不是单个全局预测可以获得更稳健的姿态估计。为此,我们引入了一个分割驱动的 6D 姿态估计网络,其中每个可见对象块以预定义的 3D 关键点的预测 2D 投影的形式为其所属的对象贡献一个姿态估计。然后,使用我们的网络也预测的置信度值,我们将每个3D关键点的最可靠的2D投影组合在一起,从而产生一组可靠的3D到2D对应关系。然后,我们使用基于 RANSAC 的 PnP 策略来推断每个对象的单个可靠姿势。
根据局部块进行推理不仅使我们的方法对遮挡具有鲁棒性,而且还可以对场景中的每个对象进行粗略分割。换句话说,与其他将对象检测与姿势估计分离的方法不同 [35,17,45](BB8,SSD-6D,PoseCNN),我们共同执行两者,同时仍然依靠足够简单的体系结构来实现实时性能。
简而言之,我们的贡献是一个简单但有效的分割驱动网络,它无需后处理即可产生准确的 6D 对象姿态估计,即使有多个纹理不佳的对象相互遮挡。它将分割和集成学习结合在一个有效和高效的架构中。我们将证明它在标准基准测试(例如 OccludedLINEMOD 和 YCB-Video 数据集)上优于最先进的方法。
Approach
给定输入的 RGB 图像,我们的目标是同时检测对象并估计它们的 6D 姿势,即 3 自由度旋转和 3 自由度平移。我们假设物体是刚性的并且它们的 3D 模型是已知的。 与 [BB8, Real-Time Seamless Single Shot 6D Object Pose Prediction.] 中一样,我们设计了一个 CNN 架构来回归一些预定义的 3D 点的 2D 投影,例如对象边界框的 8 个角。然而,与这些方法不同的是,这些方法对每个对象的预测都是全局的,因此会受到遮挡的影响,我们预测单独的图像块属于哪个对象以及2D投影的位置。然后,我们合并分配给同一对象的所有图像块的预测,以进行基于PnP的鲁棒姿势估计。
图 2 描述了相应的工作流程。在本节的其余部分,我们首先介绍我们的双流网络架构。然后我们分别描述每个流,最后描述我们的推理策略。
本质上,我们的目标是通过为对象分配图像块和属于这些对象的关键点的二维坐标回归来共同执行分割,如图3所示。为此,我们设计了图2所示的双流体系结构,每个任务有一个流。它有一个编码器-解码器结构,两个流都有一个公共编码器和两个单独的解码器。
图33.1 Network Architecture
本质上,我们的目标是通过将图像块分配给对象和属于这些对象的关键点的 2D 坐标回归来联合执行分割,如图 3 所示。为此,我们设计了图 2 所示的双流架构,每个任务都有一个流。它具有编码器-解码器结构,具有用于两个流的通用编码器和两个单独的解码器。
对于编码器,我们使用了YOLOv3的Darknet-53架构,该架构已被证明对目标检测非常有效。
对于解码器,我们设计了分别输出空间分辨率和特征维度和的 3D 张量的网络。这相当于在图像上叠加一个 网格并计算每个网格元素的维度 和的特征向量。该网格的空间分辨率控制着为对象标签和特定关键点投影投票的图像块的大小。高分辨率产生精细的分割掩码和更多的投票。然而,它带来了更高的计算成本,这对于我们的目的来说可能是不必要的。因此,我们没有将 Darknet-53 编码器的 5 个下采样层与 5 个上采样层匹配,而是仅使用 2 个这样的层,标准步长为 2。两个解码器流使用相同的架构,尽管输出特征大小不同。
为了端到端地训练我们的模型,我们定义了一个损失函数:
它结合了我们用来对每个流的输出进行评分的分段和回归项。我们现在单独描述他们。
3.2 Segmentation Stream
分割流的作用是为叠加在图像上的虚拟S×S网格的每个网格分配一个标签,如图3(a)所示。更准确地说,给定K个对象类,这转化为在每个空间位置输出维度的向量,并附加一个维度来表示背景类。
在训练期间,我们可以访问3D对象模型及其真实姿态标签。因此,我们可以通过在图像中投影3D模型,同时考虑每个对象的深度来处理遮挡,从而生成真实语义标签。实际上,图像通常包含比对象区域多得多的背景区域。因此,我们将等式1的损失作为[Focal Loss for Dense Object Detection.]的焦点损失,这是交叉熵的动态加权版本。(此外,我们依靠[6,1]中的中值频率平衡技术来权衡不同的样本。我们根据像素级频率而不是全局级频率来解释对象大小不同的事实。)括号中的话不懂
3.3 Regression Stream
回归流的目的是预测与 3D 对象模型相关联的预定义 3D 关键点的 2D 投影。 按照标准做法 [BB8,3D Pose Estimation and 3D Model Retrieval for Objects in the Wild., Fea-
ture Mapping for Learning Fast and Accurate 3D Pose Inference from Synthetic Images.],我们通常将这些关键点作为模型边界框的 8 个角。
回想一下,回归流的输出是一个大小为 的 3D 张量。设N是我们要预测其投影的每个对象的3D关键点的数目。使用边界框角点时,N=8。我们取为3N为了在每个空间位置表示N对2D投影值以及每个投影值的置信度值。实际上,我们并不直接预测关键点的二维坐标。相反,对于每个网格单元,我们预测相对于相应网格单元中心的偏移向量,如图3(b)所示。
也就是说, 是网格单元中心的 2D 位置,对于第i个关键点,我们预测偏移量,训练网络的目的是使得网络预测的定位结果尽可能接近真实2D位置,在训练中,这表示为一个误差项:
定义损失函数:
公式3中M是前景分割mask,表示L1损失函数,它对异常值的敏感性低于L2损失。 仅考虑落在分割掩码 M 内的关键点,将计算集中在真正属于对象的图像区域上。
如上所述,回归流还为每个预测的关键点输出一个置信度值,该置信度值是通过网络输出上的 sigmoid 函数获得的。 这些置信度值应反映预测的 2D 投影与真实标签的接近程度。 为了鼓励这一点,我们定义了第二个损失项:
其中是调制因子。然后我们采用(1)的回归损失项。 (1)变为:
其中 β 和 γ 调节这两项的影响。
注意(5)只作用于分割mask内的区域,其梯度也仅反向传播到这些区域。与分割流一样,为了解决像素级不平衡的问题,我们根据训练集中像素级频率对不同对象的回归损失项进行权衡。
- 这里解释一下公式(4)为什么要这么设计,很有意思的,我们先关注,里面的2范数为正,含义是预测的2D关键点与设定位置的差距,前面加个负号再结合exp函数的性质可以发现,这一项被限定在了0-1之间,当很小时,趋近于1,这是如果优化(4)我们希望损失函数减小,也就是希望趋近于1。总的来说这个损失函数将限定在了0-1之间并且优化过程中我们希望趋近于1,这与置信度的要求是契合的。
3.4 Inference Strategy
在测试时,给定一个查询图像,我们的网络为第 3.1 节的 S×S 网格中的每个前景单元返回一个对象类和一组预测的 2D 位置,用于投影 N 个 3D 关键点。 当我们执行基于类的分割而不是基于实例的分割时,如果场景中存在同一类的两个对象,则可能存在歧义。 为避免这种情况,我们利用这样一个事实,预测的 2D 关键点位置倾向于根据它们对应的对象进行聚类,并使用简单的像素距离阈值来识别这种聚类。
对于每个聚类,即每个对象,我们利用网络预测的置信度分数来建立图像和对象的 3D 模型之间的 2D 到 3D 对应关系。 最简单的方法是对所有预测使用 RANSAC。 然而,这将大大减慢我们的方法。 相反,我们依赖于每个 3D 关键点的 n 个置信度最高的 2D 预测。 在实践中,我们发现 n = 10 可以在速度和准确性之间取得良好的平衡。 给定这些过滤后的 2D 到 3D 对应关系,我们使用的基于 RANSAC 的 EPnP 算法版本获得每个对象的 6D 位姿。 图 4 说明了这个过程。
4.Experiments
数据集:Occluded-LINEMOD and YCB-Video
Metrics(评价指标):ADD -0.1d,REP-5px.
Implementation Details
输入尺寸:608x608
归一化:2D投影水平垂直位置[0,10],置信度采用相同的归一化程序。
训练参数:
Epoch: Occluded-LINEMOD->300 YCB-Video->30
lr:1e-3 50% 75% 90%衰减
Optimizer:SGD momentum:0.9 权重衰减:5e-4
batch_size:8
数据增强
4.1Evaluation on Occluded-LINEMOD
说了一堆生成了20K的训练样本,但是我不懂。
4.1.1 Comparing against the State of the Art
图4:在Occluded-LINEMOD与先进方法的对比 图5:在Occluded-LINEMOD与先进方法运行时间的对比 图64.1.2 Comparison of Different Fusion Strategies
NF:不进行任何融合计划,直接进行RANSAC-EPnP
HC:选择置信度最大的
B-2:每个局部预测选择两个置信度最高的关键点。
B-10:每个局部预测选择两个置信度最高的关键点。
Oracle:通过使用真实标签 2D 重投影为每个 3D 关键点选择最佳预测 2D 位置。
5.Conclusion
研究者为 6D 对象姿态估计引入了一种分割驱动的方法,该方法联合检测多个对象并估计它们的姿态。 通过以鲁棒的方式组合多个局部姿态估计,我们的方法无需细化步骤即可产生准确的结果,即使在存在大遮挡的情况下也是如此。 我们对两个具有挑战性的数据集的实验表明,我们的方法优于最先进的方法,并且与最好的竞争对手相比,它可以实时预测多个对象的姿势。
未来,研究者将研究编码器使用其他骨干架构,并设计更好的融合策略,在执行 PnP 之前选择最佳预测。 我们还将寻求将我们方法的 PnP 步骤整合到网络中,以便拥有一个完整的端到端学习框架.