民航飞行员正式执飞前,要在飞行模拟器里度过几百小时——驾驶舱和真机一模一样,窗外能排出雪山、暴雨、引擎失火,甚至鸟群撞机。这些百年一遇的险情,被模拟器编成了日常训练课。目标检测模型训练也困在同样的处境里:真实画面中翻斗车、事故散落物、零件瑕疵这类稀有目标出现概率极低,样本攒不够,模型就学不会。合成数据,就是给检测模型造的“飞行模拟器”——用三维引擎搭建虚拟场景,让稀有目标随时出镜;更重要的是,虚拟世界里每个物体位置已知,检测框根本不用人画,渲染的同时自动就标好了。这篇文章带你走完这座“模拟器”的全流程:怎么造图、怎么自动标注、怎么让稀有类别多出场、怎么与真实数据配比训练、怎么评估效果、怎么消除“模拟器味”。读完你就能亲手搭出属于自己数据集的“样本工厂”。

岗位关联

目标检测工程师常被长尾样本卡住:稀有类别样本少、标注贵、模型学不会。掌握合成数据训练方法,相当于给自己配了一座“样本工厂”,能用十分之一的成本补齐稀有类别短板,显著提升模型落地召回率。

目录
  1. 可视化演示
  2. 合成数据概述
  3. 检测框自动标注
  4. 稀有类别合成
  5. 混合训练策略
  6. 性能评估方法
  7. 域适应技术
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

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

自动标注 合成图自动生成框 亚像素级精度 pos已知→渲染→框 零人工标注成本

合成数据概述

说起合成数据,先回忆一下模拟器为什么管用:真实的冰雪迫降也许十年才遇上一次,但模拟器的“排课表”想怎么排就怎么排——上午练引擎失火,下午练侧风着陆。合成数据对检测模型的意义就是这样:它把“等运气攒样本”变成“按需造样本”。在三维引擎(Unity、Unreal、Blender)里搭场景、摆物体、放虚拟相机,渲染出来的图像就是训练数据,想要什么角度和光照都可以调。

为什么需要它?因为真实监控画面里,轿车、行人这类常见目标占了大头,而翻斗车、路面积水、故障零件这种“稀有目标”几个月也攒不够几千张。标注还贵——一个检测框人工框一遍,一万张图就是几万块钱。合成数据绕开了这两个坑:样本可编程生成,“标准答案”也随渲染一并得到。

训练检测模型,本质上就是让网络预测的框不断靠近真值框,目标函数可以写成:对一批合成图像,计算预测与真值的平均损失,然后反向传播更新参数。

模拟器解决了“想练但练不到”,合成数据解决了“想标但标不起”。它把训练数据的主动权从运气手里交还给工程师——缺什么就补什么,这正是它被称为“小样本利器”的起点。

L(θ)=1N∑i=1NLdet(fθ(Iisyn),Bisyn)\mathcal{L}(\theta) = \displaystyle\frac{1}{N}\sum_{i=1}^{N}\mathcal{L}_{det}\left(f_\theta(I_i^{syn}), B_i^{syn}\right)
这个公式是“合成数据训练”的总纲:模型在合成图像上做检测,错了就挨罚,全体样本的罚分取平均后更新参数。
  1. 模型预测$f_\theta(I_i^{syn})$ 表示参数为 $\theta$ 的检测网络在合成图像 $I_i^{syn}$ 上输出的预测框。
    fθ(Iisyn)f_\theta(I_i^{syn})
  2. 自动标注真值$B_i^{syn}$ 是伴随合成图像自动生成的目标框,来自三维场景中物体的已知位置。
    BisynB_i^{syn}
  3. 单图损失$\mathcal{L}_{det}$ 计算预测框与真值框的差距,差距越大罚分越高。
    Ldet(fθ(Iisyn),Bisyn)\mathcal{L}_{det}(f_\theta(I_i^{syn}), B_i^{syn})
  4. 全体平均$\frac{1}{N}\sum_{i=1}^{N}$ 对 $N$ 张合成样本的损失取平均,得到最终的训练目标。
    1N∑i=1N(⋅)\displaystyle\frac{1}{N}\sum_{i=1}^{N}(\cdot)

检测框自动标注

模拟器里有个“上帝视角记录仪”:飞行员飞到哪、离障碍物多近,系统全部精确到厘米。为什么?因为虚拟世界里每个物体的坐标都在数据库里躺着。合成数据最爽的地方同样在此——检测框的“标准答案”不需要人画,它是算出来的。

在三维场景中,每个物体都有一个长方体的三维包围盒,也就是物体在虚拟空间里占住的“包络盒子”;虚拟相机有自己的位置、朝向和镜头参数。把包围盒的 8 个角点从三维世界坐标换算到二维像素坐标,再取这些像素的最小外接矩形,就成了一个标准检测框。因此渲染一帧画面的同时,标注文件已经自动生成完毕,速度是人工标注的成百上千倍。

换算关系就是相机投影模型,一图胜千言:

“标注免费”的真相是:在虚拟世界里,坐标天然可知。真实世界要靠人肉眼框,虚拟世界靠数学投影——这也是合成数据能把标注成本打到接近零的根本原因。

(u,v,1)⊤=K⋅[R∣t]⋅(X,Y,Z,1)⊤(u, v, 1)^{\top} = \boldsymbol{K} \cdot [\boldsymbol{R} \mid \boldsymbol{t}] \cdot (X, Y, Z, 1)^{\top}
三维点坐标经过相机外参(位置朝向)和内参(镜头焦距)两步变换,变成图像上的像素点;8 个角点投影完,外接矩形就是检测框。
  1. 三维角点$(X, Y, Z)$ 是物体包围盒某个角点在虚拟场景中的三维坐标,这是所有计算的起点。
    (X,Y,Z,1)⊤(X, Y, Z, 1)^{\top}
  2. 相机外参$[\boldsymbol{R} \mid \boldsymbol{t}]$ 中 $\boldsymbol{R}$ 是旋转矩阵、$\boldsymbol{t}$ 是平移向量,把世界坐标搬到相机坐标系。
    [R∣t][\boldsymbol{R} \mid \boldsymbol{t}]
  3. 相机内参$\boldsymbol{K}$ 是内参矩阵,包含焦距和光心,把相机坐标换算成像素坐标。
    K⋅(⋅)\boldsymbol{K} \cdot (\cdot)
  4. 像素结果$(u, v)$ 是投影后的二维像素坐标,8 个角点都算完,包住它们的外接矩形就是检测框。
    (u,v,1)⊤(u, v, 1)^{\top}

稀有类别合成

模拟器的杀手锏,是把百年一遇的险情变成每天必练的科目。真实数据是“看运气”:尾部类别样本稀疏,长尾分布让模型对稀有类几乎“不认识”。长尾分布是什么?想象一个班级的成绩单:前几名占了 99 分以上的大部分,而后面的分数稀稀拉拉——目标检测数据里也一样,常见类别样本成千上万,稀有类别只有零星几十张。

合成数据恰好是“点菜”式的:每个类别出场几次,工程师说了算。关键策略是类别重采样——给稀有类别更高的采样概率,让它们在训练里多出场;再配合场景组合多样性,比如换背景、换光照、换相机角度、换物体姿态,让稀有类别不是“复制粘贴”式重复,而是形态各异的真实演练。

类别采样概率可以写成:

合成数据把长尾的“尾巴”一条条捡起来,专门加餐训练。练得多了,模型对稀有类别就不再是“脸盲”,而是像飞行员背熟了每一种紧急检查单。

p(c)=wc∑j=1Cwj,wc=1(freq(c)+ϵ)αp(c) = \frac{w_c}{\sum_{j=1}^{C} w_j}, \quad w_c = \frac{1}{(\text{freq}(c) + \epsilon)^{\alpha}}
频率越低的类别,采样权重越大,出场机会越多。合成数据让稀有类别从“千年等一回”变成“想练几遍练几遍”。
  1. 类别频率$\text{freq}(c)$ 统计类别 $c$ 在现有数据里出现的比例,稀有类的频率很小。
    freq(c)\text{freq}(c)
  2. 反比权重$w_c$ 取频率的倒数再求 $\alpha$ 次方,频率越小权重越大。
    wc=1(freq(c)+ϵ)αw_c = \frac{1}{(\text{freq}(c) + \epsilon)^{\alpha}}
  3. 概率归一$p(c)$ 把单个权重除以所有类别的权重之和,得到该类的采样概率。
    p(c)=wc∑j=1Cwjp(c) = \frac{w_c}{\sum_{j=1}^{C} w_j}
  4. 防零平滑$\epsilon$ 是一个小常数,防止频率为零的类别直接除零。
    ϵ→0+\epsilon \to 0^{+}

混合训练策略

模拟器练得再好,飞行员也得攒真机小时数——因为油门手感、气流颠簸是模拟器给不了的。训练检测模型同理:全部用合成数据,模型会“刷熟”虚拟纹理,一到真实场景就露馅;全部用真实数据,稀有类又练不到。所以主流做法是“混合训练”:合成数据主打补长尾,真实数据兜底真实分布。

关键是配比。记 $r$ 为合成样本量与真实样本量的比值,实践中从 $1:1$ 到 $4:1$ 都有人用,没有万能值,要拿验证集调参。常见失败模式是合成占比过大导致过拟合——模型记住了模拟器的“塑料感”,真实场景精度反而下降。稳妥的套路是渐进式:先用少量合成数据热身,验证集不掉点再逐步加量。另一种做法是在损失函数层面给合成分支加权重:

配比不是拍脑袋定的,而是像调校咖啡的奶咖比例一样,靠杯测(验证集)说话。记住一句话:合成数据是“加练”,不是“替代”。

Ltotal=Ldet(Dreal)+λ⋅Ldet(Dsyn)\mathcal{L}_{total} = \mathcal{L}_{det}(D_{real}) + \lambda \cdot \mathcal{L}_{det}(D_{syn})
真实数据分支永远保留,合成数据分支用权重 $\lambda$ 控制力度。这就像排课表:真机课一节不少,模拟器课按需加练。
  1. 真实分支$\mathcal{L}_{det}(D_{real})$ 在真实数据上的检测损失,保证模型在真实域的基本盘。
    Ldet(Dreal)\mathcal{L}_{det}(D_{real})
  2. 合成分支$\mathcal{L}_{det}(D_{syn})$ 在合成数据上的检测损失,为稀有类别持续提供梯度信号。
    Ldet(Dsyn)\mathcal{L}_{det}(D_{syn})
  3. 权重系数$\lambda$ 调节合成分支的贡献,对应实践中混合比例的调节旋钮。
    λ⋅Ldet(Dsyn)\lambda \cdot \mathcal{L}_{det}(D_{syn})

性能评估方法

模拟器训练结束,学员要上真机考核;考核不能只看“总评多少分”,还得逐科目看——失速改出练得怎么样、仪表进近够不够稳。检测模型也一样,最终评判永远在真实测试集上进行,而且要分科目看成绩。

科目就是每个类别的 AP(平均精度):把预测框按置信度排序,逐点计算精确率与召回率,画出 PR 曲线,曲线下面积就是该类别的 AP。把全部类别的 AP 加起来求平均,得到 mAP。问题在于:mAP 是“全班平均分”,头部类别样本多、AP 高,硬生生把尾部类别的低分拉了上去。所以只看 mAP 会被平均分骗了,必须单独查看稀有类别的 AP 和召回率,必要时对稀有类别单独画 PR 曲线分析。

评估的思路,是对照模拟器思维来的:训练时可以“虚拟考”,但拿执照必须“真机考”。模型能不能落地,不是看它在合成测试集上多风光,而是看真实数据的分科目成绩单。

APc=∫01pc(rc) drc,mAP=1C∑c=1CAPc\text{AP}_c = \displaystyle\int_{0}^{1} p_c(r_c) \, dr_c, \quad \text{mAP} = \frac{1}{C}\sum_{c=1}^{C}\text{AP}_c
先逐类算曲线下面积,再求所有类的平均。mAP 是体检报告的总页,每类 AP 才是具体指标。
  1. 精确率与召回率$p_c$ 与 $r_c$ 是类别 $c$ 在某个置信度阈值下的一对精确率与召回率。
    pc, rcp_c, \ r_c
  2. PR 曲线从高到低调整阈值,得到一系列 $(r_c, p_c)$ 点,连成曲线。
    {(rc,pc)}\{(r_c, p_c)\}
  3. 曲线面积$\int_{0}^{1} p_c(r_c)\, dr_c$ 对召回率积分,得到该类别的平均精度 $\text{AP}_c$。
    APc\text{AP}_c
  4. 类别平均$\frac{1}{C}\sum_{c=1}^{C}$ 对全部 $C$ 个类别的 AP 取平均,得到 mAP。
    mAP\text{mAP}

域适应技术

模拟器的画面再逼真,老飞行员一眼就能看出“塑料感”——光影太干净、纹理太规整。这种虚拟与现实的差异就是域差距(sim-to-real gap):合成图像与真实图像的特征分布不一致,模型在合成域学到的知识,切换到真实域会“水土不服”。

缩小域差距有三板斧。第一是域随机化:渲染时随机化颜色、光照、纹理、相机抖动,让模型学到“不管长什么样都是那个物体”的不变特征,相当于模拟器故意制造各种“看不清楚”的工况。第二是风格迁移:把合成图像转成真实风格再喂给模型,相当于给模拟器画面“套上真实滤镜”。第三是特征对齐:让网络提取的特征在合成域与真实域上分布趋近,常用对抗训练——一个判别器负责猜“这个特征是合成的还是真实的”,特征网络负责骗过它:

域适应就是给模型安排“跨平台适应训练”:先在模拟器里学动作要领,再通过适配科目把要领迁移到真机上。少了这一步,合成数据练出的模型就像只会开模拟器的“理论飞行员”,上了真机就手忙脚乱。

Ladv=−log⁡D(f(xsyn))−log⁡(1−D(f(xreal)))\mathcal{L}_{adv} = -\log D\left(f(x^{syn})\right) - \log\left(1 - D\left(f(x^{real})\right)\right)
判别器 $D$ 想分清真伪,特征提取器 $f$ 想让它分不出来。博弈到最后,两域特征分布被拉近,模型在真实域也能“认得”合成域学来的目标。
  1. 特征提取$f(x)$ 把图像编码成特征向量,$x^{syn}$ 与 $x^{real}$ 分别是合成图和真实图。
    f(xsyn), f(xreal)f(x^{syn}), \ f(x^{real})
  2. 域判别器$D$ 输出特征来自合成域的概率,目标是给合成特征打高分、真实特征打低分。
    D(f(x))D(f(x))
  3. 对抗目标判别器最大化区分能力,特征网络反向最小化——两边互相拉扯。
    −log⁡D(f(xsyn)) 与 −log⁡(1−D(f(xreal)))-\log D(f(x^{syn})) \ \text{与} \ -\log(1 - D(f(x^{real})))
  4. 收敛效果两者达到均衡时,特征网络提取的合成特征与真实特征已经难以分辨,域差距被抹平。
    Ladv→min⁡\mathcal{L}_{adv} \to \min

AI 应用场景

智慧交通中的稀有车型检测

阶段:数据合成与模型训练

解决的问题:高速监控里翻斗车、清障车、事故散落物出现频率极低,靠真实摄像头攒样本可能要等半年,人工标注更是一笔大开销。AI 用三维引擎合成这些稀有车型与极端场景,自动产出检测框,配合真实数据混合训练,解决了长尾类别“学不会”的痛点。

具体案例:某高速路段监控项目,通过合成“逆行车辆、路面遗撒物、侧翻货车”等场景,将稀有类别召回率从 41% 提升到 78%,而标注成本仅为纯人工方案的十分之一。

工业质检中的缺陷检测

阶段:缺陷样本生成与模型迭代

解决的问题:生产线上不良品率只有千分之几,缺陷样本天然稀少;人工挑图、画框耗时费力。合成数据在虚拟环境里模拟不同光照下的划痕、缺料、毛刺,让检测模型在缺陷样本上得到充分训练。

具体案例:某 3C 电子厂连接器质检项目,用合成缺陷图与真实缺陷图按 3:1 混合训练,漏检率降低约一半,且新产线投产时只需少量真实样本微调即可适配。

电力巡检中的长尾目标识别

阶段:场景合成与域适应部署

解决的问题:无人机巡检画面中,鸟巢、绝缘子破损、锈蚀等目标出现频率极低,且不同地区杆塔风格差异大。合成数据按需生成“缺陷库”,再用风格迁移和域随机化消除模拟到现实的差距,让模型在真实巡检中稳定识别。

具体案例:某电力巡检团队用合成数据训练绝缘子缺陷检测模型,在真实巡检视频上的召回率提升 32%,并借助域随机化扛住了阴天、逆光等复杂光照。

Python 演示

python67 行
import random  class SyntheticDetectorData:    """简化版合成检测数据生成器: 生成虚拟场景并输出标注框. """     CATEGORIES = ["common", "mid", "rare"]     def __init__(self, seed=42):        random.seed(seed)        self.scene_count = 0     def generate_scene(self, num_objects=8, width=640, height=480, weights=(6, 3, 1)):        """生成一张合成场景: 随机摆放物体, 返回标注框字典列表. """        self.scene_count += 1        boxes = []        occupied = []        for _ in range(num_objects):            x, y, w, h = self._random_box(width, height, occupied)            if x is None:                continue            occupied.append((x, y, w, h))            cls = random.choices(self.CATEGORIES, weights=weights)[0]            boxes.append({"box": (x, y, w, h), "class": cls})        return boxes     def _random_box(self, width, height, occupied):        """在场景内找一个不与其他物体重叠的矩形位置. """        for _ in range(40):            w = random.randint(24, 80)            h = random.randint(24, 80)            x = random.randint(0, width - w)            y = random.randint(0, height - h)            overlap = False            for bx, by, bw, bh in occupied:                if x < bx + bw and x + w > bx and y < by + bh and y + h > by:                    overlap = True                    break            if not overlap:                return x, y, w, h        return None, None, None, None     @staticmethod    def rare_ratio(scenes, target="rare"):        """统计目标类别(长尾中的稀有类)在所有标注中的占比. """        total = sum(len(s) for s in scenes)        if total == 0:            return 0.0        rare_num = sum(1 for s in scenes for o in s if o["class"] == target)        return rare_num / total     @staticmethod    def mix(synthetic_scenes, real_scenes, ratio=2.0):        """按比例混合: 合成数据与真实数据合成训练集. """        n_syn = int(round(len(real_scenes) * ratio))        chosen = random.sample(synthetic_scenes, min(n_syn, len(synthetic_scenes)))        return chosen + real_scenes  if __name__ == "__main__":    gen = SyntheticDetectorData(seed=7)    real = [gen.generate_scene(weights=(16, 3, 1)) for _ in range(100)]    synthetic = [gen.generate_scene(weights=(2, 3, 5)) for _ in range(300)]    print("纯真实数据稀有类占比: {:.2%}".format(gen.rare_ratio(real)))    print("纯合成数据稀有类占比: {:.2%}".format(gen.rare_ratio(synthetic)))    train = gen.mix(synthetic, real, ratio=2.0)    print("2:1 混合后稀有类占比: {:.2%}".format(gen.rare_ratio(train)))
目的:用简化代码演示合成数据生成、稀有类别采样与混合训练比例,跑一遍就能直观看到稀有类占比如何被拉高。
  1. cls = random.choices(self.CATEGORIES, weights=weights)[0]按权重随机采样类别,真实数据用偏向常见类的权重、合成数据用偏向稀有类的权重
  2. boxes.append({"box": (x, y, w, h), "class": cls})模拟“自动标注”:物体一放好,框和类别就记录在案
  3. return None, None, None, None40 次尝试都放不下就放弃这个物体,避免物体重叠
  4. rare_num = sum(1 for s in scenes for o in s if o["class"] == target)统计稀有类目标数量
  5. n_syn = int(round(len(real_scenes) * ratio))按混合比例计算需要取多少合成场景
  6. return chosen + real_scenes合成与真实拼接成最终训练集

常见误区

误区“既然合成数据要什么有什么,标注又免费,那我干脆全部用合成数据训练,把真实数据扔了不就行了?”

正解合成数据能补稀有,但补不了真实世界的“烟火气”——真实相机才有光学畸变、运动模糊、杂乱遮挡和复杂光照,这些差异就是域差距。主流做法永远是混合训练:合成数据负责补齐长尾,真实数据兜底真实分布。全合成训练的模型一到真实场景,精度往往会明显跳水。

为何常见:合成数据在自家合成测试集上表现太好,容易让人误以为已经达标,忽略了“考得好”和“真能用”是两回事。

误区“既然合成数据免费,那我生成十万张丢进去,效果一定比一万张好。”

正解合成数据是“偏科训练”——大量合成样本会让模型熟记虚拟纹理,比如特定光照下的“塑料感”,在真实数据上反而过拟合。合成与真实的比例是需要调的超参数,实践常从 1:1 起步,用渐进式增加找到验证集上的“甜点区”。

为何常见:“数据多=效果好”是深度学习里的常见直觉,但域差距存在时,数据多反而可能放大偏差。

误区“三维投影自动生成的检测框是数学算出来的,肯定不会有错,不需要检查。”

正解投影公式本身没错,但“渲染出的图”不等于“合理场景”——物体悬浮、穿模、光照失真、目标过小,这些质量问题会让标注框虽然精确却教给模型错误的知识。合成数据同样需要质量抽检:人眼抽查加上小模型预筛。

为何常见:把“标注精确”和“样本有效”混为一谈,以为框准了样本就一定好。

误区“训练完看 mAP 涨了两个点,稀有类应该没问题了吧?”

正解mAP 是各类别 AP 的平均,头部类别样本多、AP 高,会把尾部类别的低 AP“平均”掉。必须分类别看 AP,尤其关注尾部几类的召回率,否则长尾问题只是被掩盖,而非被解决。

为何常见:全局指标便于汇报,却掩盖了类别之间的巨大差异,容易让人产生“整体还行”的错觉。

面试题

Q1. 合成数据训练检测模型,最直接的优势是什么?

单选题 · easy

  • A.完全替代所有真实场景数据
  • B.自动获得精确的目标标注框← 正确答案
  • C.让模型推理速度大幅提升
  • D.不需要任何人工参与验证

答案:B。合成数据的核心优势是标注免费且精确——三维场景中物体的坐标已知,渲染出图的同时自动投影出检测框。A 说法过度,合成数据并不能完全替代真实数据;C 说的是推理优化,与训练数据无关;D 忽略了合成数据仍需质量校验。

Q2. 检测框自动标注的原理是什么?

单选题 · mid

  • A.用图像分割网络预测物体轮廓
  • B.从海量图片中搜索相似目标
  • C.将三维包围盒角点投影到二维← 正确答案
  • D.依靠检测模型反向传播标注

答案:C。自动标注的原理是相机投影:三维包围盒的 8 个角点经相机内外参变换到二维像素坐标,外接矩形就是检测框。A 是图像分割思路,B 是检索式方法,D 是训练过程本身,都不是合成数据自动标注的原理。

Q3. 长尾分布环境下,合成数据主要帮助哪类目标?

单选题 · mid

  • A.高频出现的常见目标
  • B.模糊低分辨率的背景
  • C.尺寸过大的区域物体
  • D.稀有类别与长尾场景← 正确答案

答案:D。长尾问题指头部类别样本极多、尾部稀有类别样本极少。合成数据按需采样,专门为尾部类别造样本,让模型练到平时练不到的目标。A、B、C 均不是长尾问题的核心痛点。

Q4. 关于合成与真实数据的混合训练,下列说法正确的是?

多选题 · mid

  • A.混合比例需要实验调优← 正确答案
  • B.合成数据占比越高越好
  • C.逐步增加合成数据占比← 正确答案
  • D.合成数据只用于预训练

答案:AC。混合比例没有固定值,需要拿验证集实验确定;激进做法容易过拟合到合成纹理,所以渐进式增加最稳妥。B 是典型误区;D 把合成数据限定为预训练用途过于狭隘,混合训练才是主流。

Q5. “模拟器与真实世界存在域差距”,这句话指的是什么?

单选题 · hard

  • A.合成图像分辨率通常低于真实图
  • B.真实数据标注通常比合成更准
  • C.合成数据无法部署到推理环境
  • D.合成与真实的纹理风格分布有差异← 正确答案

答案:D。域差距指合成图像与真实图像在纹理、光照、噪声等特征分布上的差异,通常表现为“合成训练、真实测试”时精度下降。A 是具体现象而非本质,B 与域差距无关,C 是错误理解。

Q6. mAP 指标的含义是什么?

单选题 · easy

  • A.各类别平均精度 AP 的平均值← 正确答案
  • B.所有检测框的平均置信度得分
  • C.模型参数量和推理时间的比值
  • D.合成数据在训练集中的占比

答案:A。mAP 先对每个类别计算 PR 曲线下面积得到 AP,再对所有类别求平均。B 与置信度得分无关,C 是效率指标,D 讲的是训练集构成,均不符合 mAP 定义。

Q7. 下列哪些是消除合成与真实域差距的常见技术?

多选题 · hard

  • A.域随机化,随机化颜色与光照← 正确答案
  • B.风格迁移,转换合成图为真实风格← 正确答案
  • C.特征对齐,让两域分布趋近← 正确答案
  • D.直接删掉所有合成数据

答案:ABC。域随机化、风格迁移、特征对齐都是经典的 sim-to-real 适配技术。域随机化在渲染时打乱视觉条件,风格迁移套上真实滤镜,特征对齐用对抗训练拉近分布。D 直接放弃合成数据,等于否定了整条路线。

Q8. 评估合成数据训练效果时,为什么不能只看 mAP?

单选题 · mid

  • A.mAP 无法衡量所有类别的精度
  • B.mAP 必须用大量合成数据算出
  • C.全局均值会掩盖稀有类别的低 AP← 正确答案
  • D.mAP 只适用于分类不适用检测

答案:C。mAP 是各类别 AP 的平均,头部类别 AP 高会把尾部类别的低 AP“平均”掉。只有分类别看 AP 明细,才能发现稀有类是否真的被救起来。A、B、D 描述均不准确。

Q9. 合成数据过多导致模型过拟合,最典型的表现是什么?

单选题 · hard

  • A.在合成测试集上精确率反而下降
  • B.在真实测试集上表现明显下降← 正确答案
  • C.训练损失始终无法收敛到很低
  • D.所有目标框预测位置出现偏移

答案:B。合成数据过多时,模型会记住模拟器的纹理特征,在真实测试集上表现明显下降,这是过拟合到合成域的典型信号。A 中合成测试集精度通常不降反升,C 是优化问题,D 更可能是标注或模型结构问题。

Q10. 下列哪些场景适合用合成数据训练检测模型?

多选题 · easy

  • A.稀有车型与事故场景的检测← 正确答案
  • B.工业产线缺陷样本严重不足← 正确答案
  • C.电力巡检目标呈现长尾分布← 正确答案
  • D.任何情况都优先于真实数据

答案:ABC。稀有车型、工业缺陷、电力巡检长尾都是合成数据的主战场——真实样本不足、标注昂贵、场景可控。D 错误,合成数据的作用是补充而非替代,真实数据在混合训练中永远占有一席之地。