1. 从“认识”到“理解”:为什么我们需要超越CAD模型?
想象一下,你是一个家庭服务机器人,刚刚进入一个陌生的厨房。你的任务是拿起灶台上的一个白色马克杯。对你来说,眼前的世界是一堆复杂的像素点。传统的机器人视觉系统会怎么做?它大概率会先在它的“记忆库”——也就是预加载的精确CAD模型数据库——里疯狂搜索,试图找到一个和这个马克杯一模一样的3D模型。如果找到了,它就能通过比对,计算出杯子的位置、朝向和大小,然后稳稳地抓起来。
但现实世界可没这么友好。你遇到的这个马克杯,可能和数据库里的任何一个模型都略有不同:把手弧度不一样、杯身更矮胖、或者印着全新的图案。更常见的情况是,数据库里根本就没有这个杯子的模型。这时,传统方法就傻眼了。这就是“实例级”6D位姿估计的局限:它要求你必须事先知道并拥有物体的精确三维模型。这里的“6D”指的是物体在三维空间中的位置(X, Y, Z,共3个自由度)和旋转姿态(绕三个轴的旋转,共3个自由度),合起来就是6个自由度。
那么,我们能不能让机器像人一样,即使没见过某个具体的杯子,但只要知道“杯子”这个类别,就能推断出它的大致形状、可能的大小范围,从而估算出它的位姿呢?这就是“类别级”6D位姿与尺寸估计要解决的核心问题。它不要求精确的CAD模型,而是希望算法学会一个类别(如“杯子”、“笔记本电脑”、“瓶子”)的通用形状先验,并将其应用到从未见过的同类新物体上。
这听起来很酷,但做起来难如登天。第一个拦路虎就是“表示问题”。对于一个新物体,我们用什么统一的“语言”来描述它的形状和空间关系,才能让算法理解并计算位姿?第二个是“数据问题”。标注6D位姿是极其费力的事情,需要昂贵的设备和繁琐的人工操作,我们上哪去找成千上万个不同杯子的精确位姿数据来训练模型?
斯坦福大学和谷歌的研究团队在CVPR 2019上提出的NOCS方法,就像是一把精巧的钥匙,同时捅开了这两把锁。它不再纠结于具体的、细节各异的CAD模型,而是创造了一个所有同类物体都能“和平共处”的共享空间。这个方法让机器视觉向“理解”物体迈出了关键一步,而不仅仅是“认出”物体。接下来,我们就一起拆解这把钥匙的构造。
2. NOCS:为万物建立统一的“度量衡”
NOCS,全称是“归一化物体坐标空间”。这个名字听起来有点学术,但它的思想非常直观。我们可以把它想象成一个所有物体都必须遵守的“宇宙标准坐标系”。
2.1 核心思想:一个盒子装下所有同类物体
假设我们处理“相机”这个类别。世界上有成千上万种不同型号的相机,大小、形状、按钮布局各不相同。NOCS的做法是:不管你是单反还是卡片机,是佳能还是尼康,统统给我放进一个边长为1的虚拟正方体盒子里。
具体操作分两步:
- 归一化尺寸:对于一个已知的相机CAD模型,我们按比例缩放它,直到它的包围盒对角线长度刚好等于1。这样,最大的相机和最小的相机,在这个虚拟空间里都被“撑满”或“压缩”到适应这个单位立方体。
- 对齐中心和方向:接着,我们把这个缩放后的模型,以其中心点对齐到立方体的中心,并按照类别约定俗成的方向进行对齐(比如让相机镜头朝向固定的方向)。
经过这番操作,任何一个相机,无论它在现实世界中多大,在NOCS空间里,都被映射到了这个单位立方体内。这个立方体内的每一个点 (x, y, z) 的坐标值都在 [0, 1] 之间。更妙的是,我们可以用RGB颜色来直观地编码这个坐标:例如,红色通道代表X坐标,绿色代表Y,蓝色代表Z。这样一个三维坐标就变成了一个颜色值。
这带来了一个革命性的优势:现在,描述一个物体形状的不再是它独一无二的、复杂的三角网格,而是它在那个共享的、颜色编码的立方体空间里的映射关系。算法要学习的,不再是“某个具体相机长什么样”,而是“相机这类物体,在NOCS空间里一般如何用颜色分布来表示”。
2.2 NOCS图:从2D图像到3D空间的“翻译官”
那么,我们怎么得到这个NOCS映射呢?这就是神经网络大显身手的地方。研究者设计了一个CNN模型,它的任务之一就是:输入一张RGB图片,不仅要像普通目标检测模型一样输出物体类别和掩膜(Mask,即像素级分割图),还要为掩膜内的每一个像素点,输出一个颜色值——这个颜色值就是该像素对应的物体表面点在NOCS空间中的坐标。
这张由预测颜色构成的图,就叫做“NOCS图”。你可以把它理解为算法对物体可见部分在标准空间里形状的“猜测”或“重建”。有了这张图,再加上我们通过深度相机(如RGB-D传感器)获得的真实深度图,魔法就开始了。
我们知道图片中每个像素在相机坐标系下的3D位置(来自深度图),又通过NOCS图知道了同一个像素在标准物体空间(NOCS)里的3D坐标。这不就是找到了两组3D点云之间的对应关系吗?接下来,我们只需要计算一个最优的缩放、旋转和平移变换,将NOCS空间中的点云变换到相机坐标系下,这个变换就包含了我们梦寐以求的6D位姿和物体的绝对尺寸!
这个过程巧妙地绕过了对精确CAD模型的依赖。我们不需要知道物体的具体模型,只需要知道它在标准空间里的“归一化形状”,以及它和真实观测之间的对应关系,就能反推出它的实际状态。
3. 数据困境与巧妙的解决方案:混合现实与上下文感知
再厉害的算法,没有数据喂养也是巧妇难为无米之炊。类别级6D姿态估计的数据标注成本高得吓人,我们不可能为每个新物体都进行3D扫描和精细标注。
NOCS论文的作者们想出了一个非常聪明的办法:用合成数据“造”一个高质量的训练集。他们提出了一个叫做“上下文感知的混合现实”的方法,我更喜欢称之为“逼真的虚拟摆拍”。
3.1 数据生成流水线
这个方法的核心步骤非常清晰:
- 准备真实背景:他们收集了31个真实的室内场景(如桌面、书架、厨房台面)的553张RGB-D图像作为背景。这些背景提供了真实的光照、纹理和杂乱环境。
- 准备虚拟物体:从ShapeNet这样的庞大3D模型库中,选取6个目标类别(瓶子、碗、相机、罐子、笔记本电脑、杯子)的模型,以及一些作为干扰项的其他类别模型。
- 智能合成:这是最关键的一步,也是“上下文感知”的体现。他们不是简单地把虚拟物体随机粘贴到背景图上。首先,使用平面检测算法找出背景图中的平面区域(比如桌面、地面)。然后,只在检测到的平面上,以合理的物理姿态(比如杯子直立,笔记本电脑平放)放置虚拟物体。接着,会根据背景图像估计光照方向,在相应位置放置虚拟光源来渲染物体,使其阴影和反光与背景环境融合得更自然。最后,才将渲染好的物体与背景图像合成。
通过这套流程,他们生成了高达30万张的合成图像。每一张图像都自动带有完美的“真值”标签:物体类别、实例掩膜、以及最重要的——每个物体像素对应的NOCS坐标图(因为虚拟物体的模型和位置是已知的,这个映射可以精确计算出来)。
3.2 为什么这种方法有效?
我刚开始接触这个方法时,心里也有疑问:用虚拟数据训练出来的模型,在真实的复杂场景里能行吗?实践和论文结果都证明,非常有效。原因在于:
- 数量与多样性:30万张高质量标注图像,靠人工标注是天文数字的成本。合成数据可以近乎无限地生成不同物体、不同姿态、不同背景组合的样本,极大地覆盖了可能的变化。
- 物理合理性:“上下文感知”保证了合成图像符合物理常识(物体不会飘在空中,光照方向一致),这大大减少了模型学习到虚假关联(比如物体总是出现在图像中央)的可能性,提升了泛化能力。
- 零标注成本的真值:位姿、掩膜、NOCS图全部自动生成,精度完美。
当然,为了最终验证和微调模型,作者还是精心制作了一个小规模的真实数据集(REAL275),包含18个真实场景,约2750张图像,并对其中6类共42个独特物体实例进行了手工标注。这个数据集虽小,但至关重要,它是连接合成世界与真实世界的桥梁。
4. 网络架构与训练:让模型学会“画”出标准坐标
有了数据和表示方法,接下来就需要一个强大的模型来学习从RGB图像到NOCS图的映射。NOCS采用的网络骨架是基于经典的实例分割模型Mask R-CNN,并对其进行了关键的改造。
4.1 网络头部的设计
Mask R-CNN本身就有几个“头”来并行完成不同任务:一个用于分类(这是什么物体?),一个用于边界框回归(物体在哪?),一个用于预测掩膜(物体的精确轮廓是什么?)。
NOCS在此基础上,增加了一个全新的“NOCS Map Head”。这个头部的任务是:对于分类头识别出的每个感兴趣区域(ROI),预测一个28x28大小的特征图。但这个特征图不是普通的特征,它的三个通道分别对应NOCS坐标的X, Y, Z值(经过颜色编码)。
这里有一个重要的设计抉择:预测连续的坐标值(回归)还是预测离散的区间(分类)?直接回归坐标值看似直接,但训练不稳定,容易产生较大的误差。完全分类(比如把0到1的范围分成256份)则参数量大,训练困难。作者通过实验找到了一个平衡点:采用分类思想,但使用较粗的粒度(32个区间),并结合一个“软回归”损失函数。具体来说,网络预测每个像素属于哪个区间,同时损失函数会考虑预测分布与真实值之间的平滑L1距离,这使得学习过程更稳定,效果也比纯回归或细粒度分类更好。
4.2 应对对称性的特殊技巧
现实中的很多物体是对称的,比如一个圆柱形的罐头,绕其中心轴旋转任意角度,看起来都一样。这会给位姿估计带来一个根本性的歧义:多个不同的旋转姿态可能对应完全相同的观测图像。
NOCS的表示本身没有编码对称性,这可能导致网络在训练时产生困惑,因为同一个外观可能对应多个“正确”的NOCS图(旋转后的版本)。为了解决这个问题,作者在损失函数中引入了对称损失。
对于在训练数据中被定义为对称的类别(如瓶子、碗),在计算损失时,不是只将预测的NOCS图与一个固定的真值图比较,而是将其与绕对称轴旋转多个角度后生成的所有可能真值图进行比较,并只取其中最小的那个损失值。这相当于告诉网络:“对于这个对称物体,只要你预测的坐标图是这几个可能正确版本中的一个,我就算你对了。”这个技巧显著提升了对对称物体的姿态估计精度。
4.3 训练策略与技巧
训练这样一个多任务网络需要精心设计策略。作者采用了多阶段训练:
- 第一阶段:使用在大型数据集(如COCO)上预训练好的Mask R-CNN权重初始化主干网络,先冻结主干网络的参数,只训练新添加的RPN(区域提议网络)、FPN(特征金字塔网络)以及包括NOCS头在内的所有任务头。这个阶段让网络快速适应新的任务。
- 第二阶段和第三阶段:逐步解冻主干网络更深层的参数,并降低学习率进行微调。这种“解冻”方式能让底层通用的特征提取器慢慢调整,以适应6D姿态估计这个特定任务。
此外,他们还巧妙地利用了只有2D标注的COCO数据集。虽然COCO没有深度信息或NOCS真值,但其中海量的物体图像对于提升模型的类别识别和2D分割能力极有帮助。在训练时,他们以一定比例混合CAMERA合成数据、真实标注数据和COCO数据,让模型既能学到3D几何信息,又能增强2D感知的鲁棒性。
5. 从预测到姿态:如何利用NOCS图和深度图?
网络预测出了一张NOCS图,我们怎么把它变成最终的6D位姿和尺寸呢?这个过程可以看作一个经典的“点云配准”问题,思路清晰,但细节决定成败。
5.1 获取3D-3D对应点对
首先,我们需要两套点云:
- 观测点云 (P_m):从深度图而来。利用相机的内参,我们可以将物体掩膜内的每个像素,连同其深度值,反投影到三维空间,得到物体表面点在相机坐标系下的3D坐标集合。
- NOCS空间点云 (P_n):从预测的NOCS图而来。对于掩膜内的同一个像素,其预测的RGB颜色值就代表了它在NOCS标准立方体内的3D坐标(范围在[0,1])。这样就得到了同一组表面点在物体标准坐标系下的坐标集合。
现在,我们有了大量成对的3D点对应关系:(相机坐标系下的点, NOCS坐标系下的点)。
5.2 求解变换矩阵
我们的目标是找到一个变换 T,这个变换包含了一个缩放因子 s(因为NOCS是单位空间,需要缩放回实际大小)、一个旋转矩阵 R 和一个平移向量 t,使得:
P_m ≈ s * R * P_n + t
这是一个“相似变换”估计问题。我们可以使用鲁棒的估计算法,例如Umeyama算法(一种求解最小二乘意义下最优相似变换的封闭解),来初步计算 s, R, t。
5.3 鲁棒性优化:应对噪声与预测错误
然而,事情没那么简单。NOCS图的预测不可能100%准确,深度图也存在噪声,物体边缘的分割掩膜也可能有误差。这些都会导致错误的点对对应(外点)。直接使用所有点对进行估计,结果会被严重带偏。
因此,必须引入鲁棒估计机制。最常用的方法是RANSAC:
- 随机从对应点对中选取最小所需数量的点(对于相似变换,至少需要3个不共线的点对)。
- 用这少量点计算出一个变换假设
(s, R, t)。 - 用这个假设去测试所有的点对,计算每个观测点经过逆变换后与NOCS点之间的距离。如果距离小于一个阈值,就认为该点对是“内点”,支持这个假设。
- 重复上述过程很多次(例如几千次),最后选择那个拥有最多“内点”支持的变换假设。
- 用所有内点,最终精炼计算出一个更准确的变换矩阵。
通过RANSAC,我们可以有效剔除掉NOCS预测错误或深度测量异常的点,从而得到稳定、准确的6D位姿和物体尺寸估计。这个后处理步骤虽然不涉及深度学习,但对于整个系统的实用性至关重要。
6. 效果如何?实验与结果深度剖析
论文中进行了详尽的实验,验证了NOCS方法在类别级任务上的有效性,并与一些基线方法进行了对比。我们来看几个关键结论。
6.1 在合成与真实数据上的表现
在纯合成数据(CAMERA25)测试集上,NOCS方法在3D IoU(交并比)阈值设为50%时,达到了83.9%的mAP(平均精度)。这意味着对于超过八成的物体,其预测的3D包围盒与真实包围盒的重叠度超过一半。在更严格的6D姿态指标上(旋转误差<5度且平移误差<5厘米),mAP为40.9%。这个数字在类别级、且面对全新物体的设定下,已经是非常出色的起点了。
在更具挑战性的真实数据(REAL275)测试集上,模型在混合数据(合成数据+少量真实数据+COCO数据)上训练后,3D IoU 50%的mAP为76.4%,而 5°5cm 的mAP为10.2%,10°5cm 的mAP为23.1%。这里需要特别理解这个数字:10.2%的绝对精度看起来不高,但我们要对比着看。作者设置的基线方法(Mask R-CNN + 用ICP算法将点云与一个随机同类CAD模型对齐)在 5°5cm 指标上的mAP是 0.8%。NOCS方法将其提升了超过一个数量级!这充分证明了学习密集的NOCS对应关系,远比盲目地用现成模型去匹配点云要有效得多。
6.2 消融实验的启示
消融实验就像“控制变量法”,帮助我们理解每个组件的重要性。
- 上下文感知合成的价值:作者对比了“上下文感知”合成(物体被合理放置在检测到的平面上)与“非上下文感知”合成(物体随机放置)。结果前者性能显著优于后者。这说明,让合成数据更符合物理规律,能极大地帮助模型学习到真实世界的知识,而不是记住虚假的模式。
- 分类 vs. 回归:实验证实,将NOCS坐标预测视为一个分类问题(32个区间),其姿态估计精度优于直接回归。但在物体检测(3D IoU)任务上,更细粒度的分类(128个区间)效果更好。这提示我们,不同的任务可能需要不同粒度的监督信号。
- 对称损失的关键作用:对于对称物体类别,不使用对称损失时,姿态估计精度(尤其是旋转精度)会急剧下降。这个简单的技巧,解决了对称性带来的根本歧义,是工程实用性的重要体现。
6.3 在实例级任务上的“意外”表现
虽然NOCS是为类别级任务设计的,但作者也好奇它在传统实例级任务(有精确CAD模型)上的表现。他们在标准基准数据集OccludedLINEMOD上进行了测试。结果令人惊喜:NOCS方法取得了与当时最先进的实例级方法相媲美的性能。这说明,即使提供了精确模型,通过学习密集的坐标对应关系来估计位姿,依然是一个非常强大且通用的思路。这有点像“两条腿走路”:既有模型先验时可以用模型,没有模型时靠学习到的类别先验也能搞定。
7. 挑战、局限与未来展望
尽管NOCS开辟了一条新路,但在实际部署中,我们依然会面临不少挑战。从我研究和实践的经验来看,以下几点尤为突出:
光照与材质的剧烈变化:NOCS网络的第一阶段只使用RGB图像。在极端光照(强曝光、暗光)或特殊材质(透明、反光)下,RGB外观会发生巨大改变,严重影响物体检测、分割以及NOCS坐标的预测精度。虽然深度图能在后续阶段提供几何信息,但第一阶段若已失败,后续便无从谈起。未来的工作可能需要更鲁棒的特征提取器,或探索将深度信息更早地融合到特征学习中。
严重遮挡与截断:当物体被遮挡超过一半,或只有一小部分出现在视野中时,预测的NOCS图会变得非常不完整。基于RANSAC的位姿估计需要足够多的有效内点,严重遮挡下内点数量可能不足以支撑一个稳定的估计。这需要网络具备更强的形状补全推理能力,或者开发更能应对部分观测的位姿优化算法。
类别内部的高方差:NOCS假设同一类物体在归一化空间内形状是相似的。但对于一些内部差异巨大的类别(比如“椅子”,从办公椅到沙发椅形态迥异),一个共享的NOCS空间可能不足以捕捉所有变体。可能需要更细粒度的子类别划分,或者引入层次化的形状表示。
对深度传感器的依赖:目前的方法需要RGB-D图像作为输入,以获取度量尺度。这限制了其在只有单目RGB摄像头的设备(如大多数手机)上的应用。如何从单目图像中同时恢复尺度信息,是一个活跃的研究方向,例如结合单目深度估计,或者利用场景中的其他尺度线索。
实时性能:整个流程包括目标检测、实例分割、NOCS图预测和RANSAC位姿优化,计算开销不小。要达到机器人或增强现实应用所需的实时帧率(如30 FPS),需要在网络设计和后处理算法上进行大量的工程优化,例如使用更轻量的主干网络,或开发更高效的位姿求解器。
NOCS为我们提供了一个强大而优雅的框架,它将深度学习和几何视觉紧密结合,让机器在没有精确蓝图的情况下“理解”物体成为了可能。沿着这条路,后续的研究出现了很多改进工作,比如引入更强大的Transformer架构来建模长距离依赖,使用隐式神经表示来更灵活地编码形状,或者利用自监督学习来减少对合成数据的依赖。这个领域的每一次进步,都让我们离创造出真正能在复杂、未知环境中自如操作的智能体更近一步。在实际项目中尝试复现和应用这类方法时,从高质量的数据合成开始,耐心调整网络损失函数的权重,并精心设计后处理的参数(如RANSAC的迭代次数和内点阈值),往往是成功的关键。
542



被折叠的 条评论
为什么被折叠?



