Domain Randomization — 弥合 Sim-to-Real 差距的最简方法
一、一个反直觉的问题
你花了两周校准仿真器参数——质量、惯量、摩擦系数、气动导数——每一项都精确匹配实测数据。然后你把在仿真里训练好的控制器部署到真机上。
真机第一次启动,控制器就崩了。
问题不在于你的参数不准确。问题在于真实世界有仿真器永远无法建模的东西:齿轮间隙、材料磨损、温度漂移、光照变化、摄像头噪声、地面纹理……这个列表无穷无尽。
那么反过来想:如果不去追求仿真更”真”,而是让它足够”乱”,乱到真实世界看上去只是其中一种情况呢?
这就是 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% |
| 光照 | 光源数量、位置、镜面特性 | 完全随机 |
| 后处理 | 图像噪声类型和数量 | 随机添加 |

关键细节:他们用的渲染器是 MuJoCo 的内置渲染器——速度优先而非画质优先。场景中的纹理不是真实照片,而是算法生成的纯色块、渐变色和棋盘格。
3.2 模型架构和训练
1 | 输入:224×224 单目 RGB 图像(来自廉价网络摄像头) |
一个重要的反直觉发现:预训练并不必需。 在大数据量下,随机权重初始化的模型表现与 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+ 次?
因为它证明了三个当时被认为不可能的事情:
- 纯仿真 RGB 图像可以训练出真实世界可用的视觉模型——不需要真实标注数据、不需要 ImageNet 预训练
- 低质量渲染器就够了——不需要照片级真实感渲染,算法生成的纯色纹理反而更有助于泛化
- 域随机化是最简单但最有效的 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 学习笔记,建议配合论文原文阅读。