VLA-3D
收藏资源简介:
VLA-3D是由卡内基梅隆大学机器人研究所创建的一个大型3D语义场景理解与导航数据集。该数据集包含超过11.5K个扫描的室内房间,23.5M个对象间的语义关系,以及9.7M个合成生成的指代语句。数据集内容包括处理后的3D点云、语义对象和房间标注、场景图、可导航的自由空间标注以及指代语言语句。创建过程涉及从多个现有数据集(如ScanNet、Matterport3D等)中提取3D扫描数据,并生成详细的场景图和语言语句。该数据集主要应用于室内导航系统,旨在解决复杂场景中的对象识别与空间推理问题,特别是对于需要高度鲁棒性的实际应用场景。
VLA-3D is a large-scale 3D semantic scene understanding and navigation dataset created by the Robotics Institute at Carnegie Mellon University. This dataset contains over 11.5K scanned indoor rooms, 23.5M semantic relationships between objects, and 9.7M synthetically generated referring expressions. Its contents include processed 3D point clouds, semantic object and room annotations, scene graphs, navigable free space annotations, and referring linguistic utterances. The creation of this dataset involves extracting 3D scanned data from multiple existing datasets such as ScanNet, Matterport3D, and other similar resources, as well as generating detailed scene graphs and linguistic utterances. Primarily applied to indoor navigation systems, this dataset aims to tackle object recognition and spatial reasoning challenges in complex scenes, particularly for real-world application scenarios requiring high robustness.
VLA-3D 数据集
简介
VLA-3D 数据集是一个用于视觉语言基础的3D对象参考数据集,适用于视觉语言导航(VLN)等高级任务。该数据集包含900万+语言陈述,这些陈述是为7635个3D场景中的11619个区域合成生成的,这些场景来自多个3D扫描数据集。数据集作为CMU Vision-Language-Autonomy (VLA) Challenge的一部分发布。每个数据源的示例场景可以在sample_data目录下找到。
新闻
- [2024-07] 我们发布了数据集的第一个版本。下载说明请参考下载部分。
下载
安装 minio 和 tqdm:
bash
pip install minio tqdm
运行 download_dataset.py 脚本。脚本可以使用以下参数:
--download_path: 下载数据集的输出文件夹路径。默认为VLA-3D_dataset。--subset: 指定要下载的数据集源名称,以仅下载数据集的子集。可选值包括 Matterport/Scannet/HM3D/Unity/ARKitScenes/3RScan。如果不提供此参数,将下载完整数据集。
数据将以zip文件的形式下载到输出目录中,每个文件对应一个3D数据集源。
bash python download_dataset.py --download_path full_dataset
原始数据
数据集包含以下六个3D扫描数据集的场景:
- Matterport3D [2]: 90个场景 - 2195个区域
- ScanNet [3]: 1513个场景
- Habitat-Matterport 3D (HM3D) [4]: 140个场景 - 1991个区域
- Unity [5]: 15个场景 + 3个场景因挑战而被省略 - 46个区域
- ARKitScenes [6]: 4494个场景
- 3RScan [7]: 1381个场景
除了Unity场景是合成生成的,其他数据集均为真实世界数据。每个场景中的对象数量从4到2264不等。
数据集格式
数据集的整体文件结构如下:
<dataset_folder>/ -- <scene_name>/ -- <scene_name>_pc_result.ply 处理后的整个场景点云 -- <scene_name>_object_split.npy 包含对象ID和分割索引的文件,用于与.ply文件一起使用 -- <scene_name>_region_split.npy 包含区域ID和分割索引的文件,用于与.ply文件一起使用 -- <scene_name>_object_result.csv 对象信息文件,包含对象ID、类别标签、边界框和每个场景中每个对象的主导颜色 -- <scene_name>_region_result.csv 区域信息文件,包含区域ID、区域名称、边界框 -- <scene_name>_scene_graph.json 场景图,包含每个场景中每个区域/房间内的对象关系 -- <scene_name>_referential_statements.json 包含生成的语言陈述的JSON文件
生成的场景图以JSON格式存储,所有对象及其属性和对象间关系按区域存储在每个场景的文件中。对象属性包括语义类别标签、边界框、大小、主导颜色和方向(如果有)。
生成的语言也以JSON格式存储,每个JSON对象包含语言陈述、目标对象和锚对象的信息、关系类型和干扰对象。目标对象以object_id、类别标签、中心点、大小(边界框的体积)和前三个主导颜色存储。
数据集生成
数据集生成流程包括三个主要步骤:1) 3D扫描数据处理,2) 场景图生成,和3) 语言生成。
3D扫描数据处理
每个数据集的3D场景存储在每个场景的单独子文件夹中。场景首先被预处理为五个文件:
- 点云.ply文件。
- 包含区域点ID和结束索引的.npy文件。
- 包含对象点ID和结束索引的.npy文件。
- 包含区域信息的CSV文件。
- 包含对象信息的CSV文件。
点云生成
全彩色场景点云按以下方式生成并存储在 <scene_name>_pc_result.ply 中:
- Matterport-3D、ScanNet和ARKitScenes将场景网格存储为带有预烘焙颜色的.ply文件,因此这些数据集的场景级点云直接从原始.ply文件中获取。
- HM3D、3RScan和Unity数据集将场景存储在.glb和.fbx网格中,并使用UV映射进行纹理处理。点云因此从这些场景中均匀采样,颜色从原始纹理中采样并烘焙到采样点中。Unity中每个场景的采样点数与每个场景中的对象数成比例,3RScan和HM3D网格的总表面积按 $2*10^{-4}$ 划分进行采样。
每个.ply文件存储点坐标和RGB值,不包含对象和区域ID。相反,点首先按区域ID排序,然后按对象ID排序。两个.npy文件:<scene_name>_object_split.npy 和 <scene_name>_region_split.npy 分别包含 n_objects x 2 和 n_regions x 2 数组。每个数组的第一列包含各自的对象和区域ID,如果某些点属于未标记的对象和区域,则可能从-1开始。第二列包含给定各自ID的区域和对象的结束索引。这些文件可以与 numpy.split 一起使用,在将.ply文件读取为numpy数组后,分别分割对象和区域点。visualizer 包含使用这些文件分割区域的示例。
区域级信息
区域CSV文件包含以下信息:
region_id: 场景内区域的唯一IDregion_label: 区域名称(来自源数据或基于启发式标记)region_bbox_c[xyz], region_bbox_[xyz]length, region_bbox_heading: 区域边界框的中心点、大小和方向角(当前所有数据集的方向角为0,区域边界框为轴对齐)
ScanNet、ARKitScenes和3RScan每个场景已经包含一个区域,因此区域边界框是整个点云的边界框。Matterport-3D的区域边界框从原始数据集中获取,而HM3D和Unity的轴对齐边界框从按区域分割的点中创建。
对象级信息
object_id: 场景内对象的唯一IDregion_id: 对象所属区域的IDraw_label: 原始数据集中给定的对象名称nyu_id,nyu40_id,nyu_label,nyu40_label: 基于NYUv2 和 NYU40 模式的类别索引和名称object_bbox_c[xyz], object_bbox_[xyz]length, object_bbox_heading: 定向对象边界框的中心点、长度、宽度、高度和方向object_front_heading: 具有规范前方向的对象的前方向object_color_[rgb][123]: 最多前三个主导颜色的RGB值object_color_scheme[123]: 基于颜色映射的前三个主导颜色的名称object_color_scheme_percentage[123]: 属于前三个主导颜色的点所占百分比object_color_scheme_average_dist[123]: 分类为前三个颜色的点与这些颜色的LAB空间中的颜色值之间的平均距离
原始作者提供的类别映射用于将ScanNet和Matterport-3D标签映射到NYUv2和NYU40标签。我们为Unity、HM3D、ARKitScenes和3RScan数据集手动创建了新的类别映射文件,位于unity、hm3d_full_mappings.csv、arkit_cat_mapping.csv 和 3rscan_full_mapping.csv。
主导颜色
为了增强对象参考陈述的颜色信息,我们将每个对象的主导颜色分类为一组15种基本颜色。对于每个分割对象,点级颜色从RGB映射到LAB空间,然后使用CSS3颜色作为锚点进行聚类。CSS3颜色标签然后使用3d_data_preprocess/utils/dominant_colors_new_lab.py中的启发式方法映射到一组15种基本颜色。如果超过10%的点被分配到特定颜色,则该颜色是主导颜色,并保存前3个或更少的主导颜色。
处理每个原始数据源场景的脚本位于3d_data_preprocess/。
自由空间生成
为了提供额外的导航目标,每个扫描还被处理以生成水平可穿越的自由空间。房间中的单独可穿越区域被分块为子区域,为这些空间生成与其他场景中对象的空间关系,以创建对这些空间的明确参考(例如“桌子附近的空间”)。
场景图生成
使用预处理文件按区域计算空间关系,并使用每种关系的启发式方法。所有使用的关系都是视图无关的,因为它们不依赖于场景的视角。此外,如果目标/锚点边界框显著重叠或包含在另一个边界框中,则过滤所有关系。使用的关系包括:
| 关系 | 定义 | 同义词 | 附加属性 |
|---|---|---|---|
| Above | 目标在锚点上方 | Over | |
| Below | 目标在锚点下方 | Under, Beneath, Underneath | |
| Closest | 目标是在特定类别中离锚点最近的物体 | Nearest | 跨类别 |
| Farthest | 目标是在特定类别中离锚点最远的物体 | Most distant from | 跨类别 |
| Between | 目标在两个锚点之间 | In the middle of, In-between | 三元关系 |
| Near | 目标在锚点的一定距离阈值内 | Next to, Close to, Adjacent to, Beside | 对称 |
| In | 目标在锚点内部 | Inside, within | |
| On | 目标在Z轴上与锚点接触并在其上方 | On top of |
生成场景图的脚本位于scene_graph/文件夹。
语言生成
基于计算的空间关系,使用类似于Sr3D [1]的模板生成方法合成生成语言陈述。从上表中,每个关系的同义词用于增加陈述的多样性。生成的语言陈述确保:
- 视图无关:目标对象的关系谓词不依赖于场景的视角
- 唯一性:在区域中只有一种可能性存在
- 最小化:遵循人类语言,使用尽可能少的描述符来消除目标对象的歧义
每个语言生成组件的详细信息如下。
语言配置
语言配置文件包含生成人类可读句子所需的所有参数和模板。它们包含每种关系类型的模板,例如“[目标对象] 是 [关系] 到 [锚点对象]”,以及每种关系的同义词。这些结构蓝图为相同的

- 1VLA-3D: A Dataset for 3D Semantic Scene Understanding and Navigation卡内基梅隆大学机器人研究所 · 2024年



