PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes
优快云链接:论文笔记《PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes》-优快云博客
Abstract
对一个已知物体进行6D姿态估计对于机器人与现实世界的交互是非常重要的。
但是由于对象的多样性、对象的杂乱以及对象之间的遮挡引起的复杂性,这个问题是具有挑战性的。
所以这篇文章提出了PoseCNN,一种新的卷积神经网络。PoseCNN通过定位物体在图像中的中心并预测其到相机的距离来估计物体的3D平移。通过回归到四元数表示来估计物体的3D旋转。
然后这里提出了一种现代的损失函数,能够让PoseCNN有处理对称对象的能力。
I. INTRODUCTION
应用场景:
- 机器人操作需要识别物体的3D位置和方向
- 机器人可以从演示中学习
挑战:
- 对象具有多样性
- 对象有不同的3D形状
- 对象在图像中的外观受光照、物体之间的杂乱和物体之间的相互遮挡所影响
在传统方法中,6D姿态估计问题是通过3D模型与图像之间的特征点匹配来解决的[20, 25, 8]。然而,这要求物体具有丰富的纹理。这就导致了传统方法无法处理无纹理对象。
随着深度相机的出现,人们提出了几种使用RGB-D数据来识别无纹理物体的方法[13, 3, 2, 26, 15]。
但是对于基于模板的方法[13, 12],遮挡显著降低了识别性能。
对于通过学习将图像像素回归到3D对象坐标以建立用于6D姿态估计的2D-3D对应关系的方法[3, 4]不能处理对称对象。
PoseCNN背后的一个关键思想是将姿态估计任务解耦为不同的组件,这使得网络能够显式地建模它们之间的依赖和独立。
PoseCNN执行三个相关任务,如图1所示:
-
首先,它为输入图像中的每个像素预测一个对象标签,做语义分割。
-
其次,通过预测从每个像素到中心的单位向量来估计目标中心的2D像素坐标。
使用语义分割标签,与对象相关联的图像像素会在图像中投票选出对象中心位置。
此外,该网络还可以估算物体中心的距离。
假设已知相机特性,估计2D对象中心和它的距离能够让我们还原它的3D平移 T \mathbf{T} T。
-
最后,通过将bounding box内提取的卷积特征回归到 R \mathbf{R} R的四元数表示来估计3D旋转 R \mathbf{R} R。
正如我们将展示的,先进行2D中心投票,然后进行旋转回归来估计 R \mathbf{R} R和 T \mathbf{T} T,可以应用于纹理/无纹理的物体。
并且因为网络被训练去给物体的中心投票,所以对遮挡是鲁棒的。
处理对称对象是姿态估计的另一个挑战,因为不同的对象方向可能产生相同的观察结果。例如,不可能唯一地估计红色碗(第三行第三个)或木块(第三行第四个)的方向,如图5所示:
虽然像OccludedLINEMOD数据集[17]这样的基准数据集考虑对这些对象进行特殊的对称评估,但在网络训练期间,对称性通常会被忽略。
然而,这可能会导致糟糕的训练性能,因为网络接收到不一致的损失信号,例如在目标方向上的高损失,即使从网络中估计的对象的对称性是正确的。
受此启发,我们引入了ShapeMatch-Loss,这是一个新的损失函数,专注于匹配对象的3D形状。
我们将证明这个损失函数对具有形状对称性的物体产生了更好的估计。
我们在OccludedLINEMOD数据集[17]上评估了我们的方法,这是一个用于6D姿态估计的基准数据集。在这个具有挑战性的数据集上,PoseCNN实现了纯颜色和RGB-D姿态估计的最新结果(我们在迭代最近点(ICP)算法中使用深度图像进行姿态优化)。
综上所述,我们的工作有以下主要贡献:
- 我们提出了一种用于6D目标位姿估计的卷积神经网络,命名为PoseCNN。我们的网络实现端到端的6D姿态估计,并且对物体之间的遮挡非常鲁棒。
- 提出了一种用于对称目标位姿估计的训练损失函数ShapeMatch-Loss。
- 我们为6D对象的姿态估计提供了一个大尺度RGB-D视频数据集,其中我们为21个YCB对象提供了6D姿态标注。
II. RELATED WORK
文献中的6D目标位姿估计方法大致可以分为基于模板的方法和基于特征的方法。
在基于模板的方法中,构造一个刚体模板,用于扫描输入图像中的不同位置。在每个位置,计算一个相似度得分,通过比较这些相似度得分得到最佳匹配[12, 13, 6]。在6D位姿估计中,通常通过渲染相应的3D模型来获得模板。最近,2D目标检测方法被用于模板匹配和6D姿态估计,特别是基于深度学习的目标检测器[28, 23, 16, 29]。基于模板的方法在检测无纹理对象方面很有用。但是,它们不能很好地处理对象之间的遮挡,因为如果对象被遮挡,模板的相似度分数会很低。
在基于特征的方法中,从感兴趣的点或图像中的每个像素点提取局部特征,并与3D模型上的特征进行匹配,建立2D-3D对应关系,从而恢复6D姿态[20, 25, 30, 22]。基于特征的方法能够处理物体之间的遮挡。然而,为了计算局部特征,它们需要在对象上有足够的纹理。为了处理无纹理对象,提出了几种使用机器学习技术学习特征描述符的方法[32, 10]。已经有若干种对于每个像素直接回归到3D对象坐标来建立2D-3D对应关系的方法被提出了[3, 17, 4]。但是3D坐标回归在处理对称对象时遇到了歧义。
在这项工作中,我们在深度学习框架中结合了基于模板的方法和基于特征的方法的优点,其中网络结合了自底向上像素标记和自顶向下对象姿态回归。最近,由于亚马逊拾取挑战(APC)的竞争,6D物体的姿态估计问题得到了更多的关注。APC中针对特定的设置引入了几种数据集和方法[24, 35]。只要提供适当的训练数据,我们的网络有潜力应用于APC设置。
III. POSECNN
给定一幅输入图像,6D目标位姿估计的任务是估计从目标坐标系 O O O到摄像机坐标系 C C C的刚性变换。我们假设对象的3D模型是可用的,并且对象的坐标系统定义在模型的3D空间中。这里的刚性变换由一个包含3D旋转R和3D平移T的SE(3)变换组成,其中 R \mathbf{R} R表示围绕对象坐标系 O O O的X轴、Y轴和Z轴的旋转角度, T \mathbf{T} T是摄像机坐标系 C C C中 O O O的原点的坐标。
在成像过程中, T \mathbf{T} T决定了物体在图像中的位置和比例,而 R \mathbf{R} R根据物体的3D形状和纹理影响物体的图像外观。由于这两个参数有不同的视觉特性,我们提出了一个卷积神经网络结构,内部解耦 R \mathbf{R} R和 T \mathbf{T} T的估计。
A. Overview of the Network
图2说明了我们用于6D目标姿态估计的网络结构:
网络包含两个阶段。
第一阶段由13个卷积层和4个maxpooling层组成,从输入图像中提取不同分辨率的特征图。这个阶段是网络的主干,因为所提取的特征在网络执行的所有任务中共享。
第二阶段包括一个嵌入步骤,将第一阶段生成的高维特征映射嵌入到低维、特定于任务的特征中。然后,网络执行6D姿态估计的三个不同任务,即语义标记、3D平移估计和3D旋转回归,如下所述。
B. Semantic Labeling
为了检测图像中的对象,我们采用语义标记,网络将每个图像像素分类成一类(这个像素如果属于罐头,那么这个像素就被分类为罐头类)。
与最近借助于bounding boxes目标检测的6D位姿估计方法[23, 16, 29]相比,语义分割标记能够提供更丰富的对象信息,并且能够更好的处理遮挡。
语义标注分支的嵌入步骤如图2所示,以特征提取阶段生成的两个通道尺寸为512的特征映射作为输入。两种特征图的分辨率分别为原始图像尺寸的 1 8 \frac{1}{8} 81和 1 16 \frac{1}{16} 161。该网络首先使用两个卷积层将两个特征映射的信道维数降至64。然后用反卷积层将 1 16 \frac{1}{16} 161特征图的分辨率提高一倍。然后将两个feature map求和,再用另一个反卷积层将分辨率提高8倍,得到与原始图像大小一致的feature map。最后,卷积层对特征图进行操作,生成像素的语义标记分数。过程如下图:
这一层的输出有 n n n个通道和 n n n个语义类的数量。在训练中,采用softmax交叉熵损失训练语义标注分支。在测试过程中,使用softmax函数计算像素的类概率。语义标注分支的设计灵感来自于[19]中用于语义标注的全卷积网络。
C. 3D Translation Estimation
3D平移 T = ( T x , T y , T z ) T \mathbf{T} = (T_x, T_y, T_z)^\mathrm{T} T=(Tx,Ty,Tz)T是物体原点 O O O在摄像机坐标系 C C C中的坐标,如图3所示:
估计 T \mathbf{T} T的一种简单方法是直接将图像特征回归到 T \mathbf{T} T。但是,由于对象可以出现在图像中的任何位置,所以这种方法是不可泛化的(不能将图像的位置和物体的类型进行关联,这是不对的)。此外,它不能处理同一类别中的多个对象实例。
因此,我们提出通过定位图像中的2D目标中心,估计目标到摄像机的距离来估计3D平移量。
假设
T
\mathbf{T}
T在图像上的投影为
c
=
(
c
x
,
c
y
)
T
\mathbf{c} = (c_x, c_y)^\mathrm{T}
c=(cx,cy)T。对于针孔摄像机来说,如果网络能够在图像中定位
c
\mathbf{c}
c并估计出深度
T
z
T_z
Tz,那么我们可以根据下面的投影方程恢复
T
x
T_x
Tx和
T
y
T_y
Ty:
[
c
x
c
y
]
=
[
f
x
T
x
T
z
+
p
x
f
y
T
y
T
z
+
p
y
]
\begin{bmatrix} c_x \\ c_y \end{bmatrix} = \begin{bmatrix} f_x\frac{T_x}{T_z} + p_x \\ f_y\frac{T_y}{T_z} + p_y \end{bmatrix}
[cxcy]=[fxTzTx+pxfyTzTy+py]
其中
f
x
f_x
fx和
f
y
f_y
fy表示相机的焦距,
(
p
x
,
p
y
)
T
(p_x, p_y)^\mathrm{T}
(px,py)T是主点(相机原点)。
针孔相机模型:
下图将成像平面平移到了小孔处:
那么显然,下图中的 △ P ′ O B \bigtriangleup P^\prime OB △P′OB与 △ P O A \bigtriangleup POA △POA是相似的:
假设图中 P P P点的坐标为 ( T x , T y , T z ) (T_x, T_y, T_z) (Tx,Ty,Tz), P ′ P^\prime P′点的坐标为 ( c x , c y ) (c_x, c_y) (cx,cy),那么有:
c x f = T x T z c y f = T y T z \begin{aligned} \frac{c_x}{f} &= \frac{T_x}{T_z} \\ \frac{c_y}{f} &= \frac{T_y}{T_z} \end{aligned} fcxfcy=TzTx=TzTy
那么可得:
c x = f T x T z c y = f T y T z \begin{aligned} c_x &= f\frac{T_x}{T_z} \\ c_y &= f\frac{T_y}{T_z} \end{aligned} cxcy=fTzTx=fTzTy
又小孔成像模型的原点在图像的中心位置,数字图像处理的原点在图像的左上角,所以需要一个偏移量 ( p x , p y ) (p_x, p_y) (px,py):
c x = f T x T z + p x c y = f T y T z + p y \begin{aligned} c_x &= f\frac{T_x}{T_z} + p_x \\ c_y &= f\frac{T_y}{T_z} + p_y \end{aligned} cxcy=fTzTx+px=fTzTy+py
即:
[ c x c y ] = [ f x T x T z + p x f y T y T z + p y ] \begin{bmatrix} c_x \\ c_y \end{bmatrix} = \begin{bmatrix} f_x\frac{T_x}{T_z} + p_x \\ f_y\frac{T_y}{T_z} + p_y \end{bmatrix} [cxcy]=[fxTzTx+pxfyTzTy+py]
如果物体原点 O O O是物体的质心,我们称 c \mathbf{c} c为物体的2D中心(即物体在图像上的位置)。
一种直接定位2D目标中心(注意这里说的是中心,需要与后面的内点做区分)的方法是像现有的关键点检测方法一样直接检测中心点[22, 7]。然而,如果对象中心被遮挡,这些方法将不起作用。
在隐式形状模型(ISM, Implicit Shape Model)中,为了进行检测,图像块会对物体中心进行投票,受该模型的启发,我们设计了我们的网络以回归预测出图像中每个像素的中心方向。
具体来说,对于图像上的像素
p
=
(
x
,
y
)
T
\mathbf{p} = (x, y)^\mathrm{T}
p=(x,y)T,它回归到三个变量(这里顺便回归出了内点的深度,因为遮挡,不能直接回归物体中心的深度):
(
x
,
y
)
→
(
n
x
=
c
x
−
x
∥
c
−
p
∥
,
n
y
=
c
y
−
y
∥
c
−
p
∥
,
T
z
)
(x, y) \to \left(n_x = \frac{c_x - x}{\Vert\mathbf{c} - \mathbf{p}\Vert}, n_y = \frac{c_y - y}{\Vert\mathbf{c} - \mathbf{p}\Vert}, T_z\right)
(x,y)→(nx=∥c−p∥cx−x,ny=∥c−p∥cy−y,Tz)
注意,我们没有直接回归到位移矢量
c
−
p
\mathbf{c} - \mathbf{p}
c−p,而是将网络设计成回归到单位长度矢量
n
=
(
n
x
,
n
y
)
T
=
c
−
p
∥
c
−
p
∥
\mathbf{n} = (n_x, n_y)^\mathrm{T} = \frac{\mathbf{c} - \mathbf{p}}{\Vert\mathbf{c} - \mathbf{p}\Vert}
n=(nx,ny)T=∥c−p∥c−p,即2D中心方向,它是尺度不变的,因此更容易训练(正如我们通过实验验证的那样)。
我们网络的中心回归分支(图2)与语义标记分支采用相同的架构,只是卷积层和反卷积层的通道维数不同。我们将高维特征嵌入到128维空间而不是64维空间,因为这个分支需要为每个对象类回归到三个变量。该分支的最后一个卷积层的通道维数为 3 × n 3 \times n 3×n,对象类数为 n n n。在训练中,使用平滑的L1损失函数进行回归,如[11]。
为了找到一个对象的2D对象中心 c \mathbf{c} c,设计了一个Hough投票层并集成到网络中。Hough投票层采用像素级语义标记结果和中心回归结果作为输入。对于每个对象,它首先计算图像中每个位置的投票分数。投票分数表明该位置是对象中心的可能性有多大。具体地说,对象中的每一个像素都会在网络预测出的方向上投票,见图4:
在处理对象中的所有像素后,我们获得所有图像位置的投票分数。然后得分最高的位置就作为目标中心。
对于同一对象可能多次出现在图像中的情况,我们对投票分数应用非极大值抑制,然后选择分数大于某一阈值的位置。
在生成一组对象中心后,我们认为投票给对象中心的像素是中心的内层。然后将中心 T z T_z Tz的预测深度简单地计算为内层预测深度的平均值。最后,利用公式 [ c x c y ] = [ f x T x T z + p x f y T y T z + p y ] \begin{bmatrix}c_x \\ c_y\end{bmatrix} = \begin{bmatrix} f_x\frac{T_x}{T_z} + p_x \\ f_y\frac{T_y}{T_z} + p_y\end{bmatrix} [cxcy]=[fxTzTx+pxfyTzTy+py],我们可以估计出3D平移 T \mathbf{T} T。
此外,网络生成对象的bounding box作为约束所有内层的2D矩形,该bounding box用于3D旋转回归。
D. 3D Rotation Regression
图2的最下方为3D旋转回归分支。
利用Hough投票层预测的对象的bounding boxes,我们可以用两个RoI池化层[11]对网络第一阶段生成的视觉特征进行“裁剪和池化”,用于3D旋转回归。合并的特征映射被加在一起,并馈送到三个全连接(FC)层中。前两个FC层的维数为4096,最后一个FC层的维数为 4 × n 4 \times n 4×n,对象类数为 n n n。对于每个类,最后一个FC层输出一个四元数表示的3D旋转。
为了训练四元数回归,我们提出了两个损失函数,其中一个是专门设计用于处理对称对象。
第一个损失函数称为PoseLoss(PLOSS),它在3D模型空间中运行,并使用正确模型位姿和估计模型位姿两个位姿之间的对应点来测算平均平方距离。
PLOSS定义为:
PLOSS
(
q
~
,
q
)
=
1
2
m
∑
x
∈
M
∥
R
(
q
~
)
x
−
R
(
q
)
x
∥
2
\text{PLOSS}(\tilde{\mathbf{q}}, \mathbf{q}) = \frac{1}{2m}\sum_{\mathbf{x} \in \mathcal{M}}\Vert R(\tilde{\mathbf{q}})\mathbf{x} - R(\mathbf{q})\mathbf{x}\Vert^2
PLOSS(q~,q)=2m1x∈M∑∥R(q~)x−R(q)x∥2
M
\mathcal{M}
M为3D模型点集,
m
m
m为点个数。
R
(
q
~
)
R(\tilde{\mathbf{q}})
R(q~)和
R
(
q
)
R(\mathbf{q})
R(q)分别表示由估计的四元数和GT四元数计算得到的旋转矩阵。当估计方向与GT方向相同时,该损失有其唯一的最小值。
不幸的是,PLOSS不能适当地处理对称对象,因为一个对称对象可以有多个正确的3D旋转。在对称物体上使用这样的损失函数会对网络进行不必要的惩罚,因为它会回归到一个可选的3D旋转中,因此可能会给出不一致的训练信号。
虽然可以通过手动指定对象对称性,然后考虑所有正确的方向作为GT选项来修改PLOSS,进而处理对称对象,但我们在这里仍然要引入ShapeMatch-Loss(SLOSS),这是一个不需要指定对称性的损失函数。
SLOSS定义为:
SLOSS
(
q
~
,
q
)
=
1
2
m
∑
x
1
∈
M
min
x
2
∈
M
∥
R
(
q
~
)
x
1
−
R
(
q
)
x
2
∥
2
\text{SLOSS}(\tilde{\mathbf{q}}, \mathbf{q}) = \frac{1}{2m}\sum_{\mathbf{x}_1 \in \mathcal{M}}\min_{\mathbf{x}_2 \in \mathcal{M}}\Vert R(\tilde{\mathbf{q}})\mathbf{x}_1 - R(\mathbf{q})\mathbf{x}_2\Vert^2
SLOSS(q~,q)=2m1x1∈M∑x2∈Mmin∥R(q~)x1−R(q)x2∥2
我们可以看到,就像ICP一样,这个损失测量的是估计模型方向上的每个点与GT模型上最近的点之间的偏移。当两个3D模型匹配时,SLOSS最小。
通过这种方式,SLOSS将不会惩罚相对于对象的3D形状对称等效的旋转。
IV. THE YCB-VIDEO DATASET
因为标签是手动添加的,所以以对象为中心的为对象位姿和/或分割提供GT的数据集不会太大。例如,流行的LINEMOD数据集[13]为数据集中的15个对象中的每个对象提供了大约1000张图像的手动注释。虽然这样的数据集对基于模型的姿态估计技术的评估是有用的,但它比训练最先进的深度神经网络的典型数据集要小几个数量级。这个问题的一个解决方案是用合成图像来扩充数据。但是,必须注意确保在真实场景和渲染场景之间的性能是通用的。
A. 6D Pose Annotation
为了避免手动注释所有的视频帧,我们只在每个视频的第一帧手动指定对象的姿势。我们在第一个深度帧中细化每个对象的姿态,使用每个对象的符号距离函数(SDF, Signed Distance Function)表示。接下来,通过固定物体相对于其他物体的姿态并通过深度视频跟踪物体的配置来初始化摄像机的轨迹。最后,对摄像机轨迹和相对目标位姿进行全局优化。
B. Dataset Characteristics
我们使用的对象是如图5所示的21个YCB对象[5]的一个子集:
选择这些对象是因为高质量的3D模型和良好的深度可见性。视频采集使用华硕Xtion Pro Live RGB-D相机,采用快速裁剪模式,通过在本地设备上捕获1280x960图像,并通过USB只传输中心区域,以30帧/秒的速度提供640x480分辨率的RGB图像。这以较低的视场为代价获得了更高的RGB图像的有效分辨率,但考虑到深度传感器的最小范围,这是一个可以接受的折中。
完整的数据集包含133,827幅图像,比LINEMOD数据集大两个数量级。关于数据集的更多统计信息请参见表1:
图6为我们数据集中的一个标注示例:
我们根据标注的GT位姿来渲染3D模型。
请注意,我们的标注精度受到几个误差源的影响,包括RGB传感器的滚动快门、对象模型中的不准确性、RGB和深度传感器之间的轻微异步以及相机内外参数的不确定性。
V. EXPERIMENTS
A. Datasets
在我们的YCB-Video数据集中,我们使用80个视频进行训练,并从剩下的12个测试视频中提取2949个关键帧进行测试。我们还在OccludedLINEMOD数据集[17]上评估了我们的方法。[17]的作者从原始的LINEMOD数据集[13]中选择了一个带有1214帧的视频,并在该视频中标注了8个物体的GT姿势:Ape、Can、Cat、Driller、Duck、Eggbox、Glue和Holepuncher。在这个视频序列中,物体之间有明显的遮挡,这使得这个数据集具有挑战性。为了进行训练,我们使用与这八个对象对应的原始LINEMOD数据集中的八个序列。此外,我们通过在场景中随机放置物体,在两个数据集上生成80,000张合成图像进行训练。
B. Evaluation Metrics
我们采用[13]中提出的平均距离(ADD)度量进行评估。给定GT旋转
R
\mathbf{R}
R和平移
T
\mathbf{T}
T以及估计的旋转
R
~
\tilde{\mathbf{R}}
R~和平移
T
~
\tilde{\mathbf{T}}
T~,平均距离计算根据GT姿态和估计姿态变换的3D模型点之间成对距离的平均值:
ADD
=
1
m
∑
x
∈
M
∥
(
R
x
+
T
)
−
(
R
~
x
+
T
~
)
∥
\text{ADD} = \frac{1}{m}\sum_{\mathbf{x} \in \mathcal{M}}\Vert(\mathbf{Rx} + \mathbf{T}) - (\tilde{\mathbf{R}}\mathbf{x} + \tilde{\mathbf{T}})\Vert
ADD=m1x∈M∑∥(Rx+T)−(R~x+T~)∥
式中,
M
\mathcal{M}
M为3D模型点集,
m
m
m为点个数。如果平均距离小于预定义的阈值,则认为6D姿势是正确的。
在OccludedLINEMOD数据集中,阈值设置为3D模型直径的10%。
对于像Eggbox和Glue这样的对称对象,对于某些视图,点之间的匹配是不明确的。因此,利用最近点距离计算平均距离:
ADD-S
=
1
m
∑
x
1
∈
M
min
x
2
∈
M
∥
(
R
x
1
+
T
)
−
(
R
~
x
2
+
T
~
)
∥
\text{ADD-S} = \frac{1}{m}\sum_{\mathbf{x}_1 \in \mathcal{M}}\min_{\mathbf{x}_2 \in \mathcal{M}}\Vert(\mathbf{R}\mathbf{x}_1 + \mathbf{T}) - (\tilde{\mathbf{R}}\mathbf{x}_2 + \tilde{\mathbf{T}})\Vert
ADD-S=m1x1∈M∑x2∈Mmin∥(Rx1+T)−(R~x2+T~)∥
我们为旋转回归设计的损失函数受这两个评价指标所启发。并且在计算位姿精度时使用固定的阈值不能揭示方法在这些不正确的位姿上的表现。因此,我们在评价时改变距离阈值。在这种情况下,我们可以绘制一条精度阈值曲线,并计算曲线下的面积来进行姿态评估。
我们可以将变换后的点投影到图像上,然后在图像空间中计算成对的距离,而不是在3D空间中计算距离。这个度量被称为重投影损失,广泛用于仅使用彩色图像时的6D姿态估计。
C. Implementation Details
PoseCNN是使用TensorFlow库[1]实现的。和[31]一样,Hough投票层是在GPU上实现的。在训练中,使用ImageNet[9]上训练的VGG16网络[27]对特征提取阶段的前13个卷积层和3D旋转回归分支的前两个FC层的参数进行初始化。没有梯度通过Hough投票层反向传播。采用带动量的随机梯度下降法(SGD)进行训练。
D. Baselines
**3D对象坐标回归网络。**由于目前最先进的6D姿态估计方法大多依赖于将图像像素回归到3D物体坐标[3, 4, 21],因此我们实现了一种用于3D物体坐标回归的网络变体以进行比较。在这个网络中,我们不是像图2那样回归到中心的方向和深度,而是回归到每个像素在对象坐标系中的3D坐标。我们可以使用相同的架构,因为对于每个类,每个像素仍然回归到三个变量。然后我们删除3D旋转回归分支。利用语义标记结果和3D物体坐标回归结果,利用pre-emptive RANSAC恢复6D姿态,如[4]所示。
意思是现有的方法是直接将2D坐标回归到3D坐标,从而得到对象的3D坐标。但是论文中的方法是先通过语义分割估计物体在图像中的中心坐标,然后利用对内点的深度取平均来得到中心的深度,从而根据公式算出 T \mathbf{T} T。那么为了将直接回归的方法和论文中的分步方法进行比较,这里以论文网络架构为基础,又编写了一套直接回归的算法以方便比较。
**姿势细化。**当深度可用时,我们可以通过网络估算出6D姿态。我们使用迭代最近点(ICP)算法来细化6D位姿。具体地说,我们采用具有投影数据关联和点平面残差项的ICP。每个像素的残差是3D中观测点到由3D中渲染点及其法线定义的平面的最小距离。残差大于指定阈值的点被拒绝,剩余残差使用梯度下降最小化。利用网络中的语义标签对深度图像中的观察点进行裁剪。由于ICP对局部最小值不具有鲁棒性,我们通过对网络中估计的位姿进行扰动来细化多个位姿,然后利用[33]中提出的对准度量来选择最优的细化位姿。
E. Analysis on the Rotation Regress Losses
我们首先通过实验分析了在对称物体上两种损失函数对旋转回归的影响。图7为YCB-Video数据集(木块和大夹子)中两个对称对象使用这两个损失函数进行训练时的旋转损失直方图(PLoss使用正确模型位姿和估计模型位姿两个位姿之间的对应点来测算平均平方距离,SLoss测量的是估计模型方向上的每个点与GT模型上最近的点之间的偏移):
木块和大夹子的PLOSS的旋转损失跨越了0度到180度。这两个直方图表明网络被对称对象混淆了。显然,SLOSS的损失直方图集中于木块的180度以及大夹子的0度和180度,因为它们围绕其坐标轴旋转180度是对称的。
F. Results on the YCB-Video Dataset
表II和图8(a)对YCB-Video数据集中的所有21个对象进行了详细的评估:
我们使用ADD度量和ADD-S度量来显示精度阈值曲线下的面积,在这里,我们改变平均距离的阈值,然后计算姿态精度。最大阈值设置为10cm。
我们可以看到:
- 在仅使用彩色图像的情况下,我们的网络在6D位姿估计方面明显优于结合pre-emptive RANSAC算法的3D坐标回归网络。当3D坐标回归结果存在误差时,估计的6D位姿会偏离GT位姿很远。而在我们的网络中,即使物体被遮挡,中心定位也有助于约束3D平移估计。
- 用ICP来改进姿势,可以显著提高表现。与3D坐标回归网络相比,基于ICP的PoseCNN在使用深度图像时具有更好的性能。ICP的初始位姿是其收敛的关键。PoseCNN为ICP改进提供了更好的初始6D位姿。
- 我们可以看到,有些物体更难处理,比如金枪鱼罐头,它很小,而且质地不那么好。这个网络也被大夹子和超大夹子弄混了,因为它们有相同的外观。3D坐标回归网络不能很好地处理对称对象,如香蕉和碗。
图9显示了YCB-Video数据集上的一些6D姿态估计结果:
我们可以看到,即使中心被另一个物体遮挡,中心的预测也是相当准确的。我们的网络只有颜色,已经能够提供良好的6D姿态估计。随着ICP的细化,6D位姿的精度进一步提高。
G. Results on the OccludedLINEMOD Dataset
OccludedLINEMOD数据集具有挑战性,因为对象之间存在显著的遮挡。我们首先只使用彩色图像进行实验。图8(b)显示了数据集中7个对象的重投影损失的精度阈值曲线,其中我们使用彩色图像作为输入,在该数据集上比较了PoseCNN和[29],该[29]达到了当前最先进的结果:
我们的方法明显优于[29],特别是在重投影损失阈值较小的情况下。这些结果表明,即使在严重的遮挡下,PoseCNN也能够正确地定位目标对象。
通过在ICP中使用深度图像来优化姿势,我们的方法也优于使用RGB-D数据作为输入的最新方法。表III总结了OccludedLINEMOD数据集上的姿态估计精度:
最大的改进来自两个对称的对象“Eggbox”和“Glue”。通过使用我们的ShapeMatch-Loss进行训练,PoseCNN能够正确估计出两个物体的6D位姿的对称性。我们还在表三中展示了仅使用颜色的PoseCNN的结果。由于这里的阈值通常小于2cm,所以精度要低得多。当物体之间存在遮挡时,基于颜色的方法很难在这么小的阈值内获得6D位姿。图9显示了OccludedLINEMOD数据集上的两个6D姿态估计结果示例。
VI. CONCLUSIONS
在本文中,我们引入了一种用于6D目标位姿估计的卷积神经网络PoseCNN。PoseCNN解耦了3D旋转和3D平移的估计。它通过定位目标中心和预测中心距离来估计3D平移量。通过将每个像素向目标中心回归到一个单位向量,可以独立于尺度稳健地估计目标中心。更重要的是,像素投票的对象中心,即使它被其他对象遮挡。3D旋转可通过回归到一个四元数表示来预测。引入了两个新的损失函数用于旋转估计,其中ShapeMatch-Loss设计用于对称对象。因此,PoseCNN能够处理混乱场景中的遮挡和对称对象。我们还介绍了一个用于6D目标姿态估计的大规模视频数据集。我们的结果非常令人鼓舞,因为他们表明,在混乱的场景中,仅使用视觉数据准确估计物体的6D姿态是可行的。这为使用分辨率和视场远超目前使用的深度相机系统的相机打开了道路。我们注意到,SLOSS有时会在位姿空间中产生类似于ICP的局部最小值。在未来的6D姿态估计中,探索更有效地处理对称对象的方法将是一件有趣的事情。