查看原文
其他

EmbodiedScan:首个基于第一视角的多模态全场景三维感知开源工具包

OpenMMLab
2024-11-23

本文转载自:浦器,作者王泰


前 言

2023 年 ChatGPT 席卷全球,无论学界业界还是人们寻常生活。

2023 年自动驾驶的热点从 BEV 转向 occupancy 和端到端,L2 产品侧的竞争即将行至终局。

2023 年在 LLM 和 Tesla 的引领和加持下,人形机器人火了,催生了数家创业公司。

而 EmbodiedScan 则是穿越了这些时代变迁的一个工作,有幸没有在这场巨大变革中湮灭。我们希望这一工作可以为实现具身智能中的多模态三维感知提供一些思考;更重要的是,提供一套好用的开源数据/代码真正推动感知侧“通用”的最终实现。


太长不看版

从驾驶场景到室内场景,具身三维感知系统面对的是更复杂的室内语义,更多样的物体类别和朝向,以及大不相同的感知空间和需求。重新思考其中差异和数据基础,我们构造了一套基于第一视角的多模态全场景三维感知系统/工具包,从数据标注到模型训练,从基准构建到任务评测,以大规模真实场景扫描和面向下游的全面标注为基础,训练出一套可直接部署、且在开放场景表现优异的基础模型,旨在构建一套可量化的、面向通用具身场景的感知系统基准,并希望通过开源推动领域发展。

这篇文章将从构建 EmbodiedScan 的动机讲起,到具体介绍我们的数据集、方法和实验结果,最后提一下我们正在努力做的事情,希望能给社区一些有益的启发。


附 EmbodiedScan 相关传送门,欢迎 star 和提出宝贵意见:

论文: https://arxiv.org/abs/2312.16170

项目: http://tai-wang.github.io/embodiedscan

代码: https://github.com/OpenRobotLab/EmbodiedScan

图1:EmbodiedScan 训练出的模型迁移部署到 

Kinect 上后在开放场景(in the wild)中的测试。


从驾驶场景到室内场景

为何开始思考这种转变

从我个人开始系统性接触三维感知这个领域,我接触到的应用场景和数据都是来源于自动驾驶。自动驾驶拥有天然的广阔市场,相对简单的数据采集和标注流程,自然而然吸引了绝大多数研究者的目光。从 PointNet 开始引发基于 LiDAR 点云的一系列研究,到后来纯视觉的兴起,再到 BEV 范式、多模态融合,历经 5 年有余的时间,自动驾驶的感知问题似乎逐渐达到了饱和的状态。也就是在 FCOS3D/PGD/DfM 之后,随着我个人即将毕业进入下一阶段,我也开始思考下一步研究的具体方向。在诸多的迭代和讨论后,将目光锁定在了通用的具身场景。在系统性思考和分析后,我们认为室内外的解决方式/需求或许并不相同,因此一开始从熟悉的感知侧以及专注在室内场景入手。

说起来之前曾经讨论过一个比较有趣的现象:在 2D 的基础识别问题发展时候一开始大家就做了通用场景,比如大家熟知的 COCO,而后才有了更多特定驾驶场景的数据和需求,比如 Cityscapes 和 KITTI;而 3D 做了这么多年,很大一部分主力军还是在自动驾驶,做来做去还是那 10 类街道上的物体,是否这也说明室内 3D 发展起来本来就有困难,以及室内外是否本来就不需要统一。


具体会有哪些差别

话说回来,那从驾驶场景到室内场景究竟有哪些主要差别呢?其实仔细来看,这种场景转变产生的差异要比想象中大得多,因为这种差异不光是“具体场景”的区别(虽然很绕但很有道理的一句话)。首先,从输入角度考虑,室内场景下 RGB-D 传感器成本一般都是可接受的,而且一般伴随着给予机器人的指令(instruction)。因此某种程度上讲,使用第一视角的多模态输入是常态。其次,从感知内容上讲,物体类别数不必赘述,large-vocabulary 和 open-vocabulary 是常态;物体朝向也更加多样,在深度一般更容易估计的情况下,物体朝向的预测要困难的多,也会更加多样且更加重要(考虑到下游任务的需求),在这方面我们虽不一定做到 6D pose 那种准确程度,但也提出了更高的要求;另外,自身的定位是特别的难点,相比驾驶场景,室内没有了 GPS,只能更多依靠 IMU 以及一些 SLAM 的方式计算(在 EmbodiedScan 中我们采用了传感器自带的惯导简化问题,但真机上实现其他系统时这方面是老大难问题);最后,室内场景空间相对封闭、大小有限,虽感知范围有所减小,但遮挡严重,且经常需要建图和更新地图以支持物体的查找、导航等下游需求,而建图本身不包含语义、且建图前需要依赖感知来避障,如何将感知和建图更好地融合在一套系统中是一个在此场景下独有的问题。

图 2:EmbodiedScan 提供了一个多模态、基于第一视角的三维感知数据集,其中包含大量的真实扫描数据和全面且丰富的标注,从而构建了一个针对真实世界机器人,在基于语言的三维场景整体理解方面的评测基准。


我们的数据集有什么不同

和之前室内场景研究的不同

虽然以上差异看起来已经有很多新问题,但这只是对于原本做驾驶场景的研究者而言。其实很早之前,甚至在大家现在常用的 ScanNet 之前,也已经有了 SUN RGB-D 和 NYU Depth v2 等数据集专注在室内的感知研究上。更有另外一批 embodied AI 的研究人员已经收集了大到 1000 个 building 的巨大室内真实扫描数据 Habitat-Matterport 3D。那我们的数据和基准有什么不同?


1. 第一视角、真实扫描的重要性

[计算机视觉社区的想法]

虽然 SUN RGB-D 和 ScanNet 都提供了一部分 RGB-D 原始数据,但视觉社区并未对这方面问题有足够的重视,这可能也是视觉社区的相关进展并没有与 embodied AI 社区完全接轨的原因之一。具体来说,之前大家做 3D 感知,直接输入一个重建好的点云,做 3D 检测和分割等基础任务。这种 setting 在早期可以被认为是一种简化,以及确实在建好图之后能够有一定的应用场景。但是,让我们设想一个机器人到了一个环境中,他应该是逐渐积累自己第一视角的观察,逐渐形成关于整个三维环境的理解和表征,并在进一步的探索和工作过程中维护和更新这个表征。因此,第一视角出发形成三维认知才能直接面向具身场景

[具身智能社区的想法]

另一方面,在 embodied AI 的社区研究中,特别是 VLN (Vision-Language Navigation) 相关在 Habitat 中的工作,大家其实不太重视真实扫描的重要性,一般是有一个扫描好的场景 mesh,直接在仿真器中渲染相应的图,用以 navigation 策略的学习。但我们发现这种渲染的图严重依赖 mesh 的质量,通常情况下不可避免地出现渲染出的图并不是很真实,或者因为 mesh 的缺失而出现漏洞的问题。从视觉研究角度来说,这种输入的差别会产生一定的 domain gap,最终影响整个系统的 sim2real 迁移。

[我们的做法]

我们在构建 EmbodiedScan 的过程中充分考虑了这两点因素,希望训练出的模型能够直接部署真机可用,所以在一期挑选了 ScanNet, 3RScan, Matterport3D 这三个具备第一视角真实拍摄 RGB-D 图像的数据集作为原始数据,并对其进行抽帧、场景划分、全局坐标系对齐等处理以满足实验需求。这三个数据集也有各自的一些特点,比如 ScanNet 的 RGB-D 视频帧率要比 3RScan 高很多,Matterport3D 则是相对少的多视角图像以覆盖整个三维空间范围;而其他更细节的一些处理可以再关注我们的论文。这种多样性给我们预处理时带来了一些麻烦,但同时也让我们的模型可以处理各种各样的多视角图像,从而具备更灵活的使用体验和更鲁棒的性能。

图 3:SAM 辅助标注示意图和相关标注定量统计。


图 4:SAM 辅助标注的过程和界面。

点一下相应物体的 mask,便会初始化一个框用来进一步调整。


2. 小物体也覆盖,更系统的物体类别和朝向标注

[之前数据集标注的问题]

过去的工作由于在标注侧关注点云分割较多,如选用的这三个数据集,虽然部分研究也有使用框的标注,但这些框要么不准确、要么是从分割中自动生成出来的没有朝向的框(只有 6 自由度,axis-aligned 3D boxes)。而最近有三维框标注的工作,如 ARKitScenes,又只有很少 17 类物体的标注,远不能满足实际需求。另一方面,由于之前的标注是基于点云的,所以在统计时(无论是通过点云覆盖率来体现标注的完备性,还是 ScanNet200 中通过点云数量来分 head/common/tail 类别)都是基于点云数量的,这也自然而然导致漏掉了很多小物体的标注

[我们的标注]

为了克服这些问题,我们专门开发了一套标注工具(辛苦潇涵同学开发迭代,走了我读 PhD 的老路;也特别感谢 OpenDataLab 团队在部署侧的支持),一方面拥有在点云中标注带朝向的三维框的基础功能,另一方面参考相机拍摄内容和移动速度选取了一些关键帧,配合 SAM 分割的 mask,利用 RGB-D 图像得到点云 mask,从而初始化一个没有朝向的三维框供进一步调整。前者解决了朝向的标注问题,后者使得小物体的标注也不再困难。

我们和一个标注团队合作完成了总计 5k 多个扫描场景的标注并做了验收(也辛苦所有参与验收的同学,痛苦折磨而又伟大的小工作),由于标注过程中并没有要求标注人员从一个 closed set 中选取类别,因此原始类别标注是 open-vocabulary 的。这批原始标注一方面可用于未来 open-vocabulary 研究,另一方面我们又利用 NLP 的工具和 WordNet 等做了进一步合并处理,参考 COCO 和 LVIS 等经典数据集的物体类别最终形成了 760 个物体类别,其中涵盖了 COCO 69 个室内物体类别中的 50 个,以及 LVIS 1203 个物体类别中的 550 个。物体数量也整体有了 50% 以上的提升(细节如图 3 所示),最终多于 10 个物体的类别有 288 类,舍去一些背景类别和不清楚类别的 object 有 284 类,根据数量划分成 head/common/tail 分别有 90/94/100 类用于一期的 benchmark。 


3. 面向下游任务的全面标注:occupancy 和 language prompts

除了物体三维框这种传统标注之外,面向下游任务,我们还基于点云分割生成了 occupancy 的标注,以满足路径规划的需求;基于框的位置和朝向,生成了可以定位特定物体的语言标注,用于视觉定位(visual grounding),以满足下游导航需求(通常可以拆解成目标的 grounding 和基于目标和建图的路径规划问题)。其中语言标注基于 SR3D 的方式生成,同时因为我们的物体标注更加全面,在涉及朝向的 allocentric prompts 生成上更加准确,也同时更容易出现难以定位到单个物体的情形(单句描述出现多解的情况)。在这种情况下,我们后期做了一些描述上的拼接,以通过多个线索能唯一定位到某个物体,因此部分语言描述会相对变长。受益于我们充分的物体标注和场景数量,我们最终收集到近 1M 的语言描述,虽其中有些冗余和重复,但也是相比之前工作在数量级上有了明显的提升。另一方面,这批一期的语言标注更多关注在物体之间的位置关系,后续我们也将推出更多的语言标注,以满足更丰富的 3D-language 相关研究。

图 5:基线方法框架示意图。


配套的基线方法

介绍完我们的数据和标注之后,更重要的事情还是利用这些数据能够训练出来一个真正好用的模型。基于上述分析,我们的模型需要读入任意帧的 RGB-D 序列,配合语言指令,能够实现 sparse (检测) / dense (occupancy) / grounding 三种下游任务,因此有了如图 5 所示的基线框架,我们暂且称之为 Embodied Perceptron。这套框架首先采用不同模态的预训练网络(稀疏卷积的 Mink ResNet / 图片的 ResNet / BERT)分别处理三种模态数据,而后针对稀疏和稠密的下游任务分别在点云/预设网格点上进行特征融合,再配合相应的预测头输出;同时稀疏点云的特征和语言特征融合进行相应的视觉定位,整体框架简单统一且有效。值得一提的是,在进行稀疏特征融合的时候,我们发现低层/高层特征在每个特征层分别做融合,要比只采用经过 FPN 后的高层图像特征效果更好,训练也更稳定。其中更多的算法侧细节请详见论文和开源代码。


基准和实验结果

一些常规性量化实验结果

最终我们构建了针对传统感知任务和多模态场景理解的两套基准,其中传统感知任务包括 3D 目标检测和 semantic occupancy 预测,而多模态场景理解以多视角三维视觉定位作为初步尝试。针对实际使用场景,我们还提出了连续(continuous)感知的 setting,即从第一帧开始,每帧都评估到目前为止场景中可见物体检测的准确率。我们实现了一系列领域内相关任务的工作,以构建一个原始的基准供社区后续持续研究。在这过程中我们发现,这些传统任务仍然没有实现令人满意的性能,体现了在我们这个 setting 下仍然存在较大的研究空间。另外我们在实验结果中也发现了一些合理且有趣的现象,比如稀疏输出的检测任务中,基于纯深度点云已经可以实现一个接近多模态的性能(17.16→19.07);而稠密输出的 occupancy 预测任务中,视觉的输入能够帮忙纯深度点云的方法实现一个长足的提升(14.44→20.09)。更多定量的实验结果和分析请详见论文。

开放场景测试

除了定量的分析之外,更让我们感到欣喜的是算法在开放场景(in the wild)中的可迁移性和良好性能。我们采用与训练数据不完全相同的 RGB-D 传感器(Kinect)在实验室的室内场景中做了几组测试,推文最开始的图 1 是其中一组预测结果的可视化(并没有挑选一些特例,测试的所有结果详见项目主页完整版视频)。可以看到我们的模型能够很顺利地部署到一个新的设备上,并且在新的环境中有相当不错的表现,这也正呼应了我们的初衷,希望能够推动最终实现真正“通用”、“好用”的具身感知系统。


EmbodiedScan的价值

分析了这么多,最后针对前面留的一些伏笔/坑做个收尾。我们其实声称 EmbodiedScan 做了这样几件重要的事:1. 标了带有朝向的三维框;2. 采用原始的 RGB-D 输入;3. 采用真实拍摄的图而不用渲染图;4. 贡献了一个各方面体量上有显著提升的数据集。我们的实验也相应地给了一些“马后炮”的分析。例如:1. 有了带朝向的框之后确实问题困难了一些,会引起比较大的性能下降;2. 采用原始的 RGB-D 输入可能在 AP25 这种不严格的评测上影响不大,但因为深度图不够准,在 AP50 上会有比较大的影响;3. 采用真实拍摄的图是可以避免 domain gap 问题的,在真实环境中会有性能上的显著优势;4. 更大的数据集和更多样的场景/原始数据/标注可以显著提升模型在各种测试环境中的性能,甚至在 head 类别上最多能取得 7% 以上的提升。所有这些分析再一次证明了构建 EmbodiedScan 这套数据最终确实能够回馈给我们想要的价值。


部分有准部分没准的flag

最后的最后,按照惯例做一些预告,留些可能有准可能没准的 flag。之所以这样说,其实也是时代变化太快,很多时候计划赶不上变化。前两天做总结和计划回看 2023 年初计划的时候,恍若隔世,仿佛不是同一波人想的,开玩笑的说,感觉一年前还在玩泥巴 lol。而除了技术的快速发展,这一年在我们身边确实也发生了很多重要的事。我们能做好的,就还是能够不忘初心,把能做的、认为该做的坚持做下去,最终共同推动这个领域的发展。

干货部分

说点干货,我们近期会持续推动 EmbodiedScan 的开源、后续的标注以及更多数据和平台的基础性工作,希望能够切实推动这个领域的数据积累和通用性发展。开源的标注文件还在努力清洗,开源的 codebase 实现了一些方便的可视化和 tutorials,同时正在努力做轻量化(尽量避免 mmdet3d 大而全带来的一些弊病),开源后续也会考虑举办一些比赛,请大家持续关注。

广告贴

最后也宣传下 OpenRobotLab,最早酝酿做这个方向得追溯到一两年前,最近一年总算是在各方支持下酝酿出一些还不错的工作,比如泽琪的 UniHSI 最近也刚被 ICLR 接收为 spotlight,还有颇受欢迎的“盲狗”行走大法 HIMLoco,以及润森的 PointLLM。欢迎各种形式的交流讨论合作~


RoboDrive自动驾驶挑战赛火热招募中,五大赛道,等你来战!

2024-01-24

书生成数学“课代表”,上海AI实验室开源发布书生·浦语数学,计算推理能力刷新上限

2024-01-23

清华提出首个面向无监督和半监督新意图发现的文本聚类框架USNID

2024-01-22

继续滑动看下一个
OpenMMLab
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存