Badge

一、一个反直觉的问题

你花了两周校准仿真器参数——质量、惯量、摩擦系数、气动导数——每一项都精确匹配实测数据。然后你把在仿真里训练好的控制器部署到真机上。

真机第一次启动,控制器就崩了。

问题不在于你的参数不准确。问题在于真实世界有仿真器永远无法建模的东西:齿轮间隙、材料磨损、温度漂移、光照变化、摄像头噪声、地面纹理……这个列表无穷无尽。

那么反过来想:如果不去追求仿真更”真”,而是让它足够”乱”,乱到真实世界看上去只是其中一种情况呢?

这就是 Domain Randomization(域随机化)的核心思想。

二、核心思想:一句话说清楚

如果仿真中的变异性足够大,真实世界对模型来说就只是仿真中的另一个变体。

Domain Randomization 核心概念

2017 年,OpenAI 的 Josh Tobin 等人在论文《Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World》中首次系统性地验证了这个想法。这篇只有 8 页的论文,至今被引用超过 3600 次。

他们做了一件看似不可能的事:完全不使用真实图像——连 ImageNet 预训练都不用——仅凭在 MuJoCo 低质量渲染器中生成的随机纹理图片,训练出一个能在真实世界中定位物体到 1.5 厘米精度的神经网络。 然后直接用这个定位结果控制机器人完成抓取。

三、方法拆解

3.1 随机化什么?全部八个维度

Tobin 团队在仿真中随机化了以下所有方面:

层次 随机化项 具体范围
场景 干扰物数量和形状 0–10 个随机几何体
物体 位置和纹理 完全随机摆放;随机 RGB / 渐变 / 棋盘纹理
环境 桌面、地板、天空、机器人纹理 全部随机生成
相机 位置 初始点周围 ±(10×5×10) cm 内随机
相机 朝向 ±0.1 弧度
相机 视场角 ±5%
光照 光源数量、位置、镜面特性 完全随机
后处理 图像噪声类型和数量 随机添加

域随机化的 8 个维度

关键细节:他们用的渲染器是 MuJoCo 的内置渲染器——速度优先而非画质优先。场景中的纹理不是真实照片,而是算法生成的纯色块、渐变色和棋盘格。

3.2 模型架构和训练

1
2
3
4
5
输入:224×224 单目 RGB 图像(来自廉价网络摄像头)
模型:修改版 VGG-16(更小的全连接层 256→64,无 Dropout)
输出:(x, y, z) 物体坐标
损失:L2 损失
优化器:Adam,学习率 1e-4(比默认低 10 倍以避免陷入局部最优)

一个重要的反直觉发现:预训练并不必需。 在大数据量下,随机权重初始化的模型表现与 ImageNet 预训练模型几乎相同。

四、消融实验:什么最重要?

Tobin 团队做了系统的控制变量实验,逐个去掉随机化组件观察效果。这些消融实验是整篇论文最有价值的部分。

4.1 纹理数量 — 最关键的因素

当纹理种类少于 1000 种时,模型在真实世界中的定位精度显著下降。少于 100 种纹理几乎无法泛化。

结论:纹理多样性是域随机化的生命线。这就是为什么他们使用无限随机纹理生成(RGB / 渐变 / 棋盘)而非固定纹理库——只有无限多样性才能覆盖真实世界的视觉分布。

4.2 训练数据量 — 5000 起步,50000 饱和

使用预训练模型时,5000 个仿真样本就达到可用精度,但性能持续提升到约 50000 个样本。从头训练的模型需要更多数据才能追上预训练模型的表现。

4.3 干扰物训练 — 不可省略

如果在训练时去掉干扰物,真实世界中遇到干扰物时的误差从 1.8 cm 飙升到 7.2 cm。这是所有消融实验中效果最剧烈的一项。

4.4 相机位置随机化 — 有帮助但非必须

去掉相机随机化后平均误差从 1.3 cm 升到 2.0 cm。影响存在但不算致命。

4.5 图像噪声 — 几乎无影响

加不加随机噪声,误差几乎没有变化。但作者提到噪声有助于训练收敛、避免陷入局部最优。

4.6 消融结果一览

消融实验结果对比

实验条件 仅目标物 含干扰物 含遮挡
完整方法 1.3 ± 0.6 1.8 ± 1.7 2.4 ± 3.0
无噪声 1.4 ± 0.7 1.9 ± 2.0 2.4 ± 2.8
无相机随机化 2.0 ± 2.1 2.4 ± 2.3 2.9 ± 3.5
无干扰物训练 1.5 ± 0.6 7.2 ± 4.5 7.4 ± 5.3

单位:厘米(cm),越低越好。

五、真机验证:从像素到抓取

他们在 Fetch 机器人上做了完整的闭环测试:网络从摄像头图像预测物体位置 → 运动规划 → 抓取。

结果:40 次抓取尝试,成功 38 次,即使在高度杂乱的场景中、目标物被显著遮挡的情况下。

更值得注意的是泛化到未见物体的能力:训练时只用几何形状(立方体、圆柱体、锥体等),测试时换上 YCB 数据集中的真实食品罐(Spam 罐头),10 次尝试成功 9 次。

六、为什么这篇 8 页的论文被引了 3600+ 次?

因为它证明了三个当时被认为不可能的事情:

  1. 纯仿真 RGB 图像可以训练出真实世界可用的视觉模型——不需要真实标注数据、不需要 ImageNet 预训练
  2. 低质量渲染器就够了——不需要照片级真实感渲染,算法生成的纯色纹理反而更有助于泛化
  3. 域随机化是最简单但最有效的 Sim-to-Real 方法——不需要复杂的域自适应算法、不需要系统辨识

这三个”反常识”的结论,为之后整个 Sim-to-Real 研究领域打开了一扇门。

七、对今天仿真工作的启示

如果你正在构建一个机器人仿真系统,Domain Randomization 给你几条实用的设计原则:

7.1 不要追求”真”,要追求”乱”

与其花两周校准仿真器参数使之尽可能匹配现实,不如把时间花在让仿真器随机化尽可能多的参数上。仿真器的价值不在于它有多逼真,而在于它能不能覆盖真实世界的分布。

7.2 视觉多样性 > 视觉真实感

用算法生成的无限随机纹理(纯色、渐变、几何图案)比照片级纹理更有助于泛化。照片级纹理实际上可能在训练时让网络过拟合到特定的视觉模式。

7.3 任务相关的随机化比全面随机化更好

干扰物训练的效果(误差从 1.8 到 7.2 cm)说明:与你实际任务相关的随机化,远比不相关的随机化重要。 如果你的机器人不会在夜晚工作,就不用随机化光照到全黑。如果目标物总是平放的,就不用随机化到悬空姿态。

7.4 相机随机化是廉价的”免费午餐”

±10 cm 位置、±0.1 rad 朝向、±5% FOV——实现成本极低,但对泛化有帮助。在仿真里加这些随机化只需几行代码。

八、局限性与边界

诚实地讲,Domain Randomization 远非万能:

  • 高精度任务仍需真实数据微调。1.5 cm 的定位精度对桌面抓取够用,但对精密装配不够。
  • 动力学随机化比视觉随机化更难。随机化物理参数(质量、摩擦)可能导致仿真不稳定或崩溃。
  • 域随机化不能替代良好的任务设计。如果仿真中的任务本身就不合理(奖励函数有问题、观测空间不对),随机化再充分也无法挽救。
  • 过度随机化确实有害。后续研究发现(Matas 2018),纹理颜色种类过多时反而降低真实世界性能——“乱”是有上限的。

九、2026 年视角:Domain Randomization 如何演进

从 2017 到 2026,域随机化从”一种简单技巧”变成了 Sim-to-Real 的标准组件:

  • 最小域随机化:2026 年四旋翼激进机动论文(arXiv:2602.21583)提出了”物理一致的最小域随机化”——只随机化真正不确定的参数,通过系统辨识确定确定性参数。这比 Tobin 的”全部随机化”更高效。
  • 可微仿真 × 域随机化:E2E-Fly(arXiv:2604.12916)将可微物理学习与域随机化结合——先用可微仿真辨识系统参数,再对剩余不确定性做域随机化。这代表了 2026 年的前沿实践。
  • Meta-RL 替代静态 DR:MAVEN(arXiv:2603.10714)使用元强化学习实现了在线自适应——即使质量变化 66.7%、单个桨叶推力损失 70%,策略也能在数秒内适应。这超越了 Tobin 时代”训练时覆盖所有情况”的思路。

但 Tobin 2017 的核心贡献——“随机化足够的变异性,真实世界只是另一种情况”——这个直觉在今天依然是一切 Sim-to-Real 工作的起点。

十、延伸阅读

  • 论文原文arXiv:1703.06907 — Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World
  • Sim-to-Real 综述arXiv:2009.13303 — Zhao et al. 五大方法全景地图
  • 本文是从 Domain Randomization 出发的系统性 Sim-to-Real 学习笔记,建议配合论文原文阅读。