侧边栏壁纸
  • 累计撰写 125 篇文章
  • 累计创建 16 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

【论文阅读:6DoF估计】 PoseCNN:用于杂乱场景中 6D 对象姿态估计的卷积神经网络

PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

摘要

  • 估计已知物体6DoF 对于机器人与现实世界的交互非常重要。目前主要存在的挑战是在场景中存在大量物体并且物体之间存在遮挡
  • PoseCNN 一种用于 6D 对象姿态估计的新型卷积神经网络。
    – 通过定位物体在图像中的中心并预测其与相机的距离来估计对象的 3D 平移
    – 通过回归四元数表示来估计对象的 3D 旋转
    – 引入了一种新的损失函数,使 PoseCNN 能够处理对称物体
  • 还为 6D 物体姿态估计贡献了一个名为 YCB-Video 数据集的大规模视频数据集
    – 提供了 21 个物体的准确 6D 姿势
    – 共 92 个视频中观察到,有 133,827 帧
  • PoseCNN 对遮挡具有高度鲁棒性,可以处理对称对象,并仅使用 RGB 图像作为输入提供准确的姿势估计
  • 当使用深度数据进一步细化姿势时,在具有挑战性的 OccludedLINEMOD 数据集上取得了最佳的结果。

简介

  • 传统方法采用将图像与已知物体三维模型特征点进行匹配实现的,但是该方法要求物体有较为丰富的纹理用于特征检测。
  • 随着深度相机的流行,RGBD数据被用于检测弱纹理物体。但就模板匹配法而言,遮挡严重影响识别。
  • 还有一些方法用像素回归物体位姿坐标,但是无法处理对称物体

文章提出了基于卷积神经网络端到端6DoF 估计方法:PoseCNN。一个关键思想是将姿势估计任务解耦不同的组件,这使网络能够明确地对它们之间的依赖性和独立性进行建模。如下图所示:

  • 具体而言,将其分为了三个任务。首先对输入图片进行像素级的语义分割
  • 其次,通过预测从每个像素到物体中心的单位向量来估计对象中心的二维像素坐标。 使用语义标签,与对象关联的图像像素对图像中的对象中心位置进行投票。 此外,网络还估计了物体中心的距离。 假设相机内参已知,我们就能够恢复其 3D平移 T\mathbf{T}
  • 最后,通过将物体边界框内提取的卷积特征回归到四元数表示来估计 3D旋转 R\mathbf{R}

文章的结论证明了,采用 2D 中心投票然后回归以估计 R\mathbf{R}T\mathbf{T} 可以应用于有纹理 /无纹理对象并且对遮挡具有鲁棒性,因为网络经过训练可以对物体中心进行投票,即使它们被遮挡。

⚠️如何处理对称物体是另一个棘手的问题。即使不同物体角度不同,可能有相同的预测结果,例如 对称性很强的碗和矿泉水瓶。这会严重影响网络的训练过程,因为网络会收到了不一致的损失函数信号,例如即使网络的估计相对于物体的对称性正确,但是由于与真值的差异而返回了高损失信号。文章引入了 ShapeMatch-Loss,这是一种新的损失功能,重点是匹配对象的3D形状

PoseCNNOccludedLINEMOD 数据集中进行了测试,基于RGB和RGBD(深度信息用于姿态细化)方法都得到了 SOTA 的结果。另外还提出了 YCB 数据集,其中有不同对称性的物体,并以各种姿势和空间排列配置,在它们之间还存在遮挡

该工作具有以下关键贡献:

  • 为物体姿势估计提出了一种新型的卷积神经网络:Posecnn。 实现了端到端的 6DoF 估计,并且对物体之间的遮挡很鲁棒。
  • 引入了 ShapeMatch-Loss,这是一种新的训练损失功能,用于对称对象的姿势估计。
  • 为物体姿势估算贡献了一个大规模的 RGB-D 视频数据集,提供21个物体的注释。

相关工作

目前物体姿势估计方法可以大致分为基于模板法基于特征法

模板法中,构建了一个固定模型并用于匹配输入图像中的不同位置。 在每个位置,都计算一个相似性得分,并通过比较这些相似性分数获得最佳匹配姿态

  • 通常通过渲染相应的3D模型获得模板
  • 最近,基于深度学习二维检测方法被用于模板检测,以增强物体姿势估计
  • 模板法可用于检测无纹理对象。 但是,不能很好地处理对象之间的遮挡,因为如果对象被遮挡,模板的相似性得分将较低

特征法中,局部特征是从图像中的特征点或每个像素中提取的,并与3D模型上的特征匹配以建立2D-3D对应关系,从中获得6D姿势。

  • 其能够处理物体之间的遮挡。 但是,它们需要在物体上有足够的纹理
  • 要处理无纹理的对象,建议使用机器学习来学习功能描述符
  • 也已经提出了几种方法,将每个像素的位置直接回归到3D物体坐标位姿,以建立2d-3d对应关系。 但是3D坐标回归在处理时遇到了歧义对称性物体

主要算法

对于给定输入图像,6D物体姿势估计的任务是估算从物体坐标系 OO相机坐标系 CC刚体转换。这里我们假设物体的3D模型可用,并且在模型的3D空间中物体坐标系已定义。

这里的刚性变换由包含3D旋转 R\mathbf{R}3D位移 T\mathbf{T}SE(3) 变换组成,其中 R\mathbf{R} 是物体坐标系统 OO 的X轴、Y轴和Z轴的旋转角度,T\mathbf{T} 为相机坐标系 CCOO 的坐标。

⚠️在成像过程中,T\mathbf{T} 确定物体位置比例,而 R\mathbf{R} 根据物体的3D形状和纹理影响物体的图像外观。 由于这两个参数具有不同的视觉属性,因此我们提出了一种卷积神经网络,该网络在内部解耦T\mathbf{T}R\mathbf{R} 的估计。

A:总体网络结构

下图是用于 6D 物体姿态估计的卷积神经网络架构,包含两个阶段。

  • 第一阶段由 13 个卷积层和 4 个最大池化层组成,它们从输入图像中提取不同分辨率的特征图。 这个阶段是网络的骨干,因为提取的特征在网络执行的所有任务中共享
  • 第二阶段包含一个嵌入步骤,将第一阶段生成的高维特征映射嵌入到低维、任务特定的特征中。
  • 然后,执行 6D 姿态估计的三个不同任务,即语义标记3D 平移估计3D 旋转回归

B:语义标记

采用语义分割检测图像中的物体,网络将每个像素分类为一个物体类。 与其他借助边界框进行物体检测的方法相比,语义提供了关于物体更丰富的信息并更好地处理相互遮挡问题

  • 语义分割分支的嵌入步骤将特征提取阶段生成的两个通道维度为 512 的特征图作为输入。
  • 首先使用两个卷积层将两个特征图的通道维度减少64
  • 两个特征图的分辨率分别是原始图像尺寸的 1/8 和 1/16,使用反卷积层1/16 特征图的分辨率加倍。
  • 之后,将两个特征图相加,并使用另一个反卷积层将分辨率提高8倍,以获得具有原始图像尺寸的特征图。
  • 最后,卷积层对特征图进行操作并为像素生成语义标记分数。 该层的输出有n 个通道,其中 n 个语义类的数量。
  • 在训练中,用 softmax 交叉熵损失函数来训练语义标记分支。 在测试中,使用 softmax 损失函数计算像素的类别概率

C:3D 平移估计

3D 平移 T\mathbf{T} = (Tx,Ty,Tz)T\left(T_x, T_y, T_z\right)^T物体原点相机坐标系中的坐标。 估计 T\mathbf{T} 的一种简单方法是直接将图像特征回归T\mathbf{T}。但是,这种方法无法使用,因为物体可以出现在图像中的任何位置。 此外,它无法处理同一类别中的多个实例

因此,提出了通过定位图像中的 2D 物体中心并估计物体与相机的距离来估计 3D 平移。 假设 T\mathbf{T} 在图像上的投影是 c=(cx,cy)T\mathbf{c}=\left(c_x, c_y\right)^T。 如果网络可以在图像中定位 c\mathbf{c}估计深度 TzT_z,那么我们可以假设针孔相机模型根据以下投影方程恢复 TxT_xTyT_y

[cxcy]=[fxTxTz+pxfyTyTz+py]\left[\begin{array}{l}c_x \\c_y\end{array}\right]=\left[\begin{array}{c}f_x \frac{T_x}{T_z}+p_x \\f_y \frac{T_y}{T_z}+p_y\end{array}\right]

其中 fxf_xfyf_y 表示相机焦距(px,py)T\left(p_x, p_y\right)^T分辨率一半,两者即为相机内参。如果物体原点 OO质心,则将 c\mathbf{c} 称为物体的二维中心

定位 2D物体中心的一种直接方法是像现有的关键点检测方法一样直接检测中心点。 但是,如果物体中心被遮挡,这些方法将不起作用。

受传统的隐式形状模型 (ISM) 的启发,图像中的像素投票选择物体中心,所以将网络设计为回归图像中每个像素指向中心的方向

具体而言,对图像上的一个像素点 p=(x,y)T\mathbf{p}=(x, y)^{T},需要回归三个变量

(x,y)(nx=cxxcp,ny=cyycp,Tz)(x, y) \rightarrow\left(n_{x}=\frac{c_{x}-x}{\|\mathbf{c}-\mathbf{p}\|}, n_{y}=\frac{c_{y}-y}{\|\mathbf{c}-\mathbf{p}\|}, T_{z}\right)

请注意,不是直接回归到位移向量 cp\mathbf{c}-\mathbf{p},而是回归到单位长度向量 n=(nx,ny)T=cpcp\mathbf{n}=\left(n_{x}, n_{y}\right)^{T}=\frac{\mathbf{c}-\mathbf{p}}{\|\mathbf{c}-\mathbf{p}\|},即二维中心方向,使得参数的尺度不变,更容易训练(通过实验验证)。

中心点回归分支使用与语义标记分支相同的架构,只是卷积层反卷积层通道维度不同:

  • 首先高维特征嵌入到 128 维空间而不是 64 维空间中,因为该分支需要为每个物体类回归三个变量。
  • 最后一个卷积层具有 3 × n 的通道维度,其中 n 是对象类别的数量。
  • 在训练中,平滑的 L1 损失函数用于回归变量。

为了找到物体的2D对象中心 c\mathbf{c},设计了一个霍夫投票层并将其集成到网络中。

  • 霍夫投票层将像素级语义分割结果和中心回归结果作为输入
  • 对于每个物体类别,它首先计算图像中每个位置的投票分数。 投票分数表示相应图像位置是类别中物体中心的可能性。
  • 具体来说,物体类中的每个像素沿着从网络预测的射线为图像位置进行投票,如下图所示。
  • 在处理了物体类所有像素后,获得了所有位置的投票分数。 然后选择得分最高的位置作为物体中心。
  • 对于同一物体类的多实例可能出现在图像中的情况,对投票分数应用非最大抑制,然后选择分数大于某个阈值的位置。

在生成一组物体中心后,将投票给物体中心的像素视为物体中心的内点。 然后物体中心的深度预测 TyT_y 被简单地计算为由内点预测深度的平均值。 最后使用针孔相机模型即可计算 3D 平移 T\mathbf{T}

此外,网络生成物体的边界框作为所有内点2D 矩形边界,边界框用于 3D 旋转回归

D:3D 旋转回归

  • 使用从 Hough 投票层预测的对象边界框,利用两个 RoI 池化层来“裁剪池化”网络第一阶段生成的视觉特征以进行 3D 旋转回归。
  • 合并后的特征图被加在一起并送入三个全连接 (FC) 层。 前两个 FC 层的维度为 4096,最后一个 FC 层的维度为 4 × n,其中 n 是物体类的数量
  • 对于每个类,最后一个 FC 层输出一个由四元数表示的 3D 旋转

为了训练四元数回归,提出了两个损失函数,其中一个专门设计用于处理对称物体

PLOSS

第一个损失函数称为 PoseLoss (PLOSS),在三维模型空间中操作,测量正确的模型姿势上的点和在模型上使用估计姿势相应点之间的平均平方距离。PLOSS被定义为:

PLOss(q~,q)=12mxMR(q~)xR(q)x2\operatorname{PLOss}(\tilde{\mathbf{q}}, \mathbf{q})=\frac{1}{2 m} \sum_{\mathbf{x} \in \mathcal{M}}\|R(\tilde{\mathbf{q}}) \mathbf{x}-R(\mathbf{q}) \mathbf{x}\|^{2}

其中 M\mathcal{M} 表示 3D 模型点集mm点数R(q~)R(\tilde{\mathbf{q}})R(q)R(\mathbf{q}) 分别表示根据估计的四元数和真值四元数计算的旋转矩阵

估计姿势真实姿态相同时,这种损失函数有其独特的最小值。不幸的是,PLOSS 不能适当地处理对称对象,因为对称对象可以有多个正确的 3D 旋转在对称对象上使用这样的损失函数会不必要地惩罚网络回归到替代 3D 旋转之一,从而提供可能不一致的训练信号。

SLOSS

虽然 PLOSS 有可能被修改以处理对称的物体,通过手动指定物体的对称性,然后考虑所有正确的姿态作为真值,但这里介绍 ShapeMatch-Loss(SLOSS),一个不需要指定对称性的损失函数。SLOSS被定义为:

SLosS(q~,q)=12mx1Mminx2MR(q~)x1R(q)x22\operatorname{SLosS}(\tilde{\mathbf{q}}, \mathbf{q})=\frac{1}{2 m} \sum_{\mathbf{x}_{1} \in \mathcal{M}} \min _{\mathbf{x}_{2} \in \mathcal{M}}\left\|R(\tilde{\mathbf{q}}) \mathbf{x}_{1}-R(\mathbf{q}) \mathbf{x}_{2}\right\|^{2}

就像 ICP 一样,这个损失测量的是估计模型姿态上的每个点和真实模型上最接近的点之间的偏移SLOSS 是最小的当两个三维模型相互匹配时,SLOSS最小。这样一来,SLOSS就不会惩罚那些与物体的三维形状对称性旋转

YCB 视频数据集

以物体为中心的数据集为物体的姿势分割提供真实的注释,但由于注释通常是手工提供的,因此规模有限。例如,流行的 LINEMOD 数据集为数据集中的15个物体中的每一个提供了大约1000张图像人工注释。虽然这样的数据集对于评估基于模型的姿势估计技术很有用,但它比训练先进的深度神经网络的典型数据集要小很多。解决这个问题的一个办法是用合成图像来增加数据。然而,必须注意确保真实场景和渲染场景之间的性能通用

A. 6D姿势注释

为了避免手动注释所有的视频帧,我们只在每个视频的第一帧中手动指定物体的姿势。使用每个物体的有符号距离函数(SDF)表示,我们在第一个深度帧中细化每个物体的姿势。接下来,通过固定物体的相对位置并通过深度视频跟踪物体的配置,初始化摄像机的轨迹。最后,在全局优化步骤中完善相机轨迹相对物体的姿势

B. 数据集特征

完整的数据集包括133,827张图像,比LINEMOD数据集整整大了两个数量级。

注释准确性受到几个错误来源的影响,包括RGB传感器的滚动快门物体模型的不准确性RGB和深度传感器之间的轻微不同步,以及相机的内外参数的不确定性。

0

评论区