产线上某种缺陷一个月只出现几次,能收集到的图像不过几十张,还都带着同一台设备的光照和角度。用这样的样本训练检测模型,验证集上的数字往往好看,一上线就开始漏检。问题不在网络结构,而在数据本身:数量不够,分布也太窄。
这类困境在视觉检测、语音识别、仿真环境里都能遇到。真实数据要么稀少,要么采集成本高,要么因为授权限制根本拿不到。合成数据于是被推到台前。
它补的是覆盖范围,不只是数量
这类数据由生成模型、物理仿真或规则采样产出。它并不只是“多几张图”,更接近把已知规律参数化之后按需要采样:换光照、换角度、加遮挡、调噪声。真实采集很难凑齐的组合,在生成侧可以按条件指定。
- 补长尾:出现频率极低的情形可以按需生成,不必等它自然发生。
- 补标注:生成时标签已知,省掉人工标注这一环,也避开了标注规范不一致。
- 补边界:可以系统地扫过参数空间,而不是碰到什么就采什么。
容易生成的部分,也容易失真
生成器只理解它见过的世界。如果训练生成器的数据本身有偏,产出的样本会把这种偏放大,而不是抵消它。更麻烦的是一种循环:模型生成数据,数据再训练模型,几轮之后输出会向生成器的舒适区收缩,多样性一点点流失。这种风险被反复讨论过,是否发生取决于生成器和筛选流程,但它至少说明,合成数据不能无条件地当作真实数据的等价物。
还有一层隐性成本:合成样本与真实样本混在一起时,两者的特征分布未必对得上。混合比例、筛选标准、增广强度,任何一个参数设错,模型学到的可能是一个更“干净”也更不真实的世界。
难的地方在于判断它有没有用
生成一批数据只要几行代码,判断它值不值得用却要花力气。比较稳妥的做法是留一份不参与训练的真实测试集,只在那里看效果;再把合成比例从低往高调,观察指标在哪个区间开始转向。还要分层看:整体指标平稳,不代表那些原本稀少的类别真的被补上了。
这一步没有捷径。它的好坏最终要落在下游任务上衡量,跟生成图看上去有多逼真关系不大。
比例比有无更值得讨论
实际工作中,问题往往出在“掺多少”,而非“用不用”。从一个小比例开始,逐步加大,找到收益开始变缓的位置,比一次性替换要稳。它更像是把真实数据的边际收益往后推了一段,而不是取消采集这件事。
回到开头那条产线。生成器可以按要求造出一万张带缺陷的图,但它造不出“哪一种缺陷会导致漏检”这个判断。那需要对工艺和失效方式的理解,仍然得由人给出,再翻译成生成的条件。合成数据能做到的上限,大概就卡在这里。