类别缺失条件下怎样做生成式数据补全:从数据划分到跨域评估
类别缺失条件下怎样做生成式数据补全:从数据划分到跨域评估
本文讨论公开的问题定义与实验方法。与审稿中工作的具体模型结构、数据配置和实验结果有关的内容不在本文披露。
在植物病害识别中,数据“不够”有很多不同形式:所有类别都很少、长尾类别较少、某个目标作物完全缺少一种病害,或者部署时出现训练阶段从未见过的新类别。它们看起来相似,实验假设却完全不同。
如果问题定义没有先拆开,生成式数据增强很容易得到漂亮的图片,却无法回答识别是否真正改善。

一、先区分五个相邻问题
| 场景 | 训练标签空间 | 目标域数据 | 核心问题 |
|---|---|---|---|
| 类别不平衡 | 类别都存在,数量差异大 | 可有可无 | 少数类被多数类压制 |
| 小样本学习 | 每个新类只有少量标注 | 少量有标签 | 如何快速适配新类 |
| 类别缺失 | 某个目标类别没有真实训练图像 | 该类真实图像不可用于训练 | 如何补全训练支持 |
| 开集识别 | 测试时含未知类别 | 未知类标签通常不可用 | 如何拒绝未知样本 |
| 域偏移 | 训练与测试分布不同 | 标签空间可相同 | 如何跨环境泛化 |
本文关注的“类别缺失”还可能与域偏移叠加:源作物存在某种病害,目标作物的对应病害类别却没有可用训练图像;同时两种作物在叶片形态、病灶外观和拍摄环境上都不同。
二、为什么普通数据增强不够
翻转、裁剪和颜色扰动是在已有样本附近扩展分布。若目标类别完全没有真实图像,这些操作无法凭空提供该类的语义支持。
生成模型提供了另一种可能:把源作物中的病害视觉线索、目标作物的健康外观以及类别条件组合起来,生成候选训练样本。扩散模型的基本思想是学习逐步去噪过程,但“能生成”不等于“能补全”。真正困难的是让结果同时满足:
- 病害语义没有被作物外观覆盖;
- 目标作物的结构没有被源域复制;
- 病灶出现在合理区域,而不是背景或水印上;
- 样本具有多样性,而不是重复记忆训练图像;
- 加入训练后,真实目标域上的识别得到改善。
三、第一道防线是数据划分
生成模型、筛选器和分类器都可能泄漏测试信息。最稳妥的顺序是:
- 先按采集地点、植株或原始图像组划分训练、验证和测试;
- 生成模型只接触训练部分;
- 所有阈值只在验证集选择;
- 真实目标类别测试图像只用于最终评估;
- 对真实图与生成图做近重复检查。
一个最小的文件哈希检查可以排除完全重复:
from hashlib import sha256
from pathlib import Path
def digest(path: Path) -> str:
h = sha256()
with path.open("rb") as f:
for block in iter(lambda: f.read(1024 * 1024), b""):
h.update(block)
return h.hexdigest()
train_hashes = {digest(p) for p in Path("train").rglob("*.jpg")}
test_hashes = {digest(p) for p in Path("test").rglob("*.jpg")}
overlap = train_hashes & test_hashes
assert not overlap, f"发现 {len(overlap)} 个完全重复文件"
哈希无法发现裁剪、压缩或轻微调色后的近重复,还需要感知哈希或特征近邻检查。关键原则是:先固定测试边界,再训练生成器。
四、三层评估不能合并成一个分数
1. 生成保真度
这一层回答“像不像”。可以结合专家盲评、类别一致性、生成分布的 precision/recall 以及近重复检测。FID 等单一指标不能同时充分描述真实性和覆盖度,也不应直接替代领域专家对病灶合理性的判断。
2. 下游识别效用
这一层回答“有没有用”。至少比较:
- 只用真实可见类别的基线;
- 加入通用生成样本;
- 加入知识或区域引导的生成样本;
- 不同生成数量与真实数据比例;
- 对生成筛选模块逐项消融。
指标应包含 macro-F1、每类召回率和混淆矩阵。只看总体准确率会掩盖缺失类别仍然识别失败的问题。
3. 跨域泛化
这一层回答“换个环境还行不行”。可以采用 leave-one-domain-out:每次留出一个采集环境、作物或数据集,只在其余域训练。模型选择不能偷看留出域测试标签。
植物病害图像尤其容易出现背景捷径。受控数据常包含干净背景,田间图像却有重叠叶片、光照变化、模糊和遮挡。跨域测试应把这些变化视为主要问题,而不是附加实验。
五、可解释性应该用来找错
Grad-CAM 可以显示分类分数对卷积特征区域的敏感位置。在病害识别里,我更愿意把它当成诊断工具:
- 模型是否关注病灶,而不是叶片边缘?
- 生成样本是否让模型转向背景纹理?
- 同一类别跨作物时,关注区域是否发生异常漂移?
热力图“看起来合理”不能证明因果解释,也不能代替定量性能。更好的做法是配合病灶区域标注,计算关注区域覆盖度或删除/保留实验。
六、最容易踩的五个坑
- 把类别不平衡当成类别缺失。 两者可用信息不同,基线也不同。
- 用测试图训练生成器。 即使没有把标签交给分类器,分布信息仍然泄漏。
- 只挑最好看的生成样本。 人工筛选规则必须公开并在验证集确定。
- 只报告总体准确率。 缺失类别可能被多数类别完全吞没。
- 生成与识别使用同一个预训练编码器评分。 指标可能偏向共享表征,应加入独立评估与专家检查。
七、推荐的实验记录表
每次实验至少记录以下字段:真实数据划分、缺失类别定义、生成器可见信息、生成数量、筛选规则、分类器初始化、随机种子、模型选择规则、每类指标以及跨域测试结果。没有这些信息,生成式补全很难复现,也很难判断提升来源。
我目前对这个问题的核心判断是:生成式数据补全首先是一个评估设计问题,其次才是生成器结构问题。图片质量、识别效用和跨域可靠性必须分开证明。
参考资料
- Ho et al. Denoising Diffusion Probabilistic Models.
- Gulrajani and Lopez-Paz. In Search of Lost Domain Generalization.
- Selvaraju et al. Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization.
- Xu et al. Embracing Limited and Imperfect Training Datasets in Plant Disease Recognition.
- Wang et al. Plant Disease Recognition: A Large-Scale Benchmark Dataset and a Visual Region and Loss Reweighting Approach.

浙公网安备 33010602011771号