2. 数据增强策略:Mosaic、MixUp、CutOut、RandomAffine等增强方法对小目标的适用性分析

数据增强,说白了就是给训练集「加料」。做小目标检测,这步尤其关键。我刚开始用YOLO做小目标时,模型怎么都学不会,后来才发现——不是模型不行,是数据里的小目标太少了。

这一章,我把常用的几种增强方法拆开揉碎,讲讲它们对小目标到底有没有用,什么时候该用,什么时候反而会帮倒忙。

核心观点: 没有万能的数据增强。对小目标而言,保留细节比增加多样性更重要。

2.1 Mosaic:小目标的「救命稻草」

Mosaic是YOLOv4开始引入的,把4张图拼成1张。我个人习惯叫它「四合一」。为什么它对小目标友好?

  • 缩小了目标尺寸:原图里的大目标,拼完后变成中等目标;原图里的中等目标,变成小目标。相当于免费给你生成了大量小目标样本。
  • 增加了上下文:小目标周围多了其他场景,模型能学到更多背景信息。
  • 平衡了类别:如果某个类别的小目标很少,Mosaic能强行把它和其他图拼在一起,避免模型忽略它。

我在项目中遇到过一个问题:Mosaic比例太高,模型反而学坏了。比如一张图里全是小目标,拼完后小目标变得更小,连人都看不清了。嗯,这里要注意——

我的建议: Mosaic概率控制在0.5~0.7之间。训练初期用高概率,后期逐渐降低。如果数据集里小目标本来就很多,可以再低一些。

2.2 MixUp:对小目标「不太友好」

MixUp是把两张图按比例叠加,标签也按比例混合。听起来很合理,但实际用在小目标上,效果往往打折扣。

为什么会这样?

  • 目标变模糊:叠加后,小目标的边缘和纹理被背景「吃掉」了。本来小目标就只占几个像素,一叠加,几乎消失。
  • 标签不确定性增加:混合标签让模型学到的目标边界更模糊,对小目标这种本身就模糊的物体,反而有害。

我曾经在无人机航拍数据集上试过MixUp,结果mAP掉了3个点。后来我把它关了,效果立刻回升。

避坑指南: 如果你做的是小目标检测,不建议使用MixUp。如果非要用,把alpha参数调小(比如0.2以下),减少混合强度。

2.3 CutOut:随机遮挡,小目标的「双刃剑」

CutOut就是在图上随机挖掉一块正方形区域。对小目标来说,这招有点危险。

场景 效果 原因
大目标被遮挡一部分 ✅ 有效,模型学会利用局部特征 大目标剩余部分仍可识别
小目标被完全遮挡 ❌ 有害,模型学到「目标消失」 小目标本身像素少,一遮就没了
遮挡区域避开小目标 ✅ 有效,增加背景多样性 小目标不受影响

我建议的做法是:把CutOut的遮挡区域限制在图像边缘,或者使用随机大小的矩形而不是固定正方形。这样能减少遮挡小目标的概率。

2.4 RandomAffine:几何变换要「温柔」

RandomAffine包括旋转、缩放、平移、剪切。对小目标来说,缩放和旋转是重点。

  • 缩放:缩小会让小目标变得更小,甚至消失。我一般把缩放范围控制在0.8~1.2之间。
  • 旋转:小目标旋转后,边界框的IoU计算会变差。尤其是细长型小目标(比如电线杆、笔),旋转后标签不准。
  • 平移:相对安全,但要注意不要把小目标移出图像边界。
经验值: 对于小目标检测,RandomAffine的缩放因子建议0.8~1.2,旋转角度建议±15°以内。太激进的变换,不如不做。

2.5 其他增强方法速览

除了上面几种,还有一些常见增强,我简单说说对小目标的适用性:

方法 对小目标友好度 说明
HSV颜色抖动 ⭐⭐⭐⭐⭐ 不影响目标尺寸,安全
水平翻转 ⭐⭐⭐⭐⭐ 不改变目标大小,推荐
随机裁剪 ⭐⭐⭐ 裁剪区域要包含小目标,否则有害
高斯噪声 ⭐⭐ 小目标纹理本来就弱,加噪声更难识别
模糊 ⭐ 千万别用,小目标一模糊就没了

2.6 增强策略组合:我的「黄金配方」

你想想看,每种增强都有优缺点,怎么组合才能最大化收益?我经过多次实验,总结了一套适合小目标的增强策略:

  1. Mosaic(概率0.6):作为主力,生成大量小目标样本。
  2. HSV颜色抖动(概率0.5):增加颜色多样性,不影响尺寸。
  3. 水平翻转(概率0.5):简单有效。
  4. RandomAffine(概率0.3,缩放0.8~1.2,旋转±10°):温和的几何变换。
  5. CutOut(概率0.2,遮挡区域限制在边缘):少量使用,增加鲁棒性。
  6. MixUp:关闭。
注意: 这个配方不是固定的。如果你的数据集里小目标特别多(比如遥感图像),可以适当降低Mosaic概率,提高RandomAffine的缩放上限。关键是要观察训练过程中的mAP变化,及时调整。

2.7 知识结构图:数据增强对小目标的适用性

下面这张图总结了本章的核心逻辑,帮你快速建立知识框架:

数据增强方法对小目标的适用性分析 数据增强方法对小目标的适用性分析 小目标检测 Mosaic 推荐使用,生成小目标 MixUp 不推荐,目标模糊 CutOut 慎用,限制遮挡区域 RandomAffine 温和缩放旋转 HSV/翻转 安全,推荐使用 核心原则 保留细节 > 增加多样性

2.8 实战建议:如何验证增强策略是否有效

说了这么多,怎么知道自己的增强策略到底好不好?我一般用三步验证法:

  1. 可视化检查:把增强后的图片拿出来看,小目标是否清晰可见?有没有被遮挡或模糊?
  2. 消融实验:每次只关掉一种增强,看mAP变化。如果关掉后mAP上升,说明这种增强有害。
  3. 观察训练曲线:如果训练集loss下降很快但验证集loss不降,说明增强不够;如果两者都降得慢,说明增强太强了。
我曾经踩过的坑: 有一次我同时开了Mosaic、MixUp和RandomAffine,训练了100个epoch,mAP只有0.12。后来逐个排查,发现MixUp和Mosaic叠加后,小目标几乎全消失了。从那以后,我每次改增强策略都会先可视化看一轮。