小样本数据增广的核心是“变准”而非“变多”,需围绕判别性特征做可控扰动,保留关键结构、抑制背景干扰,并结合领域感知的几何与色彩组合增广、自监督伪标签及严格验证策略。

小样本下数据增广的核心目标不是“变多”,而是“变准”
训练集只有几十或几百张图时,简单堆叠随机旋转、翻转往往无效,甚至引入噪声。真正有效的增广,是围绕 类别判别性特征 做可控扰动:保留关键纹理、边缘、局部结构,抑制无关背景干扰。比如医学细胞图像,要保细胞核形态不变;花卉识别则需稳定花瓣轮廓与色块分布。
优先用领域感知的几何 + 色彩组合增广
不建议直接套用 torchvision 的默认 RandomAugment。应分步设计:
- 几何层面:限制旋转角度(±10°内),禁用大幅缩放(避免失真),启用弹性形变(适用于组织切片、手写字符等有连续形变合理性的场景)
- 色彩层面 :关闭全局亮度 / 对比度抖动,改用 HSV 空间微调——仅在 S(饱和度)和 V(明度)通道施加 ±0.05 范围扰动,H(色相)保持固定(防止 苹果 变橙子)
- 叠加方式:用 Albumentations 的
Compose(……, p=1.0)强制每轮必应用一组协同变换,而非多个独立随机操作
少样本专用:自监督引导的伪标签增广
当标注极少但有同源未标注数据(如同一设备拍的额外图像),可用轻量自监督模型(如 SimCLR 小网络)先提取特征,对近邻样本做一致性增强:
- 对一张原图生成 2 种不同增广视图(如一种裁剪 + 色彩扰动,一种旋转 + 高斯模糊)
- 用冻结主干网络提取二者特征,约束其 cosine 相似度 >0.85
- 把高置信伪标签(来自教师模型预测)加入训练集,仅用于损失计算中的 soft-target 部分
这比纯生成式增广(如 GAN)更稳定,且不依赖生成质量。
立即学习“Python 免费学习笔记(深入)”;
验证阶段必须关闭所有增广,且用滑动窗口评估
测试时若仍开启 RandomResizedCrop 或 Cutout,会导致同一张图多次前向结果不一致,小样本下指标波动剧烈。正确做法是:
- 验证 / 测试 dataloader 中增广 pipeline 只含 ToTensor + Normalize
- 对尺寸不规整图像(如显微镜大图),不用中心裁剪,改用滑动窗口切块 + 投票融合,避免漏检关键区域
- 每个 epoch 结束后,不仅看 top-1 准确率,还要画 confusion matrix 看混淆集中在哪两类——若始终在相似子类间出错(如“哈士奇 vs 柴犬”),说明增广未强化区分性特征
基本上就这些。增广不是魔法,是帮模型聚焦该学的东西——尤其在样本少的时候,每一张“造出来”的图,都得有明确的教学意图。
以上就是 Python