下面按类别与场景把常用的数据增强技巧和实用建议做一个清晰、可落地的总结,方便在不同视觉任务中快速选用与组合。
一、基础几何与几何变换(几乎所有视觉任务必备)
- 随机裁剪/RandomResizedCrop:常用于分类、目标检测(需同步变换 boxes/masks);可增强尺度不变性。
- 翻转(水平/垂直):简单有效,注意对非对称任务(文本、数字、姿态)谨慎。
- 旋转与仿射变换(平移/缩放/剪切/透视):提升不变性,需同时变换标签(bbox、mask、关键点)。
- 缩放/调整分辨率(down/up-sampling):用于多尺度训练或超分前的仿真降采样。
二、颜色与光照扰动(photometric)
- 亮度/对比度/饱和度/色相随机扰动(Color Jitter)。
- 随机灰度化(grayscale)或通道置换。
- 色彩归一化、随机噪声(高斯/泊松/斑点)、gamma 变换。
- JPEG 压缩、图像模糊(运动模糊、高斯模糊)模拟拍摄/压缩退化。
三、局部与结构级增强
- Cutout / Random Erasing:随机遮挡区域,提升鲁棒性与抗遮挡能力。
- CutMix / MixUp:把两张图混合(以及标签混合),常用于分类/检测提升泛化。
- Mosaic(YOLO 风格):把多图拼接成一张,增强背景与尺度多样性,常用于检测。
- GridMask / Hide-and-Seek:网格/块级遮挡,提升对缺失信息的恢复能力。
- FMix / PuzzleMix:更复杂的混合策略,保持语义信息的同时混合图像部分。
四、语义/实例级增强(Detection/Segmentation)
- Copy-Paste(实例复制粘贴):把实例(带 mask)从一图粘到另一图以扩充小类或稀有实例。
- 语义一致性增强:在相同语义区域做风格变化或替换背景(保持语义标签)。
- 对于 mask/box/关键点必须做一致性变换并裁剪/裁边处理。
五、任务特定与域感知增强
- 视频:保持时间一致性,使用时间抖动、光流感知增强、仅对变化区域增强。
- 医学/遥感:慎用颜色变换,优先强仿射、弹性形变、噪声/伪影模拟、3D 卷积/体积增强(对 CT/MRI)。
- OCR/文档:透视变换、文字模糊、背景纹理、随机笔迹/噪点。
- 人脸/姿态:landmark-aware 变换(避免破坏关键点);仿真表情/头部姿态变化。
六、生成式与语义级增强
- GAN 生成样本或风格迁移(CycleGAN/StyleGAN、域适配):增加目标域样本多样性。
- Neural style / Appearance transfer:改变风格/照明以减小域差。
- 合成数据与渲染(合成场景、物体融合):适用于标注困难的任务(分割、检测、关键点)。
七、自动化增强与搜索
- AutoAugment / RandAugment / TrivialAugment:自动搜索最优增强策略,减少人工调参。
- AugMix:混合多种增强并做一致性正则化,有助鲁棒性和可解释性。
八、对比学习 / 自监督常见增强(SimCLR 等)
- 强增强调度:RandomResizedCrop + ColorJitter + RandomGrayscale + GaussianBlur + HorizontalFlip;两个视图要有强差异以学习表征不变性。
九、平衡类不均衡与样本选择
- 类平衡采样 + 有针对性的增强(对少数类做更多 augment)或使用生成式补样(GAN)以缓解长尾。
- 将增强作为 oversampling 手段而非仅替代采样。
十、工程实现与注意事项(非常关键)
- 标签一致性:所有几何变换必须同步变换 bbox、mask、关键点。
- 控制强度与概率:不要过度增强导致分布漂移,使用概率控制与参数范围。
- 验证集不增强或只做轻微合理增强(保持真实性),以免评价失准。
- 性能:大型增强流水线放到数据加载/GPU 上(Kornia、DALI、albumentations + multiprocessing)避免成为瓶颈。
- 可复现性:记录随机种子,或保留增强策略日志以便复现实验。
- 早期试验:先在小范围 A/B 测试增强策略,量化对精度/鲁棒性的影响。
- 注意平衡:一些增强会提升泛化但降低可解释性或产生“幻觉”式样本(如过度风格化)。
十一、推荐库与工具(快速上手)
- Albumentations(检测/分割友好,速度快)
- imgaug、torchvision.transforms(基础)
- Kornia(GPU 上的图像变换,可与 PyTorch 无缝集成)
- NVIDIA DALI(高吞吐数据加载与增强)
- AugLy、AutoAugment 实现库