SSD-6D:Making RGB-Based 3D Detection and 6d Pose Estimation Great Again翻译

发布时间:2023-10-25 08:00

这是2018的一篇论文,因为最近计划打算参加一个百度发布在Kaggle上的比赛,所以在查阅相关的论文,因为第一次接触,所以在解读的过程中,可能会有一定的缺陷,如果有问题欢迎各位江湖前辈批评指点,在下先行谢过~

Abstract

我们提出了一个新的方法用于检测3D model的实例和评估他们的6D poses 在单目的RGB数据上。为此,我们扩展了流行的SSD模型。让其覆盖整个6D位姿空间,在 synthetic model data 上进行训练。在多个挑战性的数据集上,利用RGB-D数据,我们的方法竞争或超过目前最先进的方法。此外,我们的方法在10Hz左右产生的这些结果,它比相关的方法否要更加快速。为了再现性,我们公开了我们训练好的网络和检测代码。

1.Introduction

   由于深度学习,在图像上category-level 分类和检测有了一个巨大的发展, 但是同样的事情还没有发生在3D model定位和6D物体姿态估计上。与大规模的分类挑战,例如PASCAL VOC【9】和ILSVRC【26】,在6D姿态估计领域,根据应用程序在增强现实和机器人操作的背景下的要求,需要已知的高精度和准确性姿态的3DCAD模型的检测实例。
   大多数性能最好的3D检测器都遵循基于视图的范例,其中生成一组离散的对象视图并用于后续的特征计算【31,14】。在测试过程中,对场景在离散的位置进行采样,特征计算,然后匹配对象数据库,建立一个训练视图和场景位置之间的对应关系。特征可以是图像属性的编码(颜色梯度,深度值,正常的方向)【12,16,18】,最近,学习的结果【4,29,5,6,17】。另一方面,检测和姿态估计的精度取决于三个方面:(1)6D位姿空间视点和尺度覆盖,(2)特性区分对象和视图的能力(3)对杂波、光照和遮挡的鲁棒性。
  基于CNN的类检测器,如YOLO【25】或SSD【22】,在大规模2D数据集上显示了惊人的结果。他们的想法是逆转采样策略,这样场景采样就不再是一组离散的输入点导致连续的输出。相反,输入空间在整个图像上是密集的,输出空间被分割成许多不同形状和大小的重叠
边界框。这种倒置允许在许多不同大小的特征图上进行平滑的比例搜索,并在一次扫描中对所有的箱子进行并行分类。为了补偿输出域的离散化,每个边界盒都对其边角进行了细化。
  这项工作的目标是开发一个深度学习的网络,能够准确的处理3D模型和6D姿态估计,在测试时,假设RGB图像是唯一的输入。为此,我们将SSD引入改领域,并提出了一下几点:(1)在训练阶段,仅使用合成的3D模型信息,(2)模型姿态空间的分解,允许方便的训练和处理对称性(3)SSD扩展,产生2D检测和推理正确的6D 姿态。
  我们认为,在大多数情况下,颜色信息本身就可以提供接近完美的检测率与良好姿态。尽管我们的方法不需要深度数据,但是为了特征计算和最终的姿态细化,它很容易被RGB-D传感器和几乎所有最新的最先进的3D探测器所使用。因此,我们将深度作为假设验证和姿态细化的一种可选模式,在多个挑战性的RGB和RGB-D数据的数据集上,估计我们方法的性能。
  通过多个基准数据集的实验结果,我们证明了我们的基于颜色的方法是有竞争力的,相对于最先进的检测器,利用RGB-D数据,我们甚至超越他们,在速度上超越了很多倍。实际上,我们证明了当正确使用颜色的时候,过渡的依赖深度进行3D实例检测的普遍趋势是不合理的。 .
.\"SSD-6D:Making

Related work

  我们首先关注在3D检测和6D姿态识别领域的最新的工作,然后再来研究针对category-level问题的SSD-style的方法。

  在【14】中,为了覆盖一个物体的上半球,并在多个距离上实现小程度的平面内旋转,作者需要在轮廓梯度和内部发现上使用3115个模板视图。这种视图的哈希被用来实现次线性匹配的复杂性【18,16】,但这通常以速度换取准确性。相关的尺度不变方法【16,4,29,6,17】采用深度信息作为特征,学习或提取的一个组成部分,从而避免了尺度空间搜索,并将视图数量减少了大约一个数量级。因为它们需要深度,所以当深度缺失或出错时,它们可能会失败。虽然RGB-D数据可以推断出比例,但是还没有任何令人信服的工作来消除平面内旋转视图的需要。旋转不变量方法是基于2D【32】或3D【7,3,30】中的局部关键点,通过显式计算或投票支持一个o方向或一个局部参考帧,但对于几何或纹理较差的对象却失败了。

  尽管很少提到,所有基于视图的方法都只覆盖很小的部分,预先定义的6D姿态空间。以不同的方式放置对象,e.g.在它的头部,在训练中,如果这个视图没有被特别的包含将会导致失败。不幸的是,增加的视图在匹配阶段,增加了计算和整体的模糊。更糟糕的是,对于所有讨论的方法,视图取样是至关重要的。如果太粗糙,可能会丢失较小尺度的对象,而细粒度采样会增加计算量,并常常导致更多的假阳性检测。因此,我们探索了一种类似于大规模分类的方法,在这种方法中,多尺度上的稠密特征图产生了最先进的结果。不是依赖于对建议的边界盒进行分类【10,11,21】,它们的性能取决于建议的质量,最近的single-shot检测器【25,22】对一组(大的)离散的固定边界盒进行分类。这简化了网络架构,并为盒子的预先放置提供了自由。

  对于从RGB图像中回归姿态的工作,【24,23】的相关工作最近将SSD扩展到类别的姿态估计。【23】在城市交通中,推断3d边界框的对象,回归三维框角和方位角【24】引入了额外的组合姿势,不仅表达类别,而且还表达了局部定位的概念,如“侧边的自行车”或“飞机从下面\"。与我们不同的是,他们训练真实的图像来预测一个非常有限的subspace中的姿势。相反,我们的领域需要对基于合成模型的数据进行训练,需要包含完整的6d位姿空间来完成抓取或AR等任务。

3. Methodology

  我们方法的输入是一个RGB的图片,它通过网络处理,输出带有2D检测的定位边界框。此外,每个2D框都提供了该实例的最有可能的6D姿势。为了表示6D姿态,我们解析了从网络中推断出的视点和平面内旋转的得分,并使用投影属性实例化6D假设。在最后一步,我们完善每个pool中的每个姿势,并在验证后选择最好的。最后一步可以在2D中执行,也可以在3D中执行(如果深度数据可用)。我们现在更详细地介绍每个部分。

3.1 Network architecture

  我们基础的网络用的是预训练的InceptionV4【27】,输入一个有颜色的图像(resized to 299 × \\times × 299)去计算多尺度的特征图。为了得到我们第一个维度71 × \\times × 71 × \\times × 384的特征图,我们在最后一个pooling层与主干之间添加了一个Inception-A模块。在此之后,我们依次对Inception-A模块分支为35 × \\times × 35 × \\times × 384的特征图,之后是Inception-B模块为17 × \\times × 17 × \\times × 1024的特征图,最后的Inception-C模块为9 × \\times × 9 × \\times × 1536 map。为了覆盖更大的物体,我们将网络扩展为两个部分,首先,一个“Reduction-B”,接着是两个“Inception-C”模块,使输出为5 × \\times × 5 × \\times × 1024map。第二,一个“Reduction-B” 和一个“Inception-C”去产生一个3$\\times$3 × \\times × 1024 map。
  我们遵循SSD的范例。具体来说,这六个特征图中的每一个都与预测核进行卷积,从特种图位置回归与定位预测。设 ( w s , h s , c s ) (ws, hs, cs) (ws,hs,cs)为s标度处的宽度、高度和通道深度。对于每个scale,我们训练一个3 × \\times × 3 × \\times × c s c_s cs的核,该核为每个特征映射位置提供了对象ID、离散视点和平面内偏移的分数。由于我们通过这个网格引入了一个离散化错误,所以我们在每个位置创建了具有不同长宽比的 B s B_s Bs边界框。此外,我们把它的四个角重新进行调优。如果 C , V , R C,V,R C,V,R分别是物体类别,取样的视点和平面旋转的的数量,我们对于每一个scale s s s提出了一个 ( w s , h s , B s ( C + V + R + 4 ) ) (w_s,h_s,B_s(C+V+R+4)) (ws,hs,Bs(C+V+R+4))检测图。该网络总共有21222个不同形状和大小的边界框。虽然这看起来很高,但由于全卷积设计和良好的真负性行为,我们方法的实际运行时间非常低,它能够产生非常自信且小的检测集。整体概括如Figure 1所示。
\"SSD-6D:Making


Viewpoint scoring cersus pose regression 选择视点分类而不是姿态估计是经过深思熟虑的。尽管存在直接旋转回归的工作【19,28】,早期的实验结果表明,该分类方法在姿态检测任务上更加的可靠。特别地,相比于输出精确的旋转和平移数值,在离散视点的评分上,层能够更好的工作。在视点和旋转平面,一个6D姿态的分解是优雅的,能够允许我们更加自然的解决问题。当一个新的视点展示一个新的视觉结构,一个平面旋转视图是相同视图的非线性的转换。此外,所有视图的同步评分允许我们在给定的图像位置解析多个检测,e.g.通过接受超过某个阈值的所有的视点。同样重要的是,这个方法允许我们以一种直接的方式去解决对称和相似外观的视图。

3.2 Training stage

  我们以来自MS COCO【20】的随机图像作为背景,使用OpenGL命令将对象随机转换为场景。对于每一个呈现的实例,我们用呈现的mask来计算每一个box的IoU(intersection over union),IoU>0.5的作为物体类别的正例。此外,我们为所使用的变换确定其最接近的采样离散视点和平面内旋转,并将其四个角值设置为掩模周围最紧密的拟合作为回归目标。我们展示了一些训练图片如Figure 2所示。
\"SSD-6D:Making

  与SSD相似【22】,我们使用许多不同种类的参数,例如改变亮度和图像的对比度。与他们不同的是,我们不翻转图像,因为它会导致视图之间的混淆和错误的姿势检测。在反向传播的过程中,我们也确定了通过难负例选择(不指定高可能性的物体)将训练的图像维持在1:2的正负比。

   我们的Loss类似于SSD和YOLO的MultiBox Loss,但是我们扩展了这个公式,使它包含离散点和旋转平面的数值。给定一组positive boxes P o s Pos Pos和hard-mined negative boxes N e g Neg Neg作为训练图像,我们最小化以下数值:
\"SSD-6D:Making
  正如(1)中看到的,我们累加了positive和negative的类别可能性( L c l a s s L_{class} Lclass)。此外,每一个positive box为视点( L v i e w L_{view} Lview)和平面分类( L i n p l a n c e L_{inplance} Linplance)贡献权重,以及盒角的拟合误差( L f i t L_{fit} Lfit)。对于分类问题,i.e., L c l a s s , L v i e w , L i n p l a n e L_{class}, L_{view}, L_{inplane} Lclass,Lview,Linplane,我们使用了一个标准的softmax交叉熵损失,然而一个更robust的smooth L 1 L1 L1 -norm 用于角回归( L f i t L_{fit} Lfit).

Dealing with symmetry and view ambiguity 我们的方法为了适当的收敛要求视点模糊,因此我们必须要特别的对待对称的和半对称(可构造的平面反射)的对象。给定一个等距采样的范围,我们从中获取我们的视点,我们放弃导致歧义的位置。对于对称物体,我们仅对沿弧线的视图采样,而对于半对称的物体,我们完全省略了一个半球。这种方法很容易进行泛化,以处理相互不可分辨的视图,尽管在实践中可能需要对特定对象进行手动注释。本质上,我们在测试时简单地忽略了卷积分类器输出中的某些视图,而在训练中特别注意视点分配。我们在Figure 3中可以看到位姿空间的可视化。
\"SSD-6D:Making

Detection stage

  我们对输入图像执行前向遍历来收集超过某个阈值的所有检测,然后进行非最大抑制。这将产生精练且紧凑的2D边界框,它有关联的对象ID和所有视图以及平面内旋转的得分。因此,对于每个检测到的2D框,我们解析最自信的视图以及平面内的旋转,从而构建一个6D假设池,从中经过细化后选择最佳的。合并的假设见Figure 5,最终的输出见Figure 6。

3.3.1 From 2D bounding box to 6D hypothesis

到目前为止,所有的计算都是在图像平面上进行的,我们需要从我们的网络输出中找到一种方法来假设6D位姿。我们可以很容易地构造一个三维坐标,给定视图ID和平面内旋转ID,并可以使用边界框来推断三维平移。为此,在离线阶段,以标准形心距离 z r = 0.5 m z_r = 0.5m zr=0.5m呈现所有可能的离散视图和平面旋转的组合,并计算它们的边界框。已知此阶段边界框的对角长度 l r l_r lr和网络 I r I_r Ir的预测,我们可以从它们的射影比率中推断出物体距离 z s = l r l s z r z_s =\\frac{l_r}{l_s}z_r zs=lslrzr,如Figure 4所示。以类似的方式,我们可以推导出投影的质心位置,并利用已知摄像机的内联函数将其反投影到三维点。

3.3.2 Pose refinement and verification

所获得的姿态已经相当准确,但总体上可以受益于进一步的细化。由于我们将对RGBRGB- D数据的问题进行重新分析,因此位姿的细化将使用基于边缘或基于云的ICP方法进行。如果只使用RGB,我们将每个假设呈现到场景中,并提取一个稀疏的3D轮廓点集合。每个3D点 X i X_i Xi投影到 π ( X i ) = x i π(X_i) =x_i π(Xi)=xi,然后发射一条垂直于其方向的光线,找到最近的场景边缘 y i y_i yi。我们寻求最佳的对准三维模型,使平均投影误差最小:
\"在这里插入图片描述\"
  我们最小化这个数值用一个IRLS方法(和【8】相似)和用Geman-McLure权重强化它。以RGB-D数据为例,在封闭形式的[2]中,我们提供了目前的姿态和解决标准投影ICP与点到平面的方程。在这两种情况下,我们运行多轮的对应搜索来改进细化,我们使用多线程来加速这个过程。
  以上步骤为每个2D方框提供了多个精致的姿态,我们需要选择一个最好的。为此目的,我们采用一种核查程序。我们只使用RGB进行最终渲染,并通过绝对点积计算轮廓梯度和重叠场景梯度之间的方向平均偏差。在RGB-D数据可用的情况下,我们提出假设并估计相机空间法线,用绝对点积再次测量相似性。

4.Evaluation

  我们用C++实现我们的方法,使用TensorFlow1.0【1】cuDNN 5,运行在i7-5820K@3.3GHz NVIDIA GTX 1080。我们在三个数据集上进行评估。第一种是Tejani等人提出的【29】,它包括6个序列,每个序列需要在杂波中对同一对象的多个姿态进行检测和姿态估计,并且具有不同程度的轻微遮挡。第二个数据集以【14】的形式呈现,由15个序列组成,其中每一帧都代表一个要检测的序列,主要的挑战是场景中大量的杂波。和其他人一样,我们将跳过两个序列,因为它们缺少一个网格模型。在【4】中展示的第三个数据集是第二个数据集的扩展,其中一个序列被注释为多个对象的实例,这些对象有时会被严重阻塞。

Network configuration and training 为了得到最好的结果,必须找到模型视图空间的适当抽样。如果采样太粗糙,我们要么在某些姿势上错过了一个对象,要么建立了次优的6D假设,而非常精细的采样可能导致更困难的训练。在实践中,我们发现在642个视图中,等距采样的单位球工作良好。由于数据集只显示了对象的上半球,我们最终得到了337个可能的视图id。此外,我们对-45度到45度的平面内旋转进行了5步采样,总共有19个箱子。
  基于上述考虑,我们训练网络的最后一层,预测的核使用ADAM 和一个恒定的0.0003的学习率,直到我们在一个合成的数据集上看到了收敛。损失项权重的平衡被证明对提供良好的探测和姿态至关重要。经过多次试验,我们确定 α = 1 : 5 , β = 2 : 5 α= 1:5,β= 2:5 α=1:5,β=2:5 γ = 1 : 5 γ= 1:5 γ=1:5。我们请读者参阅补充资料,以了解不同配置的错误发展。
\"SSD-6D:Making

4.1 Single object scenario

  对我们来说,3D检测是一个多阶段的过程,首先在我们的预测框和前两个数据集中呈现的groundtruth实例的紧密边界框上,纯粹的评估2D检测的性能。注意到,我们总是进行适当的检测,而不是定位,i.e. 我们不限制允许检测的最大数量,而是接受超过选定阈值的所有预测。当使用groundtruth框的预测边界框的IoU得分高于0.5时,我们认为检测是正确的。我们在表1和表2中给出了不同检测阈值的F1-scores。
  需要指出的是,比较的方法都使用了RGB-D数据,这使得检测可以通过严格的基于颜色和深度的检查,而我们对每个预测使用简单的阈值。因此,对他们来说,更容易抑制假阳性,以增加他们的预测,而我们的置信度只来自颜色线索。
  在Tejani的数据集上,我们使用颜色的时候比所有相关的RGB-D方法有13.8%的巨大优势。我们分析了两个最困难序列的检测质量。“camera”有小比例的实例,它部分被遮挡,因此没有检测到,而“milk”序列在几乎每一帧中显示出更强的遮挡。虽然我们能够检测到“milk”实例,但我们的预测器无法克服遮挡,并回归了大小不合适的盒子,这些盒子不够紧,不能满足loU阈值。这些都是误报从而降低了我们的召回率。
  在第二个数据集,我们有混合的结果,我们可以超过最先进的RGB-D方法在一些序列,这些方法在其他数据上更差。对于更大的特征丰富的对象,如“benchvise”,“iron”或“driller”,我们的方法比相关的工作表现得更好,因为我们的网络可以提取颜色和纹理信息。对于某些对象,如“lamp”或“cam”,性能比相关工作差。我们的方法仅依赖于颜色信息,因此要求CAD模型的合成效果图与场景中的外观具有一定的颜色相似性。有些物体会出现镜面效果(即在不同的相机位置上改变颜色),或者画面的感光侧会发生曝光或白平衡的变化,从而导致颜色的变化。Brachmann等人通过训练一个分布良好的真实序列图像子集来避免这个问题。我们的问题要困难得多,因为我们只训练合成数据,而且必须推广到真实的、不可见的成像仪上。
  我们在“ape”、“duck”和“cat”等小尺度物体上的表现更差,我们观察到记忆率和准确率都有所下降。我们将较低的召回率归因于我们的边框位置,它可能在某些位置存在“盲点”,从而导致某些情况,一个小的实例不能被任何要触发的盒子充分覆盖。另一方面,精度较低的原因是这些物体没有纹理,颜色也很统一,这增加了与重物的混淆。

4.1.1 Pose estimation

我们为每个物体选择产生高的F1-score 的阈值,并运行以下所有与此设置的姿态估计实验。我们对所有正确检测到的实例的姿态都很感兴趣。
\"SSD-6D:Making
\"SSD-6D:Making

Error metrics 为了测量2D位姿误差,我们将计算IoU分数和视觉表面相似性(VSS)【15】。
前者不同于检测中IoU的检查,因为它测量了groundtruth和最终姿态估计之间呈现的mask的边界框的重叠,如果重叠大于0.5,则接受一个姿态。VSS是一种更严格的测量方法,因为它在mask上计算的平均像素重叠。该方法可以很好地评估增强现实应用的适用性,并且具有不可知物体对称性的优点。为了测量三维姿态误差,我们使用了来自【14】的加法分数。通过测量变换后的groundtruth模型点云与假设点云之间的平均偏差,评估操作任务的准确性。如果它小于模型直径的十分之一,它就被认为是一个正确的姿势。

Refinement with different parsing values 如前所述,我们分析最可靠的视图和平面内旋转,为每个2D检测构建一个6D假设池。对于不同的调优策略,当改变解析视图V和旋转R的时候,我们想去估计最终的姿态准确性。在Figure 7中,我们展示了在Tejani的“coffee”序列的结果,在没有调优的情况下,基于边缘和基于云的细化(见图6是一个例子)。为了确定最佳姿态,我们对前两种情况使用轮廓验证,对后一种情况使用法线验证。可以看到,最后的姿势没有任何改进是不完美的,但通常为进一步处理提供非常好的初始化。额外的2D细化产生更好的姿态,但不能很好地处理遮挡,而基于深度的细化导致完美的姿态在实践中。该图还为假设池的生成提供了 V V V R R R的变化。当然,随着数字的增加,找到一个更准确的pose的机会也会增加,因为我们评估了6D空间的更大部分。然而,很明显,每一个额外的解析视图 V V V都比将更多的平面内旋转 R R R放入池中带来更大的好处。我们通过这样一个事实来解释这一点:我们的视点采样比平面内采样更粗糙,因此在解析时显示出更多未覆盖的位姿空间,这反过来又有助于基于深度的细化。对于每一个2D检测,我们创建了 V V V . . . R R R姿态的pool,在所有的实验中,我们使用 V = 3 , R = 3 V=3,R=3 V=3R=3 在准确性和运行时间的调优。
\"SSD-6D:Making
Performance on the two datasets 我们在Table 3和Table 4中显示经过2D和3D改进后的姿态错误。注意,我们不计算Tejani的加法分数,因为每个物体都是(半)对称的,总是导致近乎完美的加法分数1。这些姿态是视觉上准确的2D细化后,进一步提高了一个额外的深度为基础的细化阶段。在第二个数据集上,我们实际上能够非常接近Brachmann等人,这是令人惊讶的,因为他们有真实数据训练的巨大优势。对于纯RGB-based姿态,我们甚至可以超越它们的结果。我们在附录中提供了更详细的错误表。

4.2. Multiple object detection

  最后一个数据集有15个对象中的9个对象的注释,由于很多实例都有严重的阻塞,所以非常困难。与单一对象场景不同,我们现在有一个网络,它为所有对象提供了一个全局检测阈值,我们在Figure 8中给出了改变该阈值时的得分。Brachmann et al. 【5】可以报告令人印象深刻的平均精度(AP)为0.51,而我们可以报告的AP为0.38。可以观察到,我们的方法会优雅地降级,因为召回不会突然从一个阈值步骤下降到下一个阈值步骤。再次注意,Brachmann等人的优势是在序列的真实图像上进行训练,而我们必须仅通过合成训练来检测严重闭塞的对象。

4.3.Runtime and scalability

  对于数据库中的单个对象,Kehl等人。【17】报告的运行时约为每帧650毫秒,而Brachmann等人【4,5】报告在450毫秒左右。上述方法是可伸缩的,因此随着数据库大小的增加,运行时的增长是次线性的。我们的方法比相关的工作要快得多,同时还具有可扩展性。尤其,我们可以报告单个对象的运行时大约为85ms。我们在Figure 8中显示了我们的预测时间,这表明随着网络中对象数量的增加,我们的伸缩性非常好。虽然预测速度很快,但我们的姿势细化需要更多的时间,因为我们需要细化每个池的每个姿势。平均来说,我们有每帧3到5次阳性检测,我们需要额外的24ms进行细化,从而使总的运行时间达到10Hz(100ms)左右。

4.4 Failure cases

  最突出的问题是合成模型和场景外观的颜色差异,也包括局部光照变化,如镜面反射。在这种情况下,目标的置信度可能会低于检测阈值,因为合成域和实域之间的差异太大。要成功地解决这个问题,需要更高级的扩展。另一个可能的问题源于边界盒回归。如果后退的角落没有提供一个紧密的配合,它可以导致翻转,太偏移在6D位姿建设。这个问题的一个例子可以在Figure 9中看到,被遮挡的牛奶产生了错误的偏移。我们还观察到,在将输入大小调整为299×299之后,小对象有时很难被检测到。同样,设计一个更健壮的训练以及一个更大的网络输入在这里可能是有益的。

Conclusion

据我们所知,我们是第一个提出一个SSD类型的检测器,它用于三维实例检测和全6D位姿估计,用来在合成模型信息上训练。我们已经证明,基于颜色的检测器确实能够匹配和超越目前最先进的方法,即利用RGB-D数据,会快一个数量级左右。未来的工作应该包括在CAD模型和场景外观之间对颜色偏差有更高的鲁棒性。避免适当的损失项平衡问题也是未来研究的一个有趣方向。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号