当前位置: 首页 > news >正文

论文笔记(四十二)Diff-DOPE: Differentiable Deep Object Pose Estimation

Diff-DOPE: Differentiable Deep Object Pose Estimation

  • 文章概括
  • 摘要
  • I. 介绍
  • II. 相关工作
  • III. DIFF-DOPE
  • IV. 实验结果
    • A. 实施细节和性能
    • B. 准确性
    • C. 机器人-摄像机校准
  • V. 结论
  • VI. 致谢

文章概括

作者:Jonathan Tremblay, Bowen Wen, Valts Blukis, Balakumar Sundaralingam, Stephen Tyree, Stan Birchfield
来源:arXiv:2310.00463v1 [cs.CV] 30 Sep 2023
原文:https://arxiv.org/pdf/2310.00463.pdf/https://arxiv.org/abs/2310.00463
代码、数据和视频:https://diffdope.github.io/
系列文章目录:
上一篇:
https://blog.csdn.net/xzs1210652636/article/details/134431873
下一篇:



摘要

我们介绍的 Diff-DOPE 是一种 6-DoF 姿态校正器,它将图像、物体的三维纹理模型和物体的初始姿态作为输入。该方法使用可微分渲染来更新物体姿态,以最小化图像与模型投影之间的视觉误差。我们的研究表明,这种简单而有效的方法能够在姿态估计数据集上获得最先进的结果。我们的方法不同于最近的方法,在最近的方法中,姿态细化器是一个在大型合成数据集上训练的深度神经网络,用于将输入映射到细化步骤。相反,我们使用可微分渲染技术,可以完全避免训练。我们的方法采用不同的随机学习率并行执行多个梯度下降优化,以避免对称物体、相似外观或错误步长造成的局部最小值。可以使用多种模式,如 RGB、深度、强度边缘和物体分割掩码。我们通过实验检验了各种选择的效果,结果表明,在使用 RGB 图像的同时使用对象遮罩和深度图像来指导优化过程时,效果最佳。项目网站是 diffdope.github.io。


I. 介绍

估计物体的 6-DoF 姿态(即六个自由度,包括三维平移和三维旋转)是机器人操纵、增强/混合现实和自主导航等广泛应用的一项关键任务。近年来,在解决这一问题的实例和类别层面上都取得了显著进展[3, 4],其中包括各种应用场景,如按实例训练网络[3, 5]、在推理时进行比较的纹理三维物体模型[1]和参考物体图像[6, 7]。

许多方法将问题分为两个阶段:首先是大致估算姿势,然后是细化姿势。本文的重点是后一个姿态细化步骤,这往往是获得良好效果的关键。经典技术使用图像空间和姿态空间之间的雅各布系来计算最小化基于图像的误差所需的 delta 姿态 [8-12]。最近的研究通过 “渲染-比较”(render-and-compare)来解决细化问题,即通过神经网络比较三维网格的渲染图像和目标图像,预测更新后的姿态,使渲染图像与目标图像更加匹配[1, 5, 13, 14]。由于这些技术依赖于传统的无差别渲染管道,因此神经网络必须在大型数据集上进行离线训练,才能学会计算姿势更新。训练完成后,网络是不透明的,几乎无法洞察其性能好坏的原因,因此,如果不进行昂贵而耗时的重新训练,就很难提高性能。

在这项工作中,我们利用可微分渲染技术的最新进展[15, 16],将 6-DoF 物体姿态细化问题作为直接的端到端优化进行探索。这种方法减轻了为训练提炼器而策划数据集的挑战,并带来了一种更灵活、可解释性更强的解决方案。直观地说,这种方法的灵感来源于这样一个事实:即使姿势估计稍有错误,产生的重投影错位也很容易察觉,这表明即使没有学习到的先验信息,局部像素信息也足以进行高质量的姿势估计。图 1 展示了我们的方法,即 Diff-DOPE(可微分深度物体姿态估计)。


在这里插入图片描述
图 1:Diff-DOPE 使用可微分渲染器迭代改进物体的 6-DoF 姿态。与之前的方法不同,该方法无需任何训练即可运行。图中显示的是 HOPE 数据集 [2] 中输入场景的定性结果。最下面一行显示的是每个地面实况对象的误差热图,红色越深表示与地面实况姿势的误差越大(图例:0 厘米 在这里插入图片描述5 厘米)。


可微分渲染的设计方案具有前所未有的灵活性:用户可以根据具体情况对设置进行微调,使其偏向于某些损失项,而无需重新训练网络。我们的方法可用于多种情况,例如仅 RGB、仅深度或 RGBD,还可以选择使用对象分割掩码和/或在优化中加入强度边缘或其他信息。不过,我们的所有实验都采用了相同的参数值和模式,以证明其广泛的适用性。

具体来说,我们的方法通过梯度下降,以 "渲染-比较 "的形式将渲染对象与观测图像的不对齐误差降到最低。这种方法面临的一个挑战是如何在优化过程中避免局部最小值。为了解决这个问题,我们并行初始化多个优化实例。不过,我们并不像通常那样随机扰动初始姿态,而是随机扰动应用于实例的学习率。我们将这一创新称为学习率随机化,正如我们在实验中展示的那样,它是我们的方法取得成功的关键。在 HOPE [2] 这样的高质量数据集上,我们的方法在复杂的遮挡场景上实现了优于 1 厘米的精度,有时甚至小于 0.5 厘米–这比以前的先进技术高出很多。在包含无纹理和对称物体的 T-LESS [17] 和 YCB-Video [18] 数据集上,我们的方法也优于之前的技术。


II. 相关工作

物体姿态估计 6-DoF 物体姿态估计是机器人和计算机视觉领域一个众所周知的问题。这个问题最早是通过明确的方法来解决的,即对三维物体和图像上的相应点进行联合优化以计算姿态[8, 19-23],或者通过模板匹配将物体姿态与图像观测结果相关联[24, 25]。最近的研究重点是使用神经网络进行学习优化 [3, 18, 26-35]。一些性能最好的方法依赖于可训练的细化网络 [5, 13, 36, 37],这些方法利用渲染和比较 [1, 8, 38, 39]。这些方法通过神经网络迭代比较物体的渲染图像和观测图像,从而输出 delta 姿态。由于神经网络有望优化观察对象和渲染对象的视觉外观相似性,因此当对象与训练集中的对象有显著差异时,就会出现难以解释的模糊错误。与此相反,我们建议直接利用渲染和比较直接使用的信息,从而获得更可预测的性能。

可微分渲染 最近,光栅化[15, 40-42]和光线追踪[43, 44]的可微分渲染方法都已问世。应用最广泛的可微分渲染器可能是 NeRF [45],它可用于从新视角估算摄像机姿态 [9,46,47]、摄像机校准 [48,49]、摄像机验证 [50] 和物体姿态估算 [51]。这些方法需要高质量的多视角数据和精确的摄像机姿态,而这些要求在姿态估计中并不总是切实可行的。与我们的研究最接近的 EasyHeC [52] 采用了类似的方法,通过可微分渲染和比较进行摄像机姿态估计。他们的工作重点是机器人到摄像机的姿态估计,并且只考虑了分割遮罩的模式,而我们的工作则是处理任何具有三维纹理模型的物体,并允许使用多种图像模式。

III. DIFF-DOPE

6-DoF 物体姿态估计问题的形式定义如下: 给定一个刚性物体的三维纹理模型 M M M 和该物体出现的摄像机图像 I I I,找出从摄像机到物体的变换 T C O T_{CO} TCO,其中旋转用四元数表示。解决这一问题的常见模式包括物体检测步骤和姿态改进步骤 [1, 5, 36, 37]。也就是说,在图像中定位感兴趣的物体并估算出其初始姿态后,采用渲染和比较的方法对其姿态进行迭代更新。我们建议用 Diff-DOPE 来替代此类系统中的姿态校正器。我们假设可以使用可微分渲染器 R R R,它能以任意相机姿态 T C O T_{CO} TCO 和相机本构 K K K 渲染三维模型 M M M 的重投影图像 I ^ ← R ( T C O , M , K ) \hat{I} ←\mathcal{R}(T_{CO},M,K) I^R(TCO,M,K)。我们希望通过最小化重投影误差来解决 6-DoF 姿态估计问题:
在这里插入图片描述
其中 l o s s loss loss 是我们设计的误差指标。通过采用可微分渲染器 R \mathcal{R} R,我们可以获取渲染过程中计算出的梯度。这意味着我们可以计算在图像空间工作的损失函数 T C O T_{CO} TCO 在摄像机姿态方面的梯度,从而通过梯度下降法计算出公式 (1) 的解。

虽然从理论上讲,只需与 RGB 参考图像进行比较就能检索出物体的姿态,但在实践中,要渲染三维模型以考虑到真实场景中的所有光照和材料伪影并非易事。值得庆幸的是,可微分渲染框架的灵活性允许在损失函数中使用多种模式。因此,我们计算的损失项可以利用深度、边缘检测图和分割掩码等附加信息。见图 2。


在这里插入图片描述
图 2:Diff-DOPE 系统概述,该系统通过最小化渲染三维模型与输入通道(如 RGB、深度和边缘)之间的重投影误差,迭代改进物体的 6-DoF 姿态。为了提高鲁棒性,该算法使用随机取样的初始学习率并行执行多次优化;一旦误差趋于稳定,就会选择重投影误差最小的姿势。


具体而言,我们将损失函数定义为特定模式项的加权组合:

在这里插入图片描述
我们计算相应输入图像 I c , I d , I e I_c, I_d, I_e Ic,Id,Ie 和渲染图像 I ^ ∗ = R ∗ ( ⋅ , ⋅ , ⋅ ) \hat{I}_∗ = \mathcal{R}_∗(\cdot, \cdot, \cdot) I^=R(,,)之间的 L1 损失,其中 ∗ ∈ { c , d , e } ∗∈\{c, d, e\} {c,d,e} 分别表示 RGB/彩色 ( c c c)、深度 ( d d d) 和边缘 ( e e e) 模式。像素乘以(即哈达玛乘积,用 ⊙ ⊙ 表示)对象掩码 S S S 将损失限制在图像的相关区域,权重 λ ∗ λ_∗ λ 允许平衡或省略损失项。边缘图是通过对 RGB 图像应用现成的边缘检测器计算出来的。

为了找到不影响重投影误差的最佳姿态,我们使用了无动量梯度下降算法,以最小化公式 (2) 中的损失函数,详见算法 1。


在这里插入图片描述


该方法需要输入图像 I c . I d , I e I_c. I_d, I_e Ic.Id,Ie 和初始姿势 T C O T_{CO} TCO,以及以下参数:迭代次数 i t e r s iters iters、批量大小 B B B、低学习率边界 ( ℓ ) (ℓ) (),以及高学习率边界 ( h ) (h) (h)。我们利用批量渲染和优化的并行性,同时运行 B B B 个优化。每个独立优化都从均匀分布 U ( ℓ , h ) U(ℓ, h) U(,h)中采样不同的学习率,并以输入的物体姿态进行初始化。这种学习率随机化类似于 Blier 等人的方法[53]。当初始误差较大时,高学习率会导致优化找到解,而当初始误差较小时,低学习率则更合适。我们采用学习率衰减来确保收敛,并防止在最终姿势附近振荡。与文献[47]类似的另一种方法是使用固定的学习率,并对初始姿态施加噪音,但我们发现这种方法的结果并不令人满意。优化完成后,我们会从一批结果中选出重塑误差最小的姿势。

IV. 实验结果

在本节中,我们将探讨 Diff-DOPE 在几个标准姿势估计数据集上的性能,并研究各种超参数对性能的影响。

A. 实施细节和性能

Diff-DOPE 使用 Python 和 PyTorch 绑定实现。所有实验均在NVIDIA 4090 GPU 上运行。我们使用 Kornia [54] 的可微分 Canny 边缘检测开源实现;我们将现代边缘检测算法或其他图像滤波器作为未来工作的重点。在本节的所有实验中,我们使用了相同的超参数。对于公式 (2) 中的损失,所有权重都设为 1,批量大小为 B = 32 B = 32 B=32,优化运行 100 次迭代,学习率边界为 ℓ = 0.001 ℓ = 0.001 =0.001 h = 50 h = 50 h=50,学习率衰减为 0.1。

利用 Nvdiffrast [15] 提供的功能,我们实现了自己的深度图输出程序。我们还实现了一个专门用于矩阵乘法的 CUDA 内核,它允许梯度流进行三维点转换(从本地空间到相机空间)。与简单的 PyTorch 版本相比,这种实现方式的性能提高了 40 倍,例如,在一组 262k 点上进行正向和反向乘法运算的时间从 27 毫秒降至 0.63 毫秒。根据上述超参数和矩阵乘法 CUDA 代码,Diff-DOPE 优化一个物体的姿态最多需要 3.5 秒,每次迭代需要 34 毫秒。

B. 准确性

数据集和衡量标准。 为了评估 Diff-DOPE 的改进效果,我们通过对地面实况姿势施加不同程度的噪声来创建初始姿势,并评估我们的方法恢复正确姿势的能力。为了对初始姿态进行采样,我们为每个场景中的每个物体随机选取两个轴(一个用于旋转,另一个用于平移),并应用下列旋转和平移扰动之一: ( 1 ◦ , 0.1 厘米) (1^◦,0.1 厘米) 10.1厘米) ( 1 0 ◦ , 1 厘米) (10^◦,1 厘米) 101厘米) ( 4 0 ◦ , 2 厘米) (40^◦,2 厘米) 402厘米)。图 3 显示了这些噪声水平的一些示例,我们将其分别称为 “易”、"中 "和 “难”。我们试图了解我们的方法在输入误差较小和较大时的表现,例如,我们的方法能否从较大的姿势误差中恢复?而且,如果初始猜测已经很好,我们的方法是否还能改进它或使它变得更糟?


在这里插入图片描述
图 3:HOPE 数据集[2]中样本对象的 “易”、"中 "和 "难 "三种不同输入噪音水平,以及 Diff-DOPE 与 MegaPose [1] 的定性比较结果。地面实况显示为绿色,预测结果显示为紫色;茶色(绿-蓝)表示两者之间的重叠。


我们在以下对象姿态估计数据集上进行了实验: HOPE [2]、T-LESS [17] 和 YCB-Video [18]。对于每个数据集,我们从 10 个随机场景中选取第一张图像,并应用三种噪声水平来代表不同的初始姿态误差。我们的方法与 MegaPose [1]进行了比较,MegaPose 是一种领先的物体姿态精炼器,在 CosyPose [5] 和 DeepIM [13] 的基础上进行了改进。MegaPose 使用了为 RGBD 输入提供的权重,同时省略了粗姿态估计器,以便将注意力集中在姿态改进器上。

为了评估性能,我们使用了 ADD 指标[3, 18],该指标用于测量地面实况姿态和输出姿态下物体上一组点之间的平均欧氏距离。该指标的动机是其几何可解释性,这在机器人技术中尤为重要。仅对于 T-LESS,我们使用对称版本 ADD-S,因为许多物体都具有对称性。我们展示的阈值图显示了在特定 ADD(或 ADD-S)值下出现误差的预测姿势的百分比。这些曲线图使用曲线下面积(AUC)的单个数字进行汇总,最大阈值为 5 厘米(除非另有说明)。

HOPE 数据集的准确性 图 1 和图 3 显示了 Diff-DOPE 与 MegaPose 对 HOPE 数据集中各种图像的定性结果。对于定量结果,图 4 比较了 Diff-DOPE 和 MegaPose 精校仪在地面实况中应用不同数量的噪声(如上所述)的情况。我们发现,Diff-DOPE 比 MegaPose 对输入噪声的鲁棒性更高。这些图还显示,分割包含了最重要的信息(超出 RGB 输入),其次是深度,然后是边缘。由于 "简单 "输入非常接近地面实况,两种方法都会略微增加误差,不过 Diff-DOPE 实际上改善了其中一半的姿势。另一个有趣的现象是,无论输入噪声水平如何,MegaPose 的性能大致相同,而 Diff-DOPE 在 "硬 "姿势上的性能则明显下降。更多详情,请参见表 I 中的 AUC 数据。


在这里插入图片描述
图 4:MegaPose [1] 和 Diff-DOPE 的不同变体(如无深度)的 ADD 阈值曲线;同时显示的还有噪声输入姿势的 ADD 误差曲线。子图显示了所有输入姿势(左上角)和易(右上角)、中(左下角)、难(右下角)输入姿势子集的结果。



表 I: Diff-DOPE (DD) 和 MegaPose (MP) [1] 在三个数据集上的比较,使用的是 A D D \mathsf{ADD} ADD(或 A D D − S † \mathsf{ADD-S^†} ADDS)误差指标的曲线下面积 (AUC),最大阈值为 5 厘米。
在这里插入图片描述


T-LESS 和 YCB-Video 的准确性 上述 HOPE 数据集具有高质量的纹理物体和图像,因此非常适合我们的 Diff-DOPE 方法。在此,我们将探讨该方法应用于较低质量数据集时的性能,即 T-LESS(该数据集的物体重构效果较差)和 YCB-Video(该数据集包含噪声较高的 RGB 图像)。对于这两个数据集,我们使用地面实况标注生成了类似的噪声初始姿势。图 5 显示了两个数据集的定量结果,图 6 显示了定性结果。


在这里插入图片描述
图 5:左图:使用 ADD-S 在 T-LESS 数据集 [17] 上得出的结果,我们还在该数据集上评估了我们的方法,但没有 RGB 输入。右图 使用 ADD 在 YCB-Video 数据集 [18] 上得出的结果,我们还将我们的方法应用到 MegaPose 的输出中,这通常有助于在较低输入噪声水平下得出结果。



在这里插入图片描述
图 6:Diff-DOPE 在 T-LESS [17](第一行)和 YCB-Video [18](第二行)硬场景上的定性结果。图中显示的是叠加姿势(左)和误差热图(右;图例:0 厘米在这里插入图片描述5 厘米)。


T-LESS 数据集提供了各种 3D 资产。我们使用的是 “半自动重建模型,其中还包括表面颜色”[17],因为所提供的 CAD 模型没有表面颜色。在输入噪声水平较小的情况下,我们的结果总体上优于 MegaPose,整体上略胜一筹,但在输入误差较大的情况下,我们的结果则较差。在分析结果的过程中,我们注意到所提供的纹理模型并不总是能与 RGB 图像很好地匹配,例如夸张的圆形边缘或不匹配的颜色。因此,我们还探索了只使用分割作为信号,而不匹配 RGB 颜色的方法,结果得到了明显改善。

尽管 YCB-Video 的 3D 资产具有良好的纹理,但 RGB 图像的质量并不理想,存在色彩饱和度和严重的噪点。因此,所有方法在该数据集上的表现都较差。与之前一样,Diff-DOPE 在输入误差较低时表现优于 MegaPose,但在输入误差较高时表现较差。在这种情况下,仅使用分割功能实际上会降低准确率(AUC 从 83.03 降至 80.40),这在意料之中,因为 YCB-Video 是一个纹理丰富的数据集。相比之下,Megapose 的 AUC 为 81.13。我们还在这个数据集上验证了 Diff-DOPE 可以通过进一步完善 MegaPose 的输出来改进 MegaPose 的预测。不过,虽然结果比 MegaPose 有所改进(82.00 对 81.13),但 AUC 仍低于直接运行 Diff-DOPE 的结果(83.03)。

通过这些结果,我们还可以比较 3D 模型对图像质量的影响。鉴于 HOPE 的 AUC 为 92.30,我们发现 YCB-Video 的性能下降幅度最大(83.03),这表明 RGB 信号的劣化影响极大。从 T-LESS 的结果中可以看出,较低质量的网格对结果的影响较小,我们观察到其性能下降的幅度较小(86.38)。

消融 为了更好地理解算法,我们探索了算法 1 中所示方法的各种变体。(由于使用了不同的 AUC 临界值,因此数字与表格中的数字不一致)。默认情况下,Diff-DOPE 在两个界限之间对学习率进行均匀采样;我们将这种方法称为均匀采样。如果一个界限较小,如 0.01,而上限较大,如 10,那么大多数样本都会偏向于较大的数值。另一种方法是在对数刻度上均匀取样,我们称之为指数取样;这种方法会使取样偏向于较小的数值。当输入误差较小时(0.1 厘米),指数(95.8 AUC)的表现略好于均匀(95.5 AUC)。当输入误差较大(2 厘米)时,情况则相反:均匀(90.7)优于指数(89.3)。这一结果在意料之中,因为当误差较大时,姿势更新需要更大的学习率。

除了像我们这样对不同的学习率进行采样外,另一种方法是简单地在输入姿势中添加更多姿势噪声,让并行优化探索更多的空间。当我们将这一想法与对不同学习率进行采样进行比较时,我们会发现性能会显著下降。例如,在 "简单 "数据上,AUC 从 83.3 灾难性地下降到 57.8。

图 7 显示了另外两个实验。我们使用缩小的 HOPE 图像大小(原始图像的 25%),将迭代次数从 5 次调整到 500 次(如图 7 左侧所示)。迭代次数最少为 50 次时性能良好,迭代次数在 100 次左右达到饱和。迭代 5 次的 AUC 为 81.0,而迭代 100 次的 AUC 为 90.5。


在这里插入图片描述
图 7:左图:迭代次数对 HOPE [2] 上 Diff-DOPE 性能的影响。右图:图像大小对 HOPE 的 Diff-DOPE 性能的影响(无边缘匹配损失);我们还显示了物体所占像素的平均值(px)。


我们还评估了图像大小对性能的影响。在默认设置中,我们使用输入图像大小的 50%;对 HOPE 而言,这意味着将图像分辨率从 1920×1080 降至 960×540。从图 7 右侧可以看出,即使缩小到原始大小的 25%,性能也没有明显下降。(请注意,我们在这些实验中省略了边缘检测)。在 100% 分辨率(87.9 AUC)和 25% 分辨率(87.7 AUC)之间,性能的下降可以忽略不计;当图像缩小到 10% 时,AUC 下降到 85.3。在较高分辨率下,物体平均占用 32k 像素,最低为 2k 像素,这并不会对结果造成明显影响。当缩小到原始大小的 10%时,物体的平均大小仅为 322 像素,效果更加明显。

C. 机器人-摄像机校准

在编写本手稿时,我们注意到 EasyHeC [52] 的最新研究成果,它也利用可微分渲染进行姿态估算,不过是用于机器人-摄像机校准,而非物体姿态估算。在本节中,我们将介绍一个初步实验,展示使用 Diff-DOPE 以类似方式校准机器人外部摄像头的潜力。虽然我们可以使用现有的方法,如 DREAM [55],来获得机器人的初始姿势,但这需要一个经过训练的神经网络。相反,我们手动估算了一个粗略的初始姿态:使用 RGBD 摄像机(如 ZED),我们手动裁剪点云,使其只包含机器人(假设没有相邻的杂波)。根据裁剪后的点云,我们得出了原始深度图像的分割掩码。最后,我们使用机器人的已知关节配置生成一个网格,并手动拖动网格与深度点云大致对齐。我们使用一些关节配置重复这一过程,以增加优化的稳定性。由于大多数 URDF 机器人模型的纹理有限,我们对 Diff-DOPE 进行了修改,使其只针对分割和深度进行优化。图 8 显示了运行该程序的定性结果。我们已经在实验室成功使用这种方法生成了机器人-摄像机校准,结合 Diff-DOPE 物体姿态,可以实现相当精确的操作(初始物体姿态由 DOPE 预测[3],Diff-DOPE 中省略了分割,因为 DOPE 无法预测物体遮罩。)。


在这里插入图片描述

图 8:将 Diff-DOPE 应用于摄像机-机器人校准。图中显示的是输入姿势(左)和 Diff-DOPE 的输出(右)。请注意,机器人的链接非常吻合,而抓手周围的误差是由于所提供的 URDF 存在差异造成的。上图:分割图,绿色表示观察到的物体,洋红色表示重新投影的三维模型,白色表示两者的重叠部分。下图:三维模型轮廓以绿色叠加在观察到的图像上。该优化使用了第一代 ZED 摄像机拍摄的两种机器人配置。


V. 结论

我们提出了一种名为 Diff-DOPE 的方法,它利用纹理三维模型来完善 6-DoF 物体姿态,而无需任何网络训练。该方法基于可微分渲染的理念,其中获取的图像与模型的渲染进行迭代比较,直至收敛。我们的方法可利用 RGB、深度、边缘检测和分割功能,但如果需要,它也可以灵活地在没有这些模式的情况下运行。我们对算法的各个部分进行了研究,并展示了学习率随机化的重要性,即对不同的学习率进行采样,从而有效地并行优化物体姿态。

我们在实验中比较了 Diff-DOPE 和 MegaPose(一种最新的最先进姿势优化器)。总体而言,我们的方法无需任何训练就能生成更准确的姿势,而 MegaPose 受初始姿势分布的干扰较小,因此更适用于初始姿势误差较大的情况。这些结果支持了一种假设,即可微分渲染有可能实现 1 厘米以下的姿势估计,这对机器人抓取和操纵非常重要。

未来的工作应包括探索非朗伯优化作为姿态估计过程的一部分。这种情况具有挑战性,因为纹理表面的定义并不明确,但它将使我们能够对具有更复杂表面材料的物体进行姿态估计,这些表面材料会表现出反射和镜面高光。即使在我们的实验中使用的大多是哑光纹理的物体,在三维扫描过程中,光线也会与模型的塑料表面相互作用,从而导致伪影,有时会造成姿态估计过程中的不匹配。另一个有前途的研究方向是将基于模型的经典优化方法与基于学习的方法相结合,我们相信我们的方法将为这一研究提供一个起点。

VI. 致谢

作者要特别感谢雅各布-蒙克伯格(Jacob Munkberg)在代码优化和提供 CUDA/PyTorch 优化矩阵变换方面做出的不可或缺的贡献。作者还要感谢 Ankur Handa、Yann Labb´e、Vladimir Reinharz 和 Yen Chen Lin 在本文写作过程中提供的反馈意见。

相关文章:

论文笔记(四十二)Diff-DOPE: Differentiable Deep Object Pose Estimation

Diff-DOPE: Differentiable Deep Object Pose Estimation 文章概括摘要I. 介绍II. 相关工作III. DIFF-DOPEIV. 实验结果A. 实施细节和性能B. 准确性C. 机器人-摄像机校准 V. 结论VI. 致谢 文章概括 作者:Jonathan Tremblay, Bowen Wen, Valts Blukis, Balakumar Su…...

设计模式:简单工厂模式

工厂设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。 …...

老龄化对投资意味着什么?

1月15日,国务院办公厅印发《关于发展银发经济增进老年人福祉的意见》从4个方面提出26项举措,为我国首个以“银发经济”命名的政策文件。 近期,国信证券分析师王开发布题为《银发经济再思考:老龄化对投资的影响》的报告&#xff0…...

从公有云对象存储迁移到回私有化 MinIO需要了解的所有信息

我们上一篇文章《如何从 AWS S3 遣返到 MinIO》的反响非常出色 - 我们已经接到了数十个企业的电话,要求我们提供遣返建议。我们已将这些回复汇总到这篇新文章中,其中我们更深入地研究了与遣返相关的成本和节省,以便您更轻松地进行自己的分析。…...

C#颜色拾取器

1&#xff0c;目的&#xff1a; 获取屏幕上任意位置像素的色值。 2&#xff0c;知识点: 热键的注册与注销。 /// <summary>/// 热键注册/// </summary>/// <param name"hWnd">要定义热键的窗口的句柄 </param>/// <param name"id…...

最长公共子串的问题(正常方法和矩阵法,动态规划)

题目&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符…...

Linux实验记录:使用LVM(逻辑卷管理器)

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 硬盘分好区或者部署为RAID磁盘阵列…...

[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…...

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…...

python flask request教程

request 一、传json1、resquest.get_data()与resquest.data2、request.get_json()3、request.json["imageURL"]二、传file1、request.files["file"]2、request.form["username"]3、request.form.get(username)与2等价,其他get()与[]也相同三、其…...

UE5 Chaos系统 学习笔记

记得开插件&#xff1a; 1、锚点场&#xff08;构造场&#xff09; 在锚点场范围内的物体静止且不被其他力场损坏 需要在Geometry Collection的初始化场把构造场设置过去 2、ClusterStrain 破裂效果的力 3、DisableField chaos破裂后的模拟物理在绿色范围内禁止行为和模拟物…...

MkDocs 部署指南

简介 MkDocs 可以同时编译多个 markdown 文件&#xff0c;形成书籍一样的文件。有多种主题供你选择&#xff0c;很适合项目使用。 MkDocs 是快速&#xff0c;简单和华丽的静态网站生成器&#xff0c;可以构建项目文档。文档源文件在 Markdown 编写&#xff0c;使用单个 YAML …...

【Java 设计模式】行为型之访问者模式

文章目录 1. 定义2. 应用场景3. 代码实现结语 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;用于在不改变被访问元素的类的前提下定义对这些元素的新操作。访问者模式将数据结构与作用于结构上的操作解耦&#xff0c;使得操作集合可以灵…...

堆和堆排序【数据结构】

目录 一、堆1. 堆的存储定义2. 初始化堆3. 销毁堆4. 堆的插入向上调整算法 5. 堆的删除向下调整算法 6. 获取堆顶数据7. 获取堆的数据个数8. 堆的判空 二、Gif演示三、 堆排序1. 堆排序(1) 建大堆(2) 排序 2.Topk问题 四、完整代码1.堆的代码Heap.cHeap.htest.c 2. 堆排序的代码…...

【全程录屏GPT3.5升级4.0】2024最新GPT4升级订阅详细指南

前言&#xff1a;为什么要升级GPT4.0&#xff0c;下图是来自GPT4.0的官方回答&#xff0c;可以看出&#xff0c;GPT4无愧于是一个大版本升级的。 一、视频教程 记录了普通用户使用WildCrad从GPT3.5升级到4.0的全部过程&#xff0c;感兴趣可以前往观看&#xff1a;https://www.…...

中移(苏州)软件技术有限公司面试问题与解答(4)—— virtio所创建的设备1

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;0&#xff09;—— 面试感悟与问题记录 本文参考以下文章&#xff1a; VirtIO实现原理——PCI基础 VirtIO实现原理——virtblk设备初始化 特此致谢&#xff01; 本文对…...

《动手学深度学习(PyTorch版)》笔记5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过,…...

QT中wchar_t类型如何输出

在Qt中&#xff0c;通常使用QString来处理字符串&#xff0c;而不是wchar_t。QString是Qt中用于处理Unicode字符串的类。如果你有wchar_t类型的字符串&#xff0c;你可以将其转换为QString进行输出。 以下是一个简单的例子&#xff1a; #include <QCoreApplication> #i…...

网络安全04-sql注入靶场第一关

目录 一、环境准备 1.1我们进入第一关也如图&#xff1a; ​编辑 二、正式开始第一关讲述 2.1很明显它让我们在标签上输入一个ID&#xff0c;那我们就输入在链接后面加?id1 ​编辑 2.2链接后面加个单引号()查看返回的内容&#xff0c;127.0.0.1/sqli/less-1/?id1,id1 …...

微服务理解篇

一 :架构演变 1 单体架构: 简单理解为一个服务涵盖所有需求功能2 垂直架构: 按照业务功能将单体架构拆分成小模块服务, 如:订单系统,用户系统,商品系统 ##缺点 引入分布式事务,分布式锁等,优点:模块解耦## 垂直拆分:根据业务层级拆分,比如商城的订单系统,用户系统,商品系统…...

项目篇:基于TCP通信模型的外卖软件实现

一、基本成员及功能实现 本项目主要由服务器&#xff0c;消费者&#xff0c;商家&#xff0c;外卖员组成。基本的功能如下。 对所有人&#xff1a; 1、可以注册登录 2、可以修改个人信息 3、可以销户 商家&#xff1a; 1、注册时需要填写售卖商品信息 2、可以修改商品信…...

深入浅出 diffusion(2):pytorch 实现 diffusion 加噪过程

我在上篇博客深入浅出 diffusion&#xff08;1&#xff09;&#xff1a;白话 diffusion 原理&#xff08;无公式&#xff09;中介绍了 diffusion 的一些基本原理&#xff0c;其中谈到了 diffusion 的加噪过程&#xff0c;本文用pytorch 实现下到底是怎么加噪的。 import torch…...

【软件测试】学习笔记-构建并执行 JMeter 脚本的正确姿势

有些团队在组建之初往往并没有配置性能测试人员&#xff0c;后来随着公司业务体量的上升&#xff0c;开始有了性能测试的需求&#xff0c;很多公司为了节约成本会在业务测试团队里选一些技术能力不错的同学进行性能测试&#xff0c;但这些同学也是摸着石头过河。他们会去网上寻…...

iOS 面试 Swift基础题

一、Swift 存储属性和计算属性比较&#xff1a; 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举&#xff0c;存储属性只能用于类和结构体。存储属性可…...

(七)for循环控制

文章目录 用法while的用法for的用法两者之间的联系可以相互等价用for改写while示例for和while的死循环怎么写for循环见怪不怪表达式1省略第一.三个表达式省略&#xff08;for 改 while&#xff09;全省略即死循环&#xff08;上面已介绍&#xff09; 用法 类比学习while语句 …...

ASP .NET Core Api 使用过滤器

过滤器说明 过滤器与中间件很相似&#xff0c;过滤器&#xff08;Filters&#xff09;可在管道&#xff08;pipeline&#xff09;特定阶段&#xff08;particular stage&#xff09;前后执行操作。可以将过滤器视为拦截器&#xff08;interceptors&#xff09;。 过滤器级别范围…...

CodeGPT--(Visual )

GitCode - 开发者的代码家园 gitcode.com/ inscode.csdn.net/liujiaping/java_1706242128563/edit?openFileMain.java&editTypelite marketplace.visualstudio.com/items?itemNameCSDN.csdn-codegpt&spm1018.2226.3001.9836&extra%5Butm_source%5Dvip_chatgpt_c…...

1.Mybatis入门

目录 前言 1入门 1.1 入门程序实现 1.2 数据准备 ​编辑 1.3 配置Mybatis 1.4 编写SQL语句 1.5 单元测试 1.6 解决SQL警告与提示 2. JDBC介绍(了解) 2.1 介绍 2.2 代码 2.3 问题分析 2.4 技术对比 3. 数据库连接池 3.1 介绍 3.2 产品 4. lombok 4.1 介绍 4.…...

android camera系列(Camera1、Camera2、CameraX)的使用以及输出的图像格式

一、Camera 1.1、结合SurfaceView实现预览 1.1.1、布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-au…...

live555搭建流式rtsp服务器

源代码已上传gitee 一、需求 live555源代码中的liveMediaServer是将本地文件作为源文件搭建rtsp服务器&#xff0c;我想用live555封装一个第三方库&#xff0c;接收流数据搭建Rtsp服务器&#xff1b;预想接口如下&#xff1a; class LiveRtspServer { public:/***brief构造一…...