作者:Chen Wang,Roberto Mart´ın-Mart´ın,Danfei Xu,Jun Lv,Cewu Lu,Li Fei-Fei,Silvio Savarese,Yuke Zhu
来源:arXiv:1910.10750v1 [cs.CV] 23 Oct 2019
原文:https://arxiv.org/pdf/1910.10750.pdf
代码、数据和视频:https://sites.google.com/view/6packtracking
系列文章目录:
上一篇:
下一篇:
作者提出了6-PACK,一种对RGB-D数据进行类别级6D物体姿态跟踪的深度学习方法。作者的方法实时跟踪已知对象类别的新颖对象实例,如碗、笔记本电脑和杯子。6-PACK学习通过少量的3D关键点来紧凑地表示一个物体,基于此,可以通过关键点匹配来估计一个物体实例的帧间运动。
在6D跟踪方面的开创性工作已经取得了显著的精度和鲁棒性,给定一个物体实例的3D模型,通常称为实例级6D跟踪。然而,在现实环境中,已知3D模型的假设可能是脆性的,因为新物体的完美几何形状很难获得。在这项工作中,作者提出研究类别级6D跟踪的问题,目标是开发能够在特定类别中跟踪新颖对象实例的类别级模型。
最后作者们提出了6-PACK:6D-Pose Anchor-based Category-level Keypoint tracker。 6- PACK跟踪RGB-D视频中的一小组关键点,并通过积累相对姿势随时间的变化来估计物体的姿势。这个方法不需要知道3D模型。 相反,它通过一种类似于2D物体检测中使用的提议方法的新型锚机制,规避了定义和估计绝对6D姿势的需要。这些锚点为生成3D关键点提供了基础。与之前需要手动标注关键点的方法不同,我们提出了一种无监督的学习方法,可以发现用于跟踪的最佳3D关键点集。
历史上,6D物体视觉姿态估计依赖于将物体的当前视图与给定的模板模型进行匹配。最近的6D物体姿态估计方法则学习直接将输入图像与模板物体模型的渲染或剪影进行匹配。然而,知道对象模型的要求将这些方法限制在已知的对象实例上。
最近,KeypointNet通过利用多视图的几何一致性,展示了学习在3D空间中生成关键点而无需监督的好处。但是,当暴露于真实场景的有噪声的RGB-D数据时,这种方法就会受到影响,因为在真实场景中,物体有遮挡物,而且不居中,增加了可以找到关键点的三维空间的边界。
作者的方法引入了一种新的锚定机制,使模型只在最相关的子空间中生成关键点。该策略显著提高了生成的关键点的质量,减少了估计姿势所需的关键点数量,使我们的模型能够实时跟踪物体。
对于一个对象类别的任何实例,给定它的初始6D姿势, p 0 ∈ S E ( 3 ) p_0∈SE(3) p0∈SE(3),以及它所属的类别(如杯子、碗、笔记本、…),作者将类别级6D姿势跟踪定义为连续估计对象在连续的时间步 t − 1 t-1 t−1和 t t t之间的姿势变化的问题, ∆ p t ∈ S E ( 3 ) ∆p_t∈SE(3) ∆pt∈SE(3)。姿势的变化包括旋转的变化 △ R t ∈ S O ( 3 ) △R_t∈SO(3) △Rt∈SO(3)和平移的变化 △ t t ∈ R 3 △t_t∈\mathbb{R}^3 △tt∈R3, △ p t = [ △ R t ∣ △ t t ] △p_t=[△R_t|△t_t] △pt=[△Rt∣△tt]。然后通过递归应用最后一次估计的姿势变化来检索绝对姿势: p t = ∆ p t ⋅ p t − 1 = ∆ p t ⋅ ∆ p t − 1 ⋅ ⋅ ⋅ p 0 p_t = ∆p_t\cdot p_{t-1} = ∆p_t\cdot∆p_{t-1}\cdot\cdot\cdot p_0 pt=∆pt⋅pt−1=∆pt⋅∆pt−1⋅⋅⋅p0。
作者们的方法受到最近关于学习预测6D物体姿态估计的3D关键点的启发。他们将三维关键点定义为三维空间 k ∈ R 3 k∈\mathbb{R}^3 k∈R3中的点,这些点在整个时间序列中几何和语义上是一致的。具体来说,给定两个连续的输入帧 ( I t − 1 , I t ) (I_{t-1},I_t) (It−1,It),问题是从两个帧中预测匹配的关键点列表 ( k t − 1 , k t ) (k_{t-1},k_t) (kt−1,kt)。然后基于刚体假设,通过求解点集对齐问题,用最小二乘法优化,可以恢复姿势的变化 △ p t △p_t △pt。
6-PACK以如下方式执行类别级6D姿势跟踪。首先,6-PACK在物体预测姿势周围生成的锚点网格上使用关注机制。
图1:
首先,我们(1)在实例的预测姿势周围裁剪一个放大的体积,归一化为单位,(2)在体积上生成锚点网格。然后,我们(3)使用基于DenseFusion的网络来计算融合的几何和颜色特征,以满足我们的需求。中的M个点,(4)根据它们的距离将它们平均组合成N个锚特征。锚点特征被(5)用在一个注意力 网络来选择最接近中心点,然后用来 (6) 生成一组有序的关键点。 整体工作流程(右下角)。基于锚点的关键点生成应用于前一帧和当前帧,以获得两组有序的关键点,计算帧间的姿势变化。 该姿势应用于之前计算的实例姿势,以获得当前估计的6D姿势。
每个锚用周围RGB-D点的各个特征的距离加权和总结了它周围的体积。 通过这些信息,可以在新的RGB-D框架中找到物体的粗中心点,并指导后续对其周围关键点的搜索,这比以往方法在整个无约束的三维空间中搜索关键点更有效率。
其次,6-PACK利用锚点特征生成对称和非对称类别的关键点。与之前的方法不同,这些关键点是以无监督的方式学习的,所以它们是基于训练数据进行跟踪的最稳健和最有参考价值的。
最后,将当前帧和前一帧的关键点传递给最小二乘优化,计算出帧间的姿势变化。基于这个运动,我们外推下一帧中的姿势,使下一帧的锚点分布居中。
该过程从给定的初始姿势 p 0 p_0 p0所指示的位置开始。我们允许这个初始姿势包含一个错误,我们用一个初始迭代过程拒绝这个错误。我们生成 一组关键点,并将给定的姿势细化为集合的中心点, p 0 ′ p_0^{'} p0′。 由于关键点的中心点是在训练过程中强加的,所以接近实例中心点。 然后,我们再次运行生成和修正,总次数为T=10次。我们选择最接近生成的关键点中心点的细化姿势作为跟踪过程的初始姿势,因为这个细化姿势最有可能是该类实例的正确姿势。初始化过程减少了提供一个非常精确的初始姿势 p 0 p_0 p0的工作量,提高了类别级跟踪器的鲁棒性。
由于巨大的输出空间,直接生成一组有序的3D关键点进行姿势跟踪非常具有挑战性。先前有关自动关键点生成的工作并未解决此问题:在其设置中,关键点是在以原点为中心的有界球体内为单个对象生成的。但是,在我们的设置中,对象可以位于RGB-D框架视场内3D空间中的任何位置。因此,关键点可以在无边界3D空间中的任何位置。
所陈述的在无界空间中生成3D关键点的问题类似于2D对象检测的问题,其目标是在2D图像上的目标对象周围绘制一个紧密的边界框。解决此问题的成功方法是从在图像中绘制锚点的网格开始,然后找到最靠近对象中心的锚。这个过程粗略地定位了对象,并简化了第二步,即在锚周围生成一个更精确的边界盒建议。受这一想法的启发,我们提出了一种在预测的当前对象位置周围的3D锚网格上的注意力机制。每个锚点都包含了其周围体积的特征表示。模型根据这个特征,学习关注最接近物体中心点的锚。然后,3D关键点可以作为所选锚点的偏移点生成。通过将跟踪问题分为基于粗注意力的锚点选择和细粒度的关键点生成,我们的跟踪器有可能处理更大区域的搜索空间(提高鲁棒性和可感知的帧间运动),同时保持高跟踪质量。
如前所述,每个锚包含一个特征,代表它周围体积中的3D点。正如之前的工作所显示的那样,有可能将颜色和几何信息结合成一个融合的特征,用于姿势估计。作者们将DenseFusion特征嵌入应用于锚点网格内RGBD图像中的所有彩色3D点,并使用距离加权平均法将其汇集到每个锚点中,生成锚点嵌入。
假设网格有N个锚点, a i ∈ R 3 a_i∈\mathbb{R}^3 ai∈R3,并包含M个来自RGB-D帧的彩色点, x j ∈ R 3 x_j∈\mathbb{R}^3 xj∈R3。因此,锚点到所有彩色点的距离向量为 d i = [ d i 0 , d i 1 , ⋅ ⋅ ⋅ , d i M ] d_i = [d_{i0},d_{i1},\cdot\cdot\cdot ,d_{iM}] di=[di0,di1,⋅⋅⋅,diM]。然后,将彩色点的特征权重定义为 w = s o f t m a x ( d i ) w=softmax(d_i) w=softmax(di)。基于这些权重,我们进行距离加权平均池化,生成锚点 a i a_i ai的锚点嵌入 ψ i ψ_i ψi, ψ i = ∑ j w j φ j ψ_i =\sum_jw_jφ_j ψi=∑jwjφj ,其中 φ j φj φj是DenseFusion编码器生成的 x j x_j xj的点嵌入。
一旦我们生成了每个锚点的几何和颜色特征,我们就会训练一个注意力网络,学习检测最接近物体中心点的那个锚点。我们的注意力网络将每个锚级嵌入 ψ i ψ_i ψi作为输入,并将每个锚的置信度得分 c i c_i ci作为输出。注意力网络被训练成在监督下将最高的置信度得分分配给最接近对象中心点的锚。因此,给定对象中心点OGT的地面真实位置,损失函数可以写成:
L a n c = 1 N ∑ i c i ( ∣ ∣ ∣ a i − o g t ∣ ∣ 2 − β ) L_{anc}=\frac{1}{N}\sum_{i}c_i(|||a_i-o_{gt}||_2-\beta) Lanc=N1i∑ci(∣∣∣ai−ogt∣∣2−β)
这里 β = m i n ( ∣ ∣ a i − o g t ∣ ∣ 2 ) , i = 1... N \beta=min(||a_i-o_{gt}||_2),i=1...N β=min(∣∣ai−ogt∣∣2),i=1...N指的是锚点到物体中心点的最小可能距离。我们使用一个两层MLP作为注意力网络。在评估过程中,6-PACK选择置信度得分最高的锚点,并生成关键点作为这个锚点的偏移量,下一节会解释。
在基于锚点的注意力机制下,6-PACK以最高的置信度分数识别出锚点 a i a_i ai和相关特征 ψ i ψ_i ψi。现在,6-PACK将利用这一特性生成最终的3D关键点集 [ k 0 , . . . . . . , k K ] [k_0,......,k_K] [k0,......,kK],以跟踪对象类别的实例。我们提出了一个关键点生成神经网络,该网络将锚点特征作为输入,并生成一个包含有序关键点列表的K×3维输出。我们提出了一个关键点生成神经网络,该网络将锚点特征作为输入,并生成一个包含有序关键点列表的 K × 3 K×3 K×3维输出。由于列表是有序的,我们不需要找到连续帧的关键点之间的对应关系来估计姿势的变化。
如前所述,我们以无监督的方式训练我们的关键点生成网络,不需要人工标注,与有监督的方法相比,这使得类别级方向估计的转移性得到了改善。我们将关键点生成网络的无监督训练视为优化连续帧中生成的关键点之间的多视角一致性。换句话说,假设在两个连续的帧中分别生成了K个关键点;训练目标是将当前视图中的关键点放置在与前一帧关键点对应的位置上,并通过地面真实的帧间运动进行转换。这个目标可以形式化为以下的多视图一致性损失:
L m v c = 1 K ∑ i ∣ ∣ k i t − [ Δ R t g t ∣ Δ t t g t ] ⋅ k i t − 1 ∣ ∣ L_{mvc}=\frac{1}{K}\sum_{i}||k_i^t-[\Delta{R}_t^{gt}|\Delta{t}_t^{gt}]\cdot{k}_i^{t-1}|| Lmvc=K1i∑∣∣kit−[ΔRtgt∣Δttgt]⋅kit−1∣∣
其中 [ Δ R t g t ∣ Δ t t g t ] = Δ p t g t [\Delta{R}_t^{gt}|\Delta{t}_t^{gt}]=\Delta{p}_t^{gt} [ΔRtgt∣Δttgt]=Δptgt为地真帧间的姿势变化。
多视角一致性损失仅能保证帧间特征位置的一致性,与透视或物体的可见部分无关。 然而,这并不能保证这些位置对于我们的最终目标–估计姿势的变化是最优的(例如,所有的关键点可能最终都在同一个位置)。 为了解决这个问题,我们将基于关键点的姿势估计步骤变成一个可区分的姿势估计损失函数,并将其与训练过程中的多视角一致性损失相结合。该损失函数由平移损失Ltra和旋转损失Lrot组成:
L t r a = ∣ ∣ ( k ˉ t − k ˉ t − 1 ) − Δ t t g t ∣ ∣ L_{tra} =|| (\bar{k}^t-\bar{k}^{t-1})-\Delta{t}_t^{gt} || Ltra=∣∣(kˉt−kˉt−1)−Δttgt∣∣
L r o t = 2 arcsin ( 1 2 2 ∣ ∣ Δ R ^ t − Δ R t g t ∣ ∣ ) L_{rot}=2\arcsin(\frac{1}{2\sqrt2}||\Delta\hat{R}_t-\Delta{R}_t^{gt}||) Lrot=2arcsin(221∣∣ΔR^t−ΔRtgt∣∣)
其中, k ˉ t \bar{k}^t kˉt和 k ˉ t − 1 \bar{k}^{t-1} kˉt−1是上一帧和当前帧中关键点的中心点, Δ R ^ t \Delta\hat{R}_t ΔR^t是基于生成的关键点集使用最小二乘优化估计的帧间方位变化。因此,这些损失迫使关键点被生成,从而可以从中计算出姿势的地面真实变化。
作者们还整合定义了一个分离损失 L s e p L_{sep} Lsep和轮廓一致性损失 L s i l L_{sil} Lsil。分离损失迫使关键点之间保持一定的距离,以避免退化配置,提高姿势估计。轮廓一致性损失迫使关键点更接近物体表面,以提高可解释性。
除了上面介绍的主要目标外,我们还施加了一个中心点损失,迫使生成的关键点集的中心点位于对象的中心点 L c e n L_{cen} Lcen,有用的修正给定初始姿势中的噪声,如本节开头所解释的。最终的整体训练损失是上面介绍的6个项的加权和,其中权重由它们的相对大小和重要性决定。
3D Keypoint Generation for Classes with Symmetry Axes:
所提出的多视图一致性和姿势损失函数不能很好地处理物体类别实例上的对称性,因为识别沿对称轴的旋转是一个无法解决的问题。我们提出了一种坐标系变换 ρ ( ) ρ() ρ(),它将点的坐标变换成一个围绕对称轴旋转不变的空间。图3说明了一个碗的实例上有五个点的情况下的变换。假设这一类所有实例的一些共同的对称轴 s g t s_{gt} sgt,通过坐标的笛卡尔原点(图3中的y轴);我们将关键点 k i k_i ki的位置从笛卡尔坐标中的 ( x , y , z ) (x,y,z) (x,y,z)转化为定义为的三倍体 ( d , h , θ ) (d,h,θ) (d,h,θ)。
图3:
对称轴的对象类。左:对象的透视图和五个关键点的笛卡尔坐标。右图。物体的鸟瞰图,同样的点转化为对称不变坐标(关键点2的坐标为d和θ)。
到对称轴的距离d:从 k i k_i ki点到对称轴的距离, s g t s_{gt} sgt。
沿对称轴h的高度: k i k_i ki在对称轴上的正交投影与笛卡尔坐标原点之间的距离。
相对角θ:连接点 k i k_i ki与对称轴的径向矢量与下一个关键点的径向矢量之间的分离角,当绕着 s g t s_{gt} sgt顺时针前进时。
新的坐标与圆柱坐标密切相关,我们用相对的键点间角代替绝对旋转角。基于对称性不变的变换,我们将对称类的多视角一致性损失重新定义为:
L m v c s y m = 1 K ∑ i ∣ ∣ ρ ( k i t ) − ρ ( [ Δ R t g t ∣ Δ t t g t ] k i t − 1 ) ∣ ∣ L_{mvc}^{sym}=\frac{1}{K}\sum_i||ρ(k_i^t)- ρ([\Delta{R}_t^{gt}|\Delta{t}_t^{gt}]k_i^{t-1})|| Lmvcsym=K1i∑∣∣ρ(kit)−ρ([ΔRtgt∣Δttgt]kit−1)∣∣
姿态估计损失也需要针对有对称轴的类别进行调整。虽然平移损失保持不变,但我们将旋转损失重新定义为对称轴方向的预测变化 Δ s ^ \Delta\hat{s} Δs^和地面真相变化 Δ s g t t \Delta{s_{gt}^t} Δsgtt之间的角差。那么,这些类别的旋转损失就是简单的:
L R s y m = arccos ( Δ s g t t ⋅ Δ s ^ t ∣ ∣ Δ s g t t ∣ ∣ ⋅ ∣ ∣ Δ s ^ t ∣ ∣ ) L_R^{sym}=\arccos(\frac{\Delta{s_{gt}}^t\cdot\Delta{\hat{s}^t}}{||\Delta{s_{gt}}^t||\cdot||\Delta{\hat{s}^t}||}) LRsym=arccos(∣∣Δsgtt∣∣⋅∣∣Δs^t∣∣Δsgtt⋅Δs^t)
我们提出了6-PACK,一个类别级的6D物体姿态跟踪器。我们的跟踪器是基于一种新型的基于锚点生成的神经网络,它可以可靠地检测同一类别不同实例上的相同关键点,并利用它们来估计姿势的帧间变化。我们的方法是以无监督的方式进行训练,以使网络能够选择最佳的关键点进行跟踪。我们将6-PACK与3D几何方法和深度学习模型进行了比较,表明我们的方法在一个具有挑战性的基于类别的6D物体姿态跟踪基准上达到了最先进的性能。此外,我们在HSR机器人平台上部署了6-PACK,并表明我们的方法可以实现实时跟踪和机器人交互。