转载请注明作者和出处: http://blog.csdn.net/john_bh/
Arxiv 链接:Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation CVPR 地址:Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation 作者及团队:斯坦福大学 & Google 会议及时间:CVPR 2019 code:https://github.com/hughw19/NOCS_CVPR2019
本文的目标是估计RGB-D图像中从未见过的物体实例的6D位姿和尺寸。与“instance-level”6D位姿估计任务相反,作者的问题假设在训练或测试期间没有精确的对象CAD模型可用。为了处理给定类别中不同的和从未见过的物体实例,引入了标准化的对象坐标空间(NOCS) ---- 同一个类别中的所有物体实例使用一个共享的标准坐标空间模型来表示。然后,通过训练神经网络,从观察的像素推断对应的共享标准坐标空间模型的关系以及其他对象信息,比如类标签和实例掩码。通过预测图像与深度图结合起来,共同估计在一个杂乱的场景中多个物体的6D姿态和尺寸。为了训练网络,作者提出了一种新的上下文感知技术,以产生大量的带注释的混合现实数据。为了进一步改进模型并评估其在真实数据上的性能,作者提供了一个完整注释的真实场景下的数据集。大量的实验表明,该方法能够在真实环境中稳健地估计真实场景中从未见过物体的位姿和大小,同时在标准6D位姿估计基准测试中也达到了最先进的性能。
在AR、机器人技术和三维场景理解中需要检测目标并准确估计它的三维位置、方向和大小。 Instance-level 6D pose估计方法(Bb8,latent霍夫投票,Ssd-6D,YOLO-6D,poseCNN)都预先提供了物体精确的CAD模型及大小,然而大多数是从未见过的物体并且没有CAD模型的。 Category-level 3D 物体检测方法可以估计物体类别标签和3D bounding boxes,而且不需要精准的CAD模型。但是3D 目标检测是根据视点(viewpoint-dependent)估计的,没有编码物体的精准方向。
那么问题来了,如何准确估计没有精确CAD模型或者没有见过的物体的 6D pose 和尺寸呢?
解决以上问题面临两个挑战:
挑战1: 因为不能为没有见过的物体使用CAD模型,第一个挑战是找到一个表示,一个特定类别物体的6D姿态和大小的表示;挑战2: 第二个挑战是缺少数据集,无法获得用于训练和测试的大规模数据集。像SUN RGB-D或NYU v2这样的数据集缺少精确的6D姿态和大小的注释,或者不包含表尺度对象类别。图1展示了该方法在桌面场景操作的例子,有多个物体在训练期间没有见过的:
创新点:
作者使用一个共享的标准坐标空间(NOCS)作为参考系来表示同一类别中的所有物体实例,允许不同但相关的实例有一个共同的参考表示,使6D姿态和大小估计没见过的对象。提出一个可以同时预测物体类别标签、mask和NOCS图的CNN,将NOCS图与深度图进行对应来估计从未见过物体的6D位姿和大小。提供数据集,使用空间上下文感知的混合现实方法来自动生成大量数据用来训练和测试。定义了一个共享空间称为归一化对象坐标空间(Normalized Object Coordinate Space (NOCS)),所有对象都包含在一个共同的归一化空间,这样可以为从未见过的物体定义位子和尺寸。这样来解决表示的问题。
NOCS定义为包含在一个单位立方体内的三维空间,即 { x , y , z } ∈ [ 0 , 1 ] \{x,y,z\} \in[0,1] {x,y,z}∈[0,1]。给定每个类别已知对象CAD模型的形状集合,通过统一缩放对象来标准化它们的大小,使其紧密包围框的对角线长度为1,并在NOCS空间中为中心(如 Figure-2所示)。此外,在同一类别中对齐对象的中心和方向。作者使用来自ShapeNetCore的模型,这些模型在比例、位置和方向方面已经被规范化了。Figure-2 显示了相机类别中规范化形状的示例。在NOCS中表示法允许形状的每个顶点被表示为元组 ( x , y , z ) (x,y,z) (x,y,z),其颜色编码如在Figure-2所示。 作者提出的CNN可以预测以颜色编码的NOCS坐标的2D透视投影,即NOCS映射(Figure-2 左下方)。 可以使用多种方法来解释NOCS映射:
以NOCS形式对物体的可见部分进行形状重构;作为密集的pixel-NOCS对应关系。CNN学会了对看不见的物体进行形状预测的一般化,或者在对大型形状集合进行训练时学会了预测物体 pixel-NOCS的对应关系。 这种表示比其他方法(例如边界框)更健壮,因为即使在物体仅部分可见的情况下也可以操作。
作者提出了使用 上下文感知混合现实(ContextAware Mixed Reality Approach:CAMERA)的方法生成数据,该方法以上下文感知的方式将真实的背景乳香与合成渲染的前景图像结合在一起,即:合成的物体图像被渲染并合成具有真实物理位置,光照和比例的知识场景中。如Figure 4所示:
Real Scenes 使用 31 种室内真实场景 553 张 RGB-D图像作为背景,其中 4 张用于验证;Synthetic Objects 从ShapeNetCore 中选择6个对象类别:瓶子、碗、相机、罐子、笔记本电脑和杯子。另外创建了一个干扰项类别,该类别是上面没有列出的类别:监视器、电话、吉他。作者提供的ShapeNet-Core 合成物体中一共包含1085 个实例对象,其中 184 个实例用于验证;Context-Aware Compositing 为了提高真实性,作者使用上下文感知的方式合成虚拟物体,将物体放在合理的光照下的支撑平面上。这里作者使用平面检测算法对真实图像进行像素级平面分割,在分割面上随机采样位置和方向,放置虚拟光源来模拟真实室内照明条件,最后将渲染虚拟图像和真实场景图像结合起来,生成一个具有 ground truth NOCS map、mask 、和 类标签的合成图像。共300k 合成图像,其中25k 由于验证,如Figure-4 中中间图所示;(真实场景中的NOCS map 的ground truth是怎么得到的呢?)RealWorld Data 为了进一步改善和验证NOCS在挑战环境(杂乱和光照)中的性能,作者增加了两个真是数据集,如Figure-4 中右图所示,共包含18个场景 的 8k 张 RGB-D图像,每个场景有 5 个以上的实例对象,一共有 42个 唯一的实例对象,涵盖6个类别。(训练集是 7 个场景共 4300 张图像;验证集是 5 个场景共 950 张图像;测试集 6 个场景共 2750 张图像)。Figure 3. 说明了使用RGB图像和深度图作为输入的方法。 CNN仅从RGB图像估计类标签,实例掩码和 NOCS map,这里没有使用CNN中的深度图,因为想利用不包含深度的现有RGB数据集(例如COCO)来提高性能。 NOCS map 对标准化空间中对象的形状和大小进行编码(可以在以后的阶段使用深度图来提升此归一化空间,并使用可靠的离群值移除和对齐技术来预测完整的6D对象pose和size);使用NOCS map 和深度图来估计度量6D姿态和对象的大小。
作者提出的CNN模型是基于Mask R-CNN的改进,增加了3个 head 结构预测 NOCS map 的 x , y , z x,y,z x,y,z 分量,如 Figure-5 所示,采用 ResNet-50 作为 backbone 和 RPN。每个ROI 的输出都是 28 × 28 × N 28 \times 28 \times N 28×28×N,其中 N N N 是类别个数,每个类别包含该类别所有检测到的对象的 x x x 或 ( y , z ) (y,z) (y,z) 坐标。在测试中使用对象类别先查找相应的预测通道(和 mask head 类似);在训练中仅使用 ground truth 物体类别的 NOCS map 计算损失函数。
Regression vs. Classification: 为了预测NOCS map,可以通过离散化像素值(图5中用(B)表示)来回归每个像素值或将其视为分类问题。 直接回归可能是一项艰巨的任务,有可能在训练过程中引入不稳定性。 同样,具有大量类别(例如B = 128; 256)的像素分类可能会引入更多参数,从而使训练比直接回归更具挑战性。 作者的实验表明,B = 32的像素分类比直接回归的效果更好。
损失函数: 网络的类,框和掩码 head 使用与 Mask R-CNN 中所述相同的损失函数。对于NOCS map head,使用两个损失函数:用于分类的标准softmax损失函数,以及以下的soft 回归的 L1 损失函数使学习更加稳健。 其中:
y ∈ R 3 y \in R^3 y∈R3 表示ground truth NOCS map 的像素值; y ∗ y^* y∗ 表示是预测的NOCS map 的像素值; n n n 表示 ROI 内掩模像素个数; I I I 和 I p I_p Ip 为 NOCS map 的 ground truth和预测。对称物体(Object Symmetry): 常见的物体很多是轴对称的,但是NOCS 表示没有考虑对称性,会导致某些对象类产生错误,为了缓解这个问题,作者引入了损失函数的一种变体。 对于训练数据中每个类别,定义一个对称轴,围绕对称轴的定义旋转生成 NOCS map,该NOCS map 会生成相同的损失函数值。 例如:正方体顶部的一个对称轴,在该轴上旋转角度 θ = { 0 ∘ , 9 0 ∘ , 18 0 ∘ , 27 0 ∘ } \theta =\{0^\circ ,90^\circ ,180^\circ ,270^\circ\} θ={0∘,90∘,180∘,270∘},会有相同的 NOCS map,所以损失值也是一样的。 对于非对称物体, θ = 0 ∘ \theta = 0^\circ θ=0∘ 是惟一的。作者还发现当 ∣ θ ∣ < 6 |\theta|<6 ∣θ∣<6 足以处理大多数对称类别。 生成 ground truth NOCS map { y ~ 1 , . . . , y ~ ∣ θ ∣ } \{\tilde y_1,...,\tilde y_{|\theta|}\} {y~1,...,y~∣θ∣},它们沿对称轴旋转 ∣ θ ∣ |\theta| ∣θ∣ 次。 然后,将对称损失函数 L s Ls Ls 定义为 L s = m i n i = 1.... ∣ θ ∣ L ( y ~ i , y ~ ∗ ) Ls = min_{i=1....|\theta|}L(\tilde y_i,\tilde y^*) Ls=mini=1....∣θ∣L(y~i,y~∗),其中 y ∗ y^* y∗ 表示预测的 NOCS map 像素 ( x , y , z ) (x,y,z) (x,y,z)。
训练细节:
使用在COCO数据集上的二维实例分割任务上训练的权重来初始化ResNet50主干网,RPN和FPN ;对于所有heads,都使用Delving deep into rectifiers: Surpassing human-level performance on imagenet classification 提出的初始化技术;批量大小 batchsize=2,初始学习率为0.001,动量为0.9且重量衰减为 1 × 1 0 − 4 1\times 10^{-4} 1×10−4的SGD优化器;在训练的第一阶段,冻结ResNet50权重,仅训练 heads 中的图层 RPN和FPN进行10K迭代;在第二阶段,将ResNet50层冻结在4级以下并进行3K迭代训练;在最后阶段,将ResNet50层冻结在3级以下进行另外70K迭代;切换到每个阶段时,学习率都会降低10倍。作者的目标是通过使用 NOCS map和输入深度图来估算检测对象的完整度量6D姿态和尺寸。为此,
使用 RGB-D 相机的内部和外部特性将深度图像与彩色图像对齐;应用预测的对象 mask 以获得检测到的对象的3D点云 P m P_m Pm;使用NOCS map获得 P n P_n Pn 的3D表示;估计将 P n P_n Pn 转换为 P m P_m Pm 的比例,旋转和平移;使用 Umeyama算法[47] 对7维刚性变换估计,使用 RANSAC [16] 对异常值去除。Metrics:3D对象检测和6D姿态估计
3D检测和对象尺寸估计,使用阈值为50%的联合交集(IoU)度量;对于6D姿态估计,对象实例的平均精度,其平移误差小于 m c m m\ cm m cm,旋转误差小于 n ∘ n^\circ n∘。将预测和ground truth 情况之间的边界框重叠设置为10%的检测阈值,以确保评估中包括大多数对象;对于对称的对象类别(瓶,碗和罐头),允许预测的3D边界框绕对象的垂直轴自由旋转而不会受到任何惩罚;对杯子类别进行特殊处理,方法是在看不见手柄时使杯子对称;Baselines: 因为不知道其他用于类别级6D姿势和大小估计的方法,因此作者建立了自己的基准来帮助比较性能。
它由在相同数据上训练的Mask R-CNN网络组成,但没有NOCS map head ;使用预测的实例掩码从深度图获得对象的3D点云;将掩码的点云(使用ICP [4])与相应类别中的一个随机选择的模型对齐;对于实例级别的6D姿态估计,NOCS的结果可以与Pose CNN进行比较。Evaluation Data: 所有的实验都使用以下一个或两个评估数据集:
CAMERA验证数据集(CAMERA25);具有ground truth 注释的2.75K真实数据集(REAL275)。Test on CAMERA25 使用CNN 只训练了275K CAMERA 数据集,在CAMERA25的测试结果 :3D IoU 50%的mAP是83.9% , 5 ∘ 5 c m 5^\circ 5 cm 5∘5cm 的mAP 是 40.9%。如下图所示:
Test on REAL275 在CAMERA * 数据集和 真实数据集(REAL*)的组合下,并使用COCO 的弱监督下训练网络,在真实测试集上进行评估。由于COCO没有NOCS map ground truth,所以在训练期间不使用NOCS损失。
在真实的测试集中,对于50%的3D IoU,达到了76.4%的mAP,对于 5 ∘ 5 c m 5^\circ \ 5 cm 5∘ 5cm度量,mAP为10.2%,对于 1 0 ∘ 5 c m 10^\circ\ 5 cm 10∘ 5cm度量的mAP为23.1%。相比 Baselines(Mask RCNN + ICP对齐)对于3D IoU在50%时的mAP为43.8%,对于 5 ∘ 5 c m 5^\circ \ 5 cm 5∘ 5cm和 1 0 ∘ 5 c m 10^\circ\ 5 cm 10∘ 5cm的指标均达到0.8% 。图7显示了更详细的分析和比较。该实验表明,通过学习预测密集的NOCS map,算法能够提供有关物体形状,parts 和可见性的其他详细信息,这些信息对于正确估计物体的6D至关重要姿势和大小。 使用包含类别中实例的20K COCO图像。为了在这些数据集之间取得平衡,对于每个小批量,从三个数据源中选择图像,其中CAMERA *的概率为60%,COCO *的概率为20%,REAL *的概率为20%。这个网络是产生所有视觉结果的最佳模型(图8)。
为了评估 CAMERA 数据的有效性,作者进行了 ablation study,如表1 所示:
在表1中,作者创建了CAMERA *的变体,其中图像以非上下文感知的方式合成(在表1中用B表示)。 可以看到在添加COCO和REAL *方面的逐步改进,使用COCO和REAL *对CAMERA *进行训练可获得最佳结果。 此外,非上下文感知的数据导致的性能比上下文感知的数据差,这表明CAMERA方法很有用。
分类与回归: 在CAMERA25和REAL275上,像素分类始终优于回归。 使用32个bin最好用于姿势估计,而使用128个bin则更好地进行检测(请参见表2)
对称损失: 这种损失对于许多日常对称对象类别至关重要。 为了研究对称损失的影响,作者对CAMERA25和REAL275集合上的回归网络进行了消融实验。 表2显示,如果不使用对称损失,则姿势精度会大大降低,特别是对于6D姿势。
实例级 6D pose 估计实验结果表明,虽然设计的方法用于分类级位姿估计,但它在标准6D位姿估计基准上也能达到最新的性能。如下图所示: