@DataScienceHarp:我做了一个数据集,但法律上我不能把它给你。Meta 的 Aria Digital Twin:9 个同步的 MCAP 片段,250 万条消息……

X AI KOLs Following 工具

摘要

一篇操作讲解,展示如何将 Meta 的 Aria Digital Twin 第一人称视角数据集(视频、深度、分割、注视、骨架、3D 框)转换为单个同步的 MCAP 文件,并在 FiftyOne 中加载可视化,同时分享了约 300 行代码,任何人都可以在该数据集的非商业许可下运行。

我做了一个数据集,但法律上我不能把它给你 Meta 的 Aria Digital Twin:9 个同步的 MCAP 片段,250 万条消息。 第一人称视角视频、深度、分割、眼部注视、骨架、3D 框 全部在 FiftyOne 中保持同步。 然后我读了许可协议:禁止重新分发,禁止公开展示 但许可协议并没有阻止我分享构建这个数据集的每一行代码 这篇操作讲解介绍了如何为任何非原生数据源从头编写 MCAP:图像、变换、标注、IMU,全部按全局时间顺序写入 自己动手构建:https://voxel51.com/blog/aria-digital-twin-mcap-fiftyone… #mcap #技能 #计算机视觉 #AI #人工智能 #机器视觉 #机器学习 #物理AI
查看原文
查看缓存全文

缓存时间: 2026/10/06 13:49

我构建了一个我依法无法给你的数据集

Meta 的 Aria Digital Twin:9 个同步的 MCAP 片段,250 万条消息。

第一人称视频、深度、分割、视线、骨骼、3D 框

全部在 FiftyOne 中同步。

然后我读了许可协议:禁止再分发,禁止公开展示

但许可协议并没有禁止我分享构建它所需要的每一行代码。

这篇教程涵盖了如何从零开始为任何非原生数据源生成 MCAP:图像、变换、标注、IMU,全部按全局时间顺序写入。

自己动手构建:https://voxel51.com/blog/aria-digital-twin-mcap-fiftyone…

#mcap #skills #computervision #ai #artificialintelligence #machinevision #machinelearning #physicalai


Aria Digital Twin 转 MCAP:在 FiftyOne 中加载 ADT 序列

来源:https://voxel51.com/blog/aria-digital-twin-mcap-fiftyone 下载一个 Aria Digital Twin 序列,用 Meta 自己的采集流水线、约 300 行 Python 代码,把它自带的全部真值流写入一个同步的 MCAP 文件,并加载到 FiftyOne 的多模态查看器中。

Aria Digital Twin(https://www.projectaria.com/datasets/adt/)(ADT)是 Meta Reality Labs 的一个研究数据集(https://voxel51.com/glossary/dataset):真实的人在两个完全数字化的房间中进行日常活动,由 Project Aria(https://www.projectaria.com/)智能眼镜录制,并为场景中的每个人、每件物品和每台设备配上了毫米级精确的六自由度(6DoF)真值(https://voxel51.com/glossary/ground-truth)。它以一个 .vrs 录制文件外加八个独立的真值 zip 文件的形式发布,每个文件都挂在各自的预签名 URL 之后。以上这些,FiftyOne(https://docs.voxel51.com/)(一个用于可视化和管理 ML 数据集的开源工具包;pip install fiftyone)都无法直接打开。

FiftyOne 的多模态查看器需要的是每个序列一个文件:一条单一时间线,让 RGB 视频、深度、分割、合成渲染、2D/3D 目标框、人体骨骼、视线、半稠密点云、设备的 6DoF 轨迹以及惯性测量单元(IMU)数据流全部同步回放(https://voxel51.com/glossary/sensor-synchronization)。这个文件就是 MCAP(https://mcap.dev/):一种面向带时间戳的多通道二进制数据(https://voxel51.com/glossary/mcap)的容器格式,思路与 ROS bag(https://voxel51.com/blog/mcap-robot-log-audit-fiftyone)相同,但不依赖 ROS。

下面这条完整路径,会从 Meta 的下载页面一直走到一个你可以在 FiftyOne 里拖动回放的数据集:以一个 Apartment 场景序列(https://voxel51.com/glossary/episode)为对象,把 ADT 附带的每一种模态都变成各自的 MCAP 通道。

**说清楚版权。**Aria Digital Twin(Meta Reality Labs Research,arXiv:2306.06362)的许可仅限个人、非商业研究用途,许可条款(https://www.projectaria.com/datasets/adt/license)明确禁止分发或公开展示该数据集“或由其衍生的任何材料或作品”。在拿到下载链接之前,你需要通过 Meta 的 Aria Dataset Explorer(https://explorer.projectaria.com/)自行接受该许可。本文展示的是代码,不是数据的副本。

核心要点

  • Aria Digital Twin(截至本文写作时共 236 个序列,原始论文中为 200 个)以原始 .vrs 录制加真值 zip 的形式发布,这些文件通过受 Meta 许可约束的预签名 URL 提供,其中六个组件被本流水线实际读取。
  • 一个包含全部模态的序列,下载量确实不小:145 秒的序列跨七个文件共 12.4 GB,其中仅原始深度 zip 就占了 7.8 GB。
  • AriaDigitalTwinDataProvider 按时间戳为你提供逐帧的图像、框、骨骼和视线数据;十二个 foxglove 通道把这些内容汇成一个 .mcap 文件,FiftyOne 可以原生播放,无需导出器或自定义加载器。
  • 两个隐蔽的坑:ADT 的世界坐标系以 Y 轴向上,而 Foxglove/ROS 的 3D 查看器默认 Z 轴向上;如果为每种模态各写一个循环,回放会失同步,除非事后按 log_time 重新排序所有消息。
  • 第三个坑只影响 3D 框:这个序列追踪的 354 个对象中有 304 个从不移动。每帧都重画全部对象,仅这一个通道就有 77 MB;把静态对象只记录一次、只重画真正会动的那 50 个,就解决了。
  • 收获是:一个 145 秒的序列变成一个 2.5 GB 的 .mcap 文件,包含 12 个通道共 181,444 条消息,全部同步,距离 FiftyOne 的多模态查看器只差一次 fo.Sample(filepath=...) 调用。(https://voxel51.com/blog/fiftyone-supports-multimodal-data)

安装

pip install foxglove-sdk projectaria-tools mcap pillow numpy pandas fiftyone

本文中的每个代码块都是针对 foxglove-sdk 0.26.0、projectaria-tools 2.2.0、mcap 1.3.1、pillow 11.3.0、numpy 2.4.6、pandas 3.0.0 和 fiftyone 1.21.0 编写的。步骤 1 的下载还需要 PATH 中有 curl。

步骤 1:下载一个 Aria Digital Twin 序列

通过 Aria Dataset Explorer(https://explorer.projectaria.com/)或数据集下载页面(https://www.projectaria.com/datasets/adt/)申请 ADT 的访问权限,并接受许可条款。Meta 会返回一个 JSON 文件,通常称为“CDN 文件”,包含两个顶层键:sequences(每个序列的名称,各自映射到组件名、预签名下载 URL、文件大小和校验和)以及 sequence_config(存在哪些组件)。把它保存到本地;本文称其为 adt_download_urls.json,但你的文件名可能不同。manifest["sequences"].keys() 列出了所有可供选择的序列名称,其中就包括全文使用的 Apartment_release_multiskeleton_party_seq101_M1292。

Meta 为这个文件提供了一个官方下载器:pip install projectaria-tools(本文的安装步骤已经包含)会安装一个 aria_dataset_downloader 命令,可直接读取 CDN 文件:

aria_dataset_downloader \
    --cdn_file adt_download_urls.json \
    --output_folder adt_raw \
    --sequence_names Apartment_release_multiskeleton_party_seq101_M1292 \
    --data_types main_vrs main_groundtruth mps_slam_trajectories mps_slam_points segmentation depth synthetic

这会下载原始文件。下面每种模态都需要从 CDN 文件中取用各自的组件:

组件承载内容大小(本序列)
main_vrsRGB/SLAM 图像、IMU、标定2,341 MB
main_groundtruth2D/3D 框、实例、骨骼文件、原始视线97 MB
mps_slam_trajectories设备 6DoF 位姿15 MB
mps_slam_points半稠密点云624 MB
segmentation实例分割视频573 MB
depth逐像素度量深度视频7,792 MB
synthetic照片级真实的合成渲染918 MB

本流水线下载的七个 ADT 组件、各自在最终 MCAP 中承载的内容,以及其在 Apartment_release_multiskeleton_party_seq101_M1292 中的大小。

为了看清每一步到底在做什么,并直接得到本流水线所期望的扁平化解压布局,下面是等价的纯 Python 版本,而非命令行版本:

import json
import subprocess
import zipfile
from pathlib import Path

manifest = json.loads(Path("adt_download_urls.json").read_text())
entry = manifest["sequences"]["Apartment_release_multiskeleton_party_seq101_M1292"]

# 只保留本流水线真正读取的组件。清单为每个序列还提供了更多组件
# (mps_slam_calibration、mps_eye_gaze)——详见下面的「提示」。
NEEDED = [
    "main_vrs", "main_groundtruth", "mps_slam_trajectories",
    "mps_slam_points", "segmentation", "depth", "synthetic",
]

raw_dir, flat_dir = Path("adt_raw"), Path("adt_flat")  # raw_dir:原样下载的文件;flat_dir

相似文章

ACE-Data-0:以人为中心的环境采集作为具身数据引擎

Hugging Face Daily Papers

介绍了ACE-Data-0,这是一个大规模具身AI数据集,包含150小时、跨200个任务类别的同步多模态人类演示,由环境采集引擎(ACE)在真实家庭环境中捕捉。数据集附带一个分层基准,揭示了现有方法在接触、遮挡和长时程任务下的明显不足。

Hugging Face 数据集突破 100 万!

Reddit r/LocalLLaMA

庆祝 Hugging Face 社区达成 100 万个数据集的里程碑,彰显社区通过开放数据协作推动 AI 发展的共同努力。