论文地址
我们介绍了一个基于Transformer的6D对象姿态估计框架VideoPose,包括一个端到端基于注意力的建模体系结构。以估计视频中准确的6D物体姿势。我们的方法利用视频序列的时间信息进行姿态细化,计算效率高,鲁棒性好。与现有的方法相比,我们的体系结构能够有效地捕获和推理远程依赖关系,从而迭代地优化视频序列。对YCB-Video数据集的实验评估表明,我们的方法与最先进的Transformer方法相当,并且性能明显优于基于CNN的方法。此外,在33帧/秒的速度下,它也更有效,因此适用于各种需要实时物体姿态估计的应用程序。训练代码和预训练模型可从https://github.com/ApoorvaBeedu/VideoPose获得。
估计图像中每个物体的3D平移和3D旋转是机器人技术[44,48,14]和增强现实[35]中许多应用的核心构建块。经典的6-DOF姿态估计问题利用特征点匹配机制,然后通过透视n-点(PnP)来修正估计的姿态[41,47,40,21]。然而,这种方法却失败了 当对象为无纹理或严重遮挡时。改进6自由度估计的典型方法包括使用额外的深度数据[51,7,18,25]或后处理方法,如迭代最接近Point(ICP)或其他基于深度学习的渲染方法[56,23,30,45],这增加了计算成本。其他方法将其视为一个分类问题[49,23],导致减少每表现为输出空间不是连续的。
在机器人、增强现实和移动应用程序中,输入信号通常是视频而不是单个图像,因此,为多视图框架提供了机会。Li等人[28]利用不同视角的多个帧来估计单个物体的姿态。Wen等人[55]和Deng等人[13]使用跟踪方法来估计姿势,但是这些方法没有明确利用视频中的时间信息。使用多个帧来估计物体姿态的想法已经看到了有限的探索。由于视频序列中的物体姿态隐式地与相机转换相关,不会在帧之间突然改变,并且由于物体的不同视点有助于姿态估计[27,12],我们认为,建模的时间关系只能帮助有效地完成任务。
基于此,我们引入了一个基于视频的物体6D姿态估计框架,该框架使用过去的估计将6D姿态绑定到当前帧中。具体来说,我们利用了流行的Transformer架构[50,42],并使用了因果屏蔽注意,其中每个输入帧只允许关注它前面的帧。我们训练模型共同预测6D姿势,同时也学习准确预测未来的特征,以匹配真实的特征。在[15]中采用了这样的设置,这表明预测未来特征是学习视觉表征的一个有效的自我监督托词任务。
虽然上面描述的时间架构可以应用于任何可视化特征编码器之上(如在消融中所讨论的),但我们提出了一个纯基于Transformer的模型,该模型使用Swin Transformer[32]作为主干。这使得我们的网络不仅在时间上关注视频中的帧,而且在帧中的空间上也关注。
综上所述,本文的贡献如下:
估计场景中物体的六自由度姿态是一项被广泛研究的任务。经典的方法要么使用基于模板的方法,要么使用基于特征的方法。在基于模板的方法中,将模板与图像中的不同位置进行匹配,并计算相似度评分[18 17]。然而,这些模板匹配方法可能无法对无纹理的对象和杂乱的环境进行预测。在基于特征的方法中,提取局部特征,利用PnP建立已知3D对象与局部2D特征之间的对应关系,恢复6D姿态[43 39]。然而,这些方法也需要对象上足够的纹理来计算局部特征,并且由于它们通常是在小数据集上训练,因此在很好地推广到新环境中面临困难。
卷积神经网络(CNNs)在许多计算机视觉任务中被证明是一种有效的工具。然而,它们严重依赖于大规模注释数据集的可用性。由于这一限制,引入了YCB-Video[56]、T-LESS[19]和OccludedLINEMOD数据集[26,40]。它们促成了新颖网络设计的出现,如PoseCNN[56]、DPOD[59]、PVNet[40]等[8 52 16]。10. 在本文中,我们使用了具有挑战性的YCB-Video数据集,因为它是一个流行的数据集,可以作为许多近期方法的测试平台[2 13]。
在这些数据集的基础上,引入了各种CNN体系结构来学习对象的有效表示,并估计精确的6D姿态。Kehl等人[23]通过向网络添加额外的视点分类分支来扩展SSD[31],而[441 47]则通过3D边界盒估计来预测2D投影。其他方法包括一种混合方法,其中模型学习执行多个任务,例如Song等人。[45]加强关键点、边缘和对象对称性之间的一致性,Billings等人6预测对象的轮廓和对象的姿势。设计能够处理新对象的模型不可知特性[53]也是一个日益增长的趋势。最后,少拍、单拍和类别级别的姿态估计最近也引起了越来越多的兴趣[II 54]
为了细化预测的姿态,一些作品使用额外的深度信息并执行标准的ICP算法[56,23],直接从RGB-D输入[5I, 30,59]学习,或通过神经渲染[57 22 30 33]。我们认为,由于机器人和/或移动设备的输入信号通常是视频序列,而不是严重依赖使用附加深度信息和渲染的后处理细化,通过利用时间数据估计视频中的姿势已经可以细化单个姿势估计。最近,一些跟踪算法正在利用视频来估计物体的姿态。邓等人的一项著名工作。[13]介绍了PoseRBPF算法,该算法使用粒子滤波器跟踪视频序列中的对象。然而,这种最先进的算法提供了精确的估计,但计算成本很高。Wen等人[55]也执行跟踪,但使用前一个时间步的对象的合成渲染。
随着自我注意模型和Transformer架构的兴起[50,42,58],我们也看到了对基于视觉的变压器的兴趣增加[3 32,5]。这导致了transformer在其他应用中的应用,如物体检测[9,62]和人体姿态估计[60,61,29,36,34],以及物体姿态估计[37,2 1]。TD6-Direct构建在检测变压器(DETR)[9体系结构上,直接回归到姿势,而[2]使用变压器预测关键点,然后进行关键点回归。与这些作品相比,我们使用Transformer模型来关注视频中的一组帧,并直接回归到6D姿势。由于变压器使用自注意机制,我们的框架能够从之前的框架中学习和改进6D姿势,而不需要额外的后期处理改进。
给定一个RGB-D视频流,我们的目标是估计视频中每一帧中所有物体的3D旋转和3D平移。我们假设系统可以访问对象的3D模型。在接下来的部分中,R表示相对于标注的标准物体姿态的旋转矩阵,T是物体到相机的平移。
如图O所示,我们的管道是一个两级网络。第一阶段包括特征提取模块;我们使用Swin转换器[32]来学习视频中每一帧的视觉特征。对于给定的视频序列及其相应的深度,变压器编码器给我们一个形状为btn*768的特征向量,其中b对应于批大小,t对应于时间长度,n对应于图像中物体的数量。
姿态估计依赖于精确的目标检测,从而获得类id和感兴趣区域(ROI)。在训练过程中,我们使用ground truth边界框,而在测试过程中,我们使用来自PoseCNN模型的预测和边界框。这可能被任何轻量级特征提取模型(如MobileNet[20],或DETR[9]——一个基于变压器的对象检测模块)取代,从而使推断更快。我们还使用深度作为额外的输入。
在本文中,我们使用地真深度图像;但是,它们可以被其他深度估计模块代替。
图6:用于6D物体姿态估计基线的VideoPose框架概述。我们使用与[56]相同的编码器
图1:6D物体姿态估计框架概述。我们使用Swin变压器[32]作为变压器编码器,GPT2[42]作为视频变压器解码器。未来特征预测器和姿态回归器由一个2层MLP组成,在图2中进一步描述
图2:(左)姿态回归器§:来自时间解码器的特征通过一个线性层,然后通过3个独立的线性层来估计R, (Tz, Ty)和Tz。(右)未来特征预测器(F):解码器的特征通过2层MLP来预测未来的特征。
给定编码器提取的特征,解码器注意先前的特征并使用姿态回归器预测6D姿态,使用未来特征预测器网络预测未来帧的特征。我们用表示已解码的特征,用表示预测的未来特征。具体地说,
在图2中可以看到姿态回归器§体系结构,旋转R和平移T有一个共同的线性层,然后分支到三个不同的线性层。由于R, (T, Ty)和T占据了不同的潜在空间,我们认为最好将它们分开学习,而不是像[RIT]这样一个由7个值组成的单一向量。
平移向量T是物体在摄像机坐标系中的位置。估计T的一种简单的方法是直接回归到它。然而,这样做不能处理多个对象实例或很好地泛化到新对象。为了解决这个问题,Xiang等人[56]通过定位图像中的二维物体中心和估计物体到相机的距离来估计T。设c = (cx, Cy)T为帧内物体的中心,Tz从深度图像中学习或估计,则Tx和Ty可估计为:
其中fr和fy为焦距,(Pr,Py)T为主点。由于我们从有噪声的对象检测输入中粗略估计了对象位置,我们训练我们的模型来估计Δc, Acy和T2。然后我们估计Tr和T,使用下面的等式:
与[56]类似,我们用四元数表示旋转R: R = {w, z, y, z}。然而,我们只预测x, y, z的值,并推断w,真实值为:
我们注意到这样做有助于训练过程,学习到的四元数更有界。
姿态估计损失是通过利用估计的姿态和地面真实姿态投影三维点,然后计算它们的l2距离得到的:
其中M为三维点集合,m为点总数。R(q)和R(q)表示由[56]中的四元数表示计算出的旋转矩阵。此外,我们还在四元数上添加一个余弦损失和一个正则化损失,以迫使四元数的范数为1。表示旋转的四元数是单位范数,强制范数以1为界有助于消除所有不合理的向量组合,从而帮助学习过程。
除了这些损失,受[15]的启发,我们添加了一个未来的特性损失,定义为:
总损失的定义为
VideoPose是使用PyTorch[38]框架实现的。我们使用le-4的学习速率和重量衰减为le-6的亚当优化器[24]。我们使用了简化的高原调度器,它在3个时期的耐心下将学习率降低了0.9倍。我们创建了5|帧的视频样本,并使用上面描述的学习计划训练我们的模型20个epoch。训练在4A40gpu上进行1周或20个阶段,以先发生者为准。
在训练过程中,我们用颜色抖动和噪声增加输入图像,并通过在对象高度和宽度的0到10%之间随机扩展高度和宽度来增加边界框。在训练时间块的同时,我们在中间创建了随机时间跳跃的视频。例如,给定一个大型视频序列,我们创建视频样本1:n: 10 * n,其中n是1到10之间的随机数,从而迫使模型考虑连续帧之间的大大小小的跳跃。
我们将我们的框架与PoseCNN[56], PoseRBPFI13]和最近的基于图像的变压器模型T6D-Direct d进行了比较,据我们所知,这项工作首次尝试直接从视频中预测姿态。因此,我们还使用PoseCNN体系结构创建了一个更简单的视频基线,用于特征提取,并使用ConvGRU对时间信息建模,如图3所示.有关基线的详情载于附录A。
图3:我们的6D物体姿态估计的基线框架的概述。我们使用PoseCNN编码器[56]作为特征提取器,并使用一个ConvGRU [4]作为时间解码器。回归模块类似于图2。
我们在YCB-Video数据集[56]上评估了所提出的方法(参考参见第3.5节)。它包含了21个物体的92个RGB-D视频序列,并包含了不同形状的纹理和无纹理的物体,以及不同程度的遮挡,其中约15%的物体是严重遮挡的。对象使用6D姿势、分割掩模和深度图像进行注释。
我们使用两个指标报告性能:(i) ADD,这是在地面真实的3D物体的对应点与预测姿态之间的平均距离;和(i) ADD-S,它是为对称物体设计的,计算从每个3D点到目标模型上最近点的平均距离。
图4:旋转和平移的精度阈值曲线,以及YCB-Video数据集中少数对象的重投影误差。Emerald用于绘制PoseCNN曲线,橙色用于绘制带有GT边界框的VideoPose Transformer,紫色用于绘制带有来自PoseCNN体系结构的边界框的VideoPose Transformer。
图5:在YCB-数据集上的估计姿态的可视化:每一行代表不同时间步长的结果。这些专栏分别包括视频姿势、Posecnn和地面真相可视化。
在这项工作中,我们引入了一个端到端基于自注意的变压器网络来估计6D物体的姿态,称为VideoPose。我们证明,通过使用前一帧的6D预测,我们可以显著改善后续帧的6D预测。我们还对网络的不同设计选择进行了广泛的消融研究,并表明,无论网络选择如何,我们的模型都能够从之前的预测中学习和利用特征。最后,所提出的网络以33帧/秒的速度实时执行,从而比以前的方法提高了时间效率。作为未来的工作,我们想进一步改进我们的架构与更好的时间模块和模型与相机转换和对象的关系。随着T6D-Direct单级网络的改进,随着物体的姿态检测物体,我们希望在未来的工作中也探索这一想法。该方法成功地保持了帧间姿态估计的一致性,但仍然依赖于初始帧估计和准确的包围盒预测。我们希望进一步研究如何改进这一点,同时保持/提高计算效率。