如何让机器人无需长时间训练就能识别物体
想象一下:你买了一个新的机械臂,或者决定为零件分拣构建一个智能相机。你有一堆各种各样的物体——从汽水罐到复杂的备件。当今计算机视觉的标准流程是收集数据集、标注数千帧图像、训练模型,然后祈祷它不会在不同的光照条件下"漂移"。如果明天出现一个新物体呢?你就得从头再来一遍。
NVIDIA Research的工程师们似乎已经厌倦了这种无休止的循环,于是推出了FoundationPose。这是一个用于6D姿态估计(空间中的位置和方向)和物体跟踪的统一模型,即使对于训练中从未见过的物体,也能"开箱即用"。
主要特点是什么
通常,6D姿态估计任务分为两大阵营。第一种是你有物体的精确CAD模型(基于模型),第二种是你只有从不同角度拍摄的几张照片(无模型)。FoundationPose将这两种方法结合了起来。
这个项目的亮点在于它不需要针对特定任务进行微调。你只需要给它一个3D模型或一组参考图像,它就能立即开始输出物体在空间中的坐标。目前,这个解决方案在BOP(6D物体姿态估计基准测试)世界排行榜上,在新颖物体方法中排名第一。
内部工作原理
开发者们使用了几个巧妙的技巧来实现这种灵活性。
首先,他们应用了神经隐式表示。这使得系统能够动态合成物体的新视图,使姿态估计过程在有现成3D模型的情况下和只有几张照片的情况下完全相同。
其次,训练规模令人印象深刻。该模型使用了大量合成数据进行训练。一个有趣的点是:大语言模型(LLM)参与了数据生成。这有助于创建难以手动获取的多样化场景和纹理。
第三,架构建立在transformer和对比学习之上。简单来说,模型学习将当前帧与参考图像进行比较,并准确理解物体的旋转方式,而不依赖于"这个特定的钻头"等特定特征。
项目在实践中的能力
如果你查看仓库中的演示,可以看到三种主要使用场景:
- 机器人技术。机器人抓取一个不断移动的芥末瓶。系统能够实时重新计算姿态,这对于机械臂至关重要。
- 增强现实(AR)。虚拟物体"粘附"在真实物体上,不会出现抖动和偏移。
- 处理复杂数据集。该模型在YCB-Video等经典基准测试上表现出色,其中存在大量遮挡(当一个物体遮挡另一个物体时)。
顺便说一下,对于关心生产环境速度的人,NVIDIA准备了带有TensorRT支持的ROS版本。通过GPU优化,这可以显著提升FPS。
如何启动和试用
部署这类ML项目通常会陷入依赖地狱,但这里作者提供了两条合理的路径。
最简单的是Docker。团队已经准备好了配置好所有CUDA技巧的镜像。
如果你更喜欢Conda,过程会稍微复杂一些,因为你需要手动构建C++和CUDA扩展。你需要安装PyTorch、PyTorch3D和NVDiffRast。
设置完成后,运行演示非常简单:
默认情况下,脚本将展示模型如何跟踪演示数据中的芥末瓶。首先是初始化(第一帧的姿态估计),然后自动切换到跟踪模式。
细节和局限性
不要指望在任何显卡上都能完美运行。例如,RTX 4090用户由于新CUDA内核的特殊性,需要使用自定义Docker镜像。
另一个重要点:由于Stable Diffusion许可限制(它被用于生成部分训练纹理),作者无法发布使用扩散增强训练的模型权重。公开版本稍微简单一些,因此准确性可能略低于官方研究论文中报告的结果。
谁会从中受益
FoundationPose不仅仅是CVPR论文中的又一个神经网络。对于从事以下工作的人来说,这是一个现成的基础:
- 仓库机器人技术(需要快速将新产品添加到系统中)。
- 制造业的质量控制。
- 创建交互式AR应用。
如果你需要确定物体在空间中的位置,又不想为每个新的"小螺丝"花几周时间收集数据集,这个仓库绝对值得收藏。该项目非常活跃,在Issues中讨论热烈,BOP排行榜的领先地位表明,它是目前该领域最强的SOTA方法之一。
相关项目