想象你是电影导演。在摄影棚里拍戏时,道具、演员走位、灯光角度全是你亲手布置的,摄影机只要一开机,画面里有什么、谁离镜头多远,场记单上早知道得一清二楚。你完全不需要事后找一群人一帧一帧看回放,替你把“画面里有什么”写下来——答案在搭景的那一刻就存在了。 训练 AI 视觉模型很像拍电影:你需要海量“画面+标注”的数据。传统做法是让标注员对着真实照片画框、描边、标类别,动辄几十万张,又慢又贵。合成数据则换了一条路:既然画面本身是计算机生成的,那“画面里有什么”这件事,计算机天然就知道——标注,是生成过程的免费副产品。这篇内容将带你用“摄影棚”的视角,把这条自动化标注的捷径一次讲透。

岗位关联

掌握合成数据自动标注,你就能把 CV 团队的数据标注成本从“百万级人力预算”压到“电费+算力”,这是数据工程里性价比最高的杠杆之一。

目录
  1. 可视化演示
  2. 渲染即标注
  3. 生成模型标签
  4. 噪声建模校正
  5. 域迁移适配
  6. 质量验证体系
  7. 落地工程实践
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示3D渲染自动标注流程、深度图与分割标签生成及合成到真实数据域迁移策略。

本节配有交互动效(进入视口后自动加载,约 3KB)。

自动标注流程 3D场景渲染生成带标注的训练数据 深度/分割标签自动获取零人工 成本仅人工标注的1/10

渲染即标注

摄影棚里拍戏,导演想知道“红色道具车离镜头多远、树在画面哪一角”,根本不用派人逐帧去量。因为场景是美术组亲手搭的,摄影机是摄影指导亲自摆的,场记单上写得明明白白——答案在搭景那一刻就存在了。渲染即标注,就是这个道理。

用 Blender、Unity、Unreal 这类 3D 引擎合成图像时,计算机为了把三维世界“画”到二维屏幕上,中途本来就要计算每个像素的深度(谁远谁近)和归属(这个像素属于哪个物体)。你搭建虚拟场景时,定义了物体的网格、材质、灯光和相机内外参。GPU 渲染一帧画面,光栅化阶段会写入 Z 缓冲保存逐像素深度,同时物体 ID 缓冲区分出每个像素归属于哪个物体。于是,深度图和分割掩码作为渲染的副产品直接导出;相机位姿、物体 3D 框、朝向也从场景树里随手可取。这一切不需要任何标注员参与,这就是“渲染即标注”的第一原理。

用数学描述这个“摄影机自动记账”的过程,就是针孔相机投影——渲染器每次成像都在做这个计算,深度 $Z_c$ 在这个过程中天然被记录下来:

所以场记单不是事后补的,而是搭景时写好的。渲染器每按一次“快门”,深度图和分割图这两张“答题卡”跟着画面自动出炉,这正是合成数据标注成本归零的起点。

[uv1]=1Zc[fx0cx0fycy001][XcYcZc]\displaystyle \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \frac{1}{Z_c} \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}
相机把三维世界拍成二维照片的数学过程。渲染器每一步都在算这个投影,所以“距离”和“是谁”的信息天然就在计算过程里。
  1. 三维点坐标 $(X_c, Y_c, Z_c)$场景中一个物体在相机坐标系下的位置,其中 $Z_c$ 正是我们想要的深度——物体离相机有多远。
    (Xc,Yc,Zc)(X_c, Y_c, Z_c)
  2. 相机内参矩阵 $K$由焦距 $f_x, f_y$ 和光心偏移 $c_x, c_y$ 组成,描述镜头如何把光线聚焦到传感器上。
    K=[fx0cx0fycy001]K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}
  3. 透视缩放 $\dfrac{1}{Z_c}$远处物体在画面里变小,除以深度这个操作把三维坐标“压”到二维图像平面上。
    1Zc[XcYcZc]\frac{1}{Z_c} \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}
  4. 像素坐标 $(u, v)$投影后物体在图像上的二维位置。渲染时反推这个投影,深度 $Z_c$ 就被记录进 Z 缓冲,分割类别也从物体 ID 缓冲读出。
    [uv1]\begin{bmatrix} u \\ v \\ 1 \end{bmatrix}

生成模型标签

你请一位画家按订单作画:“请画一辆红色汽车停在雪地里。”画拿到手,你不需要再请人鉴定“画里是什么车、什么天气”——因为订单就是答案。扩散模型就是这位“照单作画”的画家。

用 Stable Diffusion 这类生成模型造训练数据时,你输入文本提示词或参考图、姿态条件,模型按条件生成图片。图片是“照着条件画的”,条件本身就携带标签:提示词里的“红车”“雪地”天然描述图片内容,不用再找人看图写描述。这就是“提示词即标签”。

想要标签更精准,可以用 ControlNet、LoRA 等把类别、姿态、深度绑定进生成过程,让输出与条件严格一一对应;也可以在生成时让模型附带输出区域属性,这叫属性绑定输出。而生成模型“听话”的程度,由无分类器引导强度 $w$ 决定:

提示词就是“电子场记单”:你下单时写的要求,就是训练要用的标签。作画越听话,标签越可信;而“听话程度”由 $w$ 控制——这也是用生成模型批量造“图文对”数据的底层逻辑。

ϵ~θ(zt,c,t)=(1+w) ϵθ(zt,c,t)−w ϵθ(zt,∅,t)\displaystyle \tilde{\epsilon}_\theta(z_t, c, t) = (1 + w)\, \epsilon_\theta(z_t, c, t) - w\, \epsilon_\theta(z_t, \varnothing, t)
生成模型如何被“条件”牵着走。条件越强,生成的图片越贴合标签,但也可能越僵硬、多样性下降。
  1. 条件噪声预测 $\epsilon_\theta(z_t, c, t)$给定提示词(标签)$c$,模型预测第 $t$ 步去噪时要减掉的噪声,条件在这里起作用。
    ϵθ(zt,c,t)\epsilon_\theta(z_t, c, t)
  2. 无条件噪声预测 $\epsilon_\theta(z_t, \varnothing, t)$完全不看提示词时模型“自由发挥”的预测,代表无约束的随意生成。
    ϵθ(zt,∅,t)\epsilon_\theta(z_t, \varnothing, t)
  3. 引导强度 $w$超参数,用来放大“有条件”和“无条件”两种预测的差异。$w$ 越大,生成结果越死磕提示词。
    (1+w)−w=1(1 + w) - w = 1
  4. 加权组合最终用放大后的条件预测去引导去噪,图片才稳定服从标签。注意 $1+w$ 与 $w$ 配对使用,保证括号内总权重和为 $1$,不改变噪声的整体尺度。
    ϵ~θ=(1+w) ϵθ(zt,c,t)−w ϵθ(zt,∅,t)\tilde{\epsilon}_\theta = (1+w)\, \epsilon_\theta(z_t, c, t) - w\, \epsilon_\theta(z_t, \varnothing, t)

噪声建模校正

摄影棚有个天生毛病:太干净。真实街头有灰尘、雨滴、逆光、运动模糊,棚里却是完美的灯光和干净的背景。拿棚拍画面训练的模型,一到真实场景就“水土不服”。

对策是“往棚里撒人造灰尘”——域随机化:随机改变光照、纹理、天气,让合成数据覆盖真实世界的各种变化。但注意,撒灰尘可能弄花场记单:渲染时的边缘锯齿、透明物体、快速运动,会让某些像素的自动标注出错。这种“弄花”就是标注噪声。

关键认识是:合成标注的噪声往往不是均匀随机噪声,而是结构性的——某些类别天生容易被混淆(比如树和灌木、行人和自行车)。我们可以用噪声转移矩阵来建模这种污染:统计真实类别被标成其他类别的概率,训练时用矩阵调整损失,推理时用逆矩阵还原标签:

灰尘要撒,场记单也要定期擦干净。域随机化让模型见多识广,噪声校正让标签始终可信——两者配合,才敢说自动标注可靠。

P(y~=j∣y=i)=Qij,pobs=Q⊤ptrue\displaystyle P(\tilde{y} = j \mid y = i) = Q_{ij}, \qquad p_{\text{obs}} = Q^{\top} p_{\text{true}}
噪声转移矩阵描述“真实标签被污染成别的标签”的概率。知道这个矩阵,就能把被污染的标注校正回来。
  1. 真实标签 $y = i$渲染器“心里”本应给出的正确类别,相当于场记单上没被弄脏的字。
    y=iy = i
  2. 观测标签 $\tilde{y} = j$我们实际拿到手的标注,可能被“灰尘”弄花成了别的类别。
    y~=j\tilde{y} = j
  3. 转移矩阵 $Q_{ij}$第 $i$ 行第 $j$ 列表示“真实是 $i$ 却被标成 $j$”的概率,对角线元素越大说明标注越干净。
    Qij∈[0,1]Q_{ij} \in [0, 1]
  4. 校正公式观测到的标签分布等于转移矩阵转置乘以真实分布;训练时用 $Q$ 修正损失,或在推理时用 $Q^{-1}$ 还原,就能把污染部分补回来。
    pobs=Q⊤ptruep_{\text{obs}} = Q^{\top} p_{\text{true}}

域迁移适配

飞行员不能只在模拟器里飞就上真机,也不能一上来就直接用真机练。标准流程是:模拟器里练熟,再上真机做适应性带飞。合成标注训练模型,走的也是这条路。

合成数据训完的模型,换到真实照片上精度总会掉一截,因为“棚拍光线”不等于“真实阳光”。这个差距叫域差距(sim-to-real gap)。域迁移适配就是做“带飞”。

常用三招。第一招域适应:让特征提取器分不清特征来自哪个域,把合成域和真实域的特征分布拉近。第二招自训练:合成模型在真实无标注数据上打伪标签,挑高置信度的样本再训练一轮,反复迭代。第三招教师-学生模型:教师模型(在合成+少量真实数据上训练)给学生模型生成软标签,逐步蒸馏迁移。总损失由“主任务损失”和“域距离”两部分组成:

模拟器负责练熟,带飞负责适应。只练不带飞会“坠机”,只带飞不练熟则成本失控——域迁移的意义,就是让“免费的合成标注”安全落地到真实世界。

L=E(xs,ys)[ℓ(f(xs),ys)]+λ d(Ps,Pt)\displaystyle \mathcal{L} = \mathbb{E}_{(x_s, y_s)}\left[\ell(f(x_s), y_s)\right] + \lambda\, d\left(\mathcal{P}_s, \mathcal{P}_t\right)
合成数据上的监督学习损失,加上拉近合成域与真实域分布的适配损失,一起优化。
  1. 源域监督损失在合成数据 $(x_s, y_s)$ 上算标准的分类或分割损失,让模型先学会基本本领。
    E(xs,ys)[ℓ(f(xs),ys)]\mathbb{E}_{(x_s, y_s)}\left[\ell(f(x_s), y_s)\right]
  2. 分布距离 $d(\mathcal{P}_s, \mathcal{P}_t)$度量合成域特征分布与真实域特征分布的差异,常用最大均值差异(MMD)或对抗判别器来估计。
    d(Ps,Pt)d(\mathcal{P}_s, \mathcal{P}_t)
  3. 权衡系数 $\lambda$控制“贴合合成标注”和“逼近真实分布”之间的平衡,$\lambda$ 越大适配越用力。
    λ>0\lambda > 0
  4. 总损失两项相加。$\lambda$ 太小迁移不足,太大则主任务被带偏,需要调参找到平衡点。
    L=Ltask+λ d(Ps,Pt)\mathcal{L} = \mathcal{L}_{task} + \lambda\, d(\mathcal{P}_s, \mathcal{P}_t)

质量验证体系

电影上映前有粗剪、审片、点映。合成标注再便宜,也不能未经质检就灌进训练管线——你得先证明这份场记单可信,否则模型学了错误答案,越训越歪。

质量验证有三板斧。其一是抽样人工抽检:随机抽 0.1% 到 0.5% 的合成样本,让标注员快速核对,估算整体标注错误率。其二是模型能力评测:用合成数据训练一个小模型,拿到公开真实基准(如真实分割、检测数据集)上跑分,看指标是否合格。其三是数据覆盖分析:检查合成场景是否覆盖了真实应用中会遇到的类别、光照、视角分布,防止“没拍过的场景”。

分割任务最常用的质量指标是 mIoU,它衡量“预测结果”与“真实标注”的重合程度:

审片不是走形式:抽检防止“场记单造假”,基准评测防止“模型只会棚拍”,覆盖分析防止“漏拍场景”。三重检查通过,合成标注才算正式“过审”上线。

mIoU=1C∑c=1CTPcTPc+FPc+FNc\displaystyle \text{mIoU} = \frac{1}{C} \sum_{c=1}^{C} \frac{TP_c}{TP_c + FP_c + FN_c}
每个类别算“预测与真实的交集除以并集”,再对所有类别取平均。值越接近 1,标注与预测越吻合。
  1. 类别统计量对第 $c$ 类统计真正例 $TP_c$(预测和真实都是它)、假正例 $FP_c$(预测是它但真实不是)、假负例 $FN_c$(真实是它但没预测出来)。
    TPc,  FPc,  FNcTP_c, \; FP_c, \; FN_c
  2. 单类 IoU交集 $TP_c$ 除以并集 $TP_c + FP_c + FN_c$,衡量这一类预测与真实的重合度。
    IoUc=TPcTPc+FPc+FNc\text{IoU}_c = \frac{TP_c}{TP_c + FP_c + FN_c}
  3. 取平均对所有类别求平均,除以类别数 $C$,避免大类碾压小类,让每个类别都被公平对待。
    1C∑c=1CIoUc\frac{1}{C} \sum_{c=1}^{C} \text{IoU}_c

落地工程实践

把摄影棚变成流水线剧组,需要场务、灯光、摄影、场记、审片分工协作。合成标注落地也是同一套戏:场景库、渲染脚本、自动出标、质量抽检、训练回流,形成闭环。

工程上通常四步走。第一步搭场景:建 3D 资产库和场景模板;第二步批量渲染:用脚本随机光照和视角,同步导出深度图、分割掩码、物体位姿;第三步数据处理:清洗去重、噪声校正、切分训练集和验证集;第四步训练回流:在真实数据上评测,把失败案例反馈回场景库“补拍”。

这套流水线到底省不省钱,要算一笔成本账:

工具生态上,NVIDIA Omniverse、BlenderProc、Unity Perception、Kubric 都已内置“渲染即标注”能力。剧组搭好、拍摄全自动、场记免费,标注预算省到只剩电费——这就是合成数据标注自动化承诺的终局。

节省率=1−C合成+C校验C人工\displaystyle \text{节省率} = 1 - \frac{C_{\text{合成}} + C_{\text{校验}}}{C_{\text{人工}}}
用(合成管线成本 + 抽检验证成本)替换人工标注成本,算出省了多少比例。
  1. 人工标注成本 $C_{\text{人工}}$传统做法下雇标注员的费用,等于单价乘以张数,随数据量线性上涨。
    C人工=单价×张数C_{\text{人工}} = \text{单价} \times \text{张数}
  2. 合成管线成本 $C_{\text{合成}}$3D 资产生成、渲染算力、脚本开发的一次性搭建成本加上每次渲染的边际成本。
    C合成=C搭建+C渲染C_{\text{合成}} = C_{\text{搭建}} + C_{\text{渲染}}
  3. 校验成本 $C_{\text{校验}}$抽检人工核对、基准测试的少量开销,通常只是人工标注成本的零头。
    C校验=α⋅C人工,α≪1C_{\text{校验}} = \alpha \cdot C_{\text{人工}}, \quad \alpha \ll 1
  4. 节省率1 减去替换成本的占比。当分子远小于分母时,节省率趋近于 100%。
    节省率→1\text{节省率} \to 1

AI 应用场景

自动驾驶传感器仿真标注

阶段:数据准备与标注

解决的问题:语义分割和 3D 目标检测需要百万级像素级精确标注,人工画一张街景分割图要数小时,一年开销数百万。用 CARLA、Unreal 渲染虚拟城市,同一帧自动输出分割掩码、深度图、3D 框和天气标签,等于摄影棚里场记单全自动填写,标注成本接近零。

具体案例:某 L4 自动驾驶团队用合成引擎生成 30 万帧多雨雪光照街景,标签全部自动挂出,人工只抽检 2% 并修正边缘像素,训练出的分割模型在真实基准上 mIoU 仅比全人工数据低 1.3 个点,标注预算节省 96%。

工业缺陷检测样本扩充

阶段:数据增强与样本平衡

解决的问题:钢材、半导体表面的划痕、凹坑、麻点等缺陷真实样本极其稀少,正负样本严重失衡。真实拍到的缺陷图又贵又少,这时用条件扩散模型按缺陷类别生成图片,“提示词即标签”让标签随图自动出现,快速补齐稀缺类别。就相当于请一位“照单作画”的画家,批量画出各种缺陷样品。

具体案例:某质检厂商用 LoRA 微调扩散模型,按“划痕/凹坑/异物”三个条件各生成 2 万张缺陷图,标签由提示词自动绑定,检测模型对稀缺缺陷的召回率从 78% 提升到 93%。

机器人抓取位姿自动标注

阶段:数据生成与 3D 标注

解决的问题:机器人抓取需要物体 6D 位姿标注,人工在点云里摆框又慢又容易错,而且真实场景中物体摆放千变万化。在仿真中随机摆放物体模型,渲染时相机位姿和物体位姿矩阵直接导出,6D 位姿标注自动生成,这正是“渲染即标注”摄影棚逻辑在 3D 任务上的直接延伸。

具体案例:仓库分拣机器人团队用 Isaac Sim 批量生成 10 万张桌面场景,自动输出 6D 位姿与深度图,再用域随机化迁移到真实机械臂,抓取成功率从 55% 提升到 88%。

Python 演示

python66 行
"""合成数据自动标注 + 噪声校正演示"""import numpy as np NUM_CLASSES = 4IMG_SIZE = 64  def render_scene(seed):    """渲染一帧合成图像: 返回 (图片, 深度图, 分割图)"""    rng = np.random.default_rng(seed)    img = np.zeros((IMG_SIZE, IMG_SIZE, 3), dtype=np.float32)    depth = np.full((IMG_SIZE, IMG_SIZE), 10.0)    seg = np.zeros((IMG_SIZE, IMG_SIZE), dtype=int)    for cls in range(1, NUM_CLASSES):        cx = int(rng.integers(16, 48))        cy = int(rng.integers(16, 48))        r = int(rng.integers(4, 9))        d = float(rng.uniform(1.0, 9.0))        yy, xx = np.ogrid[:IMG_SIZE, :IMG_SIZE]        mask = (xx - cx) ** 2 + (yy - cy) ** 2 <= r * r        img[mask] = rng.random(3)        depth[mask] = d          # 渲染器自带: 深度        seg[mask] = cls          # 渲染器自带: 类别    return img, depth, seg  def add_label_noise(seg, noise_rate, seed):    """模拟渲染器的标注噪声: 随机改掉部分像素的类别"""    rng = np.random.default_rng(seed)    flip = rng.random(seg.shape) < noise_rate    noisy = seg.copy()    noisy[flip] = rng.integers(0, NUM_CLASSES, seg.shape)[flip]    return noisy  def majority_vote(noisy_list):    """用多次渲染的标注做多数表决, 校正噪声标签"""    votes = np.stack(noisy_list)    corrected = np.zeros_like(noisy_list[0])    for i in range(IMG_SIZE):        for j in range(IMG_SIZE):            vals, counts = np.unique(votes[:, i, j], return_counts=True)            corrected[i, j] = vals[int(np.argmax(counts))]    return corrected  def pixel_acc(seg_a, seg_b):    """计算两张标注图的像素一致率"""    return float(np.mean(seg_a == seg_b))  def main():    img, depth, seg = render_scene(seed=0)    print("合成图像生成: 深度范围 %.1f~%.1f, 类别数 %d"          % (depth.min(), depth.max(), len(np.unique(seg))))    noisy = add_label_noise(seg, noise_rate=0.15, seed=1)    print("单次噪声标注一致率  : %.2f%%"          % (100 * pixel_acc(noisy, seg)))    noisy_list = [add_label_noise(seg, 0.15, seed=s) for s in range(2, 7)]    corrected = majority_vote(noisy_list)    print("多数表决校正后一致率: %.2f%%"          % (100 * pixel_acc(corrected, seg)))  if __name__ == "__main__":    main()
目的:渲染一帧“虚拟场景”自动获得深度与分割标注,再用多次渲染 + 多数表决校正标注噪声,演示合成标注自动化和质量校正的完整闭环。
  1. depth[mask] = d把物体距离写进深度图,相当于场记单自动记下“离镜头多远”。
  2. seg[mask] = cls同一个掩码再写类别编号,分割标注随渲染零成本生成。
  3. add_label_noise(seg, 0.15, seed=1)模拟渲染器在边缘、透明处偶尔标错,像灰尘弄花场记单。
  4. majority_vote(noisy_list)同一场景渲染多份标签“对答案”,少数服从多数来校正。
  5. pixel_acc(noisy, seg)用像素一致率当质检指标,量化校正前后的标注质量。

常见误区

误区电脑生成的图像,标注是程序算出来的,肯定 100% 准确,不需要检查。

正解渲染器在边缘像素、运动模糊、透明物体上仍会出错,深度精度也受限于采样率。合成标注的噪声虽然远低于人工标注,但并非零。要用噪声转移矩阵建模边缘错误、抽检核对,才能保证质量。好比摄影棚的场记单也可能被灯架影子挡住某个瞬间,记录并不总是完美。

为何常见:人们默认“计算机=精确”,忽略了渲染本身有采样误差和结构化误差。

误区扩散模型按提示词生成图片,提示词就是标签,所以生成完标签自动正确,可以放心用。

正解条件是概率性的,不是硬绑定。扩散模型偶尔会“画歪”:提示“红车”却生成蓝车。要用 classifier-free guidance 提高贴合度,再用分类器过滤不合格样本,必要时人工抽检。

为何常见:把“生成时的控制信号”当成了“生成后的事实”,忽略了生成模型的随机性。

误区合成数据可以无限生成还有免费标注,那真实数据完全不用标了,全用合成的。

正解合成域与真实域存在系统性差距,纯合成训练的模型在真实基准上通常明显掉点。还是要保留少量真实数据做域适应、微调和质量验证。模拟器练熟的飞行员,仍需要真机带飞才能上岗。

为何常见:只看到成本差异,忽略了分布差异,把“省钱”误当成“零成本替代”。

误区域随机化能提升模型鲁棒性,那噪声、光照变化使劲加就行,加得越多越稳。

正解过度随机化会让任务变难,模型把精力花在对抗无意义的干扰上,主要性能反而下降。要在“多样性”和“可学习性”之间取平衡,用验证集来调随机化强度,而不是无脑堆噪声。

为何常见:把数据增强的直觉推到极端,误以为“越乱越难=越鲁棒”,忽视了任务本身的复杂度。

面试题

Q1. 合成数据最核心的“标注免费”体现在哪里?

单选题 · easy

  • A.生成图片不再花钱买
  • B.渲染同步输出深度分割← 正确答案
  • C.标注员用工具提效率
  • D.开源数据集免费使用

答案:B。合成数据是计算机生成的,渲染时深度、分割、位姿作为中间结果天然产出,不需要标注员参与。其他选项只是降低了成本或复用他人成果,不是“标注免费”的本质。

Q2. 深度图中像素亮度通常代表什么?

单选题 · easy

  • A.物体表面颜色程度
  • B.物体离相机远近距离← 正确答案
  • C.物体材质反光强弱
  • D.物体运动速度大小

答案:B。深度图记录每个像素到相机的距离,通常越亮越近、越暗越远。颜色、反光、速度属于其他模态的信息,与深度图定义不符。

Q3. classifier-free guidance 中引导强度 w 的作用是什么?

单选题 · mid

  • A.控制图片分辨率高低
  • B.控制生成贴合标签程度← 正确答案
  • C.控制模型训练速度
  • D.控制数据增强强度

答案:B。引导强度 w 放大“有条件”和“无条件”预测的差异,w 越大生成越贴合提示词标签,但多样性会下降。它不控制分辨率、训练速度或增强强度。

Q4. 在噪声转移矩阵 Q 中,哪一项最能说明标注的干净程度?

单选题 · mid

  • A.矩阵对角线元素之和← 正确答案
  • B.矩阵所有元素平均值
  • C.矩阵最大特征向量
  • D.矩阵转置后的行列式

答案:A。对角线元素 $Q_{ii}$ 表示真实类别 $i$ 被正确保留的概率,对角线越大标注越干净。平均值、特征向量、行列式都不能直接反映“标签被正确保留”这个语义。

Q5. 教师-学生蒸馏模型在域迁移中的典型用法是?

单选题 · hard

  • A.教师吃真实数据学生吃合成
  • B.教师生成软标签指导学生← 正确答案
  • C.学生只训练不做推理
  • D.教师和学生交换数据集

答案:B。教师模型在合成加少量真实数据上训练,为学生模型生成软标签,把知识从合成域“蒸馏”到学生,再在真实域上迭代。其他选项描述的训练安排都不符合蒸馏的机制。

Q6. mIoU 指标衡量的是什么?

单选题 · easy

  • A.标注文件占磁盘大小
  • B.预测结果与真实重合度← 正确答案
  • C.模型推理耗时的多少
  • D.合成图像数量的规模

答案:B。mIoU 是分割任务的核心质量指标,对每个类别计算预测与真实的交集除以并集再取平均,衡量的是重合度,与文件大小、耗时、数据量无关。

Q7. 自训练伪标签的正确步骤是?

单选题 · mid

  • A.合成模型标注真实数据再训练← 正确答案
  • B.人工重标所有合成数据
  • C.删除全部低置信度样本
  • D.只用真实数据不复训

答案:A。自训练先用合成数据训练模型,再让模型给真实无标注数据打伪标签,挑选高置信度样本加入训练反复迭代。关键是“挑高置信度”,而不是全部删除或人工重标。

Q8. 哪些标注可以由 3D 渲染器直接输出?

多选题 · mid

  • A.语义分割掩码图← 正确答案
  • B.逐像素深度值← 正确答案
  • C.人工撰写的图片描述
  • D.物体三维包围框← 正确答案

答案:ABD。渲染器通过物体 ID 缓冲直接输出分割掩码,通过 Z 缓冲直接输出深度值,通过场景树直接读取物体 3D 包围框。只有“人工撰写的图片描述”需要语言模型或人来写,渲染器给不了。

Q9. 缩小合成到真实域差距的常用手段有哪些?

多选题 · mid

  • A.域随机化增加多样性← 正确答案
  • B.对抗式域适应对齐← 正确答案
  • C.放弃合成只标注真实
  • D.教师学生蒸馏迁移← 正确答案

答案:ABD。域随机化让模型见过更多变化,对抗式域适应拉近特征分布,教师学生蒸馏做知识迁移,三者都是缩小域差距的标准手段。放弃合成回到全人工标注,等于放弃“标注免费”的核心优势。

Q10. 合成标注质量验证的合理手段有哪些?

多选题 · hard

  • A.抽样人工快速核对← 正确答案
  • B.真实基准上跑模型← 正确答案
  • C.检查场景类别覆盖度← 正确答案
  • D.直接信任渲染输出

答案:ABC。抽样人工抽检估算错误率、在真实基准上评测模型能力、分析场景覆盖度避免漏拍,三者构成完整质检闭环。直接信任渲染输出忽略了标注噪声和域差距,是典型误区。