第 13 章 — 数据方案总览:自采 + 合规抓取 + 开源 + 合成
算法的上限是模型,但算法的下限是数据。对于人形机器人而言,数据不仅是燃料,更是其理解和融入物理世界的唯一桥梁。
开篇段落
本章是整个课程中承上启下的关键一环,我们将从算法的抽象世界下沉到数据驱动的现实工程。在此之前,我们讨论了多种算法范式(传统、OCC、VLA),但所有这些范式的实现、泛化能力和鲁棒性,最终都归结于其所使用的数据的质量、规模与多样性。本章将系统性地阐述如何为一个人形机器人导航项目,从零开始构建一个健壮、合规且可扩展的“四位一体”数据方案。我们将深入探讨自采(Self-collection)、合规抓取(Compliant Scraping)、开源(Open Source)与合成(Synthetic)这四大数据来源的策略与实践,并详细剖析其背后的技术细节与权衡。本章的目标是为读者提供一套可落地的、精细化的“数据配方”与操作手册,以支撑从 1B 轻量级模型到 10B 级复杂模型的算法研发全周期。
13.1 数据目标与配比:几何/语义/语言/规划/交互
一个成功的导航系统不是由单一类型的数据喂养大的,而是由一个结构化的、多层次的数据金字塔所支撑。不同类型的数据服务于算法栈的不同部分,其获取成本、信息密度和对模型能力的影响力也各不相同。
数据金字塔 (The Data Pyramid)
这个金字塔模型从下到上,数据量递减,但价值密度和获取难度递增。
^
/ \
/交互\ <-- L4: Interaction Data (社交/协作/对抗) ~TB级, 极高价值
/-----\
/ 语言 \ <-- L3: Language Data (指令/对话/VQA) ~10s TB级, VLA核心
/-------\
/ 语义规划 \ <-- L2: Semantic/Planning Data (标注/轨迹对) ~100s TB级
/-----------\
/ 几何轨迹 \ <-- L1: Geometric/Trajectory Data (视频/IMU/位姿) ~PB级, 基石
/---------------\
L1: 几何/轨迹数据 (Geometric/Trajectory Data)
- 内容:
- 原始流: 多摄 RGB/Fisheye 视频流 (
.mp4/.bag)、高频 IMU 数据 (.csv/.bag)、轮式里程计、ToF 深度图。
- 处理后: 通过 COLMAP, VINS-Fusion, ORB-SLAM3 等工具链处理后得到的相机位姿轨迹(
TUM 或 KITTI 格式)、稀疏/稠密点云 (.ply)、深度图估计。
- 用途:
- 感知基石: 训练视觉编码器(Visual Encoder),使其学习到稳健的几何与外观表征。
- 定位与建图: 作为 VIO/SLAM 系统的输入,用于算法的开发、调试和评测。
- 占据网络: 为 3D Occupancy 预测模型提供多角几何约束。
- 规模: 这是数据量的基础。一个中等规模的采集车队一天就能产生数 TB 的原始数据。目标是覆盖数万小时、百万公里的多样化轨迹。
L2: 语义/规划数据 (Semantic/Planning Data)
- 内容:
- 2D 语义: 像素级分割掩码(Panoptic Segmentation)、物体检测框、属性标签(如“门把手”、“电源开关”)。
- 3D 语义: 3D 点云的逐点语义标签、3D 包围盒、场景图(Scene Graphs)描述物体间关系(如“杯子
在桌子上”)。
- 规划轨迹: 专家遥操作或演示的
(observation, action) 序列,其中 observation 是多模态传感器读数,action 是控制指令。
- 用途:
- 场景理解: 训练模型识别环境中的物体、区域和 affordance(可供性)。
-
| 模仿学习 (BC): 直接从专家数据中学习一个策略函数 $\pi(a |
s)$。 |
- 离线强化学习 (Offline RL): 从固定数据集中学习最优策略,无需与环境实时交互。
L3: 语言数据 (Language Data)
- 内容:
- 指令-轨迹对:
("去厨房的冰箱拿一瓶水", <trajectory_and_actions>)。这是语言导航的核心。
- 视觉-语言对:
(<image/video_clip>, "一个放着笔记本电脑和咖啡杯的木制书桌")。用于对齐视觉和语言空间(如 CLIP)。
- 视觉问答 (VQA):
(<image>, "桌上是什么颜色的杯子?", "红色")。
- 对话数据: 机器人与用户之间关于任务澄清、环境提问的多轮对话。
- 用途:
- VLA 大脑: 训练大模型理解、推理和分解自然语言指令。
- 开集识别: 使机器人能够识别和定位从未在语义分割数据集中见过的物体。
L4: 交互数据 (Interaction Data)
- 内容:
- 人-机交互: 机器人在狭窄通道与人会车、为人开门、跟随用户、递送物品的视频和状态日志。
- 多智能体交互: (在多机器人场景下)机器人之间的避让、协作。
- 失败/纠正数据: 机器人执行失败(如碰撞、迷路)以及人类如何纠正它的数据。这部分数据极其宝贵。
- 用途:
- 社交合规性: 学习符合社会规范的路径规划和行为,避免“机器人式”的僵硬动作。
- 鲁棒性: 从失败中学习,构建更安全的恢复策略和更精准的风险评估模型。
Rule-of-Thumb: 数据配比与模型规模
\(\text{Cost}(\mathcal{D}) \approx c_g \cdot |\mathcal{D}_{\text{geo}}| + c_s \cdot |\mathcal{D}_{\text{sem}}| + c_l \cdot |\mathcal{D}_{\text{lang}}| + c_i \cdot |\mathcal{D}_{\text{inter}}|\)
其中成本系数 $c_g \ll c_s \ll c_l < c_i$。
- 1B 档方案 (执行层):
- 重点: L1 和 L2。目标是建立一个强大的几何和语义感知基座。
- 配比:
L1: 70%, L2: 25%, L3: 4%, L4: 1% (概念上的数量级)。
- 策略: 大量使开源几何数据集和自采轨迹。语义标注可以外包或使用半自动标注工具。语言数据主要依赖开源指令集。交互数据主要来自仿真。
- 10B 档方案 (认知层):
- 重点: L3 和 L4。当基础感知能力饱和后,模型的智能和用户体验的提升来自于对语言、常识和社交动态的理解。
- 配比:
L1: 50%, L2: 20%, L3: 20%, L4: 10%。
- 策略: 除了扩大 L1/L2 的规模,需要投入巨资构建高质量的语言-轨迹-交互数据集。这通常需要自建标注团队和设计复杂的用户反馈闭环。
13.2 合规原则:授权、ToS、机器人协议、PII/人脸处理
合规是数据工作的生命线,一次违规可能导致整个项目的数据资产清零。
- 授权与许可 (Licensing):
- 严格审查: 建立一个许可白名单。
- 自由使用:
CC0, Public Domain。
- 署名即可:
CC-BY。
- 商业友好:
MIT, Apache 2.0, BSD。
- 警惕病毒性:
GPL, AGPL。使用这些许可下的数据或代码,可能要求你将自己的整个项目开源。
- 非商业:
CC-BY-NC。绝对不能用于商业目的的产品训练。
- 工具: 使用 FOSSA, Black Duck 等工具自动化扫描代码和数据依赖中的许可证问题。
- 服务条款 (Terms of Service, ToS) 与机器人协议:
- API 优先: 永远优先使用官方提供的 API,即使有速率限制。这在法律上是最安全的。
- ToS 审查: 重点关注 “Usage Restrictions”, “No Scrapers”, “AI Training” 等条款。例如,某社交媒体的 ToS 可能明确禁止将其用户生成内容用于训练 AI 模型。
robots.txt: 这是一个必须遵守的协议。使用 Python 的 urllib.robotparser 库可以在抓取前自动检查。
- 速率与身份: 即使允许抓取,也要设置合理的
Crawl-Delay,并在 User-Agent 中表明身份和联系方式,做一个负责任的网络公民。
- PII/人脸处理的技术流水线:
- 原则: 默认脱敏,除非功能必需且获得用户授权(
opt-in)。
- 自动化流水线:
- 检测 (Detection):
- 人脸: 使用 RetinaFace, MTCNN 等高效检测器。
- 文本/车牌: 使用 OCR 和特定模式识别器。
- 其他 PII: 训练一个专门的 PII 检测模型来识别徽标、二维码、屏幕内容等。
- 处理 (Processing):
- 模糊/马赛克: 最简单的方式,但可能损失一些上下文信息。
cv2.GaussianBlur 或像素化。
- 替换 (Replacement): 使用 GAN(生成对抗网络)生成一个合成的人脸或车牌来替换原始区域。这种方式能更好地保留图像的真实感。
- 删除 (Deletion): 在 3D 数据(如点云)中,可以直接删除与 PII 相关的点。
- 脱敏存 (Anonymized Cache): 对于需要反复访问的数据,不要缓存原始视频。而是将脱敏处理后的视频或提取出的特征(如 CLIP embedding)存入缓存。这样即使缓存泄露,风险也大大降低。
- 区域性法规: 了解并遵守
GDPR (欧盟), CCPA (加州), PIPL (中国) 等地的数据隐私法规,特别是关于数据跨境传输和用户删除权的规定。
13.3 开源数据优先级与复用策略
“站在巨人的肩膀上” — 善用开源数据可以将研发周期缩短数年。
精选开源数据集清单
| 类别 |
数据集 |
关键特征 |
主要用途 |
| L1: 几何/轨迹 |
EuRoC, TUM-VI |
双目+IMU, 高精度真值 |
VIO/SLAM 算法基准测试 |
| |
TartanAir |
仿真, 多场景, 多光照 |
视觉里程计, 跨域泛化 |
| |
Ego4D |
超大规模第一视角视频 |
视觉表征预训练, 长期时序理解 |
| L2: 语义/规划 |
Matterport3D |
真实室内场景 3D 建+语义 |
3D 场景理解, 语义地图 |
| |
ScanNet |
RGB-D 扫描+密集标注 |
3D 实例/语义分割 |
| |
COCO, ADE20K |
大规模 2D 图像+实例/语义标注 |
2D 感知模型预训练 |
| |
RoboTHOR |
物理仿真环境+可交互对象 |
具身 AI 规划与交互 |
| L3: 语言导航 |
RxR, Room-to-Room (R2R) |
(自然语言指令, 路径) 对 |
视觉-语言导航 (VLN) |
| |
LAION-5B |
50亿+ 图像-文本对 |
CLIP 类模型预训练 |
| |
WebVid-10M |
1000万+ 视频-文本对 |
视频-语言模型预训练 |
高级复用策略 (Advanced Reuse Strategies):
13.4 自采闭环:从需求到回灌的敏捷流程
自采数据是弥补开源数据与实场景之间鸿沟的关键,是解决模型“corner case”的终极武器。
精细化闭环流程 (The Refined Loop):
模型失败分析 → 精准需求定义 → 脚本化采集 → 多级质检 → 治理与版本化 → 增量训练 → 在线 A/B 测试 → (回到) 模型失败分析
- 精准需求定义 (Precise Requirement Definition):
- 来源: 来自离线评测的 Bad Case 报告、在线监控系统的告警(如高频碰撞区域)、或产品经理定义的新功能。
- 产出: 一份类似 JIRA Ticket 的“数据需求单”,清晰描述场景、物体、光照、任务和需要解决的问题。例:“需求:采集 5 种不同办公室环境下,机器人穿越半透明玻璃门的轨迹数据,覆盖正午强光和傍晚弱光两种条件,每种条件下 10 条成功轨迹,5 条失败(轻微碰撞)轨迹。”
- 脚本化采集 (Scripted Collection / “Recipe”):
- 采集手册 (SOP):
- 硬件配置: 相机曝光、白平衡、IMU 采样率。
- 环境布置: 如何摆放障碍物,如何控制灯光。
- 操作员路径: 在地上用胶带贴出预定路径,或在平板上显示导航点。
- 动作序列:
前进3米 -> 左转90度 -> 识别门把手 -> 执行开门动作。
- 标注 App: 采集员在采集过程中通过 App 实时标注事件(如“开始通过玻璃门”、“遇到行人避让”)。
- 多级质检 (Multi-level QA):
- L0 (板载/实时): 在机器人上实时检查传感器数据流是否异常(如 IMU 零偏过大,相机掉帧)。
- L1 (自动/离线): 数据上传后,脚本自动计算指标:
- 几何质量:
blur_score = variance(laplacian(image))
- 时序质量:
imu_jitter = std(diff(imu_timestamps))
- 轨迹质量: VIO/SLAM 重投影误差、轨迹长度、闭环检测成功率。
- L2 (人工抽检): 标注平台人工检查 5-10% 的数据,确保其符合采集脚本的语义要求。
- 治理与版本化 (Governance & Versioning):
- DVC (Data Version Control): 将
dvc 与 git 结合。Git 仓库只存储轻量的 .dvc 指针文件,而实际的数据文件(GB/TB 级)存储在 S3, GCS 等对象存储中。
- 数据谱系 (Lineage): 记录每个模型版本是由哪个数据集版本、哪个数据处理脚本版本、哪个训练代码版本生成的。这对于复现和调试至关重要。
13.5 合成/仿真补齐长尾与稀缺样本
合成数据是数据策略的“杠杆”,用计算资源换取现实世界中昂贵、危险或不可能获得的数据。
适用场景的深入剖析:
- 危险与长尾 (Safety & Long-tail): 不仅是火灾,还包括地面湿滑、电线绊倒、被宠物干扰等。这些场景真实采集成本和风险都极高。
- 完美真值 (Perfect Ground Truth):
- 动态场景: 获取场景中所有动态体(人、宠物、其他机器人)的完整 3D 轨迹和意图。
- 光学现象: 精确的光流、表面法线、反射/折射路径,这在真实世界中几乎无法测量。
- 程序化生成 (Procedural Generation):
- 场景: 自动生成百万种符合人体工程学和建筑逻辑的户型布局和家具组合。
- 任务: 使用 LLM 生成无限的、结构更多样、逻辑更复杂的自然语言指令。例如:
"去二楼书房,如果窗户开着就关上,然后把桌上的红皮书拿到客厅的茶几上。"
Sim-to-Real 鸿沟的系统性解决方案:
1. 视觉域鸿沟 (Visual Domain Gap)
- 策略: 物理渲染 (PBR) + 域随机化 (Domain Randomization) + 风格迁移。
- 细节:
- 域随机化: 在仿真中,对光照(位置、强度、颜色)、相机内参(焦距、畸变)、物体纹理、材质(粗糙度、金属度)进行大范围的随机采样。
Loss_DR = E_{p(style)} [Loss_task(f(G(x, style)), y)]
- 风格迁移: 使用非配对的图像翻译模型(如 CycleGAN)学习一个映射
G: sim -> real,将仿真图像在像素级别上变得更像真实图像,同时保留其几何和语义内容。
2. 物理域鸿沟 (Physics Domain Gap)
- 策略: 系统辨识 (System Identification) + 噪声注入。
- 细节: 在真实世界中采集机器人与环境交互的短片段(如推一个箱子),然后调整仿真器中的物理参数(如摩擦系数、物体质量、电机响应),使仿真结果与真实数据之间的差异最小化。同时,对传感器的读数(IMU、里程计)注入符合真实传感器特性的噪声模型(高斯白噪声 + 随机游走)。
3. 内容域鸿沟 (Content Domain Gap)
- 策略: 真实资产扫描 + 生成式模型。
- 细节: 使用 3D 扫描技术(如 NeRF 或高精度激光雷达)将真实世界的物体和场景数字化,构建一个高质量的资产库。结合生成模型(如 3D-aware GANs)创造出新的、但在风格和结构上与真实资产一致的 3D 模型。
本章小结
- 数据策略是核心竞争力: 在算法趋同的时代,独特、高质量的数据集是构建护城河的关键。一个全面的数据策略必须是“四位一体”的,平衡了成本、规模、质量和合规性。
- 分层构建,有的放矢: 依据数据金字塔模型,系统性地规划 L1 到 L4 的数据建设。1B 模型聚焦于 L1/L2 以求生存,10B 模型必须在 L3/L4 上取得突破才能领先。
- 合规是生命线: 将合规流程嵌入到数据工作的每一个环节,从源头避免法律和道德风险,而不是事后补救。
- 闭环是引擎: 建立一个从模型失败到数据回灌的快速、敏捷的闭环,这是数据驱动迭代的核心引擎。
- 虚实结合是未来: 纯真实数据成本高、覆盖面窄;纯合成数据有 Sim-to-Real 鸿沟。将两者有机结合,用真实数据义问题和验证效果,用合成数据规模化解决问题,是最高效的路径。
常见陷阱与错误 (Gotchas)
- “数据越多越好”的规模陷阱 (The Scale Trap):
- 陷阱: 投入巨大资源采集了 PB 级的 L1 几何数据,却发现模型在特定语义任务上(如识别新电器)毫无进展。这是因为数据分布严重偏斜,缺乏目标场景的多样性。
- 调试技巧:
- 数据地图 (Data Map): 使用自监督学习模型(如 DINOv2)提取所有数据的特征向量,然后通过 UMAP/t-SNE 进行降维可视化。一个健康的数据集应该在特征空间中分布均匀,而不是聚集成少数几个大团。
- 多样性度量: 定义并监控场景多样性指标,如场景类型数量、物体实例覆盖率、光照条件分布熵等。主动去采集那些在“数据地图”上处于空白区域的数据。
- “一次性采集”的静态思维陷阱 (The Static Collection Trap):
- 陷阱: 项目初期花一年时间采集了一个“完美”的数据集,然后用它在接下来的两年里不断优化模型。结果发现模型对数据集过拟合,对现实世界中新出现的变化(如新的装修风格、新家具)毫无抵抗力。
- 调试技巧: 建立“数据新鲜度”指标。强制要求一定比例的训练数据来自最近一个季度。实施持续的数据采集和标注流程(Data Flywheel),即使规模不大,也要保持流动性。
- 隐藏的数据偏见 (The Hidden Bias Trap):
- 陷阱: 采集场景主要集中在研发中心所在地的现代化办公室和公寓。导致机器人在老式住宅、或不同文化背景的家居环境中表现糟糕。
- 调试技巧:
- 元数据分析: 对数据的元数据进行切片分析(Slice-based Analysis)。检查模型在不同子集(如不同城市、不同户型、不同时间段)上的性能是否存在显著差异。
- 对抗性测试集: 主动构建一个专门包含“反常识”或“非主流”场景的测试集(例如,客厅里放着一个帐篷),用于压力测试模型的泛化能力。
- 忽视“暗数据” (The Dark Data Trap):
- 陷阱: 只关注成功的轨迹数据,而丢弃了所有失败、碰撞、卡住的“坏”数据。这等于扔掉了最宝贵的学习信号。
- 调试技巧:
- 失败数据归档: 建立一个专门的“失败博物馆”数据库,存储所有失败案例的详细传感器日志、状态快照和可能的原因分析。
- 负样本挖掘: 将这些失败数据作为高权重的负样本(Hard Negative)加入到训练中,特别是用于训练安全护栏和风险预测模型。