Task support
部署对象、姿态、视点、遮挡和故障分布
01 · Generation Contract
生成器不是图片函数,而是从带版本的随机变量 θ 采样 scene state,再经渲染器与传感器模型输出观测和标签。任务、资产、相机、通道、来源与验证必须成为同一份契约。
部署对象、姿态、视点、遮挡和故障分布
资产、物理、相机、光源、轨迹与 seed
同一 z-buffer 的 RGB、Z、normal、ID、XYZ
曝光、畸变、噪声、孔洞、量化与时序
分布、标签、真实 holdout、manifest 与 shard
| Contract layer | 必须冻结的字段 | 可验证交付物 |
|---|---|---|
| Task distribution | 对象实例、场景、姿态、尺度、距离、遮挡、截断、运动、传感器状态 | synthetic support 与部署 support 的覆盖报告 |
| Asset contract | mesh / collision mesh、object frame、单位、材质、纹理、物理参数、license、hash | 资产可追溯且与真实实例语义一致 |
| Camera contract | optical frame、K / D、resolution、shutter、exposure、spectral response、timestamp | 每个 raster 和 pose 都能回到同一相机状态 |
| Scene state | 对象/相机/光源/背景的 transform,contact、velocity、random seed | 可以重建任一 frame,而非只有渲染结果 |
| Clean labels | pose、clean Z / range、normal、ID、full / visible mask、object coordinate、flow | 来自同一 z-buffer / scene snapshot |
| Sensor outputs | RGB response、distortion、blur、noise、quantization、invalid / confidence | 带版本的观测层,不覆盖 clean truth |
| Provenance | code commit、engine/version、config、asset hash、seed、host、shard、checksum | 失败可重现,生产可断点续跑 |
| Validation | synthetic unit tests、distribution audit、真实 holdout、downstream ablation | 证明标签正确且生成分布对任务有用 |
02 · Digital Assets
真实数据章节已经冻结实物—数字资产语义;合成管线还要让这个资产在光学、接触和版本治理中可用。高面数视觉网格不一定是好碰撞体,漂亮纹理也不保证色彩空间正确。
| 资产阶段 | 冻结决策 | 准入检查 |
|---|---|---|
| 几何导入 | 固定 m / mm 转换、object frame、up/front、原点、winding、normal、UV;视觉 mesh 与简化 collision mesh 分开 | bbox、diameter、质量尺度、正反面和投影轴在渲染器与 BOP / OpenCV 侧闭环 |
| 拓扑与接触 | 清除孤立片、重复面、自交和非流形;为 thin shell、concavity 与 support face 选择合适 collision representation | 掉落不穿透、不悬浮;stable pose 与真实支持面一致,不由过粗 convex hull 改写 |
| 材质语义 | 区分 base color、roughness、metallic、normal、transmission、IOR 与纹理色彩空间 | 数值贴图标记 Non-Color;材质随机化不生成物理不可能组合 |
| 实例差异 | 将制造公差、磨损、贴纸、污染和 texture symmetry 作为有证据的变量,而非随意换色 | 训练标签、评测 symmetry 与真实物体身份仍一致 |
| 物理属性 | 记录 mass、center of mass、inertia、friction、restitution、damping 和关节限制 | 落下时间、反弹、静止姿态、堆叠稳定性与真实量级一致 |
| 版权与版本 | 保存 source、author、license、允许的修改/再分发范围和 content hash | 数据发布时能逐资产生成清单;替换资产不会静默改变旧数据 |
保留轮廓、孔洞、细薄结构、surface normal 和纹理坐标;LOD 变化也必须保持 object frame 与 metric scale。
convex decomposition、SDF 或 triangle mesh 的选择会改写 stable pose。碰撞近似必须成为可审计资产,而非引擎隐藏选项。
symmetry、canonical axes、grasp affordance、articulation 与 instance identity 需要独立元数据,不能从 mesh 文件名猜测。
03 · Pose, View & Scene Sampling
姿态生成必须先说明采样空间和测度。均匀 pitch 会在视向球面两极堆积;Haar-uniform SO(3) 给出无偏旋转,却仍不包含重力、支持面、相机可达性和真实遮挡。
| Sampler | 采样对象 | 边界 | 适合场景 |
|---|---|---|---|
| 独立均匀 Euler | yaw/pitch/roll 各自均匀 | 实现简单,但不均匀覆盖 SO(3),视向在球面极区偏置 | 只用于已知就是角度盒分布的任务 |
| Haar-uniform SO(3) | Shoemake quaternion / 正态四元数归一化 | 全旋转群无偏;没有重力、可达性或稳定支持先验 | 通用 orientation coverage 与消融基线 |
| View sphere + roll | 等面积视向 + 独立 in-plane roll + distance | 能分开控制 out-of-plane 与 in-plane;需约定 look-at roll 零点 | 模板库、相机标定板、系统视球采集 |
| Stable-pose prior | 支持面枚举或物理掉落后聚类 | 贴近桌面任务,但受 collision、摩擦、重心与仿真步长影响 | 桌面检测、抓取前感知 |
| Physics scene sampling | 多物体 joint distribution、接触、遮挡与相机可见性约束 | 最贴近 clutter;昂贵且容易产生穿透/爆炸/隐式筛选偏差 | 料箱、堆叠、机器人操作 |
| Empirical task prior | 从真实部署日志拟合分层或条件分布 | 最相关,但日志本身可能有策略偏置、漏检和长尾不足 | 正式生产与 active data generation |
方向用等面积 z–azimuth bins;完整旋转用 SO(3) 距离/网格;距离与尺度按对数或任务分层。
距离、对象像素尺寸、遮挡、blur、depth validity 往往相关;独立随机化会生成不可能组合。
可以过采样低可见率和罕见姿态,但训练采样权重与评测真实频率必须分开保存。
同一场景 seed、asset variant、texture 或 trajectory 的近重复帧不能跨 train/test。
04 · Physics & Layout
料箱、堆叠和桌面场景中的 pose、遮挡与接触彼此相关。物理引擎能生成这种联合结构,但只有尺度、碰撞、质量、求解器和静止判据同时受控时,结果才有任务意义。
投放区域、朝向、速度、实例组合
gravity、dt、substeps、contact、solver
‖v‖、‖ω‖、contact duration、penetration
可见率、截断、相机可达、对象数量
重力、物体尺寸、质量、碰撞 margin、solver tolerance 必须处于一致量级;cm mesh 当 m 会彻底改变动力学。
先做 broad-phase overlap test;随机悬空位置、初速度和朝向应符合投放机构,而非从不可达区域瞬移。
固定 time step / substeps、solver iterations 与 determinism 设置;不同 GPU/后端不能默认 bit-exact。
静/动摩擦、restitution、damping、contact offset 与 collision mesh 共同决定 stable pose 和遮挡。
不能只跑固定帧数;应同时检查线速度、角速度、接触持续时间与最大穿透,并设置 timeout / reject reason。
相机 near/far、可见率、截断、碰撞、抓取可达性等筛选要统计 reject rate,防止 rejection sampling 偷改分布。
曝光窗口内保存 object/camera trajectory;rolling shutter、motion blur 和 optical flow 不能只用帧中心 pose。
物理 seed 之外还需保存引擎版本、线程/GPU、asset hash 与 solver config;重放时比较容差内状态。
05 · PBR, Lighting & Camera
PBR 不是“多加几盏灯”,而是几何、BRDF、照明、光传输、曝光与色彩管理共同定义的成像模型。随机化要作用在有语义的物理参数上,并保存 scene-linear 与 display output 的边界。
| 变量族 | 可采样因素 | 必须保持的契约 | 典型失败 |
|---|---|---|---|
| Geometry | mesh detail、normal / displacement、support、background geometry | object frame、metric size、collision/visual correspondence | 用不匹配 CAD 做再真实的材质,轮廓和接触仍系统性错误 |
| Material / BRDF | base color、roughness、metallic、specular、transmission、IOR、texture | 材质参数范围和组合具有物理/产品依据 | 无界随机颜色破坏对象身份;镜面/透明只改颜色而没改光路 |
| Illumination | HDR environment、area/point light、intensity、CCT、size、shadow | scene-linear radiance、单位/曝光与 color management 有版本 | 把亮度增强当光照,缺少阴影、互反射和饱和机制 |
| Camera response | exposure、white balance、tone mapping、vignetting、noise、compression | clean linear render 与 display-ready RGB 分开 | 训练 PNG 经一种 tone map,真实流经另一 ISP,却只比较“颜色像不像” |
| Temporal | shutter、trajectory、rolling readout、frame interval、light flicker | pose、flow、blur 与 timestamp 对同一曝光模型 | 模糊图像配瞬时 pose;动态遮挡与 rolling shutter 几何不一致 |
06 · Ground-truth Render Passes
“能输出 depth 和 mask”还不是数据契约。同一像素位置的 RGB、Z、normal、ID、object coordinate 与 flow 必须来自同一 scene state 和 visibility test,并明确抗锯齿、透明、运动和背景处理。
| Pass | 严格语义 | 实现注意 |
|---|---|---|
| RGB / radiance | display RGB 或 scene-linear HDR;写明 color space、view transform、exposure 与 alpha | 不要对 normal、ID、depth 套颜色管理 |
| Z-depth / range | 相机 optical frame 的 Z 或 ray length,单位、near/far、background invalid 明确 | 渲染 clean float,再派生传感器量化和孔洞 |
| Surface normal | camera / world / object frame;方向、handedness、是否单位化 | normal map 纹理扰动与几何法向可分别保存 |
| Instance / semantic ID | 每个像素稳定整数 ID,背景/ignore 保留值固定 | 颜色预览不能作为标签;抗锯齿会产生不存在的混合 ID |
| Full / visible mask | amodal full silhouette 与 z-buffer visible region 分开 | 透明、半透明与 motion blur 的 mask 语义需任务定义 |
| Object coordinate | 每个可见像素对应的 object-frame XYZ / NOCS,单位和 canonical frame 固定 | 插值需 perspective-correct;不可经过 display color transform |
| Optical flow / motion vector | 像素位移的方向、时间跨度、遮挡/出界 validity 与 rolling-shutter 约定 | 后处理 vector blur 不等于真实曝光积分 |
| Pose / camera | 默认 ᶜTₒ、每帧 K/D、timestamp、velocity / trajectory;保存 inverse 需另命名 | 相机/物体 motion 都进入相对 pose |
随机抽可见像素,object coordinate 经 pose 与 K 重投影,误差应在 raster 约定容差内。
visible mask 必须等于该 instance 赢得 z-buffer 的像素集合;full mask 另行渲染或几何计算。
object normal 经 R 变到 camera frame,应与 normal-C pass 对齐,并满足单位长度和朝向约定。
把 t 时刻表面点推进到 t+Δt 后投影,比较 optical flow,并显式标记遮挡和出界。
07 · Sensor Simulation
噪声幅度会随距离、入射角、亮度、材质和运动变化;孔洞、飞点、多路径、饱和与 rolling shutter 具有空间和时间结构。应从真实原始流估计机制,再以独立、可关闭的 sensor layer 实现。
| 模态 | 应模拟的形成机制 | 校准证据 | 常见错误 |
|---|---|---|---|
| RGB / ISP | shot/read noise、exposure、white balance、vignetting、bloom、demosaic、tone map、compression | raw / linear capture、flat-field、dark frames、color chart、MTF / blur target | 在 sRGB 上加同方差 Gaussian;忽略饱和、光子统计和 ISP 顺序 |
| Passive stereo | correspondence ambiguity、disparity quantization、left-right occlusion、baseline/calibration error | 真实 disparity residual 随纹理、边缘、距离和曝光分层 | 先渲染完美 Z 再加白噪声,无法得到空洞和遮挡带 |
| Structured / active stereo | projector pattern、IR response、环境光、speckle、左右遮挡、设备互扰 | IR left/right、confidence、invalid patterns 与多距离标定板 | 不模拟投影器,只对 Z 做随机 dropout |
| ToF | phase noise、amplitude、multipath、mixed pixel、wrap-around、temperature | 不同材质、入射角、距离和多路径场景的 amplitude / residual | 单一 σ(z) 无法表示边缘飞点、反射率与多径偏差 |
| Rolling shutter | 逐行曝光时间、相机/物体连续轨迹、光流与遮挡变化 | 已知运动轨迹、闪光/转台或高帧率参考相机 | 整帧一次 warp;标签仍使用帧中心 global-shutter pose |
| Event / LiDAR / tactile | 阈值触发与 refractory、扫描时序与 beam pattern、接触形变与噪声 | 原始时间戳/packet/contact 标定,而非只看最终 raster | 先生成静态图再套随机滤镜,丢失测量形成过程 |
linear RGB、Z / range、normal、ID、pose、trajectory
distortion、PSF / DoF、vignetting、rolling shutter、blur
stereo / ToF / projector / event / scan / contact process
shot/read、quantization、demosaic、tone map、compression
08 · Interactive Lab
先比较 Naïve Euler、Haar SO(3)、视球和稳定姿态先验;再改变 PBR 与 sensor layer;最后故意注入四类 sim-to-real gap,观察为什么标签缺陷必须先阻断生产。
Interactive · Sampling, Rendering & Sim-to-real
Sampler semantics
Equal-area coverage
Distribution entropy
Directional bias
Task interpretation
Render regime
Depth validity
Depth residual
Required passes
Current warning
Dominant gap
Recommended action
Risk proxy
Mixture reading
Release gate
09 · Domain Randomization & Sim-to-real
它们作用于不同知识状态:已知且可测的部分应提高物理一致性;未知但任务无关的 nuisance 可随机化;少量真实数据用于校准和选择。最终标准始终是未参与调参的真实任务表现。
Minimum sim-to-real experiment matrix
10 · Toolchains
Blender、BlenderProc、Isaac Sim、Unity 和自研渲染器各有优势。工具名称不能替代 frame、unit、render pass、sensor、version 与 validation 的明确定义。
灵活但需自己冻结坐标、passes、版本和大规模调度契约
适合 6D pose / CV 合成管线;仍要审计模块参数和资产来源
适合机器人闭环和数字孪生;注意版本、USD layer 与 GPU determinism
需要验证物理、相机、色彩和标签 pass 是否满足研究契约
慢但适合校准与 oracle;不天然包含机器人/传感器时序
成本低;接触阴影、遮挡、颜色、景深和边缘是主要域线索
11 · Scalable Production
规模化会把偶发错误变成成千上万条脏标签。每个样本必须能由冻结输入重建,每个 shard 必须在完整校验后原子发布,局部失败重跑不能改变已发布样本身份。
冻结 schema、分层 quotas、config ID 和成本预算;在小样本上先跑所有 unit / visual checks
seed → scene graph;记录 proposal 与 rejection reason,避免 rejection sampling 静默改分布
物理 settle / trajectory;保存状态摘要、contact、timeout、penetration 和 determinism fingerprint
clean passes 与 sensor passes 分阶段;每帧使用同一 scene snapshot / exposure trajectory
矩阵、投影、ID、mask、depth、finite、range、distribution、asset/license 与 round-trip checks
原子写临时 shard → 完整校验 → rename;manifest + checksums + counts,支持幂等重试
内部 schema → BOP / COCO / WebDataset 等;显式单位、frame、depth_scale、channel dtype
固定真实 holdout、real-only / synth-only / mixed baselines、多 seed 和逐层消融
Per-sample manifest
sample_id: sha256(config_id | scene_index)
generator: {git_commit, engine, version}
random: {root_seed, sampler_streams}
assets: [{asset_id, geometry_hash, material_hash}]
scene: {transforms, velocities, contacts}
camera: {frame, K, D, shutter, timestamp}
passes: [{name, dtype, frame, unit, checksum}]
sensor_model: {name, version, parameters}
qa: {status, checks, reject_reason} BOP export boundary
internal scene state
├─ metric mesh + object frame
├─ camera optical K / D
├─ ᶜTₒ at reference time
├─ clean + sensor depth
└─ full / visible masks
↓ explicit conversion
BOP scene_camera / scene_gt / scene_gt_info
├─ cam_R_m2c / cam_t_m2c
├─ cam_K / depth_scale
├─ px_count_all / valid / visib
└─ mask / mask_visib 12 · Quality Assurance
合成数据最大的优势是拥有生成状态,因此应建立比真实标注更严格的自动 oracle。只有所有数学和 schema 检查通过后,视觉 spot-check 与真实 holdout 才有解释意义。
| 失败模式 | 表象 | 检测 | 修复 |
|---|---|---|---|
| Uniform Euler bias | 顶部/底部视向过密,赤道附近不足 | 等面积 z–azimuth histogram、SO(3) bin、任务条件覆盖 | 改用 Haar quaternion;若是任务先验则显式命名 |
| Hidden rejection bias | “随机采样”经过可见率/碰撞筛选后只剩容易样本 | 保存 proposal / accept counts,按条件画 rejection heatmap | 约束采样或 importance weighting;把 reject 机制纳入分布 |
| Physics explosion | 穿透、弹飞、悬浮、极端角速度和不可重放 | penetration/contact/energy/settle timeout 断言 | 修单位、collision、time step、solver 和初始 overlap |
| Pretty but wrong asset | 照片感强但轮廓、尺寸、孔洞或 object frame 错 | 真实 silhouette/depth/卡尺与 frame overlay | 先修资产契约;不要用材质随机化掩盖 |
| ID / mask antialiasing | 实例边缘出现混合颜色或未知 ID | unique ID set、mask counts、z-buffer consistency | 整数 pass / cryptomatte 后按任务定义离散化 |
| Depth semantics mismatch | Z-depth、ray range、clip value 或单位混用 | 已知平面/球体解析测试、反投影再投影 | 字段命名携带语义;clean float 与 sensor integer 分开 |
| Motion-label mismatch | 模糊/rolling shutter 图像配单一瞬时 pose | 高速边缘、flow 与曝光轨迹重投影检查 | 保存 trajectory / per-row time;定义评测参考时刻 |
| Synthetic leakage | 同一 asset/seed/scene 变体跨 train/test,或调参看了 real test | 按 generator lineage 分组去重与 split audit | 按 asset/scene family 切分;真实 holdout 只用于最终协议 |
| More data, worse transfer | 合成量增加而真实指标下降 | 固定训练预算和采样权重的 learning curve / stage oracle | 先找主导 gap,缩窄无益随机变量,再调整混合课程 |
| Non-reproducible shards | 局部失败重跑后内容/ID 漂移,结果无法对应 config | manifest、content hash、sample ID 幂等检查 | sample ID 由冻结输入派生;原子 shard 与版本化 RNG |
Release gate · 生成一百万张之前