4

CVPR 2022 | OVE6D:用于基于深度的6D对象姿势估计的对象视点编码

 2 years ago
source link: https://zhuanlan.zhihu.com/p/492732724
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

CVPR 2022 | OVE6D:用于基于深度的6D对象姿势估计的对象视点编码

专注SLAM、点云、三维重建、结构光、自动驾驶、机械臂抓取等

OVE6D: Object Viewpoint Encoding for Depth-based 6D Object Pose Estimation

代码链接:https://github.com/dingdingcai/OVE6D-pose

文章链接:https://arxiv.org/abs/2203.01072

作者:Yu

作者:Yu 文章来源:微信公众号「3D视觉工坊」

摘要:

本文提出了一个通用的框架,称为OVE6D,从单个深度图像和目标物体遮罩中,基于模型进行6D物体姿态估计。我们的模型是使用ShapeNet呈现的纯合成数据进行训练的,与大多数现有方法不同,它在没有任何微调的情况下可以很好地概括新的真实对象。我们通过将6D姿势分解为视点、围绕相机光轴的平面内旋转和平移,并引入新的轻量级模块以级联方式估计每个组件来实现这一点。生成的网络包含不到4M的参数,同时在具有挑战性的T-less和OCCLUSION-LINEMOD数据集上显示出优异的性能,而无需任何特定于数据集的培训。我们发现,OVE6D的性能优于一些专门针对具有真实训练数据的单个对象或数据集,基于深度学习的姿势估计方法。

一、介绍

物体的6D姿势是指从物体坐标系到相机参考框架的几何映射。最常见的是,这种转换是根据三维旋转(对象方向)和三维平移(对象位置)定义的。推断物体姿态的能力是许多与环境交互的应用程序的一项基本功能。例如,在机器人操作和增强现实中,需要姿势来抓取或真实地渲染人工对象。在最近的工作中,通常通过在物体3D模型和观测数据之间建立局部对应关系(FFB6d[2021], PVN3D[2020], Pvnet[2019])或通过直接回归(G2l-net[2020], Learning 6d object poses from geometrically stable patches.[2021])来解决物体姿态估计问题。在这两种情况下,推理模型通常会针对每个对象实例进行优化和单独存储。随着对象实例数量的增加,这种方法很快变得难以处理。同时,一些现有的工作(Densefusion:[2019], Pr-gcn[2021])考虑建立多个对象的单一模型。然而,为了保持性能,每次向数据库中添加新的对象实例时,模型都需要重新训练。此外,大多数性能最好的方法都需要带注释的真实世界训练数据,这很难获得。虽然一些方法(Ssd-6d[2017], Multi-path learning for object pose estimation across domains[2020], Augmented autoencoders[2020])考虑使用合成的例子在训练中,他们的效果由于域间隙出现明显的性能退化。有一种称为LatenFusion的方法。在这项工作中,他们首先从一小组参考视图中重建潜在的3D对象模型,然后使用该模型从输入图像中推断相应对象的6D姿势。其主要优点是能够通过简单地生成新的潜在模型来添加新对象,同时保持所有网络参数不变。然而,由于该方法基于推理时的迭代优化,因此计算成本较高。此外,延迟融合对输入数据中的遮挡非常敏感,导致性能显著下降。在本文中,我们提出了一种新的方法,称为OVE6D,用于从单个深度图像和对象分割模板估计6D对象姿势。我们进一步假设可以访问目标对象的三维网格模型。与LatenFusion类似,我们的方法在不重新训练模型参数的情况下推广到新对象。此外,与LatentFusion不同,该方法计算效率高,对输入数据中的遮挡具有鲁棒性。事实上,OVE6D在具有挑战性的无T数据集上获得了最新的最先进的结果,甚至超过了专门为此数据集优化的方法。

图片

图1提出的方法包括三个阶段,如图1所示。首先(图1A),我们使用ShapeNet数据集中的大量合成3D对象模型来训练模型参数。此阶段仅执行一次,生成的参数将在以后的阶段中重新代入。其次(图1b),我们将目标对象的3D网格模型转换为视点码本。对每个对象执行一次转换,每个实例大约需要30秒。最后(图1c),从输入深度图像和对象分割掩模推断出6D姿势。完整的OVE6D模型包含不到4M的参数,并且需要大约50毫秒来推断单个对象的姿势。在第二阶段,只需对相应的3D网格模型进行编码,就可以添加新的、没见过的对象。OVE6D的核心是一个基于深度的对象视点编码器,它将对象视点捕捉到一个特征向量中。编码的表示被训练为对围绕相机光轴的平面内旋转不变,但对相机视点敏感,如图2所示。在推理时,我们首先利用视点编码来确定摄像机视点,然后根据获得的视点估计剩余的姿态分量(摄像机平面内旋转和对象3D位置)。

图片

图2级联管道允许为每个子任务提供紧凑的体系结构,并允许使用数千个合成对象进行有效的训练。综上所述,我们的主要贡献是:1)我们提出了一个级联目标姿态估计框架,该框架在不进行额外参数优化的情况下推广到以前看不见的目标。2) 我们提出了一种视点编码器,该编码器能够在不受摄像机光轴的面内旋转影响的情况下,稳健地捕捉物体的视点。3) 我们在T-LESS上展示了最新的最新结果,而无需使用数据集中的任何图像来训练我们的模型。

三、方法

在本节中,我们将介绍一个名为OVE6D的框架,用于6D对象姿势估计。在这里,我们假设对象ID已知,3D网格模型可用,并且提供了对象分割遮罩。任务是预测从对象坐标系到相机坐标系的刚体变换。这种变换可以用旋转R和平移t来表示。旋转R可以进一步分解为平面外旋转(视点)Rγ和平面内方向(围绕相机光轴旋转)Rθ,即R=Rθ*Rγ(见图2A)。补充材料中提供了更多细节。

3.1 方法概述

图片

图3OVE6D框架如图1、3和4所示。在训练阶段,使用ShapeNet中的合成3D对象优化模型参数。接下来,使用视点编码器模块构造对象视点码本(参见图5)。

图片

图4在推理时,我们以级联方式执行以下子任务。首先,使用输入深度图像和对象分割掩模计算初始位置估计,并应用于深度图像的预处理(参见图3A)。其次,我们从对象视点码本中检索多个视点候选(参见图3B)。第三,我们对每个检索到的候选视点进行平面内2D旋转回归,并获得一组完整的3D方向估计(见图3C)。接下来,我们计算每个方向假设的一致性得分,并根据得分值输出一个(或多个)估计值(见图3D)。最后,基于获得的3D方向对初始位置估计进行细化(参见图3E)。

3.2 预处理

图片

首先,我们计算并从分割的输入深度图像DM(通过深度图像和分割掩模M的元素相乘获得)中减去中值距离dc。接下来,我们计算包围输入分割掩模的边界框的中心坐标(cx,cy),并形成对象3D位置的初始估计,即t^init=K^−1[cx,cy,dc]^T,其中K是相机固有矩阵。最后,我们按照LatenFusion重新缩放和裁剪DM,根据估计的位置t^init生成128×128预处理的输入深度图像,供后期使用。

3.3. 对象视点编码器

视点编码器是一个轻量级神经网络,由一个基于CNN的主干(八个Conv2D+BN层)和一个编码器头F_OVE(单个Conv2D、池和FC层)组成。编码器以预处理的128×128深度图像为输入,输出64个元素的特征向量。特征向量旨在对相机视点进行编码,但对围绕相机光轴的平面内旋转保持不变。我们使用ShapeNe渲染的深度图像来训练视点编码器。生成的样本变成三元组{V,Vθ,Vγ},其中V和Vθ仅在平面内旋转(角度θ)方面不同,Vγ从不同的相机视点(角度γ)渲染。使用视点编码器网络将深度图像进一步嵌入到特征表示{v,vθ,vγ}中(参见图4A)。编码器参数被优化,以根据余弦相似性对表示对进行排序,即S(v,vθ)>S(v,vγ),其中S是余弦相似性函数。因此,等效损耗函数可以写成:

图片

其中m_vp∈(0,1)是ranking margin。经过训练的视点编码器后来被用于构建新的真实世界对象的视点码本。为了做到这一点,我们首先从以d_radius=f_base为半径的对象为中心的球体上均匀采样N个视点{Ri}Ni=1∗ d_diameter,其中d_diameter是对象直径(从3D网格模型中获得),f_base是距离因子(本文中为5)。然后,使用采样的视点和对象3D网格模型渲染合成的无噪深度图像{V syn i}Ni=1。最后,使用视点编码器从这些图像中提取视点表示{vi}Ni=1(如第3.2节所述进行预处理),并与对象网格模型一起存储到代码本数据库中,如图5所示。生成的视点代码本是一个集合{vi,Ri}Ni=1,Omesh,Oid},其中包含相应的视点嵌入、旋转矩阵、网格模型和对象ID。整个构造对于每个对象大约需要30秒,N=4000个视点样本。在推理时,首先使用视点编码器从预处理的深度图像V_real中提取对象视点表示v_real。然后,我们利用v_real计算对应视点码本(用已知对象ID索引)中所有条目的余弦相似性分数。选择v_real和v_knn之间相似度最高的条目{v_knn,R_knn}作为V real的最近视点。可选地,我们可以从代码本中选择多个候选条目

图片

3.4. 平面内方向回归

已知视点后,可以使用深度图像的2D旋转来近似相机光轴周围的平面内旋转(对于正交相机精确)。为此,我们通过在与视点编码器共享的主干上附加一个回归头F_IOR(一个Conv2D和两个连续FC层)来构建回归网络。这个模块需要同一视点的以不同的平面内方向(视点内)的一对特征映射{z,z_θ}∈Rc×h×w作为输入,并回归相对平面内旋转角度θ(表示为矩阵Rθ),如图4B所示。我们训练该模块,以最小化由真值旋转矩阵Rθ变换的深度图像与预测的Rθ变换的深度图像之间的差异。这里,我们使用负对数余弦相似性来衡量差异,如下所示:

图片

其中,F表示展开操作,T_Rθ用R_θ表示2D空间变换,V表示视点深度图像。

图片

3.5. 旋转一致性验证

如第3.4节所述,可以从前面的模块中导出多个完整的3D旋转假设{Restk}Kk=1。为了对候选对象进行排序,我们采用了一个方向验证模块来估计候选对象与V_real中描述的实际对象方向之间的一致性。与回归模块类似,验证模块是通过将验证头F_OCV(两个Conv2D层,一个池和FC层)附加到共享主干来构建的。在训练时,我们采用基于排名的损失来优化该模块。如图4C所示,首先使用平面内旋转对特征地图z进行空间变换,即ˆzθ=TRθ(z),其中T_Rθ是R_θ的空间变换。然后,我们沿着特征通道维度分别将ˆzθ与zγ和zθ连接起来,即[ˆzθ;zγ]和[ˆzθ;zθ],其中[; ]表示连接,并将它们输入F_OCV以生成一致性分数sγ和sθ。等效损失函数可以写成:

图片

其中mλ ∈(0,1)是ranking margin.在推理过程中,我们使用估计的平面内旋转Rθk,从检索到的视点转换特征地图zknnk,并将其与观察到的深度图像中的特征地图z_real一起提供给验证头F_css,如图3D所示。通过这种方式,我们获得了每个3D方向假设的一致性分数。根据估计的分数,我们将所有假设{Restk}Kk=1按降序排列,并选择最前面的P∈ [1,K]方向建议{Restp}Pp=1作为输出。

3.6. 位置优化

我们根据获得的3D方向进一步细化初始位置估计t_init。具体来说,我们首先使用对象网格模型和姿势[Restp | tinit]合成深度图像Destp,其中Restp是第3.5节中获得的3D方向。接下来,我们估计深度图像Destp中物体的3D质心tsynp,如第3.2节所述。此外,我们还计算了偏移量t0∆ = tinit− tsynp,可以看作是对象在当前方向Restp中自遮挡引起的位置偏移。我们假设t0∆ 大约等于t∆ = 测验− tinit,这使我们能够获得第p个方向建议的对象的最终3D位置估计testp=2tinit− tsynp,如testp− tinit=tinit− tsyn。

3.7. 姿势假设的选择与细化

如前几节所述,我们可能会获得多个方向建议,每个建议都会导致一个姿势假设。我们为每个姿势假设计算以下质量度量,

图片

此外,可以选择使用迭代最近点算法ICP对获得的姿势进行优化。如实验所示,ICP细化可以在姿势假设选择之前或之后进行。

3.8. 组合损失函数

整个网络由一个共享主干网和三个分支组成,并以端到端的方式进行训练。总的训练损失是

图片

其中,bs是批量,λ1、λ2和λ3是加权参数。在我们的实验中,我们设置了ranking margins :mvpλ=mcssλ=0.1,权重λ1=100,λ2=10,λ3=1。

四、实验

数据集OVE6D在三个公共基准数据集上进行评估:LINEMOD[18]、闭塞LINEMOD[1]和T-LESS。LINEMOD(LM)是最流行的单对象6D姿势估计数据集之一,它包含了杂乱场景中13个无纹理家庭对象的RGB-D图像和3D对象模型。我们在之前的工作[45,50]的基础上构建了测试集。我们注意到LINEMOD的训练集被完全忽略,因为OVE6D是使用ShapeNet进行完全训练的。遮挡LINEMOD(LMO)是LINEMOD的一个子集,用于多对象6D姿势估计,在1214张遮挡严重的测试图像中包含八个注释对象。T-LESS是一个具有挑战性的数据集,包括30个形状高度相似的无纹理对称工业对象。评估是在PrimeSense测试集上进行的,我们按照BOP挑战中指定的协议报告每个类的单个对象的结果。分割模板对象分割模板是提议的姿势估计方法的输入之一。在实验中,我们使用Detectron2[54]库中现成的掩模RCNN[15]实现来获得掩模。我们使用从对象模型生成的大量合成图像来训练掩模RCNN。在实验中,我们使用Mask RCNN提供的类标签作为对象ID。此外,我们还报告了地面真相分割掩模的结果。指标和配置我们遵循之前的工作,并根据两个标准的6D姿势估计指标ADD(-S)(用于LM和LMO)和VSD(用于T-LESS)报告结果。此外,如果没有另外说明,我们使用N=4000、K=50和P=5表示OVE6D。

4.1. 与最新技术的比较

我们将OVE6D与最近(主要基于学习)的姿势估计工作进行了比较,这些工作使用了流行的无遮挡、LINEMOD和遮挡LINEMOD数据集。我们根据泛化程度将这些方法分为三大类。第一组和第二组中的方法分别为每个单独的对象或多个对象训练一个单独的模型。第三组方法不需要任何特定于数据集的训练,只需要获取目标对象的三维模型。我们进一步将这些组分为在模型训练期间使用真实和/或合成数据的方法。值得注意的是,OVE6D和LatenFusion属于第三类,只使用合成数据进行训练。T-LESS

图片

表1表1根据VSD指标报告了OVE6D和基线方法的结果。我们不报告LatentFusion的结果,因为它由于遮挡而表现不佳。请注意,所有其他基于学习的方法都是在T-LESS数据集上训练的,而OVE6D是在ShapeNet上训练的。尽管如此,OVE6D仍然实现了最先进的性能。特别是,用ICP的OVE6D比最新的最先进的方法StablePose提高了1.8%的显著幅度,尽管StablePose使用带有姿势注释的真实示例为每个对象训练单独的模型。基于非学习的VidalPPf也表现良好,但该方法计算成本较高。此外,OVE6D在使用基本真相模板时实现了91%的召回率,这表明使用更好的分割模板可以提高性能。结果表明,OVE6D特别适用于无纹理和对称的工业对象。LINEMOD和遮挡LINEMODLINEMOD(LM)和闭塞LINEMOD(LMO)数据集的结果分别在表2和表3中报告。除OVE6D和LatenFusion外,所有方法都是针对LM数据集专门培训的。由于LMO严重闭塞,仅报告了LM的延迟融合结果。一般来说,基于RGBD的方法,经过真实世界和合成数据的训练,可以获得最佳性能(例如,使用FFB6D的LM上99.7%的召回率,使用PVNet的LMO上79.0%的召回率)。然而,OVE6D获得了有竞争力的结果,尤其是与纯合成数据训练的方法相比。在没有ICP细化的情况下,OVE6D对LM和LMO的召回率分别为86.1%和56.1%。此外,OVE6D和ICP在LMO上的召回率为73%,这表明OVE6D能够推广到真实场景,即使在严重混乱和遮挡的情况下。此外,与另一种基于ShapeNet训练的通用模型LatenFusion相比,OVE6D在LM上获得了9.3%(96.4%对87.1%)的明显优势,同时在姿势估计中仅依赖深度信息。

图片

图片

4.2. 附加实验

参数配置OVE6D中的主要参数是视点的采样数(N)、候选视点的检索数(K)和方向建议数(P)。我们研究了这些参数值如何影响性能,并观察到该方法在广泛的不同设置下相对稳定。我们发现N=4000、K=50和P=5是精度和效率之间的一个很好的折衷。详细结果见补充材料。

图片

图6视点检索图6(左)显示了视点检索模块在多个阈值上的性能,使用LINEMOD数据集上的估计和真值分割遮罩。在这个实验中,我们只考虑一个单一的,最高得分,姿势假设。我们注意到,已经有70%的情况检索精度高于10°。此外,合成数据和真实数据之间的差距相对较小,表明尽管存在领域差距,但具有良好的泛化能力。平面内旋转估计平面内旋转模块的结果如图6(中间)所示。给定使用预测遮罩检索的视点,在10°误差阈值下,我们通过单次向前传递达到73%的精度,并通过ICP细化将其进一步提高到80%。我们还注意到,通过使用地面真相视角,即使没有ICP,精度也可以进一步提高90%以上。位置优化图6(右)展示了拟议的非参数位置优化模块的性能。我们观察到,在误差容限为10mm的情况下,细化可以将精度从初始估计的13%提高到60%,并通过ICP细化进一步提高到81%。因此,无论是否采用ICP细化,所提出的细化模块都能明显改善位置估计。推理时间使用OVE6D进行全姿态推理时,使用Nvidia RTX3090 GPU和AMD 835 Ryzen 3970X CPU,每个对象大约需要50毫秒。相比之下,LatenFusion在100次反向传播迭代中,每个对象大约需要20秒。

五、讨论、局限和结论

在这项工作中,我们提出了一个名为OVE6D的模型,用于以级联方式推断对象的6D姿势。该模型使用大量合成3D对象进行训练,并使用三个具有挑战性的真实基准数据集进行评估。结果表明,该模型在不需要任何参数优化的情况下,能很好地推广到看不见的数据,这大大简化了新对象的添加,并支持具有数千个对象的用例。这种方法的主要局限性包括对对象3D网格模型和实例分割遮罩的要求,这可能并不总是容易获得。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

4.国内首个面向工业级实战的点云处理课程

5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解

6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦

7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化

8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

更多干货

欢迎加入【3D视觉工坊】交流群,方向涉及3D视觉、计算机视觉、深度学习、vSLAM、激光SLAM、立体视觉、自动驾驶、点云处理、三维重建、多视图几何、结构光、多传感器融合、VR/AR、学术交流、求职交流等。工坊致力于干货输出,为3D领域贡献自己的力量!欢迎大家一起交流成长~

添加小助手微信:dddvision,备注学校/公司+姓名+研究方向即可加入工坊一起学习进步!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK